TCP连接理论:序列号的最小速率

时间:2014-02-07 05:26:02

标签: networking tcp network-protocols

(在这里提出这个问题,因为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秒更换一次(64秒内1个序号),那么1秒内的序列值数量= 1/64 = 0.015 ......这是选项A,但显然这也不是正确的答案。)

我的问题:

  1. 一般来说,或在这个特定问题中,最低费率是什么因素?
  2. 为什么0.064 / s,如果序列号变化慢于此怎么办?如何解决这个问题到达0.064 / s?
  3. 我知道这更像是一个理论问题,但很长一段时间它一直在唠叨我。 任何帮助都非常感谢。 (包括证明这个问题和/或答案是错误的。这个问题值得深思的唯一原因是,它是在一个重要且高度重视的全国性考试中被问到的。)

1 个答案:

答案 0 :(得分:0)

这是我遇到的CN最棘手的问题之一。 在我看来: 首先,我们应该了解问题是否在询问RISN(随机初始序列号)递增的速率或每个字节的序列号(注意:TCP是字节流协议)。我认为他们正在询问每个字节序号的递增率。

我们知道,对于相同的连接,不再使用相同的序列: 环绕时间>生命周期。或max_number_of_seq_no / bandwidth>生存时间

从上面的公式中我们可以说带宽是消耗序列号的最大速率,类似地说: number_of_seq_no_available / available_bandwidth>生存时间。

我们被间接问到这个available_bandwidth,即他们只是问最小可能的available_bandwidth:

available_bandwidth

available_bandwidth与number_of_seq_no_available成比例。

因此number_of_seq_no_available的最小可能值为1,最大为2 ^ 32

如果他们询问最大允许速率,则意味着所有序列号都应在64秒内消耗掉,这样我们就可以获得最大速率,即带宽。因此ans为2 ^ 32/64(即64Mbps),但是

他们询问最小允许速率,这意味着在64秒内仅消耗1个序列号。因此ans为0.015 /秒。这就是我对问题的看法。

学习愉快:)