如何重新组装IP数据包

时间:2013-08-07 11:18:13

标签: networking ip ethernet data-link-layer

假设我们有一个总大小为12000字节的IP数据包,我们通过数据链路层将此数据包从A站发送到B站。单个以太网帧可以承载多达1500字节的有效载荷数据,因此总共需要8个以太网帧来传输12000字节的IP数据包,对吗?

假设第一个以太网帧(携带IP报头)在传输过程中出现乱码,并且IP报头的TotalLength字段不再包含实际长度,而只包含一些无意义的值。即使站B意识到报头校验和不再有效并丢弃该帧,站B如何知道下一个IP分组在输入数据流中的起始位置?它不知道第一个IP数据包有多少字节的有效负载,对吧?

或者IP数据包的大小是否有效地受到底层数据链路帧可以处理的有效载荷的最大长度的限制?

2 个答案:

答案 0 :(得分:2)

好的做了一些研究之后,实际情况是IP数据包的最大大小是由数据链路的最大传输单元(MTU)决定的。

对于那些关心的人,这个网站很好地分解了它:http://aa.net.uk/kb-broadband-mtu.html

答案 1 :(得分:1)

IP片段的大小受MTU限制,IP分组的大小受IP头的大小字段限制。接收方可以通过使用“总长度”和“片段偏移”字段来了解整体大小以及接收的IP片段是否是第一个。如果组装出错了,那么下一层的校验和会告诉你,或者你开始接收将覆盖重复偏移的片段。它用于IPv4。对于IPv6,它与强制性MTU发现和几乎禁止的IP数据包碎片的工作方式不同。