问题如下:重新分段传入 TCP/UDP 数据包的算法是什么?
因此,例如,我有一个 TCP 数据包,它的大小大于某个数字,我想将此数据包分成两个、三个等,以便每个段的大小小于或等于该预定义的数字。基础很简单:划分数据包中的数据,重新计算哈希值并更新序列号,但我确信还有更多内容,并且想知道是否有一种算法,例如,在伪代码中可以描述该过程 -我找不到。
另外,我应该注意这个问题只是关于 L4 分割,L3 没有被涵盖。提前致谢!
问题如下:重新分段传入 TCP/UDP 数据包的算法是什么?
因此,例如,我有一个 TCP 数据包,它的大小大于某个数字,我想将此数据包分成两个、三个等,以便每个段的大小小于或等于该预定义的数字。基础很简单:划分数据包中的数据,重新计算哈希值并更新序列号,但我确信还有更多内容,并且想知道是否有一种算法,例如,在伪代码中可以描述该过程 -我找不到。
另外,我应该注意这个问题只是关于 L4 分割,L3 没有被涵盖。提前致谢!
TCP(以及其他传输协议)在发送数据报时选择 PDU 大小。之后,由网络协议决定,传输协议不涉及,直到数据报在目的地被传输协议接收,并在目的地呈现给应用程序。
IPv4 可以对路径中的网络数据包进行分段,但现在大部分已弃用。IPv6 消除了路径碎片。
重新分段传入 TCP/UDP 数据包的算法是什么?
那不是一回事。
如果路径内的 MTU 减少不允许其当前大小,您可以对封装的 IP 数据包进行分段,仅此而已。
为避免此问题,您可以使用路径 MTU 发现 (pMTUd) - IPv6 是必需的,IPv4 也建议使用 - 或 TCP 的 MSS 钳位。对于 UDP,唯一的选择是使用较小的数据报(特定于应用程序,此处无关紧要)或 IP 分段。