【发布时间】:2014-03-04 09:47:44
【问题描述】:
(在这里问这个问题是因为cs stack exhange 的计算机网络标签只有 50 个关注者,并且没有 TCP 的标签)
在一次特定的国家级考试中,针对我国的研究生招生,提出了以下问题:
"打开TCP连接时,要导出初始序号 使用即使在主机关闭时也能保持运行的时间 (ToD) 时钟。 ToD 时钟计数器的低 32 位用于初始 序号。时钟计数器每毫秒递增一次。这 最大数据包生命周期为 64 秒。
"下面给出的选择最接近最低允许率 用于连接数据包的序列号在哪个序列号可以增加?
(A) 0.015/s (B) 0.064/s (C) 0.135/s (D) 0.327/s"
答案显然是 (B) 0.064/s
- 通常,TCP 最大连接速度由数据包生命周期决定。如果您使用 32 位作为序列号,那么数字将在 2^32 计数后重复,因为环绕。
- 如果您发送编号为 X 的数据包,则在发送 2^32 个字节后,编号 X 将被重新分配给其他数据包。当编号为 X 的第二个数据包进入连接时,第一个数据包不应该在网络中(以避免重复)。因此,序列号不应在数据包生命周期之前重复。
那支配最大率。
但是,正如问题中所要求的,我们需要找到最小率。
(顺便说一句,即使序列号每 64 秒更改一次 (1 seq no. in 64 seconds) ,那么 1 秒内序列值的数量 = 1/64 = 0.015...这是选项 A,但这显然也不是正确的答案。)
我的问题:
- 一般而言,或在这个特定问题中,什么因素决定了最低费率?
- 为什么是 0.064/s,如果序列号变化比这慢会发生什么?如何解决这个问题以达到 0.064/s?
我知道这更像是一个理论问题,但它确实困扰了我很长时间.. 非常感谢任何帮助。 (包括证明这个问题和/或答案是错误的。这个问题值得深思的唯一原因是它是在一项重要且高度重视的全国性考试中提出的。)
【问题讨论】:
标签: networking tcp network-protocols