计算机网络原理:计算机网络概述

todo

一、计算机网络基本概念

二、计算机网络结构

三、数据交换技术

计算机网络的目的是实现多台主机间的数据交换。最简单的计算机网络只有两台计算机和连接它们的一条链路,即两个结点和一条链路,这时不需要交换。如果有多台计算机需要通信,就需要利用交换技术实现它们之间一对一的通信。

常见的数据交换技术有三种:电路交换(circuit switching)、报文交换(message switching)和分组交换(packet switching)。基于这三种交换技术构建的网络分别称之为电路交换网络、报文交换网络和分组交换网络。

电路交换

电路交换源于电话网。如下图所示:

img

图(a)表示两部电话只需要用一对电线就能够互相连接。图(b)表示若有五部电话要两两相连,则需要10对电线。显然, 当电话数量很大时,这种连接方法需要的电线数量会很大(与电话数量的平方成正比)。为了解决这个问题,可以使用一个中间设备将这些电话连接起来,如图(c)所示。这个中间设备就是电话交换机。每一部电话都连接到交换机上,交换机就像一个有多个开关的开关器(当然,实际的工作原理是非常复杂的),可以将需要通信的任意两部电话的电话线路按需接通,从而大大减少了电线数量。当电话的数量进一步增多时,就要使用很多彼此连接起来的交换机来完成全网的交换任务。用这样的方法,就构成了覆盖全世界的电话网。

交换机接通电话线路的方式是一种称为电路交换 (Circuit Switching)的方式。其特点是,在使用电路交换打电话之前,必须先拨号请求建立连接。在被叫用户听到交换机送来的拨号音并摘机后,从主叫端到被叫端就建立了连接,也就是一条专用的物理通路 。该连接保证了双方通话所需的通信资源在双方通话时不会被其他用户占用,这样双方就能互相通电话了。通话完毕挂机后,交换机释放刚才使用的这条专用的物理通路(即把刚才占用的所有通信资源归还给电信网)。这种必须经过“建立连接 (分配通信资源)→通话 (一直占用通信资源)→释放连接 (归还通信资源)”三个步骤的交换方式称为电路交换 。用户拨号呼叫时,如果电信网的资源已不足以支持这次呼叫,则主叫用户会听到忙音,表示电信网不接受用户的呼叫,用户必须挂机,等待一段时间后再重新拨号。如下图,是电路交换的示意图。为简单起见,图中没有区分市话交换机和长途电话交换机。

img

这里应当注意的是,用户线归电话用户专用,而交换机之间拥有大量话路的中继线则是许多用户共享的,正在通话的用户只占用了其中的一个话路。在通话的全部时间内,通话的两个用户始终占用端到端的通信资源 。例如,上图中电话A和电话B之间的通路共经过了4个交换机,而电话C和电话D在同一个交换机的地理覆盖范围中,因此这两部电话之间建立的连接不需要经过其他的交换机。这也就是说,在电话A和电话B的通话过程中,它们始终占用这条已建立的物理通路,就像把电话A和电话B直接用一对电话线连接起来一样。通话完毕(挂机)后,电话A和电话B的连接断开,原来被占用的交换机之间的话路又可以为其他用户使用。

当使用电路交换来传送计算机数据时,其线路的传输效率往往很低。这是因为计算机数据是突发式地出现在传输线路上的,线路真正用来传送数据的时间往往不到10%甚至1%。即,已被用户占用的通信线路在绝大部分时间里都是空闲的。例如,当用户阅读终端屏幕上的信息或用键盘输入和编辑一份文件时,或计算机正在进行处理而结果尚未返回时,宝贵的通信线路资源并未被利用而是白白被浪费了。

报文交换

在20世纪40年代,电报通信采用了基于存储转发原理的报文交换(Message Switching)。在报文交换中心,一份份电报被接收,并穿成纸带。操作员以每份报文为单位,撕下纸带,根据报文的目的站地址,拿到相应的发报机转发出去。这种报文交换的时延较长,从几分钟到几小时不等。

