更新于 

计算机网络分层

计算机网络的标准化工作与相关组织

计算机网络的标准化对于计算机网络的发展和推广起着非常重要的作用。因特网的所有标准都要以RFC(Requestrian For Comments)的形式在因特网上发布,但并不是每个RFC都是因特网标准,RFC要上升为因特网的正式标准需要如下4个阶段。

  1. 因特网草案,这个阶段还不是RFC文档
  2. 建议标准,从这个阶段开始就是RFC文档了
  3. 草案标准
  4. 因特网标准

此外,还有实验的RFC和提供信息的RFC,各种RFC之间的关系如图:

而在国际上,负责制定,实施相关网络标准的标准化组织众多,主要有如下几个:

  1. 国际标准化组织(ISO):制定的主要网络标准或规范有OSI参考模型,HDLC等。
  2. 国际电信联盟(ITU):其前身为国际电话电报资讯委员会(CCITT),其下属机构ITU-T制定了大量有关远程通信的标准。
  3. 国际电气电子工程师协会(IEEE):世界上最大的专业技术团队,由计算机和工程学专业人士组成,IEEE在通信领域最著名的研究成果就是802标准。
  4. Internet工程任务组(IETF):负责因特网相关标准的指定 RTCxxx

计算机网络的性能指标

速率(Speed)

即数据率或称数据传输率或比特率,是指链接到计算机网络上的主机在数字信道上传送数据位数的速率,单位为b/s,kb/s,Mb/s等。例如:

要注意区分速率和存储容量的进制是不同的,前者是10\^3,后者是2^10,比如:

带宽(Bandwidth)

原本指某个信号具有的频带宽度,即最高频率与最低频率之差,单位是赫兹(Hz)。计算机网络中,带宽用来表示网络的通信线路传送数据的能力,。**我们一定要注意这里的带宽是文件传输速率而不是传播速率,即是文件数据上链路的速率,而不是在链路上传播的速率。**通常是指单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。单位是“比特每秒”而不是“Byte/s字节每秒",b/s,kb/s,Mb/s,Gb/s。

思考:带宽和速率有什么不同?

带宽值得是最大速率,即是一个固定的峰值,而速率是实时动态改变的但是速率小于等于带宽。所以我们也可以推断带宽的进制肯定也是10^3。

吞吐量(Throughput)

吞吐量是指在单位时间内通过某个网络(或信道、接口)的数据量。一般会受到网络的带宽和网络的额定速率的限制。单位也是b/s,kb/s等。并且进制也是10^3。发送端到接收端传送数据速率,一段链路网的最大吞吐量取决于吞吐量最小的链路(类似于关键路径,水桶盛水问题)。

假如现在有一个数据传输链路如下图:服务端上传一个文件的某一个链路的传输带宽是Rs,中间的主干路汇聚了10个分支链路,总带宽是R,而某一个分支的主机下载文件的带宽是Rc

那么这段数据通信网的吞吐量主要取决于min{Rs,Rc和R/10}

时延(Delay)

指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总时间,他由4部分组成:发送时延,传播时延,处理时延和排队时延。这里我们逐一了解:

  1. 发送时延:节点将分组的所有比特推向(传输)链路所需要的时间,即从发送分组的第一个比特算起,到改分组的最后一个比特发送完毕所需要的时间,因此也称之为传输时延,计算公式为

    发送时延=分组长度/信道宽度发送时延=分组长度/信道宽度

  2. 传播时延:电磁波在信道中传播一定的距离需要花费的时间,即一个比特从链路的一端传播到另一端所需要的时间,计算公式为

    传播时延=信道长度/电磁波在信道上的传播速率传播时延=信道长度/电磁波在信道上的传播速率

  3. 处理时延:数据在交换节点为存储转发而进行的一些必要的处理所花费的时间。例如:分析分组的首部,从分组中提取数据部分,进行差错检验或查找适当的路由等。

  4. 排队时延:分组在进入路由器后要现在输入队列排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发,这就产生了排队时延。

