网络学习笔记之IP数据报的分片与组装

网络学习笔记之IP数据报的分片与组装_第1张图片

其中标识,标志, 片偏移用来进行分片与组装。

标识:占16位比特,标识数据报。当数据报长度超过网络的最大传输单元时,就要进行分片,并且需要为每一个被分片的段提供标识。所有属于同一数据报的分割段被赋予相同的标识值。

标志:占3个比特,目前只有前两个比特有意义
标志字段中的最低位记为MF(More Fragment)。MF=1表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
标志字段中的中间位记为DF(Don’t Fragment)。DF=1表示不能分片,DF=0才允许分片。如果一个数据报需要分片但又不允许分片,就把数据报丢弃并发送一个ICMP差错报文给起始端。

片偏移:占13比特,若有分片时,用来指出该分片在数据报中的相对位置,也就是说相对于用户数据字段的起点,该片从何处开始。片偏移以8字节为偏移单位,即每个分片的长度一定是8字节的整数倍。

举例子来说明如何求出片偏移:
网络学习笔记之IP数据报的分片与组装_第2张图片

分片与组装的过程
任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
把一份IP数据报分片以后,只有到达目的地才进行重新组装(这里的重新组装与其他网络协议不同,它们要求在下一站就进行进行重新组装,而不是在最终的目的地)。重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层( TCP和UDP)是透明的,除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。IP首部中包含的数据为分片和重新组装提供了足够的信息。
当IP数据报被分片后,每个片的总长度值要改为该片的长度值,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

你可能感兴趣的:(网络)