当到达IP层的数据包超过数据链路的MTU时就要分片

最近看了一下IP数据包分片与重组的过程
有个问题不明白
当到达IP层的数据包超过数据链路的MTU时就要分片
分片后的IP数据包包头中的标记字段中MF位被设为1(代表后面还有分段)或0(代表这是最后一个段)
数据包在重组的时候,我不明白哪个标记代表所有分片后的包都到达目的地了
难道通过MF=0这个去判断
但是每个分片后的包是不按序到达的,也就是说MF=0的分片并不一定是最后一个到达

那么怎么去判断分片后的包都已经完整到达目的端?


IP分片与重组主要用三个域:Identification, More Fragments(你说的MF位)和 Fragment Offset

Identification可以标识小包属于哪个大包。
MF位可以看出是不是最后一个分片小包。
每隔分片的小包都有Fragment Offset域,代表它在原始大包中的位置。

由MF可以找到最后一个分片,然后由它的Fragment Offset域就可以知道前面需要什么分片。或者说,由其他小包的Fragment Offset和长度就可以算出是不是所有小包都到了。


真诚的谢谢楼上的回答

由MF可以找到最后一个分片,然后由它的Fragment Offset域就可以知道前面需要什么分片。或者说,由其他小包的Fragment Offset和长度就可以算出是不是所有小包都到了。
这个地方我还是不明白

Identification, More Fragments和 Fragment Offset这几个字段的意思我都清楚
问题是每个小包到达目的地的顺序是不一样的
比方说有可能MF=0的先到达,MF=1的后到达
这个怎么去重组一个完整的包呢
Fragment Offset只能说名它在原包的位置


也就是说如何去判断小包的结束?
书上是说通过MF=0去判断
但是每一个小包是不按序到达的


所有小包的数据长度加起来 等不等于 原大包的长度。如果相等则所有小包都收齐了。

原大包的长度可以通过最后一个小包的offset 加 最后一个小包的长度 得到。


我明白了
原来还是要通过数据的总长度去判断



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值