如果碎片化的IP数据报被丢弃(即许多片段中的一个)会发生什么?



我是一名刚开始接触网络堆栈的学生,所以请原谅任何误解。

如果您使用TCP作为传输层协议,并且发送的有效载荷碰巧大于堆栈中较低的MTU,则网络层协议(例如IPv4)将有效载荷分割为单独的IP数据报。如果其中一个"碎片化"了怎么办?IP数据报被丢弃?

发送4000字节的数据报,MTU为1500字节

  1. (MF: 1抵消:0长度:1500]
  2. (MF: 1抵消:185长度:1500]& lt ;--------- 下降/失去了
  3. [MF: 0 Offset: 370 Length: 1040]

会发生什么?

  1. 只有IP数据报#2被重传
  2. 在TCP确定数据报丢失后,将整个4000字节的数据报再次分片并完全重传

我最初认为单个片段将被重新传输,但是考虑到这低于TCP在传输层所确保的可靠性,我现在认为整个TCP数据报只是被丢弃/重新传输(这似乎效率低下)。

作为后续问题,是否有任何原因导致这种"碎片化"?发生在传输层之下(特别是TCP之下)?我觉得在大多数情况下,通过确保数据包在传输层上被分解成一个普遍可接受的MTU大小,可以处理这个问题。在一些研究中,我发现了一些关于TCP应该与打包无关的信息,我不太理解。

在TCP确定数据报丢失后,将整个4000字节的数据报再次分片并完全重传。虽然TCP首先应该把它分解成适合MTU的块(又名段)。

相关内容

最新更新