免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6136 | 回复: 1
打印 上一主题 下一主题

linux内核网络部分对IP分片包转发的处理 问题?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-15 18:33 |只看该作者 |倒序浏览
linux内核中对分片包转发的处理,如果有conntrack或nat模块,则先会在NF_IP_PRE_ROUTING钩子点重组分片,然后在ip_forward_finish函数中调用ip_send分片,继续在NF_IP_POST_ROUTING钩子点重组分片,最后分片,然后发送至网络!且在此过程中不会改变分片包的ID号.以上是linux2.4.32中的处理,(理解可能有偏差)我有几个问题想向各位高手请教!\r\n1.如果从不同PC发出的,目的地址相同且ID号相同的同协议的数据包,通过linux路由NAT转发后,由于不改变ID号,那么目的主机接到这些数据包时,会否出现重组错误?\r\n2.分片在网络传输中,不一定都会经过同一路由设备!那么在linux内核处理分片过程中,就不会等到所有的数据分片包,则超时后会丢弃此数据包,回否造成数据包丢失?\r\n以上问题,系各位高手不吝赐教!谢谢各位!

论坛徽章:
0
2 [报告]
发表于 2007-06-16 13:32 |只看该作者
书上讲的再详细、到位不过了,自问无法达到大师的写书水平,所以全文引用:\r\n\r\n11.5 IP分片\r\n正如我们在2 . 8节描述的那样,物理网络层一般要限制每次发送数据帧的最大长度。任何\r\n时候I P层接收到一份要发送的I P数据报时,它要判断向本地哪个接口发送数据(选路),并查\r\n询该接口获得其M T U。I P把M T U与数据报长度进行比较,如果需要则进行分片。分片可以发\r\n生在原始发送端主机上,也可以发生在中间路由器上。\r\n把一份I P数据报分片以后,只有到达目的地才进行重新组装(这里的重新组装与其他网\r\n络协议不同,它们要求在下一站就进行进行重新组装,而不是在最终的目的地)。重新组装由\r\n目的端的I P层来完成,其目的是使分片和重新组装过程对运输层( T C P和U D P)是透明的,\r\n除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。\r\nI P首部中包含的数据为分片和重新组装提供了足够的信息。\r\n回忆I P首部(图3 - 1),下面这些字段用于分片过程。对于发送端发送的每份I P数据报来说,\r\n其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中(我们现在已经看到\r\n这个字段的用途)。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每\r\n个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。\r\n另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。\r\n最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,I P将不对数据报\r\n进行分片。相反把数据报丢弃并发送一个I C M P差错报文(“需要进行分片但设置了不分片比\r\n特”,见图6 - 3)给起始端。在下一节我们将看到出现这个差错的例子。\r\n当I P数据报被分片后,每一片都成为一个分组,具有自己的I P首部,并在选择路由时与\r\n其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在I P首部中有足\r\n够的信息让接收端能正确组装这些数据报片。\r\n\r\n看完再不懂得话真的就没救了,取自TCP/IP详解第1卷11章。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP