计算机网络数据链路层 --- 选择重传协议(SR)

引言

GBN协议的弊端

累计确认,从而导致某一帧错误后会批量重传。

可行的解决方案

可以只重传出错的帧,设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。这也就是选择重传协议SR。

SR中的滑动窗口

如图所示为SR中的发送窗口,假设此时3的确认帧已经收到:

可分为以下部分:

发送完被确认的:01

发送完等待确认的:24

目前可发送:5

不可发送的:其余的

再看接收方(假设此时5号帧没有收到):

希望收到还未收到:5号帧

收到且确认的:6号帧

等待接收的:70

SR发送方必须响应的事件

上层的调用

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

收到ACK

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

超时事件

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

SR接收方要做的事

对于窗口内的帧,无条件接收

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

如果收到了窗口下界之前的帧,就返回一个ACK。其他情况,就忽略该帧。

运行中的SR

假设发送窗口和接收窗口都为4,发送方发送0帧,接收方收到0帧,并回复0帧确认,由于0帧是接收窗口下界,于是移动窗口使得窗口下界为第一个未被接收的帧(1号帧),同时把新加入帧(4号帧)的状态置为可接收状态:

发送方发送1帧,接收方收到1帧,并回复1帧确认,由于1帧是接收窗口下界,于是移动窗口使得窗口下界为第一个未被接收的帧(2号帧),同时把新加入帧(5号帧)的状态置为可接收状态:

发送方发送2帧,但是2帧丢失,接收方未收到2帧:

发送方发送3帧,接收方收到3帧,缓存三帧,发送ACK3:

发送方收到ACK0,由于窗口下限被确认,所以窗口右移一个,发送4帧,接收方收到4帧,缓存,发送ACK4:

发送方收到ACK1,由于窗口下界被确认,所以窗口右移1个,发送5帧,接收方接收5帧,缓存,发送ACK5:

发送方2帧超时未收到2帧确认,重新传2帧,这次接收方收到了,2-5帧交付(发送给上层网络层),发送ACK2:

发送方收到ACK3,但是无帧可发,等待,一直到ACK2到达,然后下界移至6.

滑动窗口长度

发送窗口最好等于接收窗口

大了会溢出,小了没意义

存在以下公式

W_{Tmax} = W_{Rmax} =2^{n-1},其中W_{Tmax}W_{Rmax}分别是发送窗口和接收窗口大小,n是帧号的比特位数。

SR协议重点总结

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

只重传出错帧

接收方有缓存

数据链路层的可靠传输机制包括停止等待协议、后退N帧协议(GBN)和选择重传协议(SR)。停止等待协议,也称为自动重传请求(ARQ)协议,是一种简单的可靠传输机制。发送方发送一个数据帧后,等待接收方的确认帧。如果发送方在一定时间内没有收到确认帧,就会重新发送数据帧。这种协议的缺点是效率低下,因为发送方必须等待确认帧才能发送下一个数据帧。\[1\] 后退N帧协议(GBN)是一种基于滑动窗口的可靠传输机制。发送方可以连续发送多个数据帧,而不需要等待确认帧。接收方按照顺序接收数据帧,并发送确认帧。如果发送方在一定时间内没有收到确认帧,就会重新发送窗口内的所有数据帧。这种协议的缺点是如果某个数据帧丢失,后续的数据帧也会被丢弃,导致效率低下。\[2\] 选择重传协议(SR)也是一种基于滑动窗口的可靠传输机制。发送方可以连续发送多个数据帧,而不需要等待确认帧。接收方按照顺序接收数据帧,并发送确认帧。如果发送方在一定时间内没有收到确认帧,就会重新发送丢失的数据帧。这种协议的优点是可以避免后退N帧协议的问题,提高了传输效率。\[2\] 总结来说,数据链路层的可靠传输机制包括停止等待协议、后退N帧协议选择重传协议。这些机制可以确保数据的可靠传输,避免数据帧的丢失、重复和乱序等情况。 #### 引用[.reference_title] - *1* *3* [计算机网络数据链路层基本概念及其可靠传输](https://blog.csdn.net/wlswls1711/article/details/107973524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【计算机网络数据链路层——流量控制与可靠传输机制](https://blog.csdn.net/weixin_44321600/article/details/122368038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值