IP分片[Fragmentation] (一)
【问题】为什么会分片?
链路层通常对可传输的每个帧的最大长度有一个上限。为了保持IP数据报抽象与链路层细节的一致和分离,IP引入了分片和重组。当IP层接收到一个要发送的IP数据报时,它会判断该数据报应该从哪个本地接口发送(通过查找一个转发表)以及要求的MTU是多少。IP比较外出接口的MTU和数据的大小,如果数据报太大则进行分片。IPv4中的分片可以在原始发送方主机和端到端路径上的任何中间路由器上进行。【选自《TCP/IP详解-卷1:协议》第10章《用户数据报协议和IP分片》】
【问题】最常见的分片流量类型是?
大多数互联网分片流量都是UDP的。TCP流量在分组和字节量方面控制的很好。
常见的被分片的流量类型是基于UDP的多媒体流量,和VPN隧道中的封装/隧道流量。
【问题】分片什么时候会被重组?
当数据报被分片了,直到它到达最终目的地才会被重组。
(分片后的数据报可能在互联网中经过不同的路径到达最终的目的地,所以路径的路由器不具备重组原始数据报的能力)
【问题】接收方如何判断已被分片的同一数据报,并将其重组?
接收者通过发送者的数据报中的identification标识字段,确认分片属于同一数据报,确保不同报文的分片不会混在一起。Identification字段对实现分片很重要。
【问题】接收方陆续收到分片的报文,何时及如何进行重组?
这其中涉及到分片的控制字段信息,分片由IPv4头部中的标识(Identification)、分片偏移(Fragment Offset)和更多分片(More Fragments, MF)字段控制。
1) 接收方通过标识位字段知道某些分片属于同一数