计算机网络最重要的两个功能:连通性、共享。
网络(network)由若干结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是计算机、集线器、交换机或路由器等。
因特网(Internet)是世界上最大的互连网络。网络把许多计算机连接在一起,而因特网则把许多网络连接在一起。
请注意以下两个意思相差很大的名词internet和Internet。
以小写字母i开始的internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的网络。在这些网络之间的通信协议(即通信规则)可以是任意的。
以大写字母I开始的Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET。
根据工作方式划分,可以分为两大块:
(1) 边缘部分 由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
(2) 核心部分 由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
处在因特网边缘的部分就是连接在因特网上的所有的主机,又称为端系统。小的端系统可以是一台普通个人电脑和具有上网功能的手机,而大的端系统则可以是一台非常复杂和昂贵的大型计算机。
在网络边缘的端系统之间的通信方式通常可划分为两大类:客户-服务器方式(C/S方式)和对等方式(P2P方式)
客户-服务器方式
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。
客户-服务器方式所描述的是进程之间服务和被服务的关系。
客户是服务请求方,服务器是服务提供方。
服务请求方和服务提供方都要使用网络核心部分所提供的服务。
客户程序:
(1) 被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
(2) 不需要特殊的硬件和很复杂的操作系统。
服务器程序:
(1) 是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
(2) 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
(3) 一般需要有强大的硬件和高级的操作系统支持。
对等连接方式
对等连接(peer-to-peer,简写为P2P)是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。
只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。因此这种工作方式也称为P2P文件共享。
实际上,对等连接方式从本质上看仍然是使用客户-服务器方式,只是对等连接中的每一个主机既是客户又同时是服务器。
网络核心部分是因特网中最复杂的部分,因为网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一台主机都能够向其他主机通信。
在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机(但不是主机)。
路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
从通信资源的分配角度来看,交换(switching)就是按照某种方式动态地分配传输线路的资源。
从本质上讲,这种断续分配传输带宽的存储转发原理并非是完全新的概念。自古代就有的邮政通信,就其本质来说也属于存储转发方式。而在20世纪40年代,电报通信也采用了基于存储转发原理的报文交换(message switching)。在报文交换中心,一份份电报被接收下来,并穿成纸带。操作员以每份报文为单位,撕下纸带,根据报文的目的站地址,拿到相应的发报机转发出去。这种报文交换的时延较长,从几分钟到几小时不等。现在报文交换已经很少有人使用了。分组交换虽然也采用存储转发原理,但由于使用了计算机进行处理,这就使分组的转发非常迅速。
三种交换方式在数据传送阶段的主要特点:
电路交换——整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
报文交换——整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
分组交换——单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。
若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
(2)带宽
“带宽”(bandwidth)有以下两种不同的意义:
①带宽本来是指某个信号具有的频带宽度。信号的带宽是指该信号所包含的各种不同频率成份所占据的频率范围。这种意义的带宽的单位是赫(或千赫、兆赫、吉赫等)。在过去很长的一段时间,通信的主干线路传送的是模拟信号(即连续变化的信号)。因此,表示通信线路允许通过的信号频带范围就称为线路的带宽(或通频带)。
②在计算机网络中,带宽用来表示网络的通信线路传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。在本书中在提到“带宽”时,主要是指这个意思。这种意义的带宽的单位是“比特每秒”,记为b/s。在这种单位的前面也常常加上千(k)、兆(M)、吉(G)或太(T)这样的倍数。
在“带宽”的两种表述中,前者为频域称谓,而后者为时域称谓,其本质是相同的。也就是说,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高。
(3)吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。显然,吞吐量受网络的带宽或网络的额定速率的限制。例如,对于一个100Mb/s的以太网,其额定速率是100Mb/s,那么这个数值也是该以太网吞吐量的绝对上限值。因此,对于100Mb/s的以太网,其典型的吞吐量可能只有70Mb/s。请注意,有时吞吐量还可用每秒传送的字节数或帧数来表示。
(4)时延(delay或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也称为延迟或迟延。
网络中的时延是由以下几个不同的部分组成的:
①发送时延
发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。因此发送时延也叫做“传输时延”。发送时延的计算公式是:
对于一定的网络,发送时延并非固定不变,而是与发送的帧长(单位是比特)成正比,与发送速率成反比。
②传播时延
传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式是:
电磁波在自由空间的传播速率是光速,即3.0×105km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3×105km/s,在光纤中的传播速率约为2.0×105km/s。例如,1000km长的光纤线路产生的传播时延大约为5ms。
发送时延发生在机器的内部的发送器中(一般就是发生在网络适配器中),而传播时延则发生在机器外部的传输信道媒体上。
③处理时延
主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等等,这就产生了处理时延。
④排队时延
分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
这样,数据在网络中经历的总时延就是以上四种时延之和:
总时延=发送时延+传播时延+处理时延+排队时延
一般说来,小时延的网络要优于大时延的网络。在某些情况下,一个低速率、小时延的网络很可能要优于一个高速率但大时延的网络。
总时延的数值基本上还是由发送时延来决定的。
不能笼统地认为:“数据的发送速率越高,传送得就越快”。
容易产生这样错误的概念,就是“在高速链路(或高带宽链路)上,比特应当跑得更快些”。但这是不对的。
我们知道,汽车在路面质量很好的高速公路上可明显地提高行驶速率。然而对于高速网络链路,提高的仅仅是数据的发送速率而不是比特在链路上的传播速率。荷载信息的电磁波在通信线路上的传播速率(这是光速的数量级)与数据的发送速率并无关系。提高数据的发送速率只是减小了数据的发送时延。还有一点也应当注意,就是数据的发送速率的单位是每秒发送多少个比特,是指某个点或某个接口上的发送速率。而传播速率的单位是每秒传播多少公里,是指传输线路上比特的传播速率。因此,通常所说的“光纤信道的传输速率高”是指向光纤信道发送数据的速率可以很高,而光纤信道的传播速率实际上要比铜线的传播速率还略低一点。这是因为经过测量得知,光在光纤中的传播速率是每秒20.5万公里,它比电磁波在铜线(如5类线)中的传播速率(每秒23.1万公里)略低一些。
(5)时延带宽积
把以上讨论的网络性能的两个度量——传播时延和带宽——相乘,就得到另一个很有用的度量:传播时延带宽积,即
时延带宽积=传播时延*带宽
这是一个代表链路的圆柱形管道,管道的长度表示链路的传播时延(请注意,现在以时间作为单位来表示链路长度),而管道的截面积表示链路的带宽。因此,时延带宽积就表示这个管道的体积,表示这样的链路可容纳多少个比特。例如,设某段链路的传播时延为20ms,带宽为10Mb/s,算出
时延带宽积=20 * 10^(-3) * 10 * 10^(6)=2 * 10 ^(5)bit
这就表示,若发送端连续发送数据,则在发送的第一个比特即将达到终点时,发送端就已经发送了20万个比特,而这20万个比特都正在链路上向前移动。因此,链路的时延带宽积又称为以比特为单位的链路长度。
不难看出,管道中的比特数表示从发送端发出的但尚未达到接收端的比特。对于一条正在传送数据的链路,只有在代表链路的管道都充满比特时,链路才得到了充分的利用。
(6)往返时间RTT
在计算机网络中,往返时间RTT (Round-Trip Time)也是一个重要的性能指标,它表示从发送方发送数据开始,到发送方收到来自接收方的确认(接收方收到数据后便立即发送确认),总共经历的时间。
对于上述例子,往返时间RTT是40ms,而往返时间和带宽的乘积是4×105 (bit)。
在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。显然,往返时间与所发送的分组长度有关。发送很长的数据块的往返时间,应当比发送很短的数据块的往返时间要多些。往返时间带宽积的意义就是当发送方连续发送数据时,即使能够及时收到对方的确认,但已经将许多比特发送到链路上了。
(7)利用率
利用率有信道利用率和网络利用率两种。
信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
网络利用率则是全网络的信道利用率的加权平均值。
信道利用率并非越高越好。这是因为,根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。这和高速公路的情况有些相似。当高速公路上的车流量很大时,由于在公路上的某些地方会出现堵塞,因此行车所需的时间就会增长。
网络也有类似的情况。当网络的通信量很少时,网络产生的时延并不大。但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。如果令 D0表示网络空闲时的时延,D 表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D和D0及网络利用率U之间的关系:
式中,U是网络的利用率,数值在0到1之间。当网络的利用率达到其容量的1/2时,时延就要加倍。特别值得注意的是:当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道或网络利用率过高会产生非常大的时延。下图给出了上述概念的示意图。因此,一些拥有较大主干网的ISP通常控制他们的信道利用率不超过50%。如果超过了就要准备扩容,增大线路的带宽。
协议与划分层次
在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(如发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(network protocol)。网络协议也可简称为协议。更进一步讲,网络协议主要由以下三个要素组成:
(1) 语法,即数据与控制信息的结构或格式;
(2) 语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3) 同步,即事件实现顺序的详细说明。
协议通常有两种不同的形式,一种是使用便于人来阅读和理解的文字描述,另一种是使用让计算机能够理解的程序代码。这两种不同形式的协议,都必须能够对网络上信息交换过程做出精确的解释。
分层可以带来很多好处:
(1) 各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂程度就下降了。
(2) 灵活性好。当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,也可以将这层取消。
(3) 结构上可分割开。各层都可以采用最合适的技术来实现。
(4) 易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已被分解为若干个相对独立的子系统。
(5) 能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。
分层时应注意使每一层的功能非常明确。若层数太少,就会使每一层的协议太复杂。但层数太多又会在描述和综合各层功能的系统工程任务时遇到较多的困难。通常各层所要完成的功能主要有以下一些(可以只包括一种,也可以包括多种):
① 差错控制 使得和网络对等端的相应层次的通信更加可靠。
② 流量控制 使得发送端的发送速率不要太快,要使接收端来得及接收。
③ 分段和重装 发送端把要发送的数据块划分为更小的单位,在接收端将其还原。
④ 复用和分用 发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
⑤ 连接建立和释放 交换数据前先建立一条逻辑连接。数据传送结束后释放连接。
把计算机网络的各层及其协议的集合,称为网络的体系结构(architecture)。换种说法,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义[GREE82]。需要强调的是:这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现(implementation)的问题。体系结构的英文名词architecture的原意是建筑学或建筑的设计和风格。它和一个具体的建筑物的概念很不相同。例如,我们可以走进一个明代的建筑物中,但却不能走进一个明代的建筑风格之中。同理,我们也不能把一个具体的计算机网络说成是一个抽象的网络体系结构。总之,体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
五层协议体系结构
(1) 应用层(application layer)
应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程(process)就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议,等等。我们将应用层交互的数据单元称为报文(message)。
(2) 传输层(transport layer)
传输层的任务就是负责向两个主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。所谓通用,是指并不针对某个特定网络应用,而是多种应用可以使用同一个传输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面传输层的服务,分用与复用相反,是传输层把收到的信息分别交付上面应用层中的相应进程。
传输层主要使用以下两种协议:
● 传输控制协议TCP (Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。
● 用户数据报协议 UDP (User Datagram Protocol)——提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
(3) 网络层(network layer)
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包(packet)进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作 IP数据报,或简称为数据报(datagram)。
请注意:不要将运输层的“用户数据报UDP”和网络层的“IP数据报”弄混。此外,无论在哪一层传送的数据单元,都可笼统地用“分组”来表示。
网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。
这里要强调指出,网络层中的“网络”二字,已不是我们通常谈到的具体的网络,而是在计算机网络体系结构模型中的专用名词。
因特网是一个很大的互联网,它由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来。因特网主要的网络层协议是无连接的网际协议IP (InternetProtocol)和许多种路由选择协议,因此因特网的网络层也叫做网际层或IP层。网络层、网际层和IP层都是同义语。
(4) 数据链路层(data link layer)
数据链路层常简称为链路层。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在数据链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且要纠错),那么就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层的协议复杂些。
下图说明的是应用进程的数据在各层之间的传递过程中所经历的变化。这里为简单起见,假定两台主机通过一台路由器连接起来。
假定主机1的应用进程AP1向主机2的应用进程AP2传送数据。AP1先将其数据交给本主机的第5层(应用层)。第5层加上必要的控制信息H5就变成了下一层的数据单元。第4层(运输层)收到这个数据单元后,加上本层的控制信息H4,再交给第3层(网络层),成为第3层的数据单元。依此类推。不过到了第2层(数据链路层)后,控制信息被分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2);而第1层(物理层)由于是比特流的传送,所以不再加上控制信息。请注意,传送比特流时应从首部开始传送。
OSI参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU(Protocol Data Unit)。这个名词现已被许多非OSI标准采用。
当这一串的比特流离开主机1的物理层经网络的物理媒体(传输信道)传送到路由器时,就从路由器的第1层(物理层)依次上升到第3层(网络层)。每一层都是根据控制信息进行必要的操作,然后将控制信息剥去,将该层剩下的数据单元上交给更高的一层。当分组上升到了第3层时,就根据首部中的目的地址查找路由器中的路由表,找出转发分组的接口,然后往下传送到第2层(链路层),加上新的首部和尾部后,再到最下面的第1层,然后在物理媒体上把每一个比特发送出去。
当这一串的比特流离开路由器到达目的站主机2时,就从主机2的第1层按照上面讲过的方式,依次上升到第5层。最后,把应用进程AP1发送的数据交给目的站的应用进程AP2。
可以用一个简单例子来比喻上述过程。有一封信从最高层向下传。每经过一层就包上一个新的信封,写上必要的、交由下一层处理的地址信息。包有多个信封的信件传送到目的站后,从第1层起,每层拆开一个信封后(即按协议进行处理后)就把信封中的信交给它的上一层。传到最高层后,取出发信人所发的信交给收信人。
虽然应用进程数据要经过如图所示的复杂过程才能送到终点的应用进程,但这些复杂过程对用户来说,却都被屏蔽掉了,以致应用进程AP1 觉得好像是直接把数据交给了应用进程AP2。同理,任何两个同样的层次(例如在两个系统的第4层)之间,也好像如同图中的水平虚线所示的那样,把数据(即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层”(peer layers)之间的通信。我们以前经常提到的各层协议,实际上就是在各个对等层之间传递数据时的各项规定。
实体、协议、服务和服务访问点
当研究开放系统中的信息交换时,往往使用实体(entity)这一较为抽象的名词表示任何可发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。
协议是控制两个对等实体(或多个实体)进行通信的规则的集合。协议在语法方面的规则定义了所交换的信息的格式;而协议在语义方面的规则就定义了发送者或接收者所要完成的操作,例如,在何种条件下数据必须重传或丢弃;协议在同步方面的规则定义了收发双方的时序关系,即在一定条件下应当发生什么事件。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
一定要弄清楚,协议和服务在概念上是很不一样的。
首先,协议的实现保证了能够向上一层提供服务。使用本层服务的实体只能看见服务而无法看见下面的协议。也就是说,下面的协议对上面的实体是透明的。
其次,协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成的全部功能都称为服务。只有那些能够被高一层实体“看得见”的功能才能称之为“服务”。上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令在OSI中称为服务原语。
在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为服务访问点 SAP (Service Access Point)。服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口,有点像邮政信箱(可以把邮件放入信箱和从信箱中取走邮件),但这种层间接口和两个设备之间的硬件接口(并行的或串行的)并不一样。 OSI把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data Unit),它可以与协议数据单元PDU不一样。例如,可以是多个SDU合成为一个PDU,也可以是一个SDU划分为几个PDU。
这样,在任何相邻两层之间的关系可概括为图1-20所示的那样。这里要注意的是,第n层的两个“实体(n)”之间通过“协议(n)”进行通信,而第n + 1层的两个“实体(n + 1)”之间则通过另外的“协议(n + 1)”进行通信(每一层都使用不同的协议)。第n层向上面的第n + 1层所提供的服务实际上已包括了在它以下各层所提供的服务。第n层的实体对第n + 1层的实体就相当于一个服务提供者。在服务提供者的上一层的实体又称为“服务用户”,因为它使用下层服务提供者所提供的服务。
计算机网络的协议还有一个很重要的特点,就是协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。例如,两个朋友在电话中约好,下午3时在某公园门口碰头,并且约定“不见不散”。这就是一个很不科学的协议,因为任何一方临时有急事来不了而又无法通知对方时(如对方的电话或手机都无法接通),则另一方按照协议就必须永远等待下去。因此,看一个计算机网络协议是否正确,不能只看在正常情况下是否正确,而且还必须非常仔细地检查这个协议能否应付各种异常情况。
TCP/IP体系结构
TCP/IP的体系结构比较简单,它只有四层。下图给出了用这种四层协议表示方法的例子。请注意,图中的路由器在转发分组时最高只用到网络层而没有使用运输层和应用层。
应当指出,技术的发展并不是遵循严格的OSI分层的概念。实际上现在的因特网使用的TCP/IP体系结构有时已经演变成为下图所示的那样,即某些应用程序可以直接使用IP层,或直接使用最下面的网络接口层[PETE11],下图是这种表示方法。在图中,网络接口层有时也称为子网层。这里的“子网”是指一些局域网和某些广域网(如ATM网),但从IP层来看,这些网络属于数据链路层,也就是属于网络接口层。
还有一种方法,就是分层次画出具体的协议来表示TCP/IP协议族,它的特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。这种很像沙漏计时器形状的TCP/IP协议族表明:TCP/IP协议可以为各式各样的应用提供服务(所谓的everything over IP),同时TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上运行(所谓的IP overeverything)。正因为如此,因特网才会发展到今天的这种全球规模。从图中不难看出IP协议在因特网中的核心作用。
计算机网络(2)物理层
计算机网络(3)数据链路层
计算机网络(4)网络层
计算机网络(5)传输层
计算机网络(6)应用层