# 计算机网络

本文是《计算机网络 谢希仁》第一章的读书笔记,学院派风格,仅供学习参考!

# 计算机网络概述

21世纪最重要的特征是数字化,网络化和信息化,它是一个以网络为核心的信息时代,以前会说"三网",即电信网络,有线电视网络和计算机网络,现在三网合一,普遍采用的EPON(Ethernet Pasive Optical Network,以太网无源光网络),采用点到多点结构,无源光纤传输,在以太网之上提供多种业务。

# 网络发展历史

因特网发展的三个阶段:

  1. 从单个网络ARPANET向互联网发展,1969年美国国防部创建的第一个分组交换网ARPANET最初只是一个单个的分组交换网,并非是一个互连的网络,所有要连接在ARPANET上的主机都直接与就近的节点交换机相连。到20世纪70年代人们意识到不可能仅使用一个单独的网络来满足所有的通信问题,于是ARPA开始研究多种网络互连技术,导致了互联网络的出现。成为了Internet的雏形,1983年TCP/IP协议称为ARPANET上的标准协议,使得所有使用TCP/IP协议的计算机都能利用互联网相互通信,人们将1983年作为互联网的诞生时间,1990年ARPANET正式宣布关闭,它的实验任务完成。
  2. 第二个阶段是建成三级结构的互联网,1985年起,美国国家科学基金会NSF(National Science Foundation)围绕六个大型计算机中心建设计算机网络,即国家科学基金网NSFNET,它是一个三级计算机网络,分为主干网,地区网和校园网(企业网)。这种三级计算机网络覆盖了全美国主要的大学和研究所,并成为互联网中的主要组成部分。1991年,NSF和美国其他政府机构开始认识到,互联网需要扩大其适用范围,很多其他公司接入到互联网,这让网络通信量急剧增大,美国政府决定将互联网的主干网转交给私人公司来经验,并对接入互联网的单位收费。1992年互联网上的主机超过100万台。1993年互联网主干网的速率提高到45Mbit/s。
  3. 第三阶段形成多层次ISP结构的互联网,从1993年开始,美国政府资助的NSFNET被若干个互联网主干网替代,政府也不再负责互联网的经营,这时出现了一个名词:互联网服务提供者ISP(Internet Service Provider),ISP是一个进行商业活动的公司,因此ISP被译为互联网服务提供商,比如我国的中国电信,中国联通和中国移动。

ISP可以从互联网管理机构申请到很多IP地址,同时他们拥有通信线路以及路由器等连网设备,任何机构和个人只要向某个ISP交纳规定费用,就可以从该ISP获取IP地址的使用权,并通过该ISP接入互联网,现在IP地址的管理机构不会把一个单个的IP地址分配给单个用户(不"零售"IP地址),而是把一批IP地址有偿租赁给经审查合格的ISP(只"批发"IP地址),现在的互联网不是某个单个组织所拥有而是全世界无数大大小小的ISP所共同拥有。

根据提供服务的覆盖面积大小以及所拥有IP地址数据的不同,ISP分为:主干ISP,地区ISP和本地ISP。

MultiISP

本地ISP和地区ISP,地区ISP和主干ISP之间通过路由器连接,同级之间,比如地区ISP之间通过一个或多个交换机连接,比如上图中的IXP(Internet eXchange Point),这样允许两个网络直接相连不需要再通过第三个网络来转发分组,这让互联网上的数据流量分布更加合理。

# 计算机网络的标准化工作

需要经历的标准化流程有:

  1. 因特网草案
  2. 建议标准(RFC文档)
  3. 草案标准
  4. 因特网标准

里面涉及的组织有国际标准化组织(ISO),国际电信联盟(ITU),美国电气和电子工程师协会(IEEE)等。

# 计算机网络基本概念

计算机网络是一些互联的,自治计算机系统的集合。

# 计算机网络的组成

  1. 从物理上看,计算机网络分硬件,软件和协议三大部分:
    1. 硬件:由主机,通信处理机,通信线路和交换设备组成。
    2. 软件:实现资源共享和用户沟通的软件。
    3. 协议:如汽车在道路上行驶遵守交通规则一样,数据在线路上传输遵循的一定规则。
  2. 从功能上看,计算机网络分通信子网和资源子网两大部分:
    1. 通信子网:由传输介质,通信设备和相应网络协议组成,包括物理层,数据链路层和网络层,实现联网计算机之间的数据通信。
    2. 资源子网:由主机,终端以及各种软件资源,信息资源组成,向网络用户提供网络资源与服务。

