gpt4 book ai didi

tcp - TCP序列号的最大值

转载 作者:可可西里 更新时间:2023-11-01 02:33:00 27 4
gpt4 key购买 nike

我正在 try catch 数据包并重新组织数据包以获得原始 HTTP 请求。

我正在通过 IPQUEUE(通过 iptables 规则)捕获数据包,我发现数据包没有按顺序捕获。

我已经知道在 TCP 协议(protocol)中,数据包必须重新排序,所以我尝试按序列号重新排序数据包。

根据维基百科,TCP 的序列号是 32 位数字。那么,如果序号达到MAX 32bits number会怎样呢?

因为SYN包的序号是随机数,我觉得这个限制可以很快达到。

如果有人对此有推荐,或者有一些有用的链接,请给我一个答案。

最佳答案

来自 RFC-1185

  Avoiding reuse of sequence numbers within the same connection is
simple in principle: enforce a segment lifetime shorter than the
time it takes to cycle the sequence space, whose size is
effectively 2**31.

If the maximum effective bandwidth at which TCP
is able to transmit over a particular path is B bytes per second,
then the following constraint must be satisfied for error-free
operation:
2**31 / B > MSL (secs)

所以简单来说,TCP 会处理它。除了这种情况,TCP 还具有时间戳的概念来处理序列号环绕条件。来自相同的上述 RFC

  Timestamps carried from sender to receiver in TCP Echo options can
also be used to prevent data corruption caused by sequence number
wrap-around, as this section describes.

特别是 TCP 使用 PAWS 机制来处理 TCP 环绕情况。您可以在 RFC-1323 中找到有关 PAWS 的更多信息

关于tcp - TCP序列号的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14555738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com