一.可靠数据传输概述
1.可靠传输的原理
(1)什么是可靠:不错、不丢、不乱。
(2)在应用层、运输层、数据链路层的重要性。
(3)不可靠信道的特点决定了可靠数据传输协议的复杂性。
2.可靠数据传输协议基本结构:接口
3.有限状态机描述方法
(1)逐渐递增地研究可靠数据传输协议(rdt)的发送方和接收方: ①仅考虑单向数据传输; ②但控制信息将在两个方向流动。
(2)使用有限状态机(Finite State Machine,FSM)来定义发送方和接收方。
(3)状态:当位于这个“状态时”,下个状态唯一地由下个事件决定。
二.rdt1.0:完全可靠信道上的可靠数据传输
1.底层信道完全可靠
a.无比特差错; b.无分组丢失。
2.发送方、接收方具有各自的FSM:
a.发送方将数据发向底层信道; b.接收方从底层信道读取数据。
问题在于:底层信道完全可靠的情况是几乎不存在的。
三.rdt2.0:具有比较差错的信道域
1.具有比特差错的底层信道:
a.有比特差错; b.无分组丢失。
2.如何检测比特错误:
利用校验和检测位错误。
3.如何从错误中恢复:
a.确认机制(Acknowledgements,ACK):接收方式显式地告示发送方分组已正确接收。 b.NAK:接收方显式地告知发送方分组有错误。 c.发送方收到NAK后,重传分组。
4.基于这种重传机制的rdt协议称为ARQ(Automatic Repeat reQuest)协议。
5.rdt2.0新增加机制(与rdt1.0比较):
a.差错检测; b.接收方反馈控制消息:ACK/NAK; c.重传。
6.rdt2.0:FSM描述 ①发送方: ②接收方: ③停等协议
发送方发出1个分组,等待接收方响应后再继续发送。
7.rdt2.0:无差错时的操作: 8.rdt2.0:有差错时的情况:
9.rdt2.0的重大缺陷:
(1)如果ACK/NAK消息发生错误/被破坏(corrupted)会怎样?
a.为ACK/NAK增加校验和,检错并纠错(添加额外的控制消息); b.发送方收到被破坏ACK/NAK时不知道接收方发生了什么; c.如果ACK/NAK坏掉,发送方重传; d.不能简单的重传:产生重复分组; e.不能只是重传:可能导致重复(duplicate)。
(2)处理重复(序号机制):
a.发送方对每个分组增加序列号; b.如果ACK/NAK受损,发送方重传当前的分组; c.接收方丢弃(不再向上交付)重复的分组。
四.rdt2.1:发送方,处理受损的ACK/NAK
1.发送方
a.序号seq #加入分组中; b.两个序号seq. #’ s(0,1)将够用; c.必须检查是否收到的ACK/NAK受损; d.状态增加一倍:
- 状态必须“记住”是否“当前的”分组具有0或1序号。
2.接收方
a.必须检查是否接收到的分组是冗余的
- 状态指示是否0或1是所期待的分组序号seq #
b.注意:接收方不能知道是否它的最后的ACK/NAK在发送方已经接收。
五.rdt2.2:一种无NAK的协议
1.与rdt2.1一样的功能,仅使用ACK;
2.如何实现:
a.接收方对最后正确接收的分组发送ACK; b.在ACK消息中,接收方必须明确地包括被确认分组的序号。
3.在发送方重复的ACK导致如同NAK相同的动作:
重传当前分组。
六.rdt3.0:具有差错和丢包的信道
1.具有差错和丢包的底层信道
a.有比特差错; b.有分组丢失。
2.现有机制(检错、反馈、重传、序号)还不够。
3.增加定时机制:发送方等待ACK一段“合理的”时间
a.如果这段时间没有收到ACK则重传; b.如果分组(或ACK)只是延迟(没有丢失),重传将是冗余的,但序号的使用已经处理了该情况。 c.需要定时器。
4.发送方FSM
5.分组丢失 6.ACK丢失与超时 7.rdt3.0的性能
a.rdt3.0能够工作,但性能不太好; b.例子:1Gbps链路,15ms端到端传播时延,1KB分组:
- Usender:利用率-发送方用于发送时间的比率;
- 每30msec 1KB分组 -> 经1Gbps链路有33kB/sec吞吐量;
- 网络协议限制了物理资源的使用。
8.停等协议的运行
|