https://www.bilibili.com/video/BV1Up411Z7hC?p=4&spm_id_from=pageDriver
如有错误之处请指出,谢谢!
目录
ACK机制:发送红油最高序列号的、已被正确接收的分组的ACK
p46-p48
流水线机制和滑动窗口协议
提高rdt3.0的性能:打破停等协议
rdt3.0:
流水线机制:
流水线协议
允许发送方在收到ACK之前连续发送多个分组
更大的序列号范围
发送方和接收方需要更大的存储空间以缓存分组
基于滑动窗口协议
滑动窗口协议
滑动窗口协议:
Slidintg-window protocol
窗口:
允许使用的序列号范围
窗口尺寸为N:最多有N个等待确认的消息
滑动窗口
随着协议的运行,窗口在序列号空间内向前滑动
滑动窗口协议:
GBN,SR
GBN协议(Go-Back-N)协议:发送方
分组头部包含k-bit序列号
窗口尺寸为N,最多允许N个分组未确认
ACK:确认到序列号n(包含n)的分组均已被正确接收
可能收到重复ACK(信道丢包)
为空中的分组设置计时器(timer)
超市事件Timeout(n)事件:重传序列号大于等于n,还未收到ACK的所有分组
发送方扩展FSM
GBN协议(Go-Back-N)协议:接收方
接收方没有缓存
ACK机制:发送红油最高序列号的、已被正确接收的分组的ACK
可能产生重复ACK
只需要记住唯一的expectedseqnum
乱序到达的分组:
直接丢弃--->接收方没有缓存
重新确认序列号最大的、按序到达的分组
接收方扩展FSM
GBN示例
会丢弃掉2之后所有并发送一个ACK1,不过所有的ACK1全部丢失,最终直到pkt2超时才会进行从2开始的重发
GBN练习题
ACK1可能丢失掉了,数据包并未丢失
Selective Repeat协议
GBN有什么缺陷?
GBN在重传时会重传很多分组,导致网络中充斥着很多重传的分组,影响性能
接收方对每个分组单独进行确认
设置缓存机制,缓存乱序到达的分组
发送方只重传那些没收到ACK的分组
为每个分组设置单独的定时器
发送方窗口:
N个连续的序列号
限制已发送且未确认的分组
SR与GBN多了接收方窗口
发送方/接收方窗口
SR协议的动作
SR协议示例
等到收到2的ACK才能继续发送
SR的问题
接收方无法分辨a、b两种情况
序列号为k个
发送方加接收方窗口的总的个数小于等于2^k
可靠数据传输原理与协议
信道的不可靠特性
可靠数据传输的需求:不错不丢不乱
Rdt1.0
Rdt2.0、2.1、2.2
Rdt3.0
流水线与滑动窗口协议
GBN
SR