重新划分传入的 TCP/UDP 数据包

网络工程 tcp UDP
2022-02-27 00:29:00

问题如下:重新分段传入 TCP/UDP 数据包的算法是什么?

因此,例如,我有一个 TCP 数据包,它的大小大于某个数字,我想将此数据包分成两个、三个等,以便每个段的大小小于或等于该预定义的数字。基础很简单:划分数据包中的数据,重新计算哈希值并更新序列号,但我确信还有更多内容,并且想知道是否有一种算法,例如,在伪代码中可以描述该过程 -我找不到。

另外,我应该注意这个问题只是关于 L4 分割,L3 没有被涵盖。提前致谢!

2个回答

TCP(以及其他传输协议)在发送数据报时选择 PDU 大小。之后,由网络协议决定,传输协议不涉及,直到数据报在目的地被传输协议接收,并在目的地呈现给应用程序。

IPv4 可以对路径中的网络数据包进行分段,但现在大部分已弃用。IPv6 消除了路径碎片。

重新分段传入 TCP/UDP 数据包的算法是什么?

那不是一回事。

如果路径内的 MTU 减少不允许其当前大小,您可以对封装的 IP 数据包进行分段,仅此而已。

为避免此问题,您可以使用路径 MTU 发现 (pMTUd) - IPv6 是必需的,IPv4 也建议使用 - 或 TCP 的 MSS 钳位。对于 UDP,唯一的选择是使用较小的数据报(特定于应用程序,此处无关紧要)或 IP 分段。