课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155
3 数据链路层
3.1 数据链路层概述
3.1.1 数据链路层在网络体系结构中的地位
复习一下主机收发数据过程。
主机H1将待发送的数据逐层封装后,
通过物理层将构成数据报的比特转换为电信号,发送到传输媒体。
数据包进入路由器后,由下往上逐层解封到网络层
路由器根据数据报的目的网络地址和自身转发表,确定数据包的转发端口
然后从网络层向下逐层封装数据包,并通过物理层将数据包发送到传输媒体。
数据包最终到达主机H2时,继续由下往上逐层解封,最终解封出主机H1所发送的数据。
3.1.2 链路
仅有链路还不够,还需要一些通信协议来控制这些数据的传输。
3.1.3 帧
3.1.4 数据链路层的3个重要问题
3.1.5 封装成帧
数据链路层给网络层交付的协议数据单元添加数据链路层协议首部,简称为帧头,还有帧尾,这个操作成为封装成帧
添加帧头和帧尾的目的,是为了在链路上以帧为单元传送数据,也就是实现数据链路层本身的功能
例子
3.1.6 差错检测
发送方将封装好的帧经物理层发送给传输媒体。
帧在传输过程中遭遇干扰后可能会出现误码,也就是比特0变成比特1,反之亦然。
思考:接收方主机如何判断帧在传输过程中是否出现了误码呢?
可以通过检错码来发现。
发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。例如,以太网V2的MAC帧的帧尾,就是4字节的帧检验序列FCS字段。要写入该字段的内容——检错码。接收方主机收到帧后,通过检错码和检错算法,可以判断出帧在传输过程中是否出现了误码。
3.1.7 可靠传输
接收方主机收到有误码的帧后,不会接收该帧,将其丢弃。如果数据链路层向上层提供的是不可靠服务,那么丢弃就丢弃了,不会有其他措施。
如果数据链路层提供的是可靠服务,那么需要其他措施确保接收方主机还可以重新收到被丢弃的帧的正确副本。
即:尽管误码是不能完全避免的,但若实现发送方发送什么,接收方就能收到什么,就称为可靠传输。
在介绍以上3个问题时,使用的是点对点信道的数据链路层例子。
对于使用广播信道的数据链路层,除了三个问题外,还有其他问题。
3.1.8 使用广播信道的额数据链路层
将帧的目的地址添加在帧中一起传输。
3.1.9 交换式局域网
使用点对点链路和链路层交换机的交换式局域网,在有线(局域网)领域完全取代了共享式局域网。
网络中的交换机是如何转发帧的呢?
3,1.10 无线局域网
由于无线信道的广播天性,无线局域网仍使用共享信道技术,工作原理是怎样的呢?
3.2 封装成帧
3.2.1 封装成帧
- 封装成帧:数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧的操作。
- 帧头和真伪中包含有重要的控制信息。
- 帧头和帧尾的作用之一就是帧定界
发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,要通过物理层,将构成帧的各比特转换成电信号发送到传输媒体。
那么,接收方的数据链路层,如何从物理层交付的比特流中,提取出一个个帧呢?
帧头和帧尾的作用之一就是帧定界。
并不是每一种数据链路层协议的帧都包含有帧定界标志。
比如,以太网V2的MAC帧的帧头和帧尾中没有帧定界标志,
那么,接收方是如何从物理层交付的比特流中提取出一个个的以太网帧呢?
物理层给封装好的帧添加前导码
另外,以太网还规定了帧间间隔时间。
3.2.2 透明传输
透明传输是指数据链路层向上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
不能
当接收方再次接收到帧定界标志时会误以为帧结束了。
若数据链路层不采取其他措施,避免接收方对帧是否结束的误判,就不能成为透明传输。
即数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。
很显然,这样的数据链路层没有使用价值。
实际上,各种数据链路层协议一定会解决这个问题。例如在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就在其前面插入一个转义字符。接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符时认为这是帧的开始。遇到转义字符时后面1字节的内容虽与帧定界符相同,但它是数据而不是定界符。剔除转义字符后将其后面的内容作为数据继续提取。当再次提取到帧定界符时表明这是帧的结束。
思考:既包含帧定界符,又包含转义字符,如何处理?
在帧定界符和转义字符前插入转义字符。
说明:转义字符是一个特殊的控制字符,长度为1个字节,十进制值为27。
以上介绍的是面向字节的物理链路,使用字节填充(又称字符填充)的方法实现透明传输。
对于面向比特的物理链路,应该使用比特填充的方法来实现透明传输。
举例
问题:数据中出现了帧定界符。
方法:发送前,使用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面插入1个比特0.这样就确保了帧定界符在整个帧中的唯一性。也就可以实现透明传输。
接收方的数据链路层,从物理层交付的比特流中提取帧时,将帧的数据部分的每5个连续的比特1后面的那个比特0剔除即可。
零比特传输习题
A
3.2.3 补充
因为仅从数据链路层来看,帧的数据部分是真正要传输的数据,帧头和帧尾都是为了实现数据链路层功能而额外添加的。
3.3 差错检测
3.3.1 比特差错
3.3.2 误码率
3.3.3 简单检错方法-奇偶校验
采用奇校验,当比特1的数量的奇性改变,可以检查出错误。
但如果传输过程中发生了两位误码,会误认为传输过程中没有发生误码。
即,采用奇校验,若比特1的数量的奇性不改变,则无法检查出错误。
假设双方规定采用偶校验。
可以发现规律。
总结规律
奇偶校验的漏检率较高,因此计算机网络的数据链路层一般不会采用这种检测方法。
3.3.4 循环冗余校验 CRC
CRC是一种具有很强检错能力的检错方法,漏检率极低。
举例说明
练习
解答
步骤1 构造被除数
步骤2 构造除数
步骤3 做除法
步骤4 检查余数
练习2
解答
注意
3.4 可靠传输
3.4.1 可靠传输的基本概念
接收方的数据链路层通过帧尾中的帧检验序列FCS字段的值,即检错码,可以检测出帧中出现了比特差错。
那么接下来该如何处理呢?
这取决于数据链路层向上层提供的服务类型。
可靠传输服务
比特差错只是传输差错的一种。
分组丢失。
分组失序
分组重复
可靠传输服务不只局限于数据链路层。
3.4.2 可靠传输的实现机制——停止-等待协议
本节和后面两节介绍可靠传输的三种实现机制。
停止-等待协议
发送方发送的数据分组丢失的情况。
引出超时重传。
接收方发送的确认或否认分组丢失的情况。
引出数据分组编号。
这样,根据数据分组的序号,接收方就可以判断该数据分组是否是重复的。接收方丢弃重复的数据分组,并给发送方发送针对该数据分组的确认分组,以免发送方对该数据分组的再次超时重传。
思考:既然数据分组需要编号,那么确认分组是否也需要编号呢?
也是需要的,用于解决确认分组迟到的问题。
说明:对于数据链路层点对点信道而言,往返时间比较固定,不会出现确认迟到的情况。因此如果只在数据链路层实现停止-等待协议,可以不用给确认分组编号。
注意事项
停止等待协议的信道利用率
假设收发双方之间是一个直通的信道。发送方发送完一个数据分组后就停止发送,并等待接收方对该数据分组的确认。当收到确认分组后,可以发送下一个数据分组,如此反复进行。
TD是发送方发送数据所耗费的发送时延,RTT是收发双方之间的往返时间RTT,TA是接收方发送确认分组所耗费的发送时延TA。图中忽略了接收方对数据分组的处理时延(一般不方便计算,做题时常忽略的那个)以及发送方对确认分组的处理时延。
发送方从发送一个数据分组开始到可以发送下一个数据分组为止所经历的总时间——TD+RTT+TA。
仅在TD内用于传送有用数据,也就是数据分组。
因此信道利用率如图所示。
TA一般远小于TD,可以忽略。
当RTT远大于TD时,信道利用率非常低。
举例说明
结论
练习题
D
注意:像停止等待协议,通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ,意思是重传的请求是自动进行的,不需要接收方显式请求发送方重传某个出错的分组。
3.4.3 可靠传输的实现机制——回退N帧协议
停止等待协议,发送方每发送一个数据分组,就停止发送并等待接收方的确认分组,当收到接收方发送的确认分组后,才会发送下一个数据分组,如此反复进行。从图中可以看出,发送方发送一个数据分组,就至少等待一个收发双方的往返时间。当往返时间较大时,例如卫星链路,停止等待协议的信道利用率很低,若出现超时重传,信道利用率会更低。
如果发送方在收到接收方的确认分组之前,可以连续发送多个数据分组,则可以大大提高信道利用率。这是一种流水线式传输。就本例而言,同等时间下相同时间内,使用停止等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送5个数据分组。
本节课介绍回退N帧协议,该协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数。
假设采用3个比特给分组编号,因此序号范围是0-7。
如图所示,是收发双方各自的分组序号。当序号到7时,下一个序号从0开始。
发送方维持一个发送窗口,序号落在发送窗口内的数据分组可被连续发送,而不必等收到接收方的相应确认分组后再发送。
发送窗口的尺寸记为WT。对于本例,其取值范围是1<WT <= 2^3 -1,其中的3是构成分组序号的比特数量。本例取WT的值为5。(如果WT取值为1,则为停止-等待协议。如果WT取值超过取值范围上限,则会造成严重错误。)
如图所示,序号落在发送窗口内的5个数据分组可被连续发送,而落在发送窗口外的分组不允许发送。
接受窗口的尺寸记为WR。对于回退N帧协议,WR取值只能为1.这一点与停止-等待协议是相同的。
如图所示,序号落在接收窗口内的数组分组允许接收,反之不允许接收。
首先来看最简单的情况——无差错情况
1 无差错情况
发送方将序号落在发送窗口的0-4号数据分组,依次连续发送出去。经过互联网的传输,正确到达了接收方,即没有出现乱序和误码。
接收方按序接收,每接收一个,接收窗口就按序向前滑动一个位置,并给发送方发送所接收分组的确认分组。
p26 3:50