一种数据报文分片方法及装置、重组方法及装置与流程

文档序号:12908205阅读:492来源:国知局
一种数据报文分片方法及装置、重组方法及装置与流程

本发明涉及数据通信领域,特别涉及一种数据报文的分片方法及装置、重组方法及装置。



背景技术:

在数据通信领域中,数据报文分片和重组是一种常用技术,如ip报文分片重组技术、多链路ppp报文分片重组、atm基于信元的分片和重组等。数据报文的重组一般由软件完成,而软件重组报文的效率是必须考虑的。重组报文时,判断分片的完整性比较复杂,也是重组报文中效率的瓶颈,提高判断分片完整性的效率是提高重组效率的关键。



技术实现要素:

针对传统技术存在的分片报文在重组过程中判断分片完整性较复杂、效率低的问题,本发明提出一种数据报文的分片方法及装置、重组方法及装置,提高报文重组效率。

一方面,本发明实施例提供一种数据报文分片装置,其包括:

分片处理模块,用于对要发送的数据报文进行分片,并在每一个分片报文中添加头部信息;所述头部信息包括分片id、分片序列号、分片标志;所述分片id用于区分不同数据报文的分片报文;所述分片序列号用于标识分片位置;所述分片标志用于区分首片、中间片和末片;

分片报文发送模块,用于发送分片报文。

作为进一步优化,同一个数据报文的每一个所述分片报文的分片id均相同,分片序列号从第一个分片报文开始依次递增。

另一方面,本发明实施例提供一种数据报文的分片方法,其包括:

分片处理模块对要发送的数据报文进行分片,并在每一个分片报文中添加头部信息;所述头部信息包括分片id、分片序列号、分片标志;所述分片id用于区分不同数据报文的分片报文;所述分片序列号用于标识分片位置;所述分片标志用于区分首片、中间片和末片;

分片报文发送模块将经过分片处理模块处理后的分片报文发送出去。

作为进一步优化,同一个数据报文的每一个所述分片报文的分片id均相同,分片序列号从第一个分片报文开始依次递增。

第三方面,本发明实施例提供一种数据报文的重组装置,其包括:

分片报文接收模块,用于接收分片报文,提交给分片报文重组模块;

分片报文重组模块,用于在收到分片报文后创建或者查找重组控制块,基于重组控制块判断接收的分片报文是否完整,若收到的分片报文完整,则对分片报文进行重组;所述重组控制块包括分片id字段、重组位图、接收到的分片数、末片标志、接收时间、重组队列;

所述分片id字段保存分片报文的头部信息中的分片id;所述重组位图中的位与分片序列号一一对应,在收到分片后将分片序列号对应重组位图中的位置1;所述接收到的分片数用于统计分片数;所述末片标志用于在接收到末片分片报文后设置该标志;所述重组队列用于对分片报文进行缓存;所述接收时间用于记录接收第一个分片报文的时间。

作为进一步优化,所述分片报文重组模块用于在第一次接收到分片后,创建与该分片id相关联的重组控制块并且初始化控制块,在初始化控制块时对控制块中的各字段操作包括:分片id字段保存分片报文的头部信息中的分片id;分片序列号对应位图中的位置1;接收的分片数累加1;如果该分片报文是末片,则设置末片标志;接收时间字段记录第一次接收到分片报文的时间;将分片报文放入重组队列。

作为进一步优化,所述分片报文重组模块还用于在后续接收到分片后以分片id查找重组控制块,并对控制块中的各字段进行如下操作:分片序列号对应重组位图的位置1;接收到分片数累加1;如果该分片报文是末片,则设置末片标志;将分片报文放入重组队列;

所述分片报文重组模块基于重组控制块判断接收的分片报文是否完整,具体包括:若有末片标志且重组位图中连续1的个数为接收到的分片数,则接收分片报文完毕,重组分片报文并且上交。

第四方面,本发明实施例提供一种数据报文的重组方法,其包括:

分片报文接收模块接收到分片报文后,提交给分片报文重组模块;分片报文重组模块在收到分片报文后创建或者查找重组控制块,基于重组控制块判断接收的分片报文是否完整,若收到的分片报文完整,则对分片报文进行重组;所述重组控制块包括分片id字段、重组位图、接收到的分片数、末片标志、接收时间、重组队列;

所述分片id字段保存分片报文的头部信息中的分片id;所述重组位图中的位与分片序列号一一对应,在收到分片后将分片序列号对应重组位图中的位置1;所述接收到的分片数用于统计分片数;所述末片标志用于在接收到末片分片报文后设置该标志;所述重组队列用于对分片报文进行缓存;所述接收时间用于记录接收第一个分片报文的时间。

作为进一步优化,所述分片报文重组模块在第一次接收到分片后,创建与该分片id相关联的重组控制块并且初始化控制块,在初始化控制块时对控制块中的各字段操作包括:分片id字段保存分片报文的头部信息中的分片id;分片序列号对应位图中的位置1;接收的分片数累加1;如果该分片报文是末片,则设置末片标志;接收时间字段记录第一次接收到分片报文的时间;将分片报文放入重组队列。

作为进一步优化,所述分片报文重组模块在后续接收到分片报文后以分片id查找重组控制块,并对控制块中的各字段进行如下操作:分片序列号对应重组位图的位置1;接收到分片数累加1;如果该分片报文是末片,则设置末片标志;将分片报文放入重组队列;

所述分片报文重组模块基于重组控制块判断接收的分片报文是否完整,具体包括:若有末片标志且重组位图中连续1的个数为接收到的分片数,则接收分片报文完毕。

本发明的有益效果是:

利用位图中的位与分片序列号对应关联,在收到某个序列号的分片后将对应位置1,从而基于末片标志以及重组位图中连续1的个数来快速综合判断分片接收是否完整,从而提高重组效率;此外,本发明还适用于ipv4报文的快速分片及重组,只需要将报文中的分片偏移字段映射成序列号即可,实现简单。

附图说明

图1为数据报文的分片装置示意图;

图2为分片报文头部信息;

图3为数据报文的重组装置示意图;

图4为重组控制块示意图;

图5为重组位图示意图。

具体实施方式

如图1所示,本发明中的数据报文的分片装置,包括分片处理模块及分片报文发送模块:

分片处理模块,用于对要发送的数据报文进行分片,并在每一个分片报文中添加头部信息;所述头部信息如图2所示,其包括分片id、分片序列号、分片标志;所述分片id用于区分不同数据报文的分片报文;所述分片序列号用于分片位置;所述分片标志用于区分首片、中间片和末片;

分片报文发送模块,用于发送分片报文。

基于上述分片装置,本发明实现的数据报文分片方法包括:

分片处理模块对要发送的数据报文进行分片,并在每一个分片报文中添加头部信息,然后将分片提交给分片报文发送模块;分片报文发送模块将经过分片处理模块处理后的分片报文发送出去。

在具体实现上,可以使用一个全局变量frag_id管理分片id,分片报文通过变量frag_id获取分片所属数据报文的id值。每一个数据报文从全局变量frag_id分配id后,frag_id需要变化,以区分不同的数据报文的分片报文。因此,本发明中不同的数据报文(分片前的大报文)具有不同的id值,同一个数据报文下的各个分片报文的分片id值相同。

对于分片序列号的管理来说,可以采用如下设置:设置第一片的序列号为0,第二片的序列号为1,第n片的序列号为n-1;此外,在分片标志字段,首片、中间片和末片分别填对应的分片标志值。

如图3所示,本发明中的数据报文的重组装置,包括分片报文接收模块及分片报文重组模块:

分片报文接收模块,用于接收分片报文,提交给分片报文重组模块;

分片报文重组模块,用于在收到分片报文后创建或者查找重组控制块,基于重组控制块判断接收的分片报文是否完整,若收到的分片报文完整,则对分片报文进行重组;所述重组控制块如图4所示,其包括:分片id字段、重组位图、接收到的分片数、末片标志、接收时间、重组队列;

所述分片id字段保存分片报文的头部信息中的分片id;所述重组位图中的位与分片序列号一一对应,在收到分片报文后将分片序列号对应重组位图中的位置1;所述接收到的分片数用于统计分片报文数;所述末片标志用于在接收到分片报文末片后设置该标志;所述重组队列用于对分片报文进行缓存,可以是数组,可以是双向链表,或者其它数据结构;所述接收时间用于记录接收第一个分片的时间,以便判断分片报文重组是否超时。

在具体实现上,重组控制块可以使用hash表来组织,这样查找重组控制块的效率比较高。重组位图如图5所示,如果一个报文的所有分片都被接收,则末片标志被设置,接收到的分片数为n(n<=64),且重组位图中连续n个位都是1,即:位图assmap=2n-1。使用c语言表达为:位图assmap=(1<<n)–1。位图的每一位与分片序列号对应,在收到分片报文时,将该分片序列号对应的位置1,如果要支持2~128个分片的重组,则只需要将重组位图assmap扩大到128位。

分片报文接收模块接收到分片报文后,提交给分片报文重组模块;分片报文重组模块在收到分片报文后创建或者查找重组控制块,基于重组控制块判断接收的分片报文是否完整,若收到的分片报文完整,则对分片报文进行重组。

在具体实现上,所述分片报文重组模块在第一次接收到分片后,创建与该分片id相关联的重组控制块并且初始化控制块,在初始化控制块时对控制块中的各字段操作包括:分片id字段保存分片报文的头部信息中的分片id;分片序列号对应位图中的位置1;接收的分片数累加1;如果该分片是末片,则设置末片标志;接收时间字段记录第一次接收到分片的时间;将分片报文放入重组队列。

所述分片报文重组模块在后续接收到分片报文后以分片id查找重组控制块,并对控制块中的各字段进行如下操作:分片序列号对应重组位图的位置1;接收到分片报文数累加1;如果该分片报文是末片,则设置末片标志;将分片报文放入重组队列;

所述分片报文重组模块基于重组控制块判断接收的分片报文是否完整,具体包括:若有末片标志且重组位图中连续1的个数为接收到的分片数,则接收分片报文完毕,重组分片报文并且上交。如果一段时间之内接收分片报文不完整,则进行超时处理。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1