运输层–可靠数据传输原理
上图说明了我们学习可靠数据传输的框架。为上层实体提供的服务抽象是:数据可以通过一条可靠的信道进行传输。借助于可靠信道,传输数据比特就不会受到损坏(由0变为1,或者相反)或丢失,而且所有数据都是按照其发送顺序进行交付。这恰好就是TCP向调用它的因特网应用所提供的服务模型。
实现这种服务抽象是可靠数据传输协议的责任由于可靠数据传输协议的下层协议也许是不可靠的,因此这是一项困难的任务。例如,TCP是在不可靠的(IP)端到端网络层之上实现的可靠数据传输协议。更一般的情况是,两个可靠通信端点的下层可能是由一条物理链路(如在链路级数据传输协议的场合下)组成或是由一个全球互联网络(如在运输级协议的场合下)组成。
构造可靠数据传输协议
1.经完全可靠信道的可靠数据传输:rdt1.0
首先,我们考虑最简单的情况,即底层信道是完全可靠的。我们称该协议为rdt1.0,该协议本身是简单的。
2.经具有比特差错信道的可靠数据传输:rdt2.0
底层信道更为实际的模型分组中的比特可能受损的模型。在分组的传输、传播或缓存的过程中,这种比特差错通常会出现在网络的物理部件中。
3.经具有比特差错的丢包信道的可靠数据传输:rdt3.0
现在假定除了比特受损外,底层信道还会丢包,这在今天的计算机网络(包括因特网)中并不罕见。协议现在必须处理另外两个关注的问题:怎样检测丢包以及发生丢包后该做些什么。
流水线可靠数据传输协议
rdt3.0是一个功能正确的协议,但并非人人都对它的性能满意,特别是在今天的高速网络中更是如此。rdt3.0性能问题的核心在于它是一个停等协议。
回退N步
在回退N步协议中,允许发送方发送多个分组(当有多个分组可用时)而不需等待确认,但它受限于在流水线中未确认的分组数不能超过某个最大允许数N。
选择重传
顾名思义,选择重传协议通过让发送方仅重传那些它怀疑在接收方出错(即丢失或受损)的分组而避免了不必要的重传。这种个别的、按需的重传要求接收方逐个地确认正确接收的分组。再次用窗口长度N来限制流水线中未完成、未被确认的分组数。