引言

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.

滑动窗口长度

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

大了会溢出,小了没意义

存在以下公式

,其中分别是发送窗口和接收窗口大小,n是帧号的比特位数。

SR协议重点总结

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

只重传出错帧

接收方有缓存

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

  1. 【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★

    文章目录 一. 选择重传协议 ( SR ) 引入 二. 选择重传协议 ( SR ) 帧分类 三. 发送方 事件 ( 确认帧.超时事件 ) 四. 接收方 事件 ( 接收帧 ) 五. 滑动窗口长度 五. ...

  2. 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )

    文章目录 一. 数据链路层 流量控制 二. 数据链路层 与 传输层 流量控制 机制 三. 数据链路层 流量控制 四. 数据链路层 流量控制 方法分类 五.停止等待协议 六.滑动窗口协议 七.滑动窗口协 ...

  3. 王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR

    第三章知识 数据链路层的基本概念 数据链路层功能概述 封装成帧 透明传输 什么数据都能传输 数据链路层的流量控制 流量控制方法 滑动窗口协议: 每一个小格标识一个帧 发送窗口:发送端正在处理的发送的数 ...

  4. 3.4.4 选择重传协议(SR)

    3.4.4 选择重传协议(SR)

  5. 计算机网络之数据链路层:7、选择重传协议(SR)

    数据链路层:7.选择重传协议 思维导图: 发送窗口和接收窗口: SR发送方必须响应的三件事: SR接收方必须响应的事: 例: 窗口大小的选择: 总结: 思维导图: 发送窗口和接收窗口: 这个仅作介绍, ...

  6. 3.4.1 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制

    文章目录 0.思维导图 1.什么是流量控制? 2.什么是可靠传输机制? 3.什么是滑动窗口机制? 4.可靠传输.流量控制.滑动窗口之间的关系 5.停止-等待协议 (1)为什么要有停止-等待协议? (2 ...

  7. 计算机网络选择重传,计算机网络选择重传协议实验报告..docx

    计算机网络选择重传协议实验报告. <计算机网络>选择重传协议实验报告1.实验内容和实验环境描述实验内容:利用所学数据链路层原理,设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两 ...

  8. 【计算机网络复习 数据链路层】3.4.4 选择重传协议(SR)

    选择重传协议(SR) 一.选择重传协议中的滑动窗口 二.SR发送方必须响应的三件事 三.SR接收方要做的事 四.滑动窗口长度 五.总结 一.选择重传协议中的滑动窗口 二.SR发送方必须响应的三件事 1 ...

  9. 【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

    文章目录 一. 流量控制 ① 必要性 ② 数据链路层 VS 传输层 ③ 定义 ④ 方法 1)停止等待协议 2)滑动窗口协议 关系: 包括: 3)协议对比 二. 停止-等待协议 必要性 应用情况 ① 无 ...

最新文章

  1. 网络正常,但是网络图标上有黄色的三角图标
  2. Centos 6.0/ Nginx 安装与配置
  3. 使用AndroidStudio创建自定义gradle插件并被引用实战例子
  4. 关于string.Template的简单介绍
  5. CodeForces - 456C Boredom(线性dp)
  6. SparkSQL练习+理解+详解
  7. 现代软件工程 作业 4 个人作业
  8. phpcmsV9导航高亮:调用任意的一级栏目,如何让选中的二级子栏目实现高亮显示?
  9. 非线性光纤光学_多模光纤中的非线性光学
  10. word向下箭头符替换和打印,去掉多余换行
  11. 已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值
  12. p系统ndows10的功能更新1903,Win10 1903到底有什么不同?Win10 1903更新内容汇总
  13. 淘宝之初:湖畔花园小区里诞生的巨人
  14. 下列关于三种数据交换方式的叙述,错误的是( )
  15. openwrt 认证收费_在OpenWrt中安装Wiwiz实现portal认证
  16. centos lvm卷组删卷和扩容
  17. 视频教程-网络营销-网站盈利方式/淘宝客网络赚钱/广告联盟-其他
  18. java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物...
  19. 大专网页设计大作业-开源
  20. 3、S32K14X学习笔记(三):MDK5/Keil5下安装恩智浦-NXP S32K11X和S32K14X系列pack包

热门文章

  1. dataframe 一列的不同值_pandas | 详解DataFrame中的apply与applymap方法
  2. matplotlib设置多个图例横向水平放置
  3. pandas取某一索引的数据
  4. 运行Qt程序的一些注意事项
  5. android之phonegap入门
  6. left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
  7. C++学习之路 | PTA乙级—— 1013 数素数 (20分)(精简)
  8. php静态文件怎么生成器,[新姿势]我用过的静态站点生成器们
  9. 协议簇:TCP 解析: 连接断开
  10. storm的流分组策略