# 计算机网络的功能

  • 数据通信:计算机网络最基本和最重要的功能,包括连接控制,传输控制,差错控制,流量控制,路有选择,多路复用等子功能。
  • 资源共享:共享数据资源,软件资源以及硬件资源。
  • 分布式处理:当计算机网络中的某个计算机系统负荷过重,将处理任务传送给网络中其他计算机系统进行处理,利用空闲计算机资源提高整个系统的利用率。
  • 信息综合处理:将分散在各地计算机中的数据资料进行集中处理或分级处理,比如自动订票,银行金融系统等。
  • 负载均衡:将工作任务均衡地分配给计算机网络中的各台计算机。
  • 提高可靠性:计算机网络中的各台计算机可以通过网络互为替换机。

# 计算机网络的分类

  • 按分步范围分类:广域网WAN(Wide Area Network),城域网MAN(Metropolitan Area Network),局域网LAN(Local Area Network),个人区域网PAN(Personal Area Network)或无线个人区域网WPAN(Wireless PAN)。
  • 按拓扑结构分类:星形网络,总线型网络,环形网络,网状形网络。
  • 按传输技术分类:广播式网络,点对点网络。
  • 按使用者分类:公用网(public network),专用网(private network)。
  • 按数据交换技术分类:电路交换网络,报文交换网络,分组交换网络。

还有一种被称为接入网AN(Access Network)的网络,又称本地接入网或居民接入网,它既不属于互联网核心部分,也不属于边缘部分,它是从某个用户端系统到互联网中的第一个路由器(也称为边缘路由器)之间的一种网络。

# 计算机网络的核心