报文交换也称为消息交换,其工作过程是:发送方把要发送的信息附加上发送、接收主机的地址及其他控制信息,构成一个完整的报文(Message),然后以报文为单位在交换网络的各结点之间以存储——转发的方式传送,直至送达目的主机。如下图,展示了有2台分组交换机和3个链路构成的某条路径上的报文交换,在整个传输过程中,每个报文在穿越网络时都不被分割。图中的交换机是存储——转发报文交换机,它们必须接收一个完整的报文,然后才能把报文转发到某个输出链路上。

image-20241103110455980

报文交换不需要事先建立连接,发送方组装好报文之后即可将其发给相邻的交换结点,交换结点收到整个报文并且检查无误后,暂时存储报文,然后利用路由选择找出下一个接收结点的地址,再把整个报文转发给下一个结点。交换结点的这种接收、暂存、转发的工作方式,就称为“存储——转发”交换方式。只有当报文被转发时才占用相应的信道,不存在电路交换中通信双方空闲时信道也要被占用的情况。因此,相对电路交换信道而言,报文交换线路利用率高。

在报文交换网络中,交换结点需要缓冲存储,报文需要排队,因此会导致报文的延迟时间变长并且不固定,对于实时通信而言容易出现不能满足速度要求的情况。当结点收到的报文过多而存储空间不够或者输出链路被占用不能及时转发时,就不得不丢弃报文,这也是报文交换的缺点。

分组交换

计算机网络采用的是分组交换技术。通常,我们把要发送的整块数据称为一个报文 (Message)。分组交换的工作过程是,发送报文前先把一个较长的报文划分成多个较小的等长数据段,同时在每一个数据段的前面加上由必要的控制信息组成的首部 (Header),构成多个分组 (Packet),然后将分组通过通信链路直接发送给分组交换机 (Packet Switch),分组交换机收到一个分组,先将分组暂时存储下来,再检查其首部,按照首部中的目的地址查找转发表 ,找到合适的接口转发出去,把分组交给下一个分组交换机。这样,一步一步经过多个分组交换机把分组转发到最终的目的计算机。

img

接下来,我们以下图为例,说明分组交换机转发分组的过程。

img

现在假定,主机H1向主机H5发送数据,其过程如下

  • 主机H1先将分组逐个地发往与它直接相连的分组交换机A。此时,除链路H1——A外,其他通信链路并不被目前通信的双方所占用。需要注意的是,即使是链路H1——A,也只是当分组正在此链路上传送时才被占用。在传送各分组的空闲时间,链路H1——A仍可为其他主机发送的分组使用。

  • 分组交换机A把主机H1发来的分组放入缓存。假定从A的转发表中查出应把该分组转发到链路A——C。则分组就传送到分组交换机C。当分组正在链路A——C上传送时,该分组并不占用网络其他部分的资源。(注:分组交换机暂时存储的是一个个短分组,而不是整个的长报文。短分组暂存在分组交换机的存储器(即内存)中而不是存储在磁盘中,这就保证了较高的交换速率)

  • 分组交换机C继续按上述方式查找转发表,假定查出应转发到分组交换机E。分组到达E后,E把分组直接交给主机H5。

假定在某一个分组的传送过程中,链路A——C的通信量太大,那么分组交换机A可以把分组沿另一个链路转发到分组交换机B,再转发到分组交换机E,最后把分组送到主机H5。上图只画了一对主机H1和H5在进行通信。实际上,在网络中可同时有多台主机经过同一条链路进行通信,例如,在主机H1与H5通信的同时,主机H3也可以经过分组交换机C和E与主机H6通信,主机H1发送给H5的分组与主机H3 发送给H6 的分组会交替在链路C——E上传送。总之,分组交换机在传送数据之前不必先占用一条端到端的通信线路。分组在哪段链路上传送才占用这段链路的通信资源。分组在传输时就这样一段接着一段地断续占用通信资源,而且省去了建立连接和释放连接的开销,因而数据的传输效率更高。

从上述过程可知,采用存储转发方式的分组交换,实质上是采用了在数据通信的过程中断续(或动态)分配传输带宽的策略,这对传送突发式的计算机数据非常合适,使得通信线路的利用率大大提高了。为了提高分组交换网的可靠性,常采用具有冗余链路的网状拓扑结构,使得当发生网络拥塞或少数结点、链路出现故障时,分组交换机可灵活地改变转发路由而不致引起通信的中断或全网的瘫痪。此外,通信网络的主干线路往往由一些高速链路构成,这样就能以较高的数据率迅速地传送计算机数据。

