networking - 计算机网络:第 70 段是在哪一轮传输中发送的?
问题描述
在练习一些练习时,我遇到了以下一些我无法理解的练习。查看解决方案,我不明白他们是如何得出在第 6 轮传输中发送数据包 32 到 63 的结论的。63 是如何计算的?
第 70 段是在哪一轮传输中发送的?
解决方案:
During the 1st transmission round, packet 1 is sent;
packet 2-3 are sent in the 2nd transmission round;
packets 4-7 are sent in the 3rd transmission round;
packets 8-15 are sent in the 4th transmission round;
packets 16 to 31 are sent in the 5th transmission round;
packets 32 to 63 are sent in the 6th transmission round;
packets 64 to 96 are sent in the 7th transmission round.
Thus packet 70 is sent in the 7th transmission round.
解决方案
通过提供的练习链接,我们可以看到 TCP 传输在练习 1 的第 6 轮传输中从慢启动移动到拥塞避免(我们可以看到图形变化梯度,下一段说明原因)。
根据RFC 2001 Article .1 & .2
( link ),我们可以看到,当我们进入 TCP 拥塞避免拥塞窗口大小 (cwnd) 时,每个传输轮的段大小仅增加 1。
再次查看练习(以及上面的注释),我们看到正在传输以下段大小(重要的是要注意数据包是包含在内的,因此传输第 6 轮包含 32 个数据包,第 7 轮包含 33 个数据包):
During the 1st transmission round, packet 1 is sent; | Current Window Size of (1)
packet 2-3 are sent in the 2nd transmission round; | Increase window by 1 segment (2)
packets 4-7 are sent in the 3rd transmission round; | Increase window by 2 segments (4)
packets 8-15 are sent in the 4th transmission round; | Increase window by 4 segments (8)
packets 16 to 31 are sent in the 5th transmission round; | Increase window by 8 segments (16)
packets 32 to 63 are sent in the 6th transmission round; | Increase window by 16 segments (32)
*** Here we switch to Congestion Avoidance
packets 64 to 96 are sent in the 7th transmission round. | Increase windows by 1 segment (33)
由于数据包是包含在内的,因此练习是正确的,说明数据包 32 一直到并包括数据包 63(所以让我们假设数据包 63 的结尾基本上是数据包 64 的开头)构成了第 6 轮传输。
推荐阅读
- openshift - 如何在 openshift 源中创建 jbossweb 的图像流
- android-studio - 如何更改“compileSdkVersion”以兼容新的“实现”API?
- javascript - 出现超时错误(在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调)
- css - 如果指定了字体格式,字体将不起作用
- amazon-web-services - 如何以编程方式将 AWS 资源从一个 AWS 账户复制到另一个
- python - 字典列表的 JSON 到 DataFrame
- python - Glob 不打印结果
- r - 考虑到另一个数据库的值,如何对数据库进行子集化?
- cocoapods - 如何在 Podfile 中为特定 pod 定义 swift 版本
- javascript - 如何过滤掉谷歌表格中的重复项和增量