可靠传输的基本概念
- 使用差错检测技术(例如循环冗余校验CRC) , 接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)
- 数据链路层向上层提供的服务类型
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么
- 一般情况下, 有线链路的误码率比较低, 为了减小开销, 井不要求数据链路层向上提供 可靠传输服务。 即使出现了误码, 可靠传输的问题由其上层处理。
- 无线链路易受干扰, 误码率比较高, 因此要求数据链路层必须向上层提供可靠传输服务。

- 比特差错只是传输差错中的一种
- 从整个计算机网络体系结构来看, 传输差错还包括分组丢失、 分组失序以及分组重复
- 分组丢失、 分组失序以及分组重复这些传输差错, 一般不会出现在数据链路层, 而会出现在其上层
- 可靠传输服务井不仅局限千数据链路层, 其他各层均可选择实现可靠传输。

- 可靠传输的实现比较复杂, 开销也比较大, 是否使用可靠传输取决于应用需求
停止-等待协议SW



- 接收端到数据分组有误码时,将其丢弃井等待发送方的超时重传.但对于误码率较高的点对点链路,为使发送方尽早重传, 也可给发送方发送NAK分组
- 为了让接收方能够判断所收到的数据分组是否是重复的, 需要给数据分组编号。由于停止等待-协议的停等特性,只需1个比特编号就够了,即编号0和1.。
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况, 因此在数据链路层实现停止-等待协议可以不用给ACK分组编号.
- 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于 “从发送方到接收方的平均往返时间”
- 在数据链路层点对点的往返时间比较确定, 重传时间比较好设定
- 然而在运输层, 由于端到端往返时间非常不确定, 设置合适的重传时间有时井不容易
- 停止-等待协议的信道利用率


- 当往返时延RTT远大于数据帧发送时延Td时(例如使用卫星链路),信道利用率非常低
- 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低
- 为了克服停止-等特协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。
回退N帧协议GBC(Go-Back-N)



5号发送过程出现误码

7号确认信号丢失


选择重传协议SR


3号收到ACK,发送窗口确认标记,
2号窗口重传计数器超时,重发
4、5号陆续收到反馈、确认标记