综上所述,分组交换的主要优点如下表所示。

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

分组交换也带来一些新的问题。例如,分组交换机在转发分组时需要花费一定的时间,这就会造成时延,各分组必须携带的控制信息也造成了一定的开销(Overhead)。此外,由于分组交换不像电路交换那样通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端的带宽,在通信量较大时可能造成网络拥塞。

img

如上图所示,每个分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机有一个输出缓存(也称为输出队列),用于存储分组交换机准备发往那条链路的分组。该输出缓存在分组交换中起着重要的作用。如果到达的分组需要从某条链路转发出去,但该链路正忙于传输其他分组,则分组必须在该输出缓存中等待(即排队)。当一个分组到达时发现输出缓存已满,将发生分组丢失,即到达的分组或已经排队的分组将被丢弃。当网络中有大量分组需要从某条链路转发时就可能出现这种分组丢失的情况,这时我们说网络发生了拥塞。

小结

下图,是电路交换、报文交换和分组交换的主要区别。

img

图中的A和D分别是源点和终点,B和C是在A和D之间的中间结点,P1~P4表示4个分组。图的下方归纳了三种交换方式在数据传送阶段的主要特点。

  • 电路交换。整个报文的比特流连续地从源点直达终点,好像一条物理的线路直接将源点和终点连接起来一样。
  • 报文交换。整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
  • 分组交换。单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。(注:分组交换机的输出接口和输入接口能够并行工作,当输出接口在发送一个分组时,其输入接口可以接收下一个分组)

从上图可以看出,若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较高。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小。将发送的报文划分成小的分组,除了有减小转发时延的好处外,还可以避免过长的报文长时间占用链路,同时也有利于进行差错控制。

四、计算机网络性能

性能指标从不同的角度来度量计算机网络的性能。下面介绍最常用的7个性能指标。

速率

速率就是数据的传送速率,也称为数据率(Data Rate)或比特率(Bit Rate)。如下图所示,计算机将待发送的信息转换成二进制数(一个二进制数称为一个“比特”),二进制数最终被转换成数字信号在线路上传输。

img

在网络技术中,速率的单位是bit/s(比特每秒,有时也写为bps,即bit per second,每秒传输的比特数量)。当速率较高时,就可以用kbit/s(k=10310^3=千)、Mbit/s(M=10610^6=兆)、Gbit/s(G=10910^9=吉)或Tbit/s(T=101210^{12}=太)。在日常生活中,人们习惯用更简洁但不严谨的说法来描述速率,如100M以太网,省略了单位中的bit/s,它的意思是速率为100Mbit/s的以太网。

计算机中的数据量往往用字节作为度量的单位,1个字节(Byte,B)代表8个比特(bit)。这里需要注意的是,“千”、“兆”和“吉”等英文缩写所代表的数值。在存储领域,“千字节”的“千”用大写K表示,它等于2102^{10},即1024,而不是10310^3。这也就说是,在表示计算机中的数据量时,1MB或1GB也并非表示10610^610910^9个字节,而是表示2202^{20}(1048576)或103010^{30}(1073741824)个字节。而在通信领域,“千字节”的“千”用小写k表示,它等于,10310^3即1000,而不是1024。

带宽

“带宽”(Bandwidth)有以下两种不同的含义。

  • 带宽本来是指某个信号具有的频带宽度。信号的带宽是指该信号所包含的各种不同频率成分所占据的频率范围。例如,在传统的通信线路上传送的电话信号的标准带宽是3.1kHz(从300 Hz到3.4kHz即话音的主要成分的频率范围),其单位是赫兹(或千赫兹、兆赫兹、吉赫兹等),表示通信线路允许通过的信号频带范围。

  • 在计算机网络中,带宽是指网络中某通道传送数据的能力,即网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,其单位是“比特每秒”,记为bit/s,前面也常常加上千(k)、兆(M)、吉(G)或太(T)这样的倍数。

“带宽”的这两种含义之间有着密切的关系。一条通信线路,其“频带宽度”越宽,那它传输数据的“最高数据率”也就越高。

