本文续《TCP/IP之大明内阁》, 不了解背景的同学可以先看看上一篇文章, 当然这篇也是《TCP/IP之大明邮差》的前传, 主要讲一讲可靠性传输的原理。

袁崇焕奉圣旨进京,也被迫带来了他的心肝宝贝幻月宝镜。

他一进京,顾上休息, 立刻就先去拜见曾经举荐提报自己的恩师孙承宗, 看到自己的爱将风尘仆仆的赶来,虽然心疼, 稍事寒暄过后,还是立刻问起了怎么用幻月宝镜实现可靠传输的问题。

袁崇焕道: “老师有所不知, 这幻月宝镜虽好,但是如果没有失败重传的方法,一切都是白搭。 关外的环境比关内更加恶劣, 除了强盗野兽,还有飘忽不定的清军骑兵,随时打劫你。 ”

“确实是实情, 老夫当年巡视辽东的时候也看到了, 那你发出去物资以后, 是不是要等待对方的回复确认啊?”

“老师说的对,这也是我们刚开始的设想, 请看这张状态图:”

“状态图是什么东西? 你自己弄的?”

“不, 这是荷兰红毛送红衣大炮的时候教我画的, 他们那边的人很擅长搞这种玩意, 说是‘科学’, 这张图的第一个状态是‘等待发送数据’, 然后发送分组数据进入了第二个状态‘等待反馈’, 此时如果对方发来了反馈说‘收到了’, 那就回到第一个状态, 否则, 重发之前的数据”

“荷兰红毛还是挺厉害的, 这是个描述系统的好方法啊,比纯用我们汉字好多了。 ”

“是的老师, 这个状态图的问题就是:如果对方发回的反馈损坏了改怎么办?”

孙承宗道:“有道理, 如果反馈损坏了, 发送方将无法理解接收方是否收到数据分组, 只好重新发送上一个分组, 但是从接收方来看, 没法区分这个分组是新的还是一次重传, 这就麻烦了。 ”

“所以我和满桂、祖大寿他们商量了下, 我们采用给数据编号的办法来解决这个问题, 第一次发送编号为A的, 然后就等待针对A的反馈, 如果反馈没法识别或者是没收到, 那就重新发送, 如果反馈是‘收到了’, 那就发送分组编号为B的数据。 ”

“有个关键问题,  那要是出现了反馈迟迟收不到怎么办, 你肯定不能无限制的等待吧? ”

“老师明鉴, 我们确实遇到了这个问题, 于是就搞了一个沙漏定时器, 针对上面的状态做了改进, 分组一发送就开始计时,如果超时就重新发送同一分组, 像这样:”

(点击看大图)

孙承宗道:”好复杂啊,老夫这脑子里全是四书五经, 这状态图让人头蒙啊。 “

师生二人正聊着, 下人通报首辅叶大人来了。

同样是老学究的叶首辅看到了袁崇焕画的西洋状态图, 大为吃惊,心想袁崇焕赢得宁远大捷和宁锦大捷,果然是与众不同。

经过袁崇焕连番讲解,叶首辅终于明白了这是怎么回事, 他捻着胡子思忖一下, 马上提出一个问题:“你每次发送一个分组都得等待, 多慢啊, 能不能连续发送?”

孙承宗和袁崇焕对视一眼, 心想果然姜还是老的辣。

袁崇焕道:“叶大人高瞻远瞩, 思虑缜密,属下佩服。 这个问题我们把我们困住了很久才想出一个办法, 这个方法约定,发送方可以连续的发送分组,但是有限制数量,例如只能连续发送4个, 我们称之为 窗口 , 发送窗口满了就不能发了,需要等待接收方的确认, 当确认来了以后才能继续发送, 向前移动窗口 。”

“这又是个什么图? ” 叶首辅问到。

“这也是红毛们教我的,可以称为交互图, 大人请看, 我们发送到分组4的时候, 窗口满了, 就停止发送, 只有等到分组1的确认(acknowledge, 简称ACK)来了以后,才继续发送下一个分组。”

孙承宗道: “我看到分组3在发送当中丢失了, 超时后重新发送, 可是接收端明明收到了分组4, 5, 6还要丢弃啊。 ”

袁崇焕道:“这个办法是满桂最先提出的, 他是一个粗人, 想出的方法也很粗暴, 非常依赖幻月宝镜,  把失败分组及其以后的全部重新发送, 的确浪费。”

(码农翻身注: 这叫做回退N步协议)

叶首辅道:“很明显, 你们得选择性的重传那些丢失的分组。”

“大人说的对, 请看这个图:”

“这个图中只发送丢失的分组3, 在接收端会暂时缓存分组4,5,6, 这样就省了很多事了”

(码农翻身注:这叫做选择性重传)

叶首辅一拍大腿道: “好 !应该不错了, 我们就用这种办法来建立大明的可靠传输网络吧“