处理时延和排队时延可能有许多个,因为现在多采用分组或者报文交换信息,需要经过过个相邻的转存节点经处理后再次转发。在做题时,排队时延和处理时延一般忽略不计,另外对于高速链路,提高的仅仅是数据发送速率而非比特在链路上的传播速率(毕竟电磁波在信道上的传播速率一般是自然界固定的无法提升)。提高数据的发送速率只是为了减少数据的发送时延。

时延带宽积

指发送端发送的第一个比特即将到达终点时,发送端已经发出了多少个比特,因此又称以比特为单位的链路长度。计算公式为:

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

考虑一个代表链路的圆柱形管道,其长度表示链路的传播延时,横截面积表示链路带宽,则时延带宽积表示该管道可以容纳的比特数量。很明显由于带宽是10^3进制,因此这个也是。我们可以理解为时延带宽积是比特为单位的链路长度表示方法。

往返时延(Round-Tip Time,RTT)

指从发送端发送数据开始,到发送端收到来自接收端的确认(接收端受到数据后立即发送确认),总共经历的时延。在互联网中,往返时延还包括各中间节点的处理时延,排队时延以及转发数据时的发送时延。

一定要注意是接收端刚接收到数据的第一个Bit就发送确认信息了。

信道利用率

指出某一个信道有百分之多少的时间是由数据通过的,即

信道利用率=有数据通过时间/(+)数据通过时间信道利用率=有数据通过时间/(有+无)数据通过时间

网络利用率

计算机网络中会有许许多的信道,每一个信道利用率都不相同,为了宏观评估,对每一个信道根据不同的重要性赋予不同的加权,然后计算加权平均值:

网络利用率=信道利用率加权平均值=p1利用率1+p2利用率2+...+pn利用率n/p1+p2+...+pn网络利用率=信道利用率加权平均值=p_1*利用率1+p_2*利用率2+...+p_n*利用率n/p_1+p_2+...+p_n

丢包率

丢包率=丢包数量/已发分组数量×100%丢包率=丢包数量/已发分组数量×100\%

丢包率反映了一个子网的拥塞程度和流量传输控制是否合理,当丢包率过高时即说明这个传输网络拥塞了。

总结

计算机网络分层结构

两个系统中实体间的通信是一个很复杂的过程,为了降低协议设计和调试过程的复杂性,也为了方便于网络进行研究、实现和维护,促进标准化的工作,通常对计算机网络的体系结构进行分层。

我们将计算机网络的各层及其协议的集合称为网络的体系结构,计算机网络的体系结构就是把这个计算机网络及其所对应完成的功能的精确定义,他是计算机网络中的层次、各层的协议即层间接口的集合。

一定要注意这些层次的功能究竟是用何种硬件或软件完成的,则是一个遵循体系结构实现的问题,而体系结构是一个抽象问题,实现是具体问题,是真正在运行的计算机硬件和软件,在讨论分层体系结构时,我们只是研究抽象分层问题,不考虑具体实现。

那么计算机网络体系结构通常都有可分层的特性,他将复杂的大系统分成若干个较为容易实现的层次,分层的基本原则如下:

  1. 每层都实现一种相对独立的功能,降低大系统的复杂度
  2. 各层之间界面自然清晰,易于理解,相互交流尽可能的少
  3. 各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现
  4. 保持下层对上层的独立性,上层单向使用下层提供的服务
  5. 整个分层结构应能促进标准化工作

分层之后,各层之间相互独立,灵活性好,因而分层的体系结构易于更新(替换单个模块即可),易于调试,易于交流,易于抽象,易于标准化。但是层次越多,有些功能在不同层之间就会难免重复,产生额外的开销,导致整体的效率下降。层次越少,就会使得每一层的协议太过复杂,因此,分层时要考虑层次的清晰程度与运行效率之间的折中,层次数量的折中。

根据一定的规则,我们将分层后的网络从低到高依次称为第1层,第2层…第n层,通常还为每一层取一个特定的名字,比如第1层又称为物理层。

在计算机网络的分层结构中,第n层的活动元素称为n层实体,具体来说,实体可以是指任何发送或接受信息的硬件或软件进程,通常是一个特定的软件模块。不同机器上的同一层称为对等层,同一层的实体称为对等实体。n层实体实现的服务为n+1层所用(其实和操作系统中上层应用和底层硬件层的关系类似)。在这种情况下,n层被称为服务提供者,n+1层服务与用户。

一定要区分OS和计算机网络中的分层结构的区别,OS中,上层是下层的服务对象,同时上层也会调度下层的工作,但是在计算机网络中,下层就真的只是提供上层服务,上层也只是想用下层提供的服务,由于分层工作独立,他们不会互相影响对方的工作。

每一层还有自己传送的数据单位,其名称,大小和含义也不相同。在计算机网络体系结构中,每一个报文都分为两部分,一个是数据部分即SDU,还有一个是控制信息部分即PCI,他们共同组成了PDU协议数据单元。

SDU是服务数据单元,为完成用户所要求的功能而应传送的数据,第n层的数据服务单元称为n-SDU。

PCI是协议控制单元,他不是完成用户功能所要求的的信息,而是控制协议操作的信息,一般是层之间协议交换进行信息交流必须的信息(一般是头文件等),第n层的协议数据单元称为n-PCI。

PDU是协议数据单元,对等层次之间传送的数据单位称为该层的PDU,第n层的协议数据单元即为n-PDU,在实际的网络中,每层的数据协议单元都有一个通俗的名称,如物理层的PDU称为比特,链路层的PDU称为域,网络层的PDU称为分组,传输层的PDU称为报文。

在各层间传输数据时,把从第n+1层收到的PDU称为第n层的SDU,加上第n层的PCI就成为了第n层的PDU,交给第n-1层后作为SDU发送,接收方接收时做相反的处理,因此可以得到三者的关系为n-SDU+n-PCI=n-PDU=(n-1)SDU。什么意思?说明在发送端,从高层要发送的信息,需要先从最高层向最底层方向逐渐进行各种协议控制单元的加密,然后通过最底层物理层传输数据,接收端接受到信息后(实际上此时的信息还有之前的n层的协议控制信息PCI),需要在从最底层向最高层方向逐层的对信息进行解码,最终才能与发送端相同的对等层获得真正需要的SDU内容,如下图:

A的5和B的5就是对等层,他们之间要交流的信息或者其他硬件层都是对等实体,当A的第5层要和B的第5层进行信息交流时,那么A的第5层需要先向下进行不断的协议加密即A5->A4->A3->A2->A1->B1->B2->B3->B4->B5,并且从上图中也可以发现,发送端数信息逐渐变长,但是实际上5-SDU并没有变长,只是前面加上了许多协议控制信息比如4-PCI,3-PCI等,而接收端B在向上层传送接受信息的过程中,信息会逐渐变短,这就是在进行头文件信息的解码处理,最终再对等层B5获得了需要的5-SDU。

上图就是我们所讲到的那个关系公式,n-SDU+n-PCI=(n-1)SDU。我们可以从上面的图中清晰的看到两个顶层应用的信息交流实际上需要进行很复杂的处理,才可以实现,而不是仅仅两个应用层单独进行信息交流,所有的信息交换都需要按照上面的层次次序进行。并且我们还可以总结出层次结构的特点:

  1. 第n层的实体不仅要使用n-1层的服务来实现自身定义的功能,还要向第n+1层提供本层的服务,该服务是第n层及其下面各层提供的服务总和。
  2. 最低层只提供服务,是整个层次结构的基础,中间各层既是低一层的服务使用者,又是高一层的服务提供者,最高层面也要提供服务,他是向用户提供服务。
  3. 上一层只能通过相邻层间的接口使用下一层的服务,而不能调用其他层的服务(即n层不能直接使用n-2层提供的服务),下一层所提供服务的实现细节对上一层透明。
  4. 两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就把信息传送到对方(实际上还是需要经过下面的层的服务的,只是我们感官上是只有两个对等层在直接信息交流)。