计算机网络-数据链路层

  • 格式:pdf
  • 大小:334.47 KB
  • 文档页数:18

计算机⽹络-数据链路层

1 基本概述

⽹络中的主机、路由器等都必须实现数据链路层

步骤操作

主机H1给主机H2发送数据,中间要经过3个路由器和电话⽹、局域⽹以及⼴域⽹等多种⽹络。

步骤操作

从五层协议原理体系结构的⾓度来看,主机应该具有体系结构中的各个层次,⽽且路由器只需要具有体系结构中的下⾯三层。

各设备通过物理层下⾯的传输媒体进⾏互连。

从层次上来看数据的流动

步骤操作

当主机H1向H2发送数据时,主机H1将待发送的数据逐层封装后,通过物理层将构成的数据包的各⽐特转换为电信号。

发送到传输媒体数据包进⼊路由器后,由下往上逐层解封到⽹络层。路由器根据数据包的⽬的⽹络地址和⾃⾝转发表,确定数据包的转发端⼝。

从⽹络层向下逐层封装数据包,并通过物理层将数据包发送到传输媒体,数据包最终到达H2时。还要由下往上逐层解封,最终解封出主机H1所发送的数据。

仅从数据链路层观察帧的流动

步骤操作

数据包只在数据链层从左向右沿⽔平⽅向传送,主机H1到H2的通信,可以看成是在4段不同的链路上的通信组成的。

数据链路层基本概述

2 三个重要问题

数据链路层传送的协议数据单元是帧

2.1 封装成帧

步骤操作

如图所⽰,两台主机通过⼀段链路互连,两台主机都会对所发送或者接收的数据包,进⾏五个层次的封装或者解封。

发送⽅将待发送的数据,通过应⽤层封装成应⽤层协议数据单元,然后交付给运输层。

运输层为其添加运输层协议⾸部,使之成为运输层协议数据单元,然后交付给⽹络层。⽹络层为其添加⽹络层协议⾸部。使之成为⽹络层协议数据单元,然后交付给数据链路层。数据链路层给⽹络层协议数据单元添加⼀个数据链路层协议⾸部,简称为帧头。我们将数据链路层给⽹络层交付的协议数据单元,添加帧头和帧尾的操作,称为封装成帧。

添加帧头和帧尾的⽬的,都是为了在链路上以帧为单元来传送数据。也就是为了实现数据链路层本⾝的功能。

2.2 差错控制

发送⽅将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇⼲扰后可能会出现误码。

接收⽅主机如何判断帧在传输过程中出现误码?

通过检错码来发现,发送⽅在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾,接收⽅主机收到帧后。

通过检错码和检错算法,就可以判断出帧在传输过程中是否出现了误码。2.3 可靠传输

接收⽅主机收到有误码的帧后,是不会接受该帧的,将其丢弃。

如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施。

如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收⽅主机还可以重新收到被丢弃的这个帧的正确副本。

换句话来说,尽管误码是不可能完全避免,但是如果能实现发送⽅发送什么,接收⽅就能收到什么,就称为可靠传输。

注意:以上三个问题都是使⽤点对点信道的数据链路层来举例的。

如果使⽤⼴播信道的数据链路层除了包含上⾯三个问题外,还有⼀些问题要解决

如图所⽰,主机A,B,C,D,E通过⼀根总线进⾏互连,主机A要给主机C发送数据,代表帧的信号会通过总线传输到总线上的其他各主机,那么主机B,D,E如何知道所收到的帧不是发送给她们的,主机C如何知道发送的帧是发送给⾃⼰的。

可以⽤编址(地址)的来解决

将帧的⽬的地址添加在帧中⼀起传输

数据碰撞问题

随着技术的发展,交换技术的成熟。在有线领域使⽤点对点链路和链路层交换机的交换式局域⽹取代了共享式局域⽹。

在⽆线局域⽹中仍然使⽤的是共享信道技术。

3 封装成帧

3.1 基本介绍

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

帧头和帧尾中包含有重要的控制信息

发送⽅的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各⽐特,转换成电信号交给传输媒体,那么接收⽅的数据链路层如何从物理层交付的⽐特流中提取出⼀个个的帧?

结论:需要帧头和帧尾来做帧定界。

但⽐不是每⼀种数据链路层协议的帧都包含有帧定界标志,例如下⾯例⼦

结论:

