1. IP分片
IP头的一部分为
++++++++++++++++++++++++++++++++++++++++++++++++
| 16 bit 标识 | 3 bit 标志 | 13 bit 片偏移 |
++++++++++++++++++++++++++++++++++++++++++++++++
对于IP层来说,收到上层(UDP/TCP)发过来的数据,会先检查链路层的MTU: 1)如果 “上层数据+IP头” 的总长度没有超过MTU,则直接进行发送。 2)如果长度超过了MTU,则要进行分片,根据IP头部的格式,有一个16位的标识,分片的时候会把这个标识复制到所有的分片中去,也就是说同一个IP的分片,他们的标识是一样的;然后3bit标志中有一位是表示是否最后一片,除了最后一片为0,其它片这个标识位都为1;修改IP的长度为分片中实际数据的长度;片偏移量是该片偏移原始数据的位置。 接收端根据 标识,是否为最后一片,各个片的长度,偏移量就可以把分片的包重新组装起来。
在3位标识中还有一位是表示是否允许分片,如果该位是1,而且长度又大于MTU,那么,IP层不对数据进行分片,而是把包丢弃,然后发送一个ICMP消息给起始端。
note:
1) 经过每一个路由或网络都有可能对原来的IP包进行分片,也就是说起始端并不清楚具体的分片情况,因为中间的过程中可能又产生了很多分片。
2) 因为分片可以选

本文介绍了IP分片的概念,包括IP头中的标识、标志和片偏移字段,以及IP层如何处理超过MTU的数据包。强调了IP分片的透明性、乱序到达和重传机制。此外,讨论了UDP不涉及分片,其长度受限于MTU和API、内核限制。最后,阐述了TCP如何分块传输数据,强调TCP不对内容解释,接收端可以灵活接收数据。
最低0.47元/天 解锁文章
1238





