一种报文分片重组方法及装置制造方法

文档序号:7778222阅读:341来源:国知局
一种报文分片重组方法及装置制造方法
【专利摘要】本申请提供报文分片重组方法和装置,发送端计算分片报文前的整个报文校验和,并添加在每个分片报文的首部供对端进行计算校验使用,接收端收到分片报文以后,对报文重组后进行整个报文校验和计算,将计算结果与报文首部携带的整个报文校验和进行比较,如果一致,确认重组后的报文是正确的,如果有误,确认重组后的报文有错误,丢弃。本申请通过该方式,能够有效识别伪造分片报文,并能够有效保障报文重组后的正确。
【专利说明】一种报文分片重组方法及装置
【技术领域】
[0001]本申请涉及网络技术,尤其是涉及在网络中实现报文分片重组的方法及装置。【背景技术】
[0002]IP协议在传送数据包吋,将数据报文分为若干分片进行传输,并在目标系统中进行重组,这ー过程称为报文分片。IP报文分片发生在要传输的IP报文大小超过了最大传输单位MTU的情况,例如,在以太网环境中可传输的最大IP报文大小为1500字节,如果要传输的报文大小超过1500字节,则需要分片后进行传输。如何判断哪些分片报文属于同一个报文,是报文重组的关键。在现有技术方案中,具有相同源、目的地址、分片标识、协议号的分片报文会被认为是同一个报文的不同分片报文。
[0003]分片标识为16比特,最大分片标识为65535,也就是说,当报文发送方发送ー个分片标识为N的分片报文后,再发送65536个报文之后,新报文的分片标识又是从N开始,这样会导致前后两个不同报文的分片报文会被认为是同一个报文的不同分片,当然,出现这种情况的前提是分片标识为N的报文所有分片都没能在65536个报文的时间内到达对端,正常网络环境下,出现这个情况的概率比较小,但是,在网络环境比较复杂或者流量很大的情况下,这种情况还是比较容易出现的。
[0004]还有ー种利用分片报文进行攻击的情况,ー些IP分片攻击除了用于进行拒绝服务攻击之外,还经常用于躲避防火墙或者网络入侵检测系统。

【发明内容】

[0005]有鉴于此,本申请提供ー种报文分片装置,用于在发送端对报文进行分片处理,其特征在于,包括:计算模块和处理模块,
[0006]所述计算模块判断报文大小是否超过了接ロ的MTU,如果是,计算整个报文校验和,将其添加在IP报文的首部,以供对端进行计算校验;
[0007]所述处理模块进行分片,在每一分片报文中,携帯包含整个报文校验和的IP首部,将报文向对端发送。
[0008]所述整个报文校验和在每个分片报文中的都相同,携帯在IP报文首部最后两个字节。
[0009]基于同样的发明思想,本申请还提供ー个报文重组装置,包括:判断模块、校验模块和处理模块,
[0010]所述处理模块根据报文的首部携帯的信息,将报文加入重组队列;
[0011]所述判断模块判断分片报文是否收集齐全,当所有分片报文收集完整时,通知处理模块对报文进行重组,并计算重组后的整个报文校验和;
[0012]所述校验模块将计算的校验和与报文首部携帯的整个报文校验和做比较,如果一致,则证明重组后的报文是正确的,如果不一致,证明这些报文分片不是同一个报文的,将报文丢弃。[0013]所述判断模块进一步用于:判断收到的报文是否是分片报文,如果不是分片报文,根据IP报文首部的协议字段将报文上送对应的协议栈处理。
[0014]所述报文首部携带的信息具体包括源地址、目的地址、报文标识码、协议号以及整个报文校验和中的至少一个。
[0015]基于同样的发明思想,本申请提供一种报文分片的方法,用于在发送端对报文进行分片处理,所述方法包括:
[0016]判断报文大小是否超过了接口的MTU,如果是,计算整个报文校验和,将其添加在IP报文的首部,以供对端进行计算校验;
[0017]对所述报文进行分片,在每一分片报文中,携带包含整个报文校验和的IP首部,将报文向对端发送。
[0018]所述整个报文校验和在每个分片报文中的都相同,携带在IP报文首部最后两个字节。
[0019]基于同样的发明思想,本申请提供一个报文重组的方法,所述方法包括:
[0020]根据报文的首部携带的信息,将报文加入重组队列;
[0021]判断分片报文是否收集齐全,当所有分片报文收集完整时,通知处理模块对报文进行重组,并计算重组后的整个报文校验和;
[0022]将计算的校验和与报文首部携带的整个报文校验和做比较,如果一致,则证明重组后的报文是正确的,如果不一致,证明这些报文分片不是同一个报文的,将报文丢弃。
[0023]判断收到的报文是否是分片报文,如果不是分片报文,根据IP报文首部的协议字段将报文上送对应的协议栈处理。
[0024]所述报文首部携带的信息具体包括源地址、目的地址、报文标识码、协议号以及整个报文校验和中的至少一个。
[0025]该技术方案对用户来说,不仅仅可以在报文中多一项分片标识,更重要的是,对端设备收到分片报文后可以根据重组后的报文进行校验和计算,并将计算得到的校验和与报文携带的校验和进行比较验证,进一步保证了重组报文的正确性,避免了重组错误以及伪造分片报文的攻击,对网络设备来说,改动也很小,兼容性强。
【专利附图】

