(在这里提出这个问题,因为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
管理最高费率。
但是,正如问题所述,我们需要找到最小费率。
(顺便说一下,即使序列号每64秒更换一次(64秒内1个序号),那么1秒内的序列值数量= 1/64 = 0.015 ......这是选项A,但显然这也不是正确的答案。)
我的问题:
我知道这更像是一个理论问题,但很长一段时间它一直在唠叨我。 任何帮助都非常感谢。 (包括证明这个问题和/或答案是错误的。这个问题值得深思的唯一原因是,它是在一个重要且高度重视的全国性考试中被问到的。)
答案 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 /秒。这就是我对问题的看法。 学习愉快:)