在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机,是实现分组交换的(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。为了弄清分组交换,介绍电路交换的概念:

# 电路交换

在电话问世后,人们发现让所有电话机两两相连是不现实的,如果N部电话两两相连,就需要N(N-1)/2对电线,当电话机数量很大时,需要的电线数量太大,所以人们让电话交换机将这些电话连接起来,每一部电话都连接到交换机上,交换机使用电路交换(circuit switching)让它们互联,当电话机数量很多时,让交换机彼此连接起来完成全网的交换任务。

circuitSwitching

从通信资源的分配角度来看,交换(switching)就是按照某种方式动态地分配传输线路的资源。在使用电路交换通话之前,必须先拨号请求建立连接。当被叫用户听到交换机送来的振铃音并摘机后,从主叫端到被叫端建立了一条连接,也就是一条专用的物理线路,这条连接保证了双方通话时所需的通信资源,这些资源在双方通信时不会被其他用户占用,此时双方互通电话,电话完毕挂机后,交换机释放刚才使用的这条专用的物理通路(即把刚才占用的通信资源归还给电信网)。这种必须经过"建立连接(请求通信资源)->通话(占用通信资源)->释放连接(归还通信资源)"三个步骤的交换方式称为电路交换。如果用户在拨号呼叫时电信网资源不足以支持这次通话,这主叫方会听到忙音,表示此次呼叫无法建立,用户需要稍后再拨。

从上面看出,电路交换的一个重要特点就是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源,使用电路交换来传送计算机数据时,其线路的传输效率往往很低,因为计算机数据时突发式地出现在传输线路上,因此真正用来传送数据的时间往往不到整个通信过程的百分几,已被用户占用的通信线路资源在绝大部分时间里都是空闲的,例如当用户阅读终端屏幕上的信息时,宝贵的通信线路资源未被利用而被白白浪费。

# 分组交换

分组交换采用存储转发技术,如下图,我们把要发送的整块数据称为一个报文(message),在发送报文前,先把较长的报文划分成一个个更小的等长数据段,假如每个数据段为1024bit,在每个数据段前面,加上一些由必要的控制信息组成的首部(header)后,就构成了一个分组(packet),分组又被称为"",而分组的首部也可称为"包头"。

分组是互联网中传送的数据单元,其中的首部是非常重要的,由于分组的首部包含了诸如目的地址和源地址等重要控制信息,每一个分组才能在互联网中独立地选择传输路径,并被正确地交付到分组传输的终点。

PacketSwitching

下面看下分组交换的示意图

packetNetwork

其中(a)强调互联网的核心部分是由许多网络和把它们互联起来的路由器组成的,而主机处于互联网的边缘部分,在互联网核心部分的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。当我们讨论互联网的核心部分中的路由器转发分组的过程中,往往把单个的网络简化成一条链路,而路由器成为核心部分的结点,如图(b),这种简化图看起来更加突出重点,因为在转发分组时最重要的就是要知道路由器之间是怎样连接的。

位于网络边缘的主机和位于网络核心部分的路由器都是计算机,但它们的作用却很不一样。主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。路由器则是用来转发分组的,即进行分组交换的。路由器收到一个分组,暂时存储下,检查其首部,查找转发表,按照首部中的目的地址,找个合适的接口转发出去,把分组交给下一个路由器。这样一步步地(其中可能经过几十个不同的路由器)以存储转发的方式,把分组交付给最终目的主机。各路由器之间必须经常交换彼此掌握的路由信息,以便创建和动态维护路由器中的转发表,使得转发表能够在整个网络拓扑发生变化时及时更新。

这里要注意,路由器暂时存储的是一个个段分组,而不是整个的长报文。短分组是暂存在路由器的存储器(即内存)中而不是存储在磁盘中的,这就保证了较高的交换效率,分组交换在传送数据之前不必先占用一条端到端的链路的通信资源。分组在哪条链路上传送才占用这段链路的通信资源,分组到达一个路由器后,先暂时存储下来,查找转发表,然后从一条合适的链路转发出去,分组在传输时就这样一段一段地断续占用通信资源,而且还省去了建立连接和释放连接的开销,数据的传输效率更高,实质上是采用了在数据通信的过程中断续(或动态)分配传输带宽的策略,对传送突发式的计算机数据非常合适,使得通信线路利用率大大提高。

为保证了数据的传送具有高可靠性,当网络中的某些结点或链路突然出现故障时,在路由器中运行的路由选择协议(protocol)能够自动找到转发分组的最合适的路径,此外互联网核心常采用网络拓扑结构,使得当发生网络拥塞或少数结点,链路出现故障时,路由器可灵活地改变转发路由而不致引起通信的中端或全网瘫痪。

# 报文交换

本质上讲分组交换的存储转发原理并非完全新的概念,古代有邮政通信,在20世纪40年代,电报通信也采用了基于存储转发原理的报文交换(message switching),在报文交换中心,一份电报被接收下来,并穿成纸带,操作员以每份报文为单位,撕下纸带,根据报文的目的地址,拿到相应的发报机转发出去,这种报文交换的时延较长,现在报文交换已经不用了,分组交换使用计算机进行处理,使得分组的转发非常迅速,分组交换虽然采用了某些古老的交换原理,但实际上已变成了一种崭新的交换技术。

# 三种交换比较

ThreeSwitching

这体现了三种交换的主要特点:

  • 电路交换:整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
  • 报文交换:整个报文先传送到相邻节点,全部存储下来后查找转发表,转发到下一个结点。
  • 分组交换:单个分组(只是整个报文的一部分)传送到相邻节点,存储下来后查找转发表,转发到下一个节点。

从上面可以看出:

若要传送大量数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快,而报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。

分组交换相对于电路交换来说的优点是:

  • 高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用。
  • 灵活:为每一个分组独立地选择最合适的转发路由。
  • 迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。
  • 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性。

当然它与电路交换来说也有缺点:

  • 时延:分组在各路由器存储转发时需要排队,这就会造成一定的时延,需要尽量减少这种时延,由于分组交换不像电路交换那样通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽。
  • 开销:各分组必须携带的控制信息也造成了一定的开销(overhead),整个分组交换网还需要专门的管理和控制机制。

# 计算机网络的性能指标

# 速率

计算机发出的信号都是数字形式的,比特(bit)源于binary digit,意思是一个"二进制数字",比特也是信息论中使用的信息量的单位,网络技术中的速率指的是数据的传送速率,也称为数据率(data rate)或比特率(bit rate),它的单位是bit/s。

# 带宽

带宽(bandwidth)本来指的是某个信号具有的频带宽度,指该信号包含不同频率成分占据的频率范围,比如传统通信线路上的电话信号的标准带宽是3.1kHz(从300Hz到3.4kHz,语音的主要成分的频率范围),这种意义的带宽单位是赫(千赫,兆赫),在过去很长一段时间,通信的主干路传送的是模拟信号,因此表示某信道允许通过的信号频带范围就称为该信道的带宽。在计算机网络中,带宽用来表示网络中某通道传送数据的能力,它的单位就是数据率的单位bit/s。

# 吞吐量

吞吐量(throughput)表示在单位时间内通过某个网络的实际数据量,经常用于现实世界中的网络一种测量,其受网络的带宽或网络的额定速率的限制。注意它的速率可能远远达不到额定速率。

# 时延

时延(delay)是指数据从网络的一端传送到另一端所需的时间,它分为几种:

  1. 发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间,因此发送时延也叫作传输时延,其等于数据帧长度(bit)/发送速率(bit/s)。
  2. 传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间,它等于信道长度(m)/电磁波在信道上的传播速率(m/s)。
  3. 处理时延,主机或路由器在收到分组时要花费一定的时间进行处理,比如分析分组首部,从分组中提取数据部分,查找适当路由,这就产生了时延。
  4. 排队时延,分组在经过网络传输时,要经过许多路由器,但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定转发接口后还要再输出队列中排队等待转发,这就产生了排队时延,排队时延长短往往取决于网络当时的通信量。

注意两个错误的概念:

  • "在高速链路上,比特会传送得更快些":在现实中汽车在路面质量很好的高速公路上可明显提高行驶速率,但是在网络链路上,我们提高的仅仅是数据发送速率而不是在链路上的传播速率,荷载信息的电磁波在通信链路上的传播速率取决于通信线路的介质材料,与数据的发送速率没有关系,提高数据的发送速率只是减少了数据的发送时延。

  • "光纤信道的传输速率高": 我们指的是可以用很高的速率向光纤通道发送数据,而光纤通道的传播速率实际上要比铜线的传播速率略低一点。数据的发送速率单位是每秒发送多少个比特,这是指在某个点或某个接口上的发送速率,而传播速率是每秒传播多少公里,这指在某一段传输线路上比特的传输速率。

# 时延带宽积

时延带宽积 = 传播时延 * 带宽

它的意义可以表示若发送端连续发送数据,在第一个比特即将达到终点时,发送端发送了多少比特,链路的时延带宽积又称为以比特为单位的链路长度。

# 往返时间RTT

往返时间(Round-Trip Time)也是一个重要的性能指标,因为在许多情况下,互联网上的信息不仅仅单方向传输而是双向交互的,有时很需要知道双向交互一次所需的时间,知道RTT和发送时间,再忽略另一端接收并返回发送的时间后便可算出有效数据率:

发送时间=数据长度/发送速率

有效数据率=数据长度/(发送时间+RTT)

当使用卫星通信时,往返时间RTT相对较长,是一个很重要的性能指标。

# 利用率

利用率有信道利用率和网络利用率两种,信道利用率指出某信道有百分几的时间是被利用的(有数据通过),完全空闲的信道的利用率是零,网络利用率是全网络的信道利用率的加权平均值,信道的利用率并非越高越好,当信道的利用率增大时,该信道引起的时延就迅速增加,这和高速公路的情况有些相似,当高速公路上的车流量很大时,在公路上的某些地方就会堵塞,行车所需的时间就会变长。网络也类似,当网路通信量很少时,网络产生的时延不大,但在网络通信量不断增大的情况下,分组在网络节点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大,另D0表示网络空闲的时延,D表示当前网络的时延,那么它们之间的关系就是:

D = D0/(1-U)

这里的U是网络的利用率,数值在0到1之间,当网络的利用率达到其容量的1/2时,时延就要加倍,特别值得注意的是:当网络的利用率接近最大值1时,网络的时延就趋于无穷大,因此信道或网络的利用率过高会产生非常大的时延。因此一些较大主干网的ISP通常控制信道利用率不超过50%,超过了就要准备扩容,增大线路的带宽。

# 计算机网络体系结构

# 分层的网络结构

网络体系结构是有分层结构的,是个非常复杂的系统,假定连接在网络上的两台计算机要相互传送文件,他们之间必须有一条传送数据的通路,但是此外还需要几项工作:

  1. 发起通信的计算机必须将数据通信的通路进行激活,也就是发送一些信令,保证要发送的计算机数据在这条网络上正确的发送和接收。
  2. 告诉网络如何识别接收的计算机。
  3. 发起通信的计算机必须查明对方计算机是否已开机,并且网络连接正常。
  4. 发起通信的计算机中的应用程序必须清楚,在对方计算机的文件管理程序是否做好已接收文件和存储文件的准备工作。
  5. 若计算机的文件格式不兼容,则至少其中一台计算机应完成格式转换功能。
  6. 对出现各种差错和意外事故,如数据传送错误,重复或丢失,网络中的某个结点交换机出现故障等,应当有可靠的措施保证计算机最终能收到正确的文件。

由此可见,相互通信的两个计算机必须高度协调工作才行,而这种"协调"是相当复杂的,为了设计这样复杂的计算机网络,早在最初的ARPANET设计时就提出了分层方法,分层可将庞大的而复杂的问题转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。全球经济的发展使得不同网络体系结构的用户迫切要求能够互相交换信息,为了使不同体系结构的计算机网络都能互联,国际标准化组织ISO于1977年成立了专门机构来研究该问题,他们提出一个试图在世界范围内互联成网的标准框架,即著名的开放系统互连基本参考模型OSI/RM(Open System Interconnection Reference Model),简称OSI,其中开放是指非独家垄断的,因此只要遵循OSI标准,一个系统就可以和世界上任何地方,也遵循这同一标准的其他任何系统进行通信,1983形成了开放系统互连基本参考模型的正式文件,即ISO 7498国际标准。

ISO试图达到一种理想境界,即全球计算机网络都遵循这个统一标准,因而全球的计算机能够很方便地进行互连和交换数据。在20世纪80年代,许多大公司甚至一些国家机构纷纷表示支持OSI,但是到了20世纪90年代初期,虽然整套OSI国际标准已经制定出来了,但是由于TCP/IP的互联网已抢先在全球相当大的范围成功运行了,而同时几乎找不到有什么厂家生产出符合OSI标准的商用产品,因此OSI只获得了一些理论研究的成果,但在市场化方面事与愿违地失败了,其失败原因归结为:

  1. OSI的专家缺乏实际经验,完成OSI标准时缺乏商业驱动力。
  2. OSI的协议实现过分复杂,运行效率很低。
  3. OSI标准的制定周期长,因而按OSI标准生产的设备无法及时进入市场。
  4. OSI的层次划分不太合理,有些功能在多个层次中重复出现。

一般来说,网络技术和设备只有符合相关的国际标准才能大范围地获得工程上的应用,但是在网络协议方面反过来了,得到最广泛应用的不是法律上的国际标准OSI,而是非国际标准TCP/IP,TCP/IP成为事实上的国际标准,从这个意义上说,能够占领市场的就是标准。

# 协议与划分层次

在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,这些规则明确规定了所交换数据的格式以及有关的同步问题。为进行网络中的数据交换而建立的规则,标准或约定称为网络协议(network protocol)。网络协议简称为协议,它主要有以下三个要素组成:

  1. 语法,数据与控制信息的结构或格式
  2. 语义,需要发出何种控制信息,完成何种动作以及做出何种响应。
  3. 同步,事件实现顺序的详细说明。

可以看出分层会带来很多好处:

  1. 各层之间是独立的,某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口所提供的服务。由于每一层只实现一种相对独立的功能,因而将一个难以处理的复杂问题分解为若干个较容易处理的更小一些问题,这样整个问题的复杂程度就下降了。
  2. 灵活性好,当任何一层发生变化时,只要层间的接口关系保持不变,在这层以上或以下各层均不受影响,对某一层提供的服务还可进行修改,当某层提供的服务不再被需要时,可以将该层取消。
  3. 结构上课分隔开,各层可以采用最合适的技术来实现。
  4. 易于实现和维护,使得实现和调试一个庞大的而又复杂的系统变得易于处理,因为整个系统已被分解为若干个相对独立的子系统。
  5. 能促进标准化工作,每一层的功能及其所提供的服务都已有了精确地说明,分层时应注意使每层的功能非常明确,层数太少,每一层协议会复杂,层数太多,在描述和综合各层功能的系统工程任务时遇到较多的困难,通常各层要完成功能主要有:差错控制,流量控制,分段和重合组昂,复用和分用,连接建立和释放。

计算机网络的各层及其协议的集合就是网络的体系结构(architecture),就是说,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义。这些功能究竟用何种硬件或软件完成则是一个遵循这种体系结构的实现(implementation)问题,体系结构是抽象的,而实现是具体的,是真正运行的计算机硬件和软件。

# 五层协议的体系结构

OSI的七层协议体系结构,但它复杂不实用,但TCP/IP体系结构则不同,但它现在却得到了非常广泛的应用,TCP/IP是一个四层的体系结构,它包含了应用层,运输层,网际层和网络接口层,不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种五层协议的体系结构,这样既简洁又能将概念阐述清楚。

SevenLevel

NetType

现在详细的介绍下各层的主要功能:

# 应用层

应用层(application layer)是体系结构中的最高层,它的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。进程是指主机中正在运行的程序,对于不同的网络应用需要不同的应用层协议,比如域名系统DNS,电子邮件SMTP协议,万维网HTTP协议。我们把应用层交互的数据单元称为报文(message)。

# 运输层

运输层(transport layer)的任务就是负责向两台主机中进程之间的通信提供通用数据传输服务。应用层进程利用该服务传送应用层报文,所谓"通用的",是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是把运输层收到的信息分别交付上面应用层中的相应进程。

运输层主要使用下面两种协议:

传输控制协议TCP(Transmission Control Protocol)——提供面向连接的,可靠地数据传输服务,其数据传输的单位是报文段(segment)。 用户数据报协议UDP(User Datagram Protocol)——提供无连接的,尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。

# 网络层

网络层(network layer)负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作IP数据报,简称数据报。网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。

互联网是由大量的异构网络通过路由器(router)相互连接起来的,互联网使用的网络层协议是无连接的网际协议IP(Internet Protocol)和许多种路由选择协议,因此互联网的网络层也叫作网际层IP层

# 数据链路层

数据链路层常简称为链路层,我们知道两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要专门的链路层的协议,在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻节点之间的链路上传送帧(frame),每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

# 物理层

物理层(physical layer)上所传数据的单位是比特,发送方发送1或0时,接收方应当受到1或0,而不是0或1。物理层要考虑的用多大的电压代表1或0,以及接收方如何识别出发送方所发送的比特。请注意,传输信息所利用的一些物理媒体,如双绞线,同轴电缆,光缆,无线信道等,并不在物理层协议之内而是在物理层协议的下面,因此有人把物理层下面的物理媒体当成第0层。

下面说明的是应用进程的数据在各层之间的传递过程中所经历的变化:

ProtocolStack

OSI参考模型把对等层次之间传送的数据单元称为该层的协议数据单元PDU(Protocol Data Unit),有的文献还提到协议栈(protocol stack),因为几个层次画在一起很像一个栈(stack)的结构。

# 实体,协议

在研究开放系统中的信息交换时,**实体(entity)**表示任何可发送或接收信息的硬件或软件进程,许多情况下,实体就是一个特定的软件模块。协议是控制两个对等实体(或多个实体)进行通信的规则的集合,协议的语法方面的规则定义了所交换的信息的格式,而协议的语义方面的规则定义了发送者或接收者所要完成的操作,在何种条件下,数据必须重传或丢弃。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。

协议和服务在概念上是很不一样的,首先,协议的实现保证了能够向上一层提供服务,使用本层服务的实体只能看见服务而无法看见下面的协议,下面的协议对上面的实体是透明的。其次,协议是"水平的",协议是控制对等实体之间通信的规则,但服务是"垂直的",服务是由下层向上层通过层间接口提供的,并非在一个层内完成的全部功能都称为服务,只有那些能够被高一层实体"看得见"的功能才能称之为"服务"。上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令在OSI中称为服务原语。

在同一系统中相邻两层的实体进行交互(交换信息)的地方,通常称为服务访问点SAP(Service Access Point)。服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口,有点像邮政信箱,可以把邮件放入信箱和从信箱中取走邮件,但这种层间接口和两个设备之间的硬件接口(并行的或串行的)并不一样,OSI把层与层之间交换的数据的单位成为服务数据单元SDU(Service Data Unit),它可以与PDU不一样,可以是多个SDU合成一个PDU,也可以是一个SDU划分为几个PDU。

任何相邻两层之间的关系概括为下图:

EntityProtocol

第n层的两个"实体(n)"之间通过"协议(n)"进行通信,第n层实体对第n+1层的实体提供服务。

计算机网络的协议还有一个很重要的特点,就是协议必须把所有不利条件事先都估计到,而不能假定一切都是正常的和非常理想的。

# TCP/IP体系结构

TCP/IP结构只有四层,下图表示它的结构,注意下面的路由器在转发分组时最高只用到了网络层而没有使用运输层和应用层。

TCPIPStructure

注意技术的发展并不严格遵循OSI分层概念,现在TCP/IP结构有时演变成下面这样,即某些应用程序可以直接使用IP层,甚至直接使用最下面的网络接口层。

TCPIPStructure2

还有一种方法表示就是分层画出具体的协议来表示TCP/IP协议族,它的特点是上下两头大二中间小:应用层和网络接口层都有很多协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中,我们可以看出,TCP/IP协议可以为各式各样的应用提供服务(everything over IP),同时TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上运行(IP over everything)。正因为如此互联网才发展到今天这种全球规模,从下图可以看出IP协议在该协议栈的核心作用。

TCPIPStructure3