【附图说明】
[0026]图1是本申请的装置实施例一的硬件示意图。
[0027]图2是本申请的装置实施例二的硬件示意图。
[0028]图3是本申请的方法实施例的示意图。
[0029]图4是本申请的方法又一实施例的示意图。
【具体实施方式】
[0030]本申请提供一种报文分片的装置,用于在发送端对报文进行分片处理,该装置的基本硬件环境包括CPU、内存、非易失性存储器以及其他硬件,该装置在逻辑上包括:计算模块和处理模块,这些模块实际上为计算机程序由CPU加载至内存中运行而形成的。请一并参考图2,所述装置在运行过程中执行以下流程:
[0031]步骤11:计算模块填充IP报文首部的字段和载荷,判断待处理的IP报文大小是否超过了接ロ的MTU,如果是,计算整个报文校验和,将其添加在IP报文的首部,否则,直接发送。
[0032]步骤12:处理模块在对待处理的IP报文进行分片时,在该IP报文分片形成的每一分片报文中的IP首部中携带该整个报文校验和并发送。
[0033]在一个传统的IP报文中,在IP报文的首部有16bit的首部校验和字段,它是根据IP首部计算所得的,但并不包括后面的载荷(payload)。与传统方式不同的是,在本申请中,在IP首部字段和载荷都填写完整后,根据报文首部和载荷整体计算ー个整个报文校验和,额外添加在IP报文的首部。校验和计算方法属于业界通用成熟的技术,有多种实现方式,例如可以利用现有的Linux开源的计算报文校验和的方式,具体校验算法的使用不是本发明关注的重点,在此不多做赘述。在优选的方式中,整个报文校验和占用2个字节,可添加在报文的首部校验和之后,即报文首部最后的两个字节,当然也可以放在其他的字段,根据用户实际使用情况进行不同的设定。本申请在此仅做举例说明。
[0034]对于接收端的设备来说,需要増加ー个报文重组装置,该装置的基本硬件环境与报文分片装置相同,包括了 CPU、内存、非易失性存储器以及其他的硬件,在逻辑上包括:判断模块、校验模块和处理模块,这些模块实际上为计算机程序由CPU加载到内存调用而形成的,请ー并參考图4,所述装置在计算机调用时执行以下流程:
[0035]步骤21判断模块判断收到的报文是否是分片报文,如果是,转入步骤22,否则,根据IP报文首部的协议字段将报文上送对应的协议栈处理。
[0036]步骤22处理模块根据分片报文的首部携帯的特征信息以及该分片报文携帯的整体报文校验和,将该分片报文加入到对应的重组队列中。
[0037]其中,所述分片报文首部携帯的特征信息包括如源地址、目的地址、报文标识码、协议号等。对于分片报文来说,所有分片报文的IP报文首部中的源IP、目的IP、ID标识、上层协议等信息都是ー样的,不同的地方在于分片标志位和分片偏移量,而接收方正是根据接收到的分片报文的源IP、目的IP、ID标识、分片标志位、分片偏移量来对接收到的分片报文进行重组。
[0038]在现实中使用中,分片标识为16比特,最大分片标识为65535,也就是说,当报文发送方发送ー个分片标识为N的分片报文后,再发送65536个报文之后,新报文的分片标识又是从N开始,如果待传输的报文的数量庞大,接收方可能会在同一时间段内收到属于不同的报文但源IP、目的IP、ID标识、分片标志位等都一祥的分片报文,这样会导致前后两个不同报文的分片报文会被认为是同一个报文的不同分片,此时,利用本申请的技术方案,可以很好的解决这ー问题,本申请的整个报文校验和可以起到区分不同报文的作用,所有属于同一个IP报文的分片报文携带的整个报文校验和都是ー样的,接收方根据所述整个报文校验和将具有同样的整个报文校验和的分片报文加入到同一个报文的重组队列中。
[0039]步骤23判断模块判断分片报文是否收集齐全,当所有分片报文收集完整时,通知处理模块对报文进行重组,并计算重组后的整个报文校验和。
[0040]如果在规定的时间内收到了最后ー个分片报文,说明报文分片收集完整的,可以对报文进行重组,否则,如果超过了规定的时间,还没有收集齐所有的报文分片,则将所有分片丢弃,并结束处理流程。
[0041]步骤24校验模块将计算的校验和与报文首部携帯的整个报文校验和做比较,如果一致,则确认重组后的报文是正确的,如果不一致,证明这些报文分片不是同一个报文的,重组有误,将报文丢弃。
[0042]在实际使用中,假设有攻击者截获了在网络中传输的分片报文,并根据分片报文伪造了同样的分片报文作为攻击报文,在前面几个步骤中是很难被识别出来的,进而伪造的攻击报文就有可能被当作正常的分片报文加入重组,从而导致重组后的报文有误,而在本申请中,在IP首部添加的整体报文校验和,到了接收端会根据组装后的报文进行重新计算,如果计算后的校验和与IP分片首部中携带的校验和一致,说明报文重组是正确的,如果计算后的结果与IP分片首部中携带的校验和不一致,说明分片重组过程出现了偏差,重组后的报文不正确。
[0043]本申请通过在分片中携带可以验证重组是否正确的校验和,不仅增加了一项识别同一报文分片的标识,更重要的是,校验和在接收端可以进行重新计算,根据计算后的结果与携带的校验和比较,这样,即使出现了有人恶意伪造分片报文,哪怕伪造的分片报文看起来与其他分片报文很一致,也无法通过接收端的校验验证,并且由于校验和的计算方法都是通用的,收发端都无需做较大的改动,只需要在发送端添加校验,在接收端进行校验和计算即可,实施方法简单,而实施效果良好。
[0044]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【权利要求】
1.一种报文分片装置,用于在发送端对报文进行分片处理,其特征在于,包括:计算模块和处理模块, 所述计算模块判断待处理的IP报文大小是否超过了接口的MTU,如果是,计算整个报文校验和,将其添加在IP报文的首部,以供对端进行计算校验; 所述处理模对待处理的IP报文进行分片时,在该IP报文分片形成的每一分片报文中的IP首部中携带该整个报文校验和并发送。
2.如权利要求1所述的装置,其特征在于,所述整个报文校验和在每个分片报文中的都相同,携带在IP报文首部最后两个字节。
3.一个报文重组装置,其特征在于,包括:判断模块、校验模块和处理模块, 所述处理模块根据报文的首部携带的信息,将报文加入重组队列; 所述判断模块判断分片报文是否收集齐全,当所有分片报文收集完整时,通知处理模块对报文进行重组,并计算重组后的整个报文校验和; 所述校验模块将计算的校验和与报文首部携带的整个报文校验和做比较,如果一致,则确定重组后的报文是正确的,如果不一致,确定这些报文分片不是同一个报文的,将报文丢弃。
4.如权利要求3所述的装置,其特征在于,所述判断模块进一步用于: 判断收到的报文是否是分片报文,如果不是分片报文,根据IP报文首部的协议字段将报文上送对应的协议栈处理。
5.如权利要求3所述的装置,其特征在于,所述报文首部携带的信息具体包括源地址、目的地址、报文标识码、协议号以及整个报文校验和中的至少一个。
6.一种报文分片的方法,用于在发送端对报文进行分片处理,所述方法包括: 判断待处理的IP报文大小是否超过了接口的MTU,如果是,计算整个报文校验和,将其添加在IP报文的首部,以供对端进行计算校验; 对待处理的IP报文进行分片时,在该IP报文分片形成的每一分片报文中的IP首部中携带该整个报文校验和并发送。
7.如权利要求6所述的方法,其特征在于,所述整个报文校验和在每个分片报文中的都相同,携带在IP报文首部最后两个字节。
8.一个报文重组的方法,其特征在于,所述方法包括: 根据报文的首部携带的信息,将报文加入重组队列; 判断分片报文是否收集齐全,当所有分片报文收集完整时,对报文进行重组,并计算重组后的整个报文校验和; 将计算的校验和与报文首部携带的整个报文校验和做比较,如果一致,则证明重组后的报文是正确的,如果不一致,证明这些报文分片不是同一个报文的,将报文丢弃。
9.如权利要求8所述的方法,其特征在于,所述方法进一步包括: 判断收到的报文是否是分片报文,如果不是分片报文,根据IP报文首部的协议字段将报文上送对应的协议栈处理。
10.如权利要求8所述的方法,其特征在于,所述报文首部携带的信息具体包括源地址、目的地址、报文标识码、协议号以及整个报文校验和中的至少一个。
【文档编号】H04L12/951GK103595661SQ201310624643
【公开日】2014年2月19日 申请日期:2013年11月28日 优先权日:2013年11月28日
【发明者】杨超 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1