数据链路层(二)
3.4 可靠传输
基本概念
下面是比特差错
其他传输差错
- 分组丢失
路由器输入队列快满了,主动丢弃收到的分组
- 分组失序
数据并未按照发送顺序依次到达接收端
- 分组重复
由于某些原因,有些分组在网络中滞留了,没有及时到达接收端,这可能会造成发送端对该分组的超时重发,重发的分组到达接收端,但一段时间后,滞留在网络的分组也到达了接收端,这就造成分组重复的传输差错
总结
三种可靠协议
- 停止-等待协议SW
- 回退N帧协议GBN
- 选择重传协议SR
这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中
1、停止-等待协议SW
停止-等待协议可能遇到的四个问题
确认与否认
超时重传
确认丢失
思考:既然数据分组需要编号,那么确认分组是否也需要编号呢 ?
回答:需要。如下图所示
确认迟到
注意,图中最下面那个数据分组0与之前序号为0的那个数据分组不是同一个数据分组
注意事项
停止-等待协议的信道利用率
假设收发双方之间是一条直通的信道
- TD:是发送方发送数据分组所耗费的发送时延
- RTT:是收发双方之间的往返时间
- TA:是接收方发送确认分组所耗费的发送时延
TA一般都远小于TD,可以忽略,当RTT远大于TD时,信道利用率会非常低
发送时延 = 分组长度 (b) / 发送速率 (b/s)
像停止-等待协议这样通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ(Automatic Repeat reQuest),意思是重传的请求是自动进行的,因为不需要接收方显式地请求,发送方重传某个发送的分组
练习
2、回退N帧协议GBN
为什么用回退N帧协议
- 在相同的时间内,使用停止-等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送多个数据分组
- 回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数
注意:如果WT的值为1,则是停止-等待协议
无差错情况流程
发送方将序号落在发送窗口内的0~4号数据分组,依次连续发送出去
它们经过互联网的传输,正确到达了接收方,也就是没有出现乱序和误码,接收方按序接收它们,每接收一个,接收窗口就向前滑动一个位置,并给发送方发送针对所接收分组的确认分组,0~4号确认分组经过互联网的传输正确到达了发送方
发送方每接收一个,发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认的数据分组从缓存中删除了,而接收方可以择机将已接收的数据分组交付上层处理
累计确认
- 优点:
- 即使确认分组丢失,发送方也可能不必重传
- 减少接收方的开销
- 减少对网络资源的占用
- 缺点:
- 不能向发送方及时反映出接收方已经正确接收的数据分组信息
有差错情况流程
在传输数据分组时,5号数据分组出现误码,接收方通过数据分组中的检错码发现了错误
于是丢弃该分组,而后续到达的四个分组的序号与接收窗口的序号不匹配
接收方同样也不能接收它们,将它们丢弃,并对之前按序接收的最后一个数据分组进行确认,也就是发送 ACK4,每丢弃一个数据分组,就发送一个ACK4
发送方之前就接收过CK4,当收到重复的ACK4时,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻开始重传,至于收到几个重复确认就立刻重传,由具体实现来决定
如果收到这4个重复的确认并不会触发发送方立刻重传,一段时间后,超时计时器出现超时,发送方将发送窗口内已发送过的这些数据分组全部重传
若WT超过取值范围,例如WT=8,会出现什么情况?
假设 ACK7 在传输过程中丢失了,这将导致发送方的超时重传。
重传的 0~7 号数据分组到达接收方。现在问题来了,接收方根据当前接收窗口内的序号,会对这8个数据分组按序接收。但是,接收方之前已经接收过这8个数据分组了,现在是在重复接收。也就是说,接收方无法分辨新、旧数据分组,进而会产生分组重复这种传输差错。因此,发送窗口的尺寸不能超过其上限。
练习
总结
- 回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议
- 在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议
- 由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高
3、选择重传协议SR
由回退N帧协议GBN 过渡到 选择重传协议SR
选择重传协议流程
在传输数据分组到接收方时,2号数据分组丢失了
只要序号落入接收窗口内且无误码的数据分组,接收方都会接收。接收方接收0号和1号数据分组,并发送0号和1号确认分组到发送方,接收窗口向前滑动两个位置
接收方接收3号数据分组,并发送3号确认分组到发送方,但接收窗口不能向前滑动,因为3号数据分组是未按序到达的数据分组
这些确认分组经过互联网的传输陆续到达发送方,发送方接收到0号和1号确认分组,发送窗口向前滑动两个位置,这样就有4号和5号两个发送序号落入发送窗口
发送方将4号和5号数据分组发送到接收方,且发送方也已经接收到0号和1号确认分组,所以发送方可以将0号和1号数据分组从发送缓存中删除了,而接收方可将0号和1号数据分组交付给上层处理
发送方接收3号确认分组,但发送窗口不能向前滑动,因为这是一个未按序到达的数据分组,发送方还未收到它之前的2号确认分组,不过,需要记录3号数据分组已收到确认,这样该数据分组就不会超时重发
4号和5号数据分组被接收方接收,并发送4号和5号确认分组给发送方,但发送窗口不能向前滑动,因为它们是未按序到达的数据分组,发送方还未收到它们之前的2号数据分组,不过需要记录4号和5号数据分组已经收到确认,这样它们就不会超时重发。假设发送方针对2号数据分组的重传计时器超时了,发送方重传2号数据分组
2号数据分组到达接收方,接收方接收该数据分组,并发送2号确认分组,接收窗口现在可以向前滑动4个位置,这样就有6、7、0、1这四个新的序号落入接收窗口。2号确认分组经过互联网的传输到达发送方,发送方接收该确认分组,发送窗口现在可以向前滑动4个位置,这样就有6、7、0、1这四个新的序号落入发送窗口,发送方现在就可以继续将这四个序号的数据分组依次发送出去了
1、选择重传协议发送窗口与接收窗口应满足的条件
2、若发送窗口WT 和 接收窗口WR 超过它们的取值范围
如果发送窗口和接收窗口超过了取值范围,就会使 接收方无法区分新、旧数据分组,进而出现 分组重复这种差错
假设0号确认分组丢失了,发送方接收 1~4 号确认分组,并记录 1~4 号数据分组已收到确认,发送窗口不能向前移动。一段时间后,0号数据分组的重传计时器超时了,发送方重传0号数据分组。该数据分组经过互联网的传输到达接收方。其序号0落在接收窗口内,但是接收方先前已经正确接收过该数据分组了,如果现在还要接收,那就会出现分组重复这种传输差错。
也就是说,如果发送窗口和接收窗口的尺寸超过了取值范围,就会使接收方无法分辨新、旧数据分组,进而出现分组重复这种传输差错。
练习
总结
3.5 点对点协议PPP
- 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
- PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]
- 数据链路层使用的一种协议,它的特点是:简单;只检测差错,而不是纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议
- 点对点协议PPP 也广泛应用于广域网路由器之间的专用线路
- PPPoE 是为宽带上网的主机使用的链路层协议
帧格式
必须规定特殊的字符作为帧定界符
透明传输
必须保证数据传输的透明性
实现透明传输的方法
- 面向字节的异步链路:字节填充法(插入“转义字符”)
- 面向比特的同步链路:比特填充法(插入“比特0”)
差错检测
能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)
- 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机
- 分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接
可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容