目前主流的便携式计算机,其网卡能够支持10Mbit/s、100Mbit/s、1000Mbit/s这3个速率。如下图所示,当计算机网卡连接交换机后,从“本地连接 状态”对话框可以看到,其速率为100Mbps,说明该网卡的最高数据率是每秒传输100M比特。

img

吞吐量

吞吐量(Throughput)也称为吞吐率,表示在单位时间内通过某个网络(或接口)的数据量。

吞吐量包括全部上传和下载的流量。经常用于对现实世界中的网络进行测量,以便人们了解到底有多少数据量能够通过网络。如下图所示,计算机A同时浏览网页、在线看电影、向FTP服务器上传文件。其访问网页的下载速率为30kbit/s,播放视频的下载速率为40kbit/s,向FTP服务器上传文件的速率为20kbit/s,计算机A的吞吐量就是全部上传和下载速率的总和,即30+40+20=90(kbit/s)。

img

吞吐量受网络带宽或网络额定速率限制。如果计算机的网卡连接的是交换机,网卡就可以工作在全双工模式下,即能够同时接收和发送数据。网卡工作在100Mbit/s的全双工模式下,其最大吞吐量为200Mbit/s。如果计算机的网卡连接的是集线器,网卡就只能工作在半双工模式下,即不能同时发送和接收数据。网卡工作在100Mbit/s的半双工模式下,其最大吞吐量为100Mbit/s。

注:吞吐量有时还可用每秒传送的字节数或帧数来表示。

时延

时延(Delay或Latency)也称为延迟或迟延,是指数据(一个报文或分组,甚至比特)从网络的一端传送到另一端所需要的时间。网络中的时延是由四个不同的部分组成的:

总时延=发送时延+传输时延+排队时延+处理时延总时延=发送时延+传输时延+排队时延+处理时延

接下来,以下图中的计算机A给计算机B发送数据为例,来说明网络中的每个部分的时延。

img

发送时延

发送时延(Transmission Delay),是指主机或路由器将一个分组的所有比特发送到通信线路上所需要的时间,也就是从待发送分组的第一个比特算起,到该分组的最后一个比特发送到线路上所需要的时间。

img

发送时延的计算公式为:

发送时延=分组长度(B发送速度(bit/s发送时延=\frac{分组长度(B)}{发送速度(bit/s)}

可以看出,发送时延与分组长度和发送速率有关。由于在分组交换中计算机总是以信道最高数据率发送数据,因此公式中的发送速率也可以替换成信道带宽,即发送速率就是网卡的带宽,100Mbit/s的网卡就意味着1s能够发送100106100*10^6个比特。

以太网数据帧最大为1518字节,再加上8字节前导字符,共计1526字节,即分组长度为1526×8=12208比特。如果网卡带宽是10Mbit/s,发送一个最大以太网数据帧,其发送时延=1220810000000\frac{12208}{10 000 000}=1.2ms。其中,ms为毫秒,1s=1000ms。

这里,我们需要知道的是,数据包越大,发送时延也就越大。那么如何验证呢?

如果计算机能够访问Internet,可以使用ping命令测试到Internet上某个网站的数据包往返时延。如下图所示,ping 9.9.9.9,参数l(英文L的小写)用来指定数据包的大小。可以看到数据包为64字节的往返时延比1400字节的往返时延少1ms,这个差距就是因为发送时延不同产生的。

img

传播时延

传播时延(Propagation Delay),是指电磁波在信道中传播一定距离所花费的时间,也就是从从待发送分组的最后一个比特发送到线路上算起,到该分组的最后一比特到达路由器接口所需要的时间。

img

传播时延的计算公式为:

传播时延=信道长度(m电磁波在信道上的传播速率(m/s传播时延=\frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)}

电磁波在自由空间的传播速率是光速,即3.0×105km/s3.0×10^5km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3×105km/s2.3×10^5km/s,在光纤中的传播速率约为2.0×105km/s2.0×10^5km/s。例如,在1000km长的光纤线路上,产生的传播时延大约为5ms。

注:电磁波在指定介质中的传播速率是固定的,从公式可以看出,信道长度固定了,传播时延也就固定了。

排队时延

排队时延,是指分组在路由器的输入队列和输出队列中排队所花费的时间。分组在网络中传输时,要经过许多的路由器。分组在进入路由器后,要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发,这就产生了排队时延。

img

排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时,会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。

处理时延

处理时延,是指主机或路由器处理分组所花费的时间。主机或路由器在收到数据包时,要花费一定时间进行处理,如分析数据包的首部、进行首部差错检验,查找路由表为数据包选定转发出口等,这就产生了处理时延。

时延带宽积

时延带宽积,指的是链路的传播时延与链路带宽的乘积,也即:

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

我们可以使用如下示意图,来理解时延带宽积。

image-20241105082606975

将链路看成是一个圆柱形的管道,管道的长度表示链路的传播时延(注,这里以时间作为单位来表示链路长度),而管道的截面积表示链路的带宽。因此,这个管道的体积就是时延带宽积,表示链路能容纳多少个比特。例如,假设某段链路的传播时延为20ms,带宽为10Mb/s,可以算出

时延带宽积=2010310106=2105bit时延带宽积 = 20*10^{-3}*10*10^{6}=2*10^{5}bit

这表示,若发送端连续发送数据,则在发送的第一个比特即将达到终点时,发送端就已经发送了20万个比特,而这20万个比特都正在链路上向前移动。因此,链路的时延带宽积又称为以比特为单位的链路长度。

不难看出,管道中的比特数表示从发送端发出的但尚未达到接收端的比特。对于一条正在传送数据的链路,只有在代表链路的管道都充满比特时,链路才得到了充分的利用。

往返时间

往返时间(Round-Trip Time,RTT),表示发送端从发送数据开始,到发送端接收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时间。显然,在互联网中,往返时间包括了各中间结点转发数据时的发送时延、排队时延、处理时延以及数据的传播时延。

使用ping命令可以显示往返时间。如下图所示,分别ping网关、国内的网站和美国的网站,能看到每一个数据包的往返时间和统计的平均往返时间。从图中可以看出,途经的路由器越多距离越远,往返时间也会越长。(注:通常情况下,内网中的计算机互ping,往返时间小于10ms,如果大于10ms,就要安装抓包工具分析网络中的数据包是否有恶意的广播包,以找到发广播包的计算机)

img

往返时间带宽积可以用来计算当发送端连续发送数据时,接收端如发现有错误,立即向发送端发送通知使发送端停止,发送端在这段时间发送的比特量。例如,假设某段链路的往返时间为40ms,带宽为10Mb/s,假定数据的接收方及时发现了差错,并告知发送方,使发送方立即停止发送,但这时发送方也已经发送了40万个比特。

利用率

利用率有信道利用率和网络利用率两种。信道利用率指某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。

信道利用率并非越高越好。这是因为,根据排队论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。这和高速公路的情况有些相似。当高速公路上的车流量很大时,由于某些地方会出现堵塞,因此行车所需的时间就会增大。网络也有类似的情况。当网络的通信量很少时,网络产生的时延并不大;但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。如果令D0D_0表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D、D0D_0和利用率U之间的关系:

D=D01UD = \frac{D_0}{1-U}

这里U的数值在0到1之间。当网络利用率达到其容量的1/2时,时延就要加倍。特别值得注意的就是,当网络利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道利用率或网络利用率过高会产生非常大的时延。也就是说,一定不要让信道或网络的利用率接近于1。下图所示为时延与利用率的关系。因此,一些拥有较大主干网的ISP通常会把信道利用率控制在50%以下,一旦超过就要准备扩容,增大线路的带宽。

img

注:信道利用率也不能太低,这会使宝贵的通信资源被白白浪费。

丢包率

丢包率,也称分组丢失率,是指在一定的时间范围内,分组在传输过程中丢失的分组数量与总的分组数量的比率。即

丢包率=丢失的分组数总分组数丢包率 = \frac{丢失的分组数}{总分组数}

丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。

在计算机网络中,分组丢失主要有两种情况。一种情况是分组在传输过程出现了比特级差错,被结点丢弃。另一种情况就是当分组到达一台队列已满的分组交换机时,由于没有空间来存储这些分组,分组交换机就会将到达的分组或已经排队的分组丢弃。由于分组交换不像电路交换那样,通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽,在通信量较大时就可能造成网络拥塞,导致分组交换机的队列溢出和分组丢失。这是现代计算机网络中分组丢失最主要的原因。

丢包率反映了网络的拥塞情况。一般无拥塞时路径丢包率为0,轻度拥塞时丢包率为1%~4%,严重拥塞时丢包率为5%~15%。具有较高丢包率的网络通常无法使网络应用正常工作。丢包率是网络运维人员非常关心的一个网络性能指标,但普通用户往往并不关心这个指标,因为他们通常感觉不到网络丢包。大多数网络应用底层所使用的通信软件会为用户提供可靠的传输服务,它们会自动重传丢失的分组并自动调整发送速率进行网络拥塞控制。在网络发生拥塞,丢包率较高时,用户感觉到的往往是网络时延变大,“网速”变慢,而不是信息的丢失。

五、计算机网络体系结构

在计算机网络的术语中,计算机网络的层次结构模型与各层协议的集合称为计算机网络的体系结构(Architecture)。简单来说,计算机网络的体系结构就是计算机网络及其部件所应完成的功能的精确定义。这些功能究竟是用何种硬件或软件实现的,则是一个遵循这种体系结构的实现(Implementation)问题。体系结构是抽象的,实现则是具体的,是真正在运行的计算机硬件和软件。

1974年,美国的IBM公司宣布了它研制的系统网络体系结构(System Network Architecture,SNA),这是世界上第一个网络体系结构。此后,许多公司纷纷提出各自的网络体系结构。这些网络体系结构的共同点是都采用层次结构模型,但层次划分和功能分配均不相同。

为了使不同体系结构的计算机网络都能互连,国际标准化组织(International Standard Organization,ISO)于1977年成立了专门机构研究该问题。不久,他们就提出一个试图使各种计算机在世界范围内互连成网的标准框架,即著名的开放系统互连参考模型
(Open Systems Interconnection ReferenceModel,OSI/RM),简称为OSI。“开放”是指只要遵循OSI标准,一个系统就可以和位于世界上任何地方的、也遵循这一标准的其他任何系统进行通信。该模型是一个七层协议的体系结构,如下图(a)所示。

img

在OSI模型之前,TCP/IP协议簇就已经在运行,并逐步演变成TCP/IP参考模型,如上图(b)所示。到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但这时互联网已抢先在全世界覆盖了相当大的范围,因此得到最广泛应用的不是法律上的国际标准
OSI,而是非国际标准TCP/IP。于是,TCP/IP就被称为事实上的国际标准。

OSI的七层协议体系结构概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP是一个四层协议体系结构,它包含应用层、运输层、网际层和网络接口层。不过从实质上讲,TCP/IP只有上面的三层,因为最下面的网络接口层并没有什么具体内容。TCP/IP体系结构虽然简单,却得到了非常广泛的应用。因此我们在学习计算机网络原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的原理体系结构,如上图(c)所示。

现在结合互联网的情况,自上而下地、非常简要地介绍一下各层的主要功能。

(1)应用层

应用层(Application Layer)是原理体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定的网络应用。

应用层协议定义的是应用进程间通信和交互的规则。不同的网络应用需要不同的应用层协议,互联网中的应用层协议很多,如支持万维网应用的HTTP、支持电子邮件的SMTP,支持文件传送的FTP等。

我们将应用层交互的数据单元称为报文(Message)。

(2)运输层

运输层(Transport Layer,或翻译为传输层)的任务是为两台主机中互相通信的进程提供通用的数据传输服务。应用进程使用该服务传送应用层报文。

所谓通用,是指并不针对某个特定网络应用,多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程同时使用下层运输层的服务,分用则是运输层把收到的信息分别交付上层应用层中的相应进程。

互联网中主要有以下两个运输层协议。

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

(3)网络层

网络层(Network Layer)负责为分组交换网络中的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组进行传送。在TCP/IP体系中,由于网络层使用IP,因此分组也叫作IP数据报,或直接称为IP分组。

网络层的一个重要任务就是选择合适的路由(Route),将源主机运输层传下来的分组,通过网络中的路由器的转发(通常要经过多个路由器的转发),最后送达目的主机。

互联网是由大量的异构(Heterogeneous)网络通过路由器(Router)相互连接而成的。互联网主要的网络层协议是无连接的网际协议(InternetProtocol,IP)和许多种路由选择协议,因此互联网的网络层也叫作网际层或IP层。

注:不要将运输层的“用户数据报”和网络层的“IP数据报”弄混。无论在哪一层传送的数据单元,习惯上都可笼统地用“分组”来表示。在阅读国外文献时,特别要注意“packet”往往可指代任何一层传送的数据单元。

(4)数据链路层

数据链路层(Data Link Layer),简称为链路层,其任务是将分组从链路的一端传送到另一端。

计算机网络由主机、路由器和连接它们的链路组成,从源主机发送到目的主机的分组必须在一段一段的链路上传送。数据链路层传送的数据单元称为帧(Frame)。因此,数据链路层的任务实际上是,在相邻结点之间(主机和路由器之间或两个路由器之间)的链路上,传送以帧为单位的数据。

链路层的每一帧由数据和必要的控制信息(如同步信息、差错控制等)组成。在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。控制信息还可用于接收端检测所收到的帧中有无差错。如发现有差错,数据链路层应该丢弃有差错的帧,以免继续传送下去白白浪费网络资源。

(5)物理层

物理层(Physical Layer)是原理体系结构的最底层,完成计算机网络中最基础的任务,即在传输媒体上传送比特流,将数据链路层帧中的每个比特从一个结点通过传输媒体传送到下一个结点。

物理层传送数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要考虑所采用的传输媒体的类型,如双绞线、同轴电缆、光缆等,以及与传输媒体之间的接口。

注:传递信息所使用的一些物理传输媒体本身是在物理层之下的,因此也有人把物理传输媒体当作第0层。

接下来,我们通过下图,说明应用进程的数据在各层之间传递过程中所经历的变化。

img

这里假定两台主机通过一台路由器连接起来,主机1的应用进程AP1向主机2的应用进程AP2传送数据,其过程如下:

  • AP1先将其数据交给本主机的第5层(应用层)。数据在第5层被加上必要的控制信息H5就变成了这一层的数据单元,并被交给下层。第4层(运输层)收到这个数据单元后,加上本层的控制信息H4构成本层的数据单元,再交给第3层(网络层)。依此类推。不过到了第2层(数据链路层)后,控制信息被分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2),而第1层(物理层)利用传输媒体最终将数据链路层数据单元的所有比特以比特流的形式进行传送。

  • 这一串比特流离开主机1经网络的物理传输媒体传送到路由器后,就从路由器的第1层依次上升到第3层。每一层都根据控制信息进行必要的操作,然后将控制信息剥去,将剩下的数据单元上交给更高的一层。当分组上升到第3层时,该层根据首部中的目的地址查找路由器中的路由表,找出转发分组的接口,然后将分组往下传送到第2层,加上新的首部和尾部后,再传送到最下面的第1层,然后在物理传输媒体上把每一个比特发送出去。

  • 这一串比特流离开路由器到达目的站主机2后,就从主机2的第1层按照上面讲过的方式,依次上升到第5层。最后,应用进程AP1
    发送的数据被交给目的站的应用进程AP2。

可以用一个简单例子来比喻上述过程。有一封信从最高层向下传,每经过一层就包上一个新的信封,写上必要的地址信息。包有多个信封的信件传送到目的站后,从第1层起,每层拆开一个信封后把信封中的信交给它的上一层。传到最高层后,发信人所发的信被交给收信人。

虽然应用进程数据要经过上图所示的复杂过程才能送到目的站的应用进程,但这些过程对用户来说都被屏蔽掉了,以致看上去就好像是。应用进程AP1直接把数据交给了应用进程AP2。同理,任何两个同样的层次(如两个系统的第4层)之间,看上去也如同上图中的水平虚线所示的那样,将数据(即数据单元加上控制信息)直接传递给了对方。这就是所谓的“对等层(Peer Layers)”之间的通信。

六、参考

计算机网络教程(第6版·微课版)

计算机网络原理创新教程

计算机网络原理 自考04741


计算机网络原理:计算机网络概述
https://kuberxy.github.io/2024/11/03/计算机网络原理01:计算机网络概述/
作者
Mr.x
发布于
2024年11月3日
许可协议