Unix/Linux编程:网际协议(IP)的分片和重组

  • 本文详述将外发数据进行分片以及将传入数据报进行重组的软件。由于最终目的站需要把分片的数据报重新组装起来,因此每个应用TCP/IP的计算机必须具有负责重组的程序代码,负责它就不能与互联网上所有的计算机通信
  • 协议标准规定,任何实现IP的程序都必须能够将数据片进行分组和重组。事实上,任何网关若连接两个以上的具有不同MTU大小的网络,则经常需要将网络报分片传输。由于设计良好的应用程序会主动生成足够小的、能够直接通过网络传输的数据报,因此主机并不需要经常执行分片任务

数据报的分片

数据报的分片发生在IP为数据报选择路由之后,以及将其置入一个与指定的网络接口相关联的队列之前的这段时间里。IP把数据报长度和网络MTU向比较,以确定是否有必要将其分片。在最简单的情况下,整个数据报可以被封装成一个网络分组或帧,因此无需分片

对需要分片的情况,IP首先生成多个数据报,并将数据报中的分片比特置1,然后将源数据报中的数据按顺序分片,并将它们装入这些数据报中。它还要在同一源数据报产生的所有数据报片中的MF(more fragment)比特置1。末尾的分片除外。IP一边为数据报1分片,一边将它们传递给网络接口发送出去。

为一个数据报片再次分片

如果被分片的数据报本身就是一个数据报片,分片处理会变得复杂一点。当一个数据报通过两个或者更多网关时,可能会出现这种情况。如果一个网关为源数据表分片,分片后的数据报可能还是太大,以致无法通过沿途经过的下一个网络。因此,一个网关可能会接收到需要再次分片的数据报片

为数据报分片和为数据报之间大细微差别在于网关处理MF比特的不同。当一个网关为原来未分片的数据时,除了末尾的数据报片,它将其余所有分片上的MF比特都置为1。类似的,如果一个数据报片的MF比特并未置为,则网关会和处理原来为分片的数据报完全一样的处理这个数据报片,除末尾的分片外,它会把生成的所有子分片的MF比特全部置,因为所有这些自分片都不可能是整个数据报的末尾数据片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值