本篇介绍一些网络的前提内容.

协议与划分层次

五层协议

五层划分

OSI的划分过于复杂,运行效率低,层次不合理,有些功能在多个层次重复出现.而TCP/IP协议的下面两层并没有具体内容,因此在实际学习过程中折中一下.

(1)应用层(application layer)

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

(2)运输层(transport layer)

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

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

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

(3)网络层(network layer)

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

数据链路层常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。 在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在数据链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且要纠错),那么就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层的协议复杂些。

(5)物理层(physical layer)

在物理层上所传数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1” 或 “0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的头应当有多少根引脚以及各引脚应如何连接。当然,解释比特代表的意思,就不是物理层的任务。请注意,传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。因此也有人把物理层下面的物理媒体当作第0层。

计算机网络的性能指标

  • 速率

  • 带宽:在计算机网络中,带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的”最高数据率”。

  • 吞吐量:吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。

  • 时延:时延(delay或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也称为延迟或迟延。网络中的时延是由以下几个不同的部分组成的:

    • 发送时延 发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
      因此发送时延也叫做传输时延.发送时延的计算公式是:
      $$
      发送时延=\frac{数据帧长度(bit)}{发送速率(bit/s)}
      $$

    • 传播时延 传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式是:
      $$
      传播时延=\frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)}
      $$
      电磁波在自由空间的传播速率是光速,即3.0x10^5km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3x10^5km/s,在光纤中的传播速率约为2.0x10^5km/s。例如,1000 km 长的光纤线路产生的传播时延大约为5ms.

      以上两种时延有本质上的不同。但只要理解这两种时延发生的地方就不会把它们弄 混。发送时延发生在机器内部的发送器中(一般就是网络适配器),与传输信道的长度(或信号传送的距离)没有任何关系。但传播时延则发生在机器外部的传输信道媒体上,而与信号的发送速率无关。信号传送的距离越远,传播时延就越大.

      下面还有两种时延也需要考虑,但比较容易理解:

    • 处理时延 主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等,这就产生了处理时延.

    • 排队时延 分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。

      这样,数据在网络中经历的总时延就是以上四种时延之和:
      $$
      总时延= 发送时延+ 传播时延+ 处理时延+ 排队时延
      $$
      一般说来,小时延的网络要优于大时延的网络。在某些情况下,一个低速率、小时延的网络很可能要优于一个高速率但大时延的网络.

  • 时延带宽积

    把以上讨论的网络性能的两个度量—— 传播时延和带宽—— 相乘,就得到另一个很有用的度量:传播时延带宽积,即:
    $$
    时延带宽积=传播时延\times带宽
    $$
    我们可以用下面的示意图来表示时延带宽积。这是一个代表链路的圆柱形管道,管道的长度是链路的传播时延(请注意,现在以时间作为单位来表示链路长度),而管道的截面积是链路的带宽。因此时延带宽积就表示这个管道的体积,表示这样的链路可容纳多少个比特。

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

  • 往返时间RTT

    在计算机网络中,往返时间RTT(Round-Trip Time)也是一个重要的性能指标。这是因为在许多情况下,互联网上的信息不仅仅单方向传输而是双向交互的。因此,我们有时很需要知道双向交互一次所需的时间。例如,A向B发送数据。如果数据长度是100MB ,发送速率是100Mbit/s,那么
    $$
    发送时间=\frac{数据长度}{发送速率}=\frac{100\times2^{20}\times8}{100\times10^{6}}\approx8.39s
    $$
    如果B正确收完100MB的数据后,就立即向A发送确认。再假定A只有在收到B的确认信息后,才能继续向B 发送数据。显然,这需要等待一个往返时间RTT(这里假定确认信息很短,可忽略B发送确认的时间).如果RTT=2s ,那么可以算出A向B发送数据的有效数据率.
    $$
    有效数据率=\frac{数据长度}{发送时间+RTT}=\frac{100\times2^{20}\times8}{8.39+2}\approx80.7\times10^6bit/s\approx80.7Mbit/s
    $$
    比原来的数据率100 Mbit/s小不少.

  • 利用率

    利用率有信道利用率和网络利用率两种。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过).完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。信道利用率并非越高越好。这是因为,根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。这和高速公路的情况有些相似。当高速公路上的车流量很大时,由于在公路上的某些地方会出现堵塞,因此行车所需的时间就会变长。网络也有类似的情况。当网络的通信量很少时,网络产生的时延并不大。但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。如果令D0表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D,D0和利用率U之间的关系:
    $$
    D=\frac{D_0}{1-U}
    $$
    这里U是网络的利用率,数值在0到1之间。当网络的利用率达到其容量的1/2时,时延就要加倍。特别值得注意的就是:当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道或网络的利用率过高会产生非常大的时延。下图给出了上述概念的示意图。因此一些拥有较大主干网的ISP通常控制信道利用率不超过50%。如果超过了就要准备扩容,增大线路的带宽。

分组交换

分组交换则采用存储转发技术。把一个报文划分为几个分组后再进行传送。通常我们把要发送的整块数据称为一个报文(message)。在发送报文之前,先把较长的报文划分成为一个个更小的等长数据段,例如,每个数据段为1024bit。在每一个数据段前面,加上一些由必要的控制信息组成的首部(header)后,就构成了一个分组(packet)。分组又称为“包”,而分组的首部也可称为“包头”。分组是在互联网中传送的数据单元。分组中
的“首部”是非常重要的,正是由于分组的首部包含了诸如目的地址和源地址等重要控制信息,每一个分组才能在互联网中独立地选择传输路径,并被正确地交付到分组传输的终点。

现在假定图中的主机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。在网络中可同时有多台主机进行通信,如主机H5也可以经过路由器B和E与主机H6通信。

这里要注意,路由器暂时存储的是一个个短分组,而不是整个的长报文。短分组是暂存在路由器的存储器(即内存)中而不是存储在磁盘中的。这就保证了较高的交换速率。

优点:

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

分组交换也带来一些新的问题。例如,分组在各路由器存储转发时需要排队,这就会造成一定的时延。因此,必须尽量设法减少这种时延。

此外,由于分组交换不像电路交换那样通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽。分组交换带来的另一个问题是各分组必须携带的控制信息也造成了一定的开销(overhead).整个分组交换网还需要专门的管理和控制机制。