2017-02-10 可靠数据传输原理简介
3.4 可靠数据传输原理
可靠数据传输协议(reliable data transfer protocol)
单向数据传输(unidirectional data transfer)
双向数据传输(bidirectional data transfer)(即全双工数据传输)
3.4.1 构造可靠数据传输协议
1.经完全可靠信道的可靠数据传输:rdt 1.0
有限状态机(Finite-State Machine,FSM)
注意到上述协议假定使用的是一个完全可靠的信道,所以接收端也不需要提供任何反馈信息给发送方。
2.经具有比特差错信道的可靠数据传输:rdt 2.0
肯定确认(positive acknowledgment)
否定确认(negative acknowledgment)
这些控制报文使得接收方可以让发送方知道哪些内容被正确接收,那些内容接收有误并因此需要重复。在计算机网络环境中,基于这种重传机制的可靠数据传输协议称为自动重传请求(Automatic Repeat reQuest,ARQ)协议。
ARQ协议还需要另外三种协议来处理比特差错的情况:差错检测、接收方反馈、重传。接收方收到有差错的分组时,发送方将重传分组文。
当发送方处于等待ACK或NAK的状态时,他不能从上层获得更多的数据;这就是说,rdt_send()事件不可能出现;仅当接收到ACK并离开该状态时才能发生这样的事件。因此,发送方将不会发送一块新数据,除非发送方确认接收方已正确接收当前分组。rdt2.0也被称为停等(stop-and-wait)协议。
他有一个致命错误就是ACK或NAK分组受损时如何。
一种方法就是,当发送方收到含糊不清的ACK或NAK分组时,只需重传当前数组分组即可。这种方法在发送方到接收方的信道中引入了冗余分组(duplicate packet)但这还要解决一个问题,即一个分组是新的分组呢还是重发的冗余分组。
解决这个问题的办法是添加分组的序号(sequence number)
3.经具有比特差错的丢包信道的可靠数据传输:rdt 3.0
如果一个分组经历了一个特别大的时延,发送方可能会重传该分组,即使改数据分组及其ACK都没有丢失。这就在发送方到接收方的信道中引入了冗余数据分组(duplicate data packet)的可能性。
为了实现基于时间的重传机制,需要一个倒计数定时器(countdown timer),rdt3.0有时被称为比特交替协议(alternating-bit protocol)
3.4.2 流水线可靠数据传输协议
停等方式导致发送方(或信道)的利用率(utilization)非常低,因此引入了流水线(pipelining)。
3.4.3 回退N步(Go-Back-N,GBN)
在回退N步(GBN)协议中,基序号(base)定义为最早的未确认分组的序号,将下一个序号(nextseqnum)定义为最小的未使用序号,则可以将序号范围分割成4段。
N常被称为窗口长度(window size),GBN协议也常被称为滑动窗口协议(sliding-window protocol)。
1:可靠数据传输协议(reliable data transfer protocol)、2:单向数据传输(unidirectional data transfer)、3:双向数据传输(bidirectional data transfer)、4:全双工数据传输、5:有限状态机(Finite-State Machine,FSM)、6:肯定确认(positive acknowledgment)、7:否定确认(negative acknowledgment)、8:自动重传请求(Automatic Repeat reQuest,ARQ)协议、9:停等(stop-and-wait)协议、10:比特交替协议(alternating-bit protocol)、11:滑动窗口协议(sliding-window protocol)