IP数据报分片的限制
IP数据报分片的主要限制来自于其自身的结构和网络中的一些因素。以下是详细的解释:
IP数据报的首部长度是有限制的。在IPv4中,首部长度字段占4位,可表示的最大十进制数值是15。这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。然而,这种长度可能不够用,但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
总长度字段为16位,因此数据报的最大长度为2^161=65535字节。在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum
Transfer
Unit)。当IP数据报的长度超过帧的MTU时,它将被分片传输。
IP数据报在互联网上传输时,可能要经过多个物理网络才能从源端传输到目的端。因此,当IP数据报的长度超过帧的MTU时,它将被分片传输。这个过程可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。这种分片传输可以让数据报在网络中传输,而不会因为超过MTU而无法传输。
IP头部中的三个字段:数据报标识、标志和片偏移为IP的分片和重组提供了足够的信息。数据报标识是一个16位的字段,用于标识一个数据报,当一个数据报由于长度超过网络的MTU而必须分片时,该值会被***到所有的数据报片的标识字段中。这样,在重组的时候,相同标识符的数据报片就会被重新组装成一个完整的数据报。标志字段是一个3位的字段,其中最低位叫做MF,MF=1表示后面还有若干个数据报片,MF=0表示这已经是最后一个数据报片了。中间位叫做DF,DF=0表示可以进行分片操作。
在实际应用中,需要根据网络的状况和传输的要求,合理地使用IP分片机制。例如,如果一个数据报从以太网路由到拨号链路上,数据报长度大于拨号链路的MTU,则需要对数据报进行fragmentation。此外,IP分片机制仅适用于IPv4协议,而IPv6协议中已经取消了IP分片机制,改为在发送端就将数据报分成符合MTU大小的数据块进行传输,因此IPv6协议的传输效率更高,延迟更小。
综上所述,IP数据报分片的限制主要包括版本号和首部长度的限制、总长度的限制、分片和重组的机制以及网络状况的影响。这些限制都是为了确保数据能够在互联网上有效地传输。