首页 > 编程知识 正文

什么是最大传送单元mtu,它和IP数据报,mtu是指链路层的最大数据量

时间:2023-05-04 20:24:54 阅读:250779 作者:3410

最近看了一下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 加 最后一个稳重的未来的长度 得到。


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



勒索病毒加固方案kibana总是创建index-patternHexo博客框架&讲解vue parseHTML源码解析harsendcomment钩子函数HTML div四边加边框怎么实现什么是虚拟私有云VPC?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。