可靠数据传输
-
不错,不丢,不乱
-
rdt(reliable data transfer):
-
udt(unreliable data trasfer)
-
rdt_send():上层网络应用(发送方)调用该函数向传输层发送rdt协议
-
udt_sent():rdt调用该函数,在不可靠传输信道(指的是网络层的IP协议,不可靠)上向接收方传输package。
-
rdt_rcv():package到达接收方时被调用
-
deliever_data():被rdt调用,向上层应用交付数据
-
-
上层网络应用单向调用传输函数将数据传送给下层传输层,下层传输层接收方接受到信息数据时,也是单向调用传输函数向上层返回数据。
-
而在传输层以及其底层则是复杂的双向信息交互。
-
可靠传输协议中,数据传输是单向的,控制信息双向流动。
Rdt 1.0:可靠信道上的可靠数据传输
*底层信道完全可靠(理想状态)
-
不会发生错误
-
不会丢失分组
--信道百分百可靠,因此不需要控制信息的互相传送。
*发送方和接收方的FSM(有限状态自动机)独立
Rdt 2.0:不可靠信道上的可靠数据传输
*底层可能产生位错误的信道(0,1间的翻转)
-
利用校验和检测错误
-
(NAK)确认机制:接收方显式告知发送方,分组已正确接收
-
发送方收到NAK(错误消息反馈)/ACK(正确消息反馈)后,重传分组
-
基于重传机制的协议称为ARQ(Automatic Repear reQuest)协议,即自动重传协议
-
Rdt2.0引入的新机制:差错控制,ACK/NAK,ARQ(自动重传)
-
*Rdt2.0存在的缺陷:
-
ACK/NAK消息发送错误/破坏
Rdt2.1
-
在rdt2.0基础上增加序列号(包装传输正确的数据顺序)
Rdt2.2
-
在rdt2.1基础上去掉NAK,并且把序列号增加到ACK上面
Rdt3.0:不可靠信道上的不可靠数据传输
*信道上既可能发生错误,也可能丢失分组
方法:发送方等待合理的时间:
-
如果没收到ACK,重传
-
如果分组/ACK只是延迟而不是丢失
-
重传,序列号机制处理足矣
-
接收方需在ACK中显式告知所确认的分组
-
需定时器
-
*Rdt3.0性能
流水线机制与滑动窗口协议
-
流水线机制
允许发送方在接收到ACK之前连续发送多个分组
-
更大的序列号范围
-
发送方和/或接收方需要更大的存储空间用以缓存数组
-
-
滑动窗口协议
-
窗口:允许使用的范围
-
窗口尺寸:最多允许N个分组未确认
-
GBN协议:累积确认机制
-
SR协议
-