十七、选择重传协议

简介: 十七、选择重传协议

1、GBN的弊端



累积确认导致批量重传,所以想要有一种协议可以只重传出错的帧;解决方法是:设置单个确认,同时加大接收窗口,设计接收缓存,缓存乱序到达的帧。这种机制就是选择重传协议(SR协议)。




2、选择重传协议中的滑动窗口


a1eeb6dc15e441368e0f1167263bd406.png

2.1 SR发送方必须相应的三件事


2.1.1 上层的调用


从上层网络层收到数据之后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。




2.1.2 收到了一个ACK


如果收到ACK,假如该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。

3997a003072743729fdf3d6ddbd893ca.png


97af9bf6fdd34f62b53773d5cb4acca2.png

c3e740351f2b4f97acde22cbc7208b5b.png



2.1.3 超时事件


每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。



2.2 SR接收方必须相应的三件事


SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收到谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层网络层,然后向前移动滑动窗口。

1d4acce1fbc542c19c38fd54d3b41007.png


ce41e5de1c4d4f7e8fec503664bb88ee.png

70b2c1fe24a343bd9c68fe28b02a3e35.png



 


SR接收方如果收到了窗口序号之外并且小于窗口下界的帧,则直接返回一个ACK。其他情况忽略该帧。



2.3 运行中的SR


假设发送窗口和接收窗口尺寸大小都是4。


103da26e54114a2eb91cb8679635402b.png



2.4 滑动窗口的长度


发送窗口最好等于接收窗口,发送窗口大了会发生溢出,发送窗口小了没有意义。窗口最大尺寸计算公式如下:


WTmax=WRmax=2n1


其中n表示帧的序号使用多少个比特标示。如果帧的序号有0,1,2,3,共有四种,则n的取值为2( 2 2 = 4 2^2=4 22=4)。


窗口过大会产生二异性的问题,即接收方无法判断当前发送方发送的帧是某个序号下新的的帧还是旧的帧。




3、SR协议的重点



对数据帧逐一确认,收一个确认一个;


只重传出错帧;


接收方有缓存;

WTmax=WRmax=2n1






相关文章
|
2月前
|
监控 网络协议 UED
TCP协议中的两种保活机制详述
TCP的保活机制通过保活探针和用户配置的保活时间两种方式,为网络通讯提供了重要的保障。它帮助识别并处理那些因为网络不稳定或对端突然下线而变得无响应的连接,对于确保长时间运行的网络应用的稳定性和可靠性非常关键。合理配置和使用TCP保活机制,可以显著提升网络应用的鲁棒性和用户体验。
78 1
|
5月前
|
网络协议
逆向学习网络篇:心跳包与TCP服务器
逆向学习网络篇:心跳包与TCP服务器
87 0
|
6月前
|
网络协议 前端开发 算法
前端知识笔记(三十二)———TCP 连接建立
前端知识笔记(三十二)———TCP 连接建立
126 0
|
网络协议 算法 网络性能优化
TCP拥塞控制,拥塞窗口,携带应答,捎带应答,面向字节流,异常情况处理,最终完结弹
TCP拥塞控制,拥塞窗口,携带应答,捎带应答,面向字节流,异常情况处理,最终完结弹
|
网络协议 网络架构
TCP协议报文,核心特性可靠的原因,超时重传详细介绍
TCP协议报文,核心特性可靠的原因,超时重传详细介绍
|
缓存 网络协议 NoSQL
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-3
五、异常TCP建立情况 1)connect系统调用耗时失控 客户端在发起connect系统调用的的时候,主要工作就是端口选择。在选择的过程中有一个大循环
|
存储 缓存 网络协议
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-2
三、深入理解connect 客户端再发起连接的时候,创建一个socket,如何瞄准服务端调用connect就可以了,代码可以简单到只有两句。
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-2
|
网络协议 Unix Windows
确认应答机制与超时重发机制【TCP原理(笔记一)】
确认应答机制与超时重发机制【TCP原理(笔记一)】
420 0
|
存储 网络协议 Linux
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-1
一、相关实际问题 为什么服务端程序都需要先listen一下 半连接队列和全连接队列长度如何确定 “Cannot assign requested address”这个报错是怎么回事
|
网络协议 网络性能优化
三十九、传输层概述和UDP协议
三十九、传输层概述和UDP协议
三十九、传输层概述和UDP协议