接着他又郑重的补充到 : “ 二位要注意, 这些失败重传的方法,是我们三人的秘密, 绝不能让魏阉党知道, 要不然他又要去找皇上邀功请赏了。”

TCP/IP 之蓟辽督师相关推荐

  1. TCP/IP之蓟辽督师

    TCP/IP之蓟辽督师 真正的知识是深入浅出的,码农翻身" 公共号将苦涩难懂的计算机知识,用形象有趣的生活中实例呈现给我们,让我们更好地理解. 本文源地址:TCP/IP之蓟辽督师 本文续&l ...

  2. TCP/IP 之 蓟辽督师

    本文续<TCP/IP之大明内阁>, 不了解背景的同学可以先看看上一篇文章, 当然这篇也是<TCP/IP之大明邮差>的前传, 主要讲一讲可靠性传输的原理. 袁崇焕奉圣旨进京,也被 ...

  3. TCP/IP之蓟辽督师 转

    原创: 刘欣 码农翻身 2016-11-07 本文续<TCP/IP之大明内阁>, 不了解背景的同学可以先看看上一篇文章, 当然这篇也是<TCP/IP之大明邮差>的前传, 主要讲 ...

  4. 码农翻身之大话编程篇:8 TCP/IP之蓟辽督师

    袁崇焕奉圣旨进京,也被迫带来了他的心肝宝贝幻月宝镜.他一进京,顾上休息, 立刻就先去拜见曾经举荐提报自己的恩师孙承宗, 看到自己的爱将风尘仆仆的赶来,虽然心疼, 稍事寒暄过后,还是立刻问起了怎么用幻月 ...

  5. 信息系统项目管理师教程(第3版)- OSI七层模型TCP/IP四层模型对应网络协议

    一.OSI七层模型: 1.应用层 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 2.表示层 数据的表示. ...

  6. IPv6时代的《TCP/IP详解》!

    点击我,试试看吧!                                                    点击我,试试看吧!                              ...

  7. TCP/IP常见英文缩写释义

    为什么80%的码农都做不了架构师?>>>    TCP (传输控制协议) - 应用程序之间通信  transmission control protocol UDP (用户数据包协议 ...

  8. TCP/IP之大明内阁---协议的制定

    个人感言:真正的知识是深入浅出的,码农翻身" 公共号将苦涩难懂的计算机知识,用形象有趣的生活中实例呈现给我们,让我们更好地理解.感谢"码农翻身" 公共号,感谢你们的成果, ...

  9. 计算机网络原理梳理丨清晰认识 TCP/IP 协议,图解秒懂!

    作者:MobMsg,资深全端工程师一枚,架构师社区合伙人! TCP/IP 协议族 Internet 的核心协议就是 TCP/IP,广泛应用于局域网和广域网,目前已有20+年发展史,是现用国际通行标准. ...

最新文章

  1. 黑帽SEO:Google为什么会屏蔽你的网站
  2. golang导入git包_使用go module导入本地包的方法教程详解
  3. 2015春节期间读完两本书,立贴为证。
  4. 电子工程可以报考二建_毕业证上财务管理专业,可以报考二建吗?
  5. MSDN Magazine Download
  6. centos7.0上安装五笔输入法
  7. php高并发锁,redis锁,文件锁示例
  8. commons-beanutils实现java深度克隆
  9. 改进型MPPT算法C源代码仿真
  10. 数仓建模—建模工具PDMan(CHINER) 入门介绍
  11. [单片机] KeilC51单块数码管演示与原理
  12. 激光SLAM:LOAM-Livox 算法研究(1) -- 功能包编译与验证
  13. [转载]坐标系统与投影变换_-刘艳红-_新浪博客
  14. 理财产品收益计算公式揭密,破解6种获利模式
  15. IMO班聊助力壹米滴答全国“织网” 让每一米、每一秒都更有效率
  16. python 余弦值_余弦相似度
  17. 小荷特卖:切中女装童装品类、聚焦三线以下城镇市场的闪购平台
  18. 第四章:Android灯光系统(3)-编写HAL
  19. ♠♦♣TypeScript
  20. PDF图片文字如何编辑?ORC图文识别一招搞定

热门文章

  1. Postman两个接口数据关联
  2. win 10找不到恢复环境怎么办?三种方法带你解决!
  3. 思科交换机使用TFTP工具备份配置和上传配置
  4. Windwos 搭建TFTP
  5. 蓝鲸智云-腾讯给广大运维工作者的福利
  6. 2022年度总结:反思与回顾
  7. 记录文件服务器的操作日志
  8. 新闻事件脉络挖掘思路
  9. 【深入浅出Spring原理及实战】「开发实战系列」带你看看那些可能你还不知道的Spring特殊技巧和想不到的招数
  10. Android的语言设置(二)