可靠传输机制 #
数据链路层提供的服务可分两种:
- 不可靠传输:仅丢弃有误码的帧,其它什么都不做
- 有线链路误码率低所以一般是提供的不可靠服务
- 这里不可靠但是上层还是可以变可靠
- 可靠传输:要确保发送端发的接收端都能收到,一般需要重传
- 无线链路易受干扰
- 开销会比较大
差错也不只比特差错,但就数据链路层来说就考虑可靠传输
实现可靠传输的机制(不只适用于数据链路层):
停止-等待协议 SW #
基于互联网通信
收到后发送信息告知是否正确收到:
但是如果DATA丢失了,就一致等不到确认信号
所以一般会设置一个超时计时器
如果确认丢失了,那么发送端超时重传,为了区分是同样还是重传,会设置一个编号
进一步,确认也有编号(应对迟到情况,不够这种情况几乎不可能发生)
之间需要等待太多时间,信道利用率比较低
回退N帧协议 GBN #
流水线方式
给序号的比特数,决定序号范围
发送端,接收端各设置一个(循环)滑动窗口
发送端把滑动窗口内序号的分组依次连续发送 ,无需等待发送,窗口长度范围为 \(1 \leq W_T \leq 2^n -1\) (如果超过范围会出现无法分辨重传和新数据的情况)
接收端窗口长度为1,接收窗口内的分组,因为是1所以就是依次按顺序接收,每接收一个,向前滑动一个位置
如果只对按序到达的最后一个分组发送确认,这叫累积确认
一个分组出现误码,丢弃,发送一个带编号的ACK(最后一个正确接收的编号),而后面的和窗口值对不上,也被丢弃,也都发送一个ACK
发送方收到多个重复确认就知道该重传了,而不必等待超时计时器
具体发送端窗口的移动应该是根据ACK的编号来移到相应位置的,当窗口内没有已发送时就继续发送
选择重传协议 SR #
仅重传有真的有差错的,不牵连后面的
逐一确认
接收窗口大于1,先接收【失序但是没有误码且序号在窗口内的】
超范围:无法区分新旧,分组重复
md这里面太细节了,文字描述不清楚
视频最好自己演练一下