3.4 可靠数据传输原理
Last updated
Was this helpful?
Last updated
Was this helpful?
可靠数据传输协议(Reliable Data Transfer Protocol):数据可以通过一条可靠的信道进行传输。
经完全可靠信道的可靠数据传输:rdt1.0
经具有比特差错信道的可靠数据传输:rdt 2.0
自动重传请求(Automatic Repeat Request,ARQ)协议:
肯定确认(Positive Acknowledgment,ACK)
否定确认(Negative Acknowledgment,NAK)
过程:
发送报文
差错检测
接收方反馈
重传
停待协议(Stop-and-Wait Protocol):发送方在发送一个报文后,需要等待接受方反馈。
考虑ACK和NAK受损的情况:
在接受到受损ACK和NAK时,询问接收方 -> 将会陷入询问的死循环。
增加足够的检验和比特,使得接受方有能力恢复数据。
直接重传 -> 会导致冗余分组(Duplicate Packet),无法知道接受到的分组是一个新的分组,还是一个重传的分组。
分组序号,接受方只需检查分组序号即可,确认收到的分组是否重传:rdt 2.1
解决了冗余分组的问题,但会无法解决失序分组的问题。
无NAK,ACK跟随一个分组序号:rdt 2.2
经具有比特差错和丢包的信道的可靠数据传输:rdt 3.0
如果一个分组的ACK发生丢包,发送方在等待一定时间后,进行重传;rdt 3.0 也称为比特交替协议,因为分组的序号在01之间交替。
倒计时定时器(Countdown Timer)
分组发送方必须能力:发送一个组,并启动一个定时器;响应定时器;终止定时器。
rdt 3.0 的性能问题,核心在于它是一个停等协议。流水线(Pipeling)协议:允许发送方发送多个分组而无需等待。
影响:
必须增加序号范围。
协议发送方和接受方必须缓存多个分组。
所需序号范围和缓冲要求取决于数据传输协议如何处理丢包、损坏和时延。
回退N步(Go-Back-N,GBN):允许发送多个分组,但未确认分组数不能超过N。N也称窗口长度,GBN也是一种滑动窗口协议(Sliding-Window Protocol)。
GBN发送方:
上层调用
收到一个ACK
超时事件
GBN接收方:丢弃所有失序分组。
GBN性能问题:窗口长度和带宽时延都很大的情况下,单个分组差错将引起大量分组重传。
选择重传(Selective Repeat,SR):
让发送方重传那些有问题的分组。
接受方,失序分组仍然有效。