实际上,以太⽹的数据链路层封装好MAC帧后,将其交付给物理层,添加8字节的前导码,然后再将⽐特流转换成电信号发送。

前导码中的前7个字节为前同步码,作⽤是使接收⽅的时钟同步。之后的1字节为帧开始定界符,表明其后⾯紧跟的就是MAC帧。

另外以太⽹还规定了帧间间隔为96⽐特时间,因此,MAC帧不需要帧结束定界符。

3.2 透明传输

透明传输是指数据链路层对上层交付的传输数据没有任何限制,好像数据链路层不存在⼀样。

案例说明这是发送⽅数据链路层收到其上层交付的协议数据单元,给其添加了帧头和帧尾,使其为帧,帧界定标志也就是个特定数据值,如果在上层交付的协议数据单元中, 恰好也包含这个特定数值,接收⽅就不能正确接收。

步骤说明

接收⽅在收到第⼀个帧定界标志时,认为是帧的开始。当接收⽅再次接收到帧定界标志时会误认为帧结束了。

如果数据链路层不采取其他措施,来避免接收⽅对帧是否结束的误判,就不能称为透明传输。数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。

3.3 解决透明传输问题

⾯向字节的物理链路:使⽤字节填充(或称字符填充)的⽅法实现透明传输。

步骤说明

在发送帧之前,对帧的数据部分进⾏扫描,每出现⼀个帧定界符,就在其前⾯插⼊⼀个转义字符。

接收⽅数据链路层在物理层交付的⽐特流中提取帧,遇到第⼀个帧定界符时,认为这是帧的开始。当遇到转义字符就知道,其后⾯的1字节内容虽然与帧定界符相同。但是他是数据⽽不是定界符,剔除转义字符后将其后⾯的内容作为数据继续提取。对于这个转义字符也是相同的处理,当再次提取到帧定界符时,表明这是帧的结束。

转义字符:是⼀种特殊的控制字符,其长度为1字节,⼗进制值为27,⽽不是ESC这3个字符。

⾯向⽐特的物理链路: 使⽤⽐特填充的⽅法实现透明传输。

发送⽅

在帧⾸部和尾部中,仅仅给出了帧定界标志,⽽未给出其他控制字段,⽽帧的数据部分,出现了两个帧定界标志。出现了两个帧定界标志。

他们实际上是数据,⽽不是帧定界。在发送前,可以采⽤零⽐特填充法,对数据部分进⾏扫描,每5个连续的⽐特1后⾯就插⼊1个⽐特0。这样就确保了帧定界在整个帧中的唯⼀性,也就可以实现透明传输。

接收⽅

接收⽅的数据链路层,从物理层交付的⽐特流中提取帧时,将帧的数据部分中的每5个连续的⽐特1后⾯的那个⽐特0剔除即可。

帧的数据部分长度

结论:

帧的数据部分的长度,应该⼤于帧头和帧尾的长度。因为仅从数据链路层来看,帧的数据部分才是真正要传输的数据。

帧头和帧尾是为了实现数据链路层功能⽽额外添加的。

3.4 总结

4 差错检测

4.1 基本介绍

FCS作⽤

让接收⽅的数据链路层检查帧在传输过程中是否产⽣了误码。

4.2 奇偶校验

4.3 循环冗余校验CRC

基本概念

案例⼀

案列⼆

结论

5 可靠传输5.1 基本概念

⽐特差错

其他传输差错

5.2 分组丢失

路由器输⼊队列快满了,主动丢弃收到的分组。

步骤说明此处我们将帧的称呼改为了分组,这意味着传输差错不仅仅局限于数据链路层的⽐特错差。

主机H6给主机H2发送的分组到达了路由器R5,由于此时R5的输⼊队列快满了。R5根据⾃⼰的分组丢弃策略将该分组丢弃,这是⼀种分组丢失的情况。

5.3 分组失序

数据并未按照发送顺序依次到达接收端。

步骤说明

主机H6依次给主机H2发送了三个分组,最先发送的分组未必最先到达。

5.4 分组重复

步骤说明

主机H6给主机H2发送的分组,由于某些原因在⽹络中滞留了没有及时到达H2,这可能造成H6对该分组的超时重发。

重发的分组到达H2,⼀段时间后滞留在⽹络中的那个分组有到达了H2,这就会造成分组重复的传输差错。

5.5 总结

6 三种可靠协议

停⽌-等待协议SW回退N帧协议GBN选择重传协议SR

这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应⽤到计算机⽹络体系结构的各层协议中。

6.1 停⽌-等待协议

6.1.1 确认与否认

步骤实现收发双⽅基于互联⽹进⾏通信,⽽不是局限在⼀条点对点的数据链路,发送⽅给接收⽅发送数据分组,接收⽅收到后对其进⾏差错检测,如果没有误码,则接受该数据分组,并给发送⽅发送确认分组,简称为ACK。发送⽅收到对所发送数据分组的确认分组后,才能发送下⼀个数据分组,假设这个数据分组在传输过程中出现了误码。接收⽅收到后对其进⾏差错检测,发现了误码,则丢弃该数据分组,并且给发送⽅发送否认分组,简称为NAK。

发送⽅收到对所发送数据分组的否认分组后,就知道了之前⾃⼰所发送的数据分组,出现了差错⽽被接收⽅拒绝,于是⽴刻重传该数据分组。但是并不能⽴刻将该数据分组从缓存中删除,只有在收到针对该数据分组的确认分组后,才能将其从缓存中删除。看来,发送⽅每发送完⼀个数据分组后,就停⽌发送下⼀个数据分组,等待来⾃接收⽅的确认分组或者否认分组。

结论如果收到确认分组,则可继续发送下⼀个数据分组,如果收到否认分组,则重发之前发送的那个数据分组,这样就实现了发送⽅发送什么,接收⽅最终都能收到什么,也就是所谓的可靠传输。

6.1.2超时重传

发送⽅给接收⽅发送数据分组,然⽽该数据分组在传输过程中丢失了,需要说明的是,对于数据链路层点对点信道⽽⾔,不容易出现这种情况,但是对于多个⽹络通过多个路由器,互连的复杂互联⽹环境⽽⾔,这种情况经常出现。

步骤实现

如上图所⽰,发送⽅超时重传之前所发送的数据分组,接收⽅正确接收重传的数据分组后,给发送⽅发送确认分组。发送⽅收到确认分组后,发送下⼀个数据分组。接收⽅正确接收该数据分组后,给发送⽅发送确认分组。

⽬前为⽌,貌似基于停⽌等待,使⽤确认或者否认分组,再加上超时重传的⼿段,就可以实现可靠传输。

6.1.3 确认丢失

结论: 数据分组需要编号,确认分组也需要编号。

6.1.4 确认迟到

注意事项:上图最下⾯那个数据分组与之前序号为0的那个数据分组不是同⼀个数据分组

总结

6.2 信道利⽤率假设收发双⽅之间是⼀条直通的信道TD:是发送⽅发送数据分组所耗费的发送时延RTT:是收发双⽅之间的往返时间TA:是接收⽅发送确认分组所耗费的发送时延

TA⼀般都远⼩于TD,可以忽略,当RTT远⼤于TD时,信道利⽤率会⾮常低。

注意停⽌-等待协议这样通过确认和重传机制实现的可靠传输协议,常称为⾃动请求重传协议ARQ(Automatic Repeat reQuest),意思是重传的请求是⾃动进⾏,因为不需要接收⽅显式地请求,发送⽅重传某个发送的分组。

6.3 回退N帧协议GBN

6.3.1两者对⽐

在相同的时间内,使⽤停⽌-等待协议的发送⽅只能发送⼀个数据分组,⽽采⽤流⽔线传输的发送⽅,可以发送多个数据分组。

回退N帧协议在流⽔线传输的基础上,利⽤发送窗⼝来限制发送⽅可连续发送数据分组的个数。

6.3.2 ⽆差错情况流程

发送⽅将序号落在发送窗⼝内的0~4号数据分组,依次连续发送出去。

他们经过互联⽹传输正确到达接收⽅,就是没有乱序和误码,接收⽅按序接收它们,每接收⼀个,接收窗⼝就向前滑动⼀个位置,并给发送⽅发送针对所接收分组的确认分组,在通过互联⽹的传输正确到达了发送⽅。

发送⽅每接收⼀个、发送窗⼝就向前滑动⼀个位置,这样就有新的序号落⼊发送窗⼝,发送⽅可以将收到确认的数据分组从缓存中删除了,⽽接收⽅可以择机将已接收的数据分组交付上层处理。

6.3.3 累加确认