ip分片重组技术要点.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ip分片重组技术要点

IP分片及重组原理 一 为什么要分片及在什么样的情况下会分片 IP首部的ip报文长度字段有16位,因而ip数据报的最大长度为65536字节。而由于网络接口的硬件限制以太帧数据字段长度不超过MTU(最大传输单元)。MTU一般取1500字节,因而这就决定了ip报文长度不能超过1500字节。出去IP头部的20字节如果传输UDP数据出去UDP头用户数据不应超过1472字节;传递TCP数据除去TCP头用户数据不应超过1460字节。对于超过1500字节的IP报文IP层会对报文进行分片发送,接收方的IP层收到所有分片后重组这些分片。由于TCP是面向连接的可靠传输协议 发送端TCP会将过大的数据采用按序流式方式以多个包发送,每发送一个包后收到接收端的确认信息后再发送下一个包。所发送的TCP包用户数据不超过1460字节;接收端TCP收到所有数据后重组。因而TCP数据不会在IP层重组。 二 IP分片的方式 1 IP头部中与分片相关的字段 标识(identification) 占 16 位,它是一个计数器,用来产生数据报的标识。一个IP地址在每发送一个IP报文时标志位是上一个报文标志位加一。来自同一个IP报文的分片具有相同的ID 标志(flag) 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF ( 1 表示后面“还有分片”。MF ( 0 表示最后一个分片。标志字段中间的一位是 DF (Dont Fragment) 。 只有当 DF ( 0 时才允许分片。 片偏移(12 位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。 2 分片方式 该图的MTU为1420 如图对于长度超过1500字节的IP报文。IP层会将其分片即分成若干个长度不超过1500的IP报文(分片)传送。从源报文的UDP头部开始将源报文数据段按1480字节为单位依次分片直到最后凑不够1480字节时为最后一片。每一分片的段偏移为该片第一个八个字节在源IP报文数据段中以八字节为单位的偏移。这些分片中只有第一个分片具有原报文的UDP头部其余报文的IP数据字段为原报文的用户数据。所有分片IP头部与源IP报文一样。 三 重组原理 重组算法很多除了协议栈外也有其他改进算法。所有算法的核心问题是可靠重组及消耗内存尽可能小。基于对协议的理解,我们提出了自己的重组算法。 1 怎样确定一个包是否为一个分片? 如果一个包的段偏移为0而frag字段不为1则该报文必定不是一个分片。 2 对于接收到无序分片怎样确定哪些分片来自同一个包? 来自同一个包的分片具有相同的源ip及id号。 3 接收端怎样确定来自同一包的所有分片都已到达? 当收到标志位为0的分片时,说明这是最后一个分片。根据最后一个分片的段偏移可知在源报文中最后一分片以前含有的数据长度,再加上最后一分片的数据长度即为原IP报文数据部分长度。如果接收到的所有分片的数据长度等于源IP报文数据部分长度这说明所有分片均已到达。此时即可按段偏移量重新组包 4 怎样校验分片到达包 出第一个分片外其余分片无UDP头部,因而对每个分片校验不方便。可以再重组所有分片后构建UDP伪头部校验。

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档