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

4
我在这里提问是因为 cs stack exchange 的计算机网络标签仅有50个关注者,且没有TCP标签。
在我国的某项全国级别的研究生入学考试中,出现了以下问题:
“在打开TCP连接时,初始序列号应使用即使在主机关闭时也能继续运行的时间戳(ToD)时钟来派生。低32位ToD时钟的计数器用于初始序列号。时钟计数器每毫秒递增一次。最大数据包生存期为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/64 = 0.015...,这是选项A,但显然不是正确答案。
我的问题:
  1. 什么因素决定了最小速率,是一般情况还是特定问题?
  2. 为什么是0.064/s,如果序列号的更改速度比这慢会发生什么?如何解决这个问题以得出0.064/s?

我知道这更多是一个理论性问题,但它一直在困扰着我很长时间...任何帮助都非常感谢。(包括证明这个问题和/或答案是错误的。这个问题值得思考的唯一原因是它曾在一个重要和高价值的全国性考试中被提出。)

1个回答

0
这是我遇到的 CN 中最棘手的问题之一。
在我看来,首先我们应该明确问题是否询问 RISN(随机初始序列号)增加的速率或每个字节的序列号(注意:TCP 是字节流协议)的序列号。我认为他们在问每个字节的序列号增量速率。
如我们所知,在同一连接中再次使用相同的序列号需要满足以下两个条件: Wrap Around Time > Life Time 或者 max_number_of_seq_no / bandwidth > LifeTime 从上述公式可以得出,带宽是序列号消耗的最大速率。同样地,我们可以说: number_of_seq_no_available / available_bandwidth > LifeTime。
由于他们间接地询问了可用带宽,即只询问最小可能的可用带宽:
available_bandwidth < number_of_seq_no_available / lifetime(因为我们知道生命周期是恒定的。)
可用带宽与 number_of_seq_no_available 成正比。
因此,number_of_seq_no_available 的最小可能值为 1,最大可能值为 2^32。
如果他们询问的是最大允许速率,那么意味着所有序列号都应在64秒内使用完,这样我们就可以获得最大速率,即带宽。因此答案将是2^32/64(即64Mbps)。但是,
如果他们询问的是最小允许速率,那么意味着只有一个序列号在64秒内被使用。因此答案将是0.015/sec。这就是我对问题的看法。
愉快的学习 :)

请不要混淆带宽和吞吐量。带宽在接口上是固定的,由于数据链路、网络和传输协议的开销,它总是大于传输协议的吞吐量,必须从带宽中减去这些开销才能得到理想的吞吐量。例如,100Base-TX(100 Mbps以太网)的带宽始终为100 Mbps,但吞吐量必须减去以太网前导码、SOF、头部、FCS和包间隙、IP头和TCP头,因此您的数据吞吐量小于带宽。 - Ron Maupin
很好地表达了@RonMaupin..我已经相应地更新了答案。谢谢..这使得答案更加清晰.. - Ashish Aggarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接