本文主要是我学习计网的心得,用王道考研的原因主要是因为,又有老师教又有直接的资料书,个人觉得方便一点,不用到处找网课,也不用想到底看哪本书好,等这一轮学完了再看别的书,想必也能得心应手一点,希望能得到大家的指正,顺便监督自己学习,由于水平有限,引用部分大多采用书上的内容,如有侵权,就不公开了,就当作是自己的心得。
计算机网络就是将一个分散的、具有独立功能的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简而言之,计算机网络就是一些互联的、自治的计算机系统的集合。
工作方式认为,只要是能实现远程信息处理的系统或能进一步达到资源共享的系统,就是计算机网络;
资源共享观点认为,能够以相互共享资源的方式互连起来的自治计算机系统的集合,就是计算机网络;
用户透明性观点认为,存在一个能为用户自动管理资源的网络操作系统,能够调用用户所需要的资源,而整个昂罗就像一个大的计算机系统一样,对用户是透明的,用户使用网络就像是使用一台超级计算机,无需了解网络的存在、资源的位置信息。
以上观点反应了当时的网络技术发展水平,广义观点是计算机网络发展的低级阶段,我觉得打电话可能就符合这个广义观点,把两个人看作是两个独立的计算机的话,那其实只要在两人之间拉一根电话线,就能够实现两个人的资源共享( 我 把 我 知 道 的 打 电 话 告 诉 你 ‾ \underline{我把我知道的打电话告诉你} 我把我知道的打电话告诉你),书上说的资源共享能力弱,就好像没办法给所有人之间都拉一根电话线,所以资源共享能力就弱,不过广义观点在物理结构上具有计算机网络的雏形,按照上面的定义来看他也是一个互联的、自治的计算机系统的集合。
资源共享观点符合目前计算机网络的基本特征,能够以相互共享资源的方式,也就是说计算机网络中的设备之间都能够进行资源共享,这个就比广义观点要强,广义观点里你只要能实现远程信息处理或资源共享就行,但资源共享观点就要求你不仅要达到广义观点说的,还要能与分布在不同位置的多个 “计算机” 进行资源共享,好比你在QQ加了好几个来自全国各地的网友,你可以随时跟他们聊天( 不 同 位 置 的 多 个 计 算 机 相 互 共 享 资 源 ‾ \underline{不同位置的多个计算机相互共享资源} 不同位置的多个计算机相互共享资源)。
用户透明性观点,我觉得这个有点像现在的云电脑,你只要有网,就能有电脑,我觉得这是一个很牛的东西,这么一搞,我们可能不需要太好的电脑,只要网好,随时上云电脑享受最极致的学(you)习(xi)体验 [\狗头]。
从组成部分来看,计算机网络主要由硬件、软件、协议三大部分组成,缺一不可。硬件主要由主机、通信链路(双绞线、光纤)、交换设备(路由器、交换机)和通信处理机(网卡)等组成;软件主要包括各种实现资源共享的软件和方便用户使用的各种工具软件(邮件收发程序、聊天程序);协议规定了数据传输时所需要遵循的规范。
从工作方式来看,计算机网络主要分为边缘部分和核心部分。边缘部分由所有连接到因特网上、供用户使用的主机构成,用来进行通信和资源共享;核心部分主要由大量的网络和连接网络的路由器构成,为边缘部分提供连通性和交换服务。
从组成功能来看,计算机网络由通信子网和资源子网组成。通信子网由各种传输介质、通信设备和相应的网络协议组成,它使网络具有数据传输、交换、控制和存储能力,实现联网计算机之间的数据通信;资源子网是实现资源共享功能的设备及其软件集合,向网络用户提供共享其他计算机上的硬件资源、软件资源和数据资源的服务。
计算机网络按组成部分来看包含硬件软件和协议三大部分,简单地说硬件为我们提供网络,软件通过使用网络为我们提供服务而协议是使得软硬件能够相互协作的规则;
从工作方式来看计算机就简单的划为两部分,核心部分和边缘部分,拿我们家里来说核心部分嘛,就像是路由器,给我们提供网的,而边缘部分就像是我们的手机,我们通过路由器提供的WiFi来上网来跟别人发消息;
从组成功能来看,计算机网络由通信子网和资源子网,通信子网搭建好网络之后能够实现数据的交换控制和存储,而资源子网则能通过这些资源来为我们提供服务
简单地说,不管怎么分,都可以看成两部分,要么是给咱提供服务的,要么就是服务咱的,就比方说去饭店吃饭,老板算是给咱了一个吃饭的地方,而厨子才是真正服务咱的,所以一(计)个(算)饭(机)店(网络)是由老板和厨子共同为我们提供服务
1.数据通信: 计算机网络最基本的功能,用来实现联网计算机之间的各种信息传输,并将分散在不同地理位置的计算机联系起来,进行统一的调配和管理
2.资源共享: 资源共享可以是数据共享、软件共享也可以是硬件共享。计算机之间的资源互通有无、分工协作,提高了资源利用率。
3.分布式处理: 当计算机网络中的某个计算机系统负荷过重时,可以将其处理的某个复杂任务分配给网络中的其他计算机系统,从而提高整个系统的利用率。
4.提高可靠性: 计算机网络中的各台计算机可以通过网络互为代替机。
5.负载均衡: 将工作任务均衡的分配给计算机网络中的各台计算机。
1.按分布范围分: 广域网(Wide Area Network—WAN)、城域网(Metropolitan Area Network—MAN)、局域网(Local Area Network—LAN)、个人区域网(Personal Area Network—PAN)。
2.按传输技术分: 广播式网络,点对点网络。
3.按拓扑结构分: 总线形、星形、环形和网网状形网络等。
4.按使用者分: 公用网、专用网。
5.按交换技术分: 电路交换网络、报文交换网络、分组交换网络。
6.按传输介质分: 有线网络、无线网络。
其中广播式网络是一种一对多的形式,所有联网计算机都共享一个公共信道,当一台计算机利用共享信道发送消息时,其他所有计算机都会收听到这个消息,然后再检查是否需要接收这条消息。
点对点网络每条物理线路连接一对计算机,如果两台主机之间没有直接连接的线路,那么他们之间的分组传输就要通过中间结点的接收、存储和转发,直至目的节点。所以,是否采用分组存储转发与路由选择机制是点对点网络和广播式网络的重要区别。其中,广域网基本上是点对点网络,由于它的提供长距离的通信,覆盖范围通常为几十千米甚至几千千米,如果采用广播式网络范围必然会导致能耗的增加,同时,由于覆盖范围大,广域网的作用范围有可能覆盖多个国家,若采用广播式网络也会降低数据安全性。
因特网的所有标准都以RFC (Request For Comments).的形式在因特网上发布,但并非每个RFC都是因特网标准,RFC 要上升为因特网的正式标准需经过以下4个阶段。
1.因特网草案(Internet Draft)。 2.建议标准(Proposed Standard)。3.草案标准(Draft Standard)。 4.因特网标准(Internet Standard)。
本单元仅作了解,但需要记住的几个组织名称:
国际标准化组织(ISO——International Organization for Standardization)
国际电信联盟(ITU——International Telecommunication Union)
国际电气电子工程师协会(IEEE——Institute of Electrical and Electronics Engineers)。
本来表示通信线路允许通过的信号频带范围,单位是赫兹(Hz),而在计算机网络中,带宽表示网络的通信线路所能传送数据的能力,带宽表示网络的通信线路所能传送数据的能力,是数字信道所能传送的 “最高数据率” 的同义语,单位是比特/秒(b/s)。
带宽就好比一条高速公路,而传输的数据可以当作是在路上行驶的车,而在计算机网络中,要想提高车流量,就得增加车道,车道有两车道和四车道,那四车道可以达到的车流量就比两车道的大,因此,带宽越大,数据传输速率越高。
指数据从网络的一端传送到另一端所需要的总时间,由四部分组成:发送时延、传播时延、处理时延和排队时延。
1)发送时延: 结点将分组的所有比特推向(传输)链路所需要的时间,即从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需要的时间,因此也称传输时延。计算公式为:发送时延 = 分组长度 / 发送速率 (T = S / V)
2)传播时延: 电磁波在信道中传播一定的距离需要花费的时间,即一个比特从链路的一端传播到另一端所需要的时间。计算公式为:传播时延 = 信道长度 / 电磁波在信道上的传播速率 (T = S / V)
3)处理时延: 数据在交换结点为存储转发而进行的一些必要的处理所花的时间,例如:分析分组的部首、从分组中提取数据、进行差错检验或查找适当的路由等。
4)排队时延: 分组在进入路由器后要先在输入队列中,排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发,这就产生了排队时延。
因此,总时延等于:总时延 = 发送时延+ 传播时延 + 处理时延 + 排队时延
注:
1.做题时,排队时延和处理时延一般可以忽略不计(除非题目说明)。
2.对于高速链路,提高的仅是数据发送速率而非比特在链路上的传播速率。
3.提高数据的发送速率只是为了减少数据的发送时延。
如果带宽是 “车” 开的高速公路,一个个数据是一辆辆车,那总时延就像是一个车队从一个地方到另一个地方所需要的总时间;
发送时延就像是每个车上高速公路所需要的时间,与车队长度(车队越长,意味着分组长度越长)和他们的上路速率(发送速率)相关;
当车队里的车都上路之后,他们在路上开车的时间就像是传播时延,与他们所要开的路程(信道长度)和他们的车速(电磁波在信道上的传播速率)相关;
处理时延就好比他们在高速公路上的收费站缴费(分析分组的部首、从分组中提取数据、进行差错检验)或高速岔路口选择正确的岔道(查找适当的路由)所花的时间;
排队时延就像是他们在收费站门口排队(输入队列中排队等待处理),收费站处理完成之后再排队出发(在输出队列中排队等待转发)。
再说一下注里面的高速链路,这就好比车队在高速路上开车和在普通道路上开车,普通道路就是不能开快,高速路上就是能开得很快,但是这里的高速链路只是提高了数据的发送速率,就是说是他们上路的速度变快了,但是到底开的快不快是是由路决定的,而不是你上路的速度,上路的速度快了,发送时延就少了。
指的是发送端发送的第一个比特即将到达终点时,发送端已经发出了多少个比特,因此又称以比特为单位的链路长度,即
时延带宽积 = 信道带宽 × 传播时延 (S = V × T)上图中是一个代表链路的圆柱形管道,其长度表示链路的传播时延,横截面积表示链路带宽,则时延带宽积表示该管道可以容纳的比特数量。
指的是从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时延。在互联网中,往返时延还包括个中间结点的处理时延、排队时延和转发数据时的发送时延。
由于数据在计算往返时延时接收端是立即发送确认,所以考试时一般忽略末端处理时间(包括发送时延、处理时延和排队时延),或者直接告诉;而处理时延、排队时延和发送时延主要是中间结点在处理数据时产生的时延,由此可见,往返时延注重的是数据的传播时延,还要注意的是,往返时延越大,所能发的数据就越多,因为在发送端收到确认帧之前都可以发送数据,所以他可以发送的数据就更多 (其实就是卡了)。
指单位时间内通过某个网络(或信道、接口)的数量。吞吐量受网络带宽或网络额定速率的限制。
这里要注意一下吞吐量和带宽的区别,带宽是数据发送速率的理论值,也就是理想状态下通信线路所能传送数据的能力,但是吞吐量不是,吞吐量是跟实际情况相关的,它取决于链路时钟速率和信道编码等低效因素影响,通常是低于带宽的,所以通常是用吞吐量表示系统性能。
网络中的速率是指连接到计算机网络上的主机在数字信道上传送数据的速率,也称数据率或比特率,单位是 b/s.
数据率较高时还可以用 kb/s、Mb/s 或 Gb/s表示。在计算机网络中通常把最高数据率称为带宽。
这里要说一个字节(Byte)的概念它和上面提到的比特(bit)不一样,一个字节是八位比特,所以家里拉宽带的时候,运营商说的200兆、300兆都是比特,也就是200Mb, 所以说当我们用200兆的网时,实际上在我们手机上看到的网速只有13、14兆每秒,这里面就有一个单位转换问题,先给200除个8得到25,所以理论上到我们的手机上的网速应该有25M,再加上信号传播过程中的损耗,所以到我们手上的的就剩那么点了;
还有一个就是平时我们手机上看到的网速实际上都是 KB/s,这个网速的单位时字节每秒,但是路由器说的200兆的网实际上是 200Mb/s,这个是比特每秒;其中1Kb就是1000b,但是1KB是1024B,所以1KB实际上是(1024 × 8)bit;
这里引出两个问题:
1.为什么1KB是1024B?
因为计算机是只认二进制的,所以这里我们类比十进制,十进制的1K就是10的三次方,所以二进制的1K,应该也是用2的几次方来表示,你看,1000是10的三次方,所以表示起来就很方便,但是这个1000换到二进制里面就变成了1111101000,这肯定不能够么,这看着乱七八糟的,很明显这不直观,而这里为什么非得是10次方呢,而不是八次方七次方,可能是1024最接近人们常识里的1000。
2.为什么一个字节是八位呢?
其实最早的时候计算机使用的也不是八位,是四位或者五位的,常见的五位计算机编码时,可以编32个字符,这个对二十六个英文字母(当时是纯大写)和一些常见的标点符号是够用的,但是随着时代的发展,人们想用一个字节编码更多东西,于是1963年美国人发明了一套字符集——ACSII(ascii)包含了我们所有常用的字符集,采用了七位编码,这个本来已经够用了,但是真正让八位一字节火起来的还要说IBM 的 System/360 这台电脑采用了八位一字节,而它又卖得很火,所以直接推动了八位一字节的推行,他可以包含七位编码的所有字符(因为他八位),大小又正好是2的次幂,所以这个八位一字节就开始推行了。
指出某一信道有百分之多少的时间是有数据通过的,即
信道利用率 = 有数据通过的时间 / (有+无)数据通过的时间
两个系统中实体间的通信是一个很复杂的过程,为了降低协议设计和调试过程的复杂性,也为了便于对网络进行研究、实现和维护,促进标准化工作,通常对计算机网络的体系结构以分层的方式进行建模。
计算机网络的各层及其协议的集合称为网络的体系结构,体系结构是抽象的,而是现实具体的,是真正在运行的计算机硬件和软件。
分层的基本原则如下:
1)每层都实现一种相对独立的功能,降低大系统的复杂度
2)各层之间界面自然清晰,易于理解,相互交流尽可能少
3)各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现
4)保持下层对上层的独立性,上层单向使用下层提供的服务
5)整个分层结构应能促进标准化工作
由于分层后各层之间相对独立,灵活性好,因而分层的体系结构易于更新(替换单个模块);但层次越多,有些功能难免在不同层次间重复出现,产生额外的开销,导致整体运行效率低;层次越少,则每层包含的协议太多、太复杂。因此在分层时,应考虑层次的清晰程度与运行效率和层次数量间的折中。
总结一下:
1)网络的分层有利于网络的搭建和维护,并能够促进标准化工作。
2)网络分层要保证每层功能相对独立,层与层之间界限清晰,下层单向上层提供服务。
3)分层多了,不同层之间可能需要使用相同的功能,运行效率降低。
4)分层少了,每层就会包含很多事情,太复杂,不易实现。
5)层次清晰度要和分层数量和网络运行效率有一定折中。
这里还要提一下的就是,在分层之后每层还要起一个名字,以下几个名词要注意:
1)n 层实体: 第 n 层中活动的元素通常称为 n 层实体。
2)对等层: 不同机器上的同一层称为对等层。
3)服务数据单元(Service Data Unit——SDU):为完成用户所要求的功能而应传送的数据。第 n 层的SDU
记为:n - SDU。
4)协议控制信息(Protocol Control Information——PCI):控制协议操作的信息。第 n 层的PCI
记为:n - PCI。
5)协议数据单元(Protocol Data Unit——PDU):对等层次之间传送的数据单位。第 n 层的 PDU
记为 n - PDU,在实际的网络中,其实每层的协议数据单元都有一个通俗的名称,物理层称为——比特,链路层——称为帧,网络层称为——分组,传输层称为——报文。
在进行数据传输时,上层收到的协议数据单元(PDU)将会作为下层的服务数据单元(SDU),然后下层将上层的 SDU 结合上自己的协议控制信息(PCI)形成新的PDU,传给下下层。过程如下图:
具体的,层次结构的含义还包括以下几个方面:
1)第 n 层的实体不仅要使用 n - 1 层的服务来实现自身定义的功能,还要向第 n + 1 层提供本层的服务,该服务是第 n 层及其下面各层提供的服务总和。
2)最底层只提供服务,是整个层次结构的基础;中间层集时下一层的服务使用者,又是上一层的服务的提供者;而最高层面向用户提供服务。
3)上层只能通过相邻层之间的接口使用下一层的服务,而不能调用其他层的服务;下层所提供服务的实现细节对上一层透明。
4)两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就把信息传送到对方。
简单得说就是下层在接收到上层传来的信息之后,还要添上本层的控制信息,然后再传给下下层,使用服务时上一层只有通过相邻层之间的接口才能使用下层服务,不能调用其他层的服务。
协议就是规则的集合。 在网络中要做到有条不紊的交换数据,就必须遵循一些事先约定好的规则,这些规则明确规定了所交换的数据的格式及有关的同步问题。这些为进行网络中数据交换而建立的规则、标准或约定称为网络协议,他是控制两个(多个)对等实体进行通信的规则的集合,是水平的。不对等实体之间是没有协议的,比如用TCP/IP协议栈通信的两个结点,结点 A 的传输层和结点 B 的传输层之间存在协议,但结点 A 的传输层和结点 B 的网络层之间不存在协议。
协议由语法、语义和同步三部分组成。语法规定了传输数据的格式;语义规定了所要完成的功能,即需要发出何种控制信息、完成何种动作及做出何种应答;同步规定了执行各种操作的条件、时序关系等,即时间时间顺序的详细说明。一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能。
总结一下:
丑话要说到前头,所以产生了协议,协议规定了两个对等实体之间交换数据的格式以及有关的同步问题。这里要注意协议是水平的,两个不对等实体之间是没有协议的,比如两个设备的网络层存在通信协议,但是两个设备的网络层和传输层是没有协议的,这里可以理解为,领导(传输层)之间的秘密要是都被下属(链路层)知道了那对整个公司(网络)都是不好的,所以秘密只能领导或者下属之间相互讨论,这个可以帮助我们理解协议是对等实体之间的通信规则这个概念,这种方式可以使网络协议得到简单、规范的设计。
但是随着技术的发展,现在许多功能的实现需要多层联动,在无线环境中,链路层、网络层、传输层和物理层之间可以通过跨层协作来进行无线资源的整体管理,改善网络性能。近年来,跨层协作设计已经广泛应用于蜂窝通信、WLAN及认知无线电网络。
接口是同一结点内相邻两层之间交换信息的连接点,是一个系统内部的规定。每层只能为紧邻的层次之间定义接口,不能跨层定义接口。在典型的接口上,同一结点相邻两层的实体通过服务访问点(Service Access Point——SAP)进行交互。服务是通过SAP提供给上层使用的,第 n 层的 SAP就是第 n+1 层可以访问第 n 层服务的地方。每个SAP都有一个能够标识它的地址。SAP是一个抽象的概念,他实际上是一个逻辑接口(类似于邮政信箱),但和通常所说的两个设备之间的硬件接口是很不一样的。
服务是指下层为紧邻的上层提供的功能调用,他是垂直的。对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现本层协议还需要使用下一层所提供的服务。
协议和服务在概念上是不一样的,协议是水平的,服务是垂直的,协议是两个对等实体之间通信的规则,而服务是由下层通过接口向上层提供的,另外,并非在一层内完成的全部功能都称为服务,只有那些能够被高一层实体看的见的功能才称为服务。关系如下图:
计算机网络提供的服务可按以下三种方式分类:
1.面向连接服务与无连接服务
在面向连接服务中,通信前双方必须先建立连接,分配相应的资源,以保证通信的正常进行,传输结束后释放连接和所占用的资源。因此这种服务可以分为连接建立、数据传输和连接释放三个阶段。
在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可以直接发送,把每个带有目的地址的包传送到线路上,由系统选定路线进行传输。这是一种不可靠的服务。这种服务常被描述为”尽最大努力交付“,它并不保证通信的可靠性。
2.可靠服务和不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠的传送到目的地。
不可靠服务是指网络只是尽量正确、可靠的传输,而不能保证数据正确、可靠的传送到目的地,是一种尽力而为的服务。
对于提供不可靠服务的网络,其网络的正确性、可靠性要由应用或用户来保证,例如:用户收到信息后要判断,信息的正确性,如果不正确,那么用户要把出错信息报告给发送者,以便发送者采取纠正措施,通过这些操作来把不可靠服务变成可靠服务。
**注意:**在一层内完成的全部功能并非都称之为服务,只有那些能够被高一层实体看到的功能才被称之为服务。
3.有应答服务和无应答服务
有应答服务是指接收方在收到数据后,向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现,所发送的应答既可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时,才发送否定应答,例如,文件传输服务就是一种有应答服务。
无应答服务是指接收方在收到数据后不自动给出应答,若需要应答,则由高层实现。例如对于WWW服务,客户端收到服务器发送的页面文件后不给出应答。
上面所说的服务分类其实很好理解,只要记得他们的对立面都很快就行了,但是他们的目的都一致,都是要保证传过去的数据都有效,就算他们本开始不保证可靠,但是后面也会将传送来的数据进行处理,从而使用户能够接收到正确的信息,所以不同场景下会使用不同的服务方式,有些时候可能对实时性要求比较高,我们就不能花很多时间去检查消息,我们就得先接收下来,有些数据有要求数据准确,所以才产生了对服务的分类。
这个模型一共分为七层,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,老师讲的方法是“物联网淑(输)惠(会)试(示)用”,其中,物理层、数据链路层、网络层是通信子网(见1.2),应用层、表示层、会话层是资源子网,如下图
下面简述各层功能:
1)物理层:
首先讲一下什么是透明传输,比方说你的领导把一份机密文件交给你的主管A,然后你的主管A又让你把文件交给另一个主管B,并告诉他是领导发给他的,那对于这个主管B来说,就是他收到了一份领导发来的文件,而你跟你的主管A对于这个主管B来说,就相当于是透明的,因为你们不用管文件内容是什么,也不用管传输过程中,文件有没有缺了多了甚至丢失,你们的任务就只是把他送到主管B的手里,你们就相当于不存在,这就是透明传输,而物理层的数据传输就是透明传输,他不管传输的内容是否有错,他只负责将数据传送到下一个节点(传输单位是比特),一般传输的媒介有双绞线、光缆、无线信道等等。
2)数据链路层:
数据链路层的传输单位是帧,任务是将网络层传来的IP数据报组装成帧。数据链路层的功能可以概括为成帧、差错控制、流量控制和传输管理等。
差错控制嘛,就是数据在传输的时候肯定有各种各样的干扰呀噪声呀啥的,那两个节点进行通信的时候收到了错误的数据如果能纠错就纠错,如果不能数据链路层要丢掉这些错误的信息,从而确保传输信息的准确性,这就是差错控制;
流量控制主要是为了解决速度不匹配的问题,你想,你的电脑能跟我们伟大的的“神威·太湖之光”比吗?那你俩要是进行数据传输(如果你有机会的话),“神威”不得让你见识一下什么叫神威,哈哈哈,那一边发的快,另一边收的慢,那必然会造成很多数据的丢失,造成传输速率的下降,而流量控制就是让收发速度匹配,理想状态下是要让两个速度一样;
经典的数学课就是流量控制做的不好,差错控制做的不错,老师讲的头头是道,到我这里少的可怜,然后我只能说,嗯嗯嗯,你讲的都对,差错控制一级棒!!!太感人了!!!
3)网络层:
网络层的传输单位是数据报,他关心的是通信子网的运行控制,主要任务是把网络层的协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务。关键是对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互连等功能。
拥塞现象是指数据到达通信子网中的某一部分过多,使得该部分网络来不及处理,导致网络性能下降的现象,拥塞控制就是解决这个现象的;
那拥塞控制和流量控制有什么区别呢?
我觉得他们都是害怕发送方发的太快,你处理不了,但是区别在于流量太大的时候,你是能接收但是来不及接收,但是拥塞你是接收不了,假设接收方是一个收费站的话,那流量太大就是车跑的太快了,你来不及处理,导致你只处理了部分信息,而有一部分丢失了没处理,而拥塞是来的车太多了,虽然你都能处理得了,但是车越来越多比你处理的速度快,那就会造成拥塞,就像是国庆期间高速路口的堵车。
还记得我们前面学到的时延带宽积吗(见1.6.3)?我觉的拥塞就是数据传输达到了时延带宽积
网际互连是指若干网络根据一定的条件互联,他使得本地终端设备不仅能够跟本网络上的设备通信,还能与另一个网络上的任何终端通信,从而实现跨网通信和资源共享。
传输层:
传输层的传输单位是报文段或用户数据报传输层,负责主机中两个进程之间的通信,功能是为了端到端连接提供可靠服务的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。
这里面有个叫端到端的东西,和前面网络层和数据链路层的点到点要说一下;
端到端是指两个设备在进行数据传输的时候,建立的一条通信链路,这条链路里面可能有很多的设备,但是传输层只认为数据是从这个机子传到另一个机子去了,中间经过了什么他不管;
而点到点则不是,它是一种物理结构,两个设备之间靠介质(如:光纤)连接起来之后中间没有其他设备,就从这个设备到另一个设备;
就好像领导吩咐你去找另一个领导开会,那他不管你怎么找,他只管那个领导来了没有,可能中间你还要给那个领导秘书打电话,预约时间什么的(就像网络层进行通信时,先连接A节点,然后再是B、C、D等等),你要经历一系列繁琐的步骤来通知他,但是领导只是等着那个领导来开会,你一步步的联系那个领导,就相当于是点到点,因为这件事就你来办,而领导跟那个领导开会就像是端到端,因为他不管你到底怎么找那个领导开会。
1)会话层:
会话层允许不同主机上的各个进程之间进行会话。会话层利用传输层提供的端到端的服务,向表示层提供他的增值服务,这种服务主要是为表示层实体或用户进程建立连接并在连接上有序的传输数据,这就是会话,也称建立同步。
会话层负责管理主机间的会话进程,包括建立、管理以及终止进程间的会话。会话层可以使用校验点使通信会话在通信失效时从校验点继续恢复通信,实现数据同步。
2)表示层:
表示层主要处理两个通信系统中交换信息的表示方式。不同机器采用的编码和表示方式不同,使用的数据结构也不同,为了使不同表示方式方法的数据和信息之间能够交换,表示层采用抽象的标准方法定义数据结构,并采用标准的编码形式。数据压缩、加密和解密也是表示层可以提供的数据表示变换功能。
3)应用层:
应用层是OSI参考模型的最高层,是用户与网络的界面,应用层为特定的类型的网络应用提供访问OSI环境的手段。因为用户的实际应用多种多样,这就要求应用层采用不同的应用协议来解决不同类型的应用要求。因此应用层是最复杂的一层,使用的协议也最多,典型的协议有用于文件传送的FTP、用于电子邮件的SMTP、用于万维网的HTTP等。
以上就是关于OSI参考模型的介绍,虽然他只是学术上的国际标准,但用它来学习我们计算机网络的结构确实是一个不错的方法,就像编程的C语言,作为我们入门的一种手段,我觉得是种不错的选择。
我说一下我个人对这七层模型的理解:
应用层就是我们平时使用的软件,比方说QQ微信这些,他们都是使用计算机网络为我们提供的服务;
而表示层呢就像一个翻译官,他把我们输入的数据转化成计算机可以处理的软件,比方说我们用QQ发了一条语音消息,应用层就是为我们提供了这个QQ,而表示层则将我们这个语音信号转化为数字信号,以便数据能够传输;
会话层则是控制这个数据怎么在我们的设备上传输,比方说,手机正在更新软件,这个时候我们要回消息,那两件事情都需要网,如何合理的将这个网分配给两个软件这就是会话层该做的事情,既不能让下载的东西停止下载,也不能说是让我们的消息发不出去,还有就是我们正在下载的时候网断了,如何才能让手机重新接上网络之后下载是继续进行而不是重新进行,这也是会话层要处理的事情;
中间层传输层就是,上面说过的是负责端到端的通信,就好像我给我女朋友发个QQ消息,我的手机能发,她的手机也能收到,中间我们的消息到底经历了什么我们不管,女朋友只在乎我有没有秒回她,哈哈哈,这就是端到端,两个对等实体的传输层(我和我女朋友),在接收到数据后,将数据封装交给上层,然后上层再搞啥会话管理啊,数据处理啊,然后再交给应用这些,传输层就还有我上面说过的几个功能,差错控制啊可靠传输什么的,就在翻上去看看,传输层就是一个承上启下的重要层;
网络层和数据链路层,其实我最开始不是很能理解,既然他们都是把数据分发给路由器然后由路由器转发转发再转发最后传到接收端,那为什么分两层呢?
后来查了一下了解了一下,网络层是能够在复杂的网络中选择出一条最优的路径来传输,而数据链路层是用于两个设备之间进行传递,算是网络层的一个小弟;
由于数据链路层是直接和物理层对接的,那不同的路由之间的连接和信息传递方式以及传输数据传输媒介都有可能不同,比方说你们家拉的是光纤,而我们家拉的是双绞线,那我们两家通网的话数据链路层肯定要选择不同的编码方式或者不同的差错校验方式来处理我们两家的数据,那处理好之后,网络层就能收到经过处理的高质量数据,那他选择了一条合适的路径之后,交给数据链路层选择不同的处理方法,从而不用操心物理层的传输介质和通信设备,使得我们能够在不可靠的物理线路上进行可靠传输;
就像一个公司,有领导和高管还有基层员工,领导就是为整个公司(网络)提供大方向,来保证整个公司的运作,而高管则是通过管理我们这些基层员工来为领导服务,三部分缺一不可,如果让领导直接管理员工那领导可能每天要面对很多琐事,影响大局判断,如果让高管直接管理公司,那他可能没有领导的雄才伟略,导致公司瘫痪,刘邦和韩信,一个领将,一个领兵,缺一不可。
最后就是物理层了,作为整个网络的最基层,他不用操心那么多事情,只要好好的干好手里的事就行。
以上七个部分组成了一个庞大的计算机网络,每一部分都有自己重要的作用和功能明确的区分了服务、接口和协议这三个概念,使得不同系统、不同网络中的设备实现可靠通讯。
这个模型由于得到广泛的应用而成为事实上的国际标准,层次结构如下:
下面简述一下这个模型的四层:
网络接口层的功能类似于物理层和数据链路层,作用是从主机或结点接收IP分组,并把他们发送到指定的物理网络上。
网际层是这个体系结构的关键部分,他和网络层在功能上非常的相似,网际层将分组发向网络,并为之独立的选择合适的路由,但不保证各个分组有序的到达,分组的有序交由高层负责。
传输层的功能同样和OSI 中的传输层类似,即是的发送端和目的端的主机上的对等实体进行会话。
应用层包含所有的高层协议,为各式各样的应用提供服务。
以上就是他们的概念,当然每一层还包含很多协议,但是本人作为一个初学者,表示对这些协议不感冒,等学到后面一起学,如果有兴趣的同志,可以自行了解,我就不多说了,哈哈哈,下面说的OSI和TCP/IP的异同才是重点
相同点:
首先他们的分层大体相似,功能也类似,都是基于独立协议栈的概念,都能解决异构网络的互联对比图如下:差异点:
- OSI参考模型最大的贡献就是精确的定义了服务、接口和协议三个概念符合现代面向对象程序设计的思想,这里就有点像Java和c++里面的思想,咱也妹学,就是知道有这么个东西,就提一下[/狗头],而TCP/IP协议没有明确区分,不符合软件工程的思想。
- OSI参考模型产生在协议发明之前,没有偏向于任何特定的协议,通用性良好。但设计者在协议方面没有太多的经验,不知道把哪些功能放到那一层更好。而TCP/IP模型正好相反,首先出现的是协议,模型实际上是对已有协议的描述,因此不会出现协议不能匹配模型的情况,但该模型不适合于任何其他非TCP/IP的协议栈。
- TCP/IP模型在设计之初就考虑到了多种异构网的互联问题,并将网际协议作为一个单独的重要层次,OSI参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互连,OSI参考模型认识到网际协议IP的重要性之后,只好在网络层中划分出一个子层来完成类似于TCP/IP模型中的IP功能。
- OSI参考模型在网络层支持无链接和面向连接的通信,但在传输层仅有面向连接的通信;而TCP/IP模型认为可靠性是端到端的问题,因此他在网际层仅有一种无连接通信模式,但传输层支持无连接和面向连接两种模式。
这里要提一下这个协议栈,使用通信协议栈进行通信的结点每个协议栈的最顶端都是一个面向用户的接口,下面各层是为了通信服务的协议。用户传输数据时,通过一系列的转换,将自然语言转化为用于通信的数据,作为传输层的数据部分(SDU),加上传输层的控制信息(PCI)组成传输层的(PDU),然后PDU下放到网络层之后,作为网络层的SDU,然后重复上述步骤这里之前就说了,就是2.1中的内容,就这样层层包裹,层层下放,最后到接收方后,在一层层的打开数据,最后将数据传输到用户,转化为用户所能理解的自然语言,模型图如下:
其实这两个模型都将庞大的且复杂的问题,划分为许多较易处理的问题,也用到了我上面说的独立协议栈,能够将异构的网络互联,实现不同厂家的计算机之间的通信;
不过OSI模型是在协议产生之前,所以他的模型就不偏向哪个协议,但是就是因为他建立在协议之前,导致协议不知道放到哪一层好,而TCP/IP模型实际上是对已有协议的描述,所以他的模型和协议就很匹配,但是他就不适合其他的协议栈,所以他们各有各的好,我们现在就通过学习OSI模型来了解计算机网络需要哪些功能,以及他们实现的过程,来学习理论知识,然后使用TCP/IP模型来构建实用的网络协议;
OSI参考模型再设计之初只注重面向连接的通信,而TCP/IP一开始就面向连接和无连接通信并重,所以她一开始就有较好的网络管理功能,将网际IP协议作为这个模型的重要组成部分,OSI直到后来才考虑到这个问题在网络层开辟一个子层来完成类似IP功能。
两个模型都不是完美的,OSI模型希望一次性制定一个完美的模型,所以考虑的方面也比较多,虽然他的概念区分得很清楚,但是实现起来却很困难,导致执行的效率很低,再加上他迟迟没有推出成熟的产品,阻碍了第三方厂家的生产,才导致了OSI产品的市场占有率很低,而TCP/IP协议通过实践使得模型不断完善,也得到了大厂的支持,所以它才能得到发展。
在学习时我们往往采取折中的办法,即综合两个模型的优点,采用如下图的五层协议的体系结构:
这一章主要是为我们介绍了计算机网络的体系结构,重点就是计算机网络的相关性能指标,以及这个OSI参考模型和TCP/IP模型,对于文中所提到的相关概念也要有一定的理解,要知道他们怎么分类啊、怎么组成啊、有什么功能啊什么的,协议、服务和接口这三个概念要有一定的了解。
本文算是我学习这个第一章的心得了,希望大佬看到哪里有问题可以指正我,我想,作为一个新手入门的一篇文章,这篇文章应该能够帮助大家提起兴趣,里面有很多我自己想的例子,如果不恰当的话大家还是多担待,新人入坑,这篇纯手打的文章也花了我很久去打磨,去查资料,感谢别的大佬为我提供的便利,看了你们的文章我都收获很多!同时把我的心得写到了里面,在感谢一下王道考研的这个书,我觉得作为一个学习课本,真的为我们总结了很多知识点,很多地方也写得很明朗,希望大家看了我的文章之后能够积极批评指正,要是刚学计网的话,希望这篇文章能够帮你们提起学计网的兴趣,加油!!!