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

本文介绍IP数据报在传输过程中如何通过分片解决最大传输单元限制的问题,并详细解释了标识、标志、片偏移等字段的作用及分片与重组的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

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

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

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

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

举例子来说明如何求出片偏移:
这里写图片描述

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值