首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解IP重新组装过程是如何工作的

了解IP重新组装过程是如何工作的
EN

Network Engineering用户
提问于 2018-02-02 14:24:34
回答 1查看 1.2K关注 0票数 1

我试图很好地理解IP碎片和重组过程。我在互联网上找到了这个例子,我想这个例子对理解这个话题是有用的。

假设某台计算机接收以下序列的数据报(英文列为:源IP地址、ID、MF、DF、偏移量、总长度、协议):

我相信有5份原始的非碎片化的数据报已经发送:

  1. ID 454,IP 48.143.25.12 (条目1、2、7)
  2. ID 630,IP 245.36.22.141 (条目6、11、13)
  3. ID 43,IP 212.203.92.105 (条目3、4、5、8)
  4. ID 44,IP 212.203.92.105 (条目10、12)
  5. ID 43,IP 93.46.25.4 (入境9)

我的分析如下:

  1. 我认为这个数据报的第二个片段丢失了,所以它将被丢弃(偏移最小的片段的偏移量为368*8 = 2944字节,但是第一个片段只有1472字节的数据,所以中间的某个部分丢失了)。
  2. 这份数据报被正确地重新组合,因为所有三个碎片都被接收到,并且抵消是一致的。完整的数据报将按照这一顺序使用碎片6、11和13重新组装。
  3. 该数据报也被丢弃,因为至少丢失了两个片段( MF =0没有片段,偏移量为184没有片段,因此第二个片段也丢失了)。
  4. 这一个是正确的重新组装,使用碎片10和12,按照这个顺序。
  5. 只有一个片段被接收,并且有偏移,所以第一个片段丢失了,数据报将被丢弃。

所以我有三个问题:

  • 以上分析是否正确?你能发现什么错误吗?
  • 我注意到,在第5段中,总长度小于其余部分(而不是最后的片段),所以我认为碎片发生在路径的中间。在这种情况下,重组过程将如何工作?我不知道偏移字段会是什么,因为现在会有支离破碎的数据报,这让我很困惑。
  • 计算机的IP级将接收到的信息传递给UDP级别。在碎片丢失的情况下,IP级别是负责丢弃与同一不完整数据报相关的片段,还是将此信息传递给UDP级别,而这是丢弃它们的级别?
EN

回答 1

Network Engineering用户

回答已采纳

发布于 2018-02-03 18:46:33

他们都是正确的。

第5段:请记住,路由器可以随时更改它们的设置,并且碎片限制可以从一个数据包更改到下一个数据包。当您分割已经支离破碎的数据包时,通常会看到如下内容:

  • 原始发送(例如) 4001字节数据包
  • 把它分成三部分: 2000,2000,1。
  • 把它分解成5: 1600,400,1600,400,1。

这个大-小-大-小的特征是碎片。通常,重新组装只在最终主机上完成,或者在主机上执行安全性或NAT操作。(请注意,碎片可以覆盖其他片段,这对安全性有一些影响。我相信大多数当前的IP堆栈都会丢弃这样有趣的片段数据包。)

IP层丢弃坏包,或者发送ICMP问题报告。它永远不会到达UDP处理层。

我建议阅读RFC 791关于碎片和重新组装的内容。https://www.rfc-editor.org/rfc/rfc791

PS。您的示例表有一些假设:20字节头,并且所有这些数据包都具有相同的目的地地址。

票数 3
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/47554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档