1、前言

在计算机网络中的GBN协议中,我们都知道发送方的滑动窗口大小需要小于或等于2的n次方,n表示用多少位对帧编号。本文章用2位对帧编号。

2、举个例子

假设老王有4个女朋友(对帧的四个编号0,1,2,3),分别为A,B,C,D(分别对应0,1,2,3)。这四个女生经常生气(对应发送帧),并且生气顺序为A->B->C->D->A…。生气后老王需要发消息哄他的四个对象(对应发送确认帧)。假设窗口为4,即ABCD能依次生气并告知老王。其中有一种情况ABCD依次生气,老王依次收到她们生气的消息后,并依次回复消息哄她们,但是由于网络原因老王发送给她们的信息都没有发送过去,他的女朋友们没有接受到老王的哄后,就再次生气给老王发消息,此时,A先给老王发送,老王此时想:上一轮每个都生气后,我都哄好了,现在轮到A新生的气了,我用新的消息哄她,是个正常流程。但是实际情况是,ABCD都没有收到老王的"哄",还是因为第一轮的生气,但是老王并不知道。这就对应了接收方无法分辨新帧和旧帧。

另一种情况就是,当发送窗口小于2的n次方时,假设窗口大小为3,也就是一段时间内,老王最多有三个连续的女朋友给老王生气,假设ABC依次生老王的气,老王依然因为网络原因没有将他的花言巧语发送给ABC,但是此时老王知道,该D生气了。但是由于ABC没有收到老王的"哄",就再次给老王说,老王收到A的生气之后就想:坏了,我哄ABC的消息没有发出去。

3、总结

总而言之,滑动窗口大小不能等于2的n次方,否则接收方傻乎乎的不知道。同样,在SR协议中也类似。

滑动窗口大小为什么不能是2的n次方大小相关推荐

  1. linux下tcp滑动窗口大小设置,转:TCP滑动窗口协议与socket缓冲区之间的关系

    一.TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数 注意:在以Unix为核心的一些操作系统中(不一定都是),SO_RCVBUF选项确实决定了TCP窗口的大小.你设置为多少窗口就为多 ...

  2. android 滑动取值_Android View篇之调整字体大小滑杆的实现

    小伙伴们大家好呀,这次介绍一个稍微有点意思的View,在很多阅读类.新闻类的APP上都标配的字体大小调整功能.100多行代码就可以实现,来看看效果吧! 思路分析 1.刻度线代表着每个字体的大小取值,是 ...

  3. QT设计师无法修改窗口大小,无法通过鼠标拖动窗口改变大小的解决方案

    如题,我使用的是pyside6进行设计界面,通过添加布局实现了自动缩放的界面,但遇到了一个很诡异的现象,就是窗口无法缩小,在QT设计师界面,在geometry属性那里怎么修改,一点确定之后宽度和高度都 ...

  4. unity中定时滑动公告板的实现及动态设置gridLayout的大小

    首先贴效果: 1.动态设置gridLayout的大小 核心组件为rectTransform,核心属性一个为rectTransform.anchoredPosition,用来设置和锚点的距离,否则只设置 ...

  5. java应用窗口大小_java 如何让程序窗口随屏幕大小改变 | 学步园

    这个问题一直困扰我很长时间了,虽然工作了一段时间,但感觉连这个问题都解决不好的话,实在对不起自己.今天我终于抽出时间,好好网上找了下资料,然后写了个简单的记事本程序,感觉是我想要的结果.所以在这里把程 ...

  6. java组件自适应窗口大小_java swing 窗口和控件自适应大小

    本文记录java开发CS结构时怎么自适应屏幕大小以及控件跟随frame大小变化大小.位置和字体大小 需要注意: 1.代码必须放置在其构造方法中.如:我的frame1是我frame.java的名,则代码 ...

  7. html修改当前窗口大小,设置HTML页面和浏览器窗口的大小

    这应该工作. Hello World html, body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: ...

  8. java 改变窗口大小_java 如何让程序窗口随屏幕大小改变

    这个问题一直困扰我很长时间了,虽然工作了一段时间,但感觉连这个问题都解决不好的话,实在对不起自己.今天我终于抽出时间,好好网上找了下资料,然后写了个简单的记事本程序,感觉是我想要的结果.所以在这里把程 ...

  9. Nmap扫描参数解析(转)

    Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Network Mapper的简称.Nmap最初是由Fyo ...

最新文章

  1. linux shell expect 处理 passwd 交互
  2. 【自动驾驶】19.自动驾驶各个坐标系
  3. 驱动编程中的头文件与内核源码的关系
  4. WinCE BSP中的DAT文件介绍
  5. 33、JSONP跨域
  6. leetcode 1189 python
  7. 一步一步学Ruby(八):字符串表达式
  8. FFMPEG开源音视频项目学习汇总
  9. 詹姆斯·格雷克《信息简史》读后感记录
  10. 中移动入侵防御设备集采,总限价1.6亿;爱立信斩获95个5G商用合同
  11. snmp-cmds 系列工具命令
  12. 如何将低dpi图片升级到300dpi
  13. 淘宝天猫商家运营,宝贝标题如何突出卖点,标题编写方法小技巧
  14. 天猫双十一狂抢优惠券?机智的程序猿这么玩
  15. 一文讲解单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系
  16. Poj 3255(dijkstra求次短路)
  17. Docker 退出容器不停止容器运行
  18. sql语句查询下级下下级
  19. YII Framework学习教程-YII的日志
  20. JS 实现点击图片查看大图(含注释)

热门文章

  1. 使用luarocks为lua5.2安装库
  2. 关于图形的一些基础知识
  3. USUS微软补丁服务器 使用
  4. 公文专用计算机,[计算机]常用公文写作方法
  5. 在VMware下安装中标麒麟操作系统6.7版本
  6. 凯立德导航地图文件的作用分项说明(转帖留存)
  7. 数组遍历产生的索引越界问题
  8. 切换VS当前登录TFS的账户
  9. Java多线程创建方式初探
  10. C++与Python学哪个比较好?哪个更实用?