目录
- 概述
TCP可靠数据传输的滑动窗口既不是纯粹的GBN,也不是纯粹的SR,在这两个协议之外又引入了新的东西。
- 这篇笔记是学习了网易云课堂的《计算机网络之探赜索隐》之后所做。图片来源于课件。
- 这门课渐进地设计可靠数据传输协议的发送方和接收方,从假设信道完全可靠开始,到逐步考虑数据的传输错误、丢失、性能很差等问题,一步步完善
rdt
协议。讲完可靠数据传输的原理之后,又以TCP
作为实例分析了TCP
所实现的可靠数据传输协议。这篇文章也大致以这个脉络展开。 - 用
rdt
表示可靠数据传输协议,用有限状态机来描述发送方和接收方的行为和动作。
- 可靠数据传输原理
数据传输发生错误怎么办?
- 发生错误:底层信道可能翻转分组中的位(bit)
- 如何检测到错误:利用校验和检测位错误
如何从错误中恢复?
- 确认机制:ACK:显式地通知发送方分组已正确接收;NAK:显式地通知发送方分组有错误。
- 重传机制:发送方收到NAK后,重传分组。(ARQ协议)
发送方的有限状态机:
(圆圈代表当前所处的状态,带箭头的线代表状态的转换,横线上方指示引起状态变迁的事件,横线下方指示状态转换中采取的活动)
- 接收方的有限状态机:
ACK/NAK消息发生错误/被破坏怎么办?
- 如何检测到错误:为ACK/NAK增加校验和
- ACK/NAK坏掉了怎么办:发送方重传
重传会产生重复分组,怎么办?
- 序列号机制,发送方给每个分组增加序列号,接收方通过判断序列号是否之前已经接收过,来选择接收或丢弃。
- 由于停等协议,序列号只需要两个就够用(0,1)。
发送方的有限状态机:
- 接收方的有限状态机: