[发明专利]一种报文重组方法和设备在审
申请号: | 201510980136.8 | 申请日: | 2015-12-23 |
公开(公告)号: | CN106911644A | 公开(公告)日: | 2017-06-30 |
发明(设计)人: | 韦媚;袁兵;梁耿;李广杰 | 申请(专利权)人: | 中国移动通信集团广西有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/951 |
代理公司: | 北京同达信恒知识产权代理有限公司11291 | 代理人: | 黄志华 |
地址: | 530000 广*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 报文 重组 方法 设备 | ||
技术领域
本发明实施例涉及通信领域,尤其涉及一种报文重组方法和设备。
背景技术
随着网络通信流量的迅速增长,通常需要对传输的报文进行统计分析,以便检测安全威胁和了解用户需求。在对传输的报文进行统计分析之前需要先采集这些报文。
传输控制协议(Transfer Control Protocol,简称TCP)是一种面向连接的,基于字节流的运输层通信协议。TCP连接具有请求和响应两个对应的方向,每个TCP包具有序列号(Sequence,简称SEQ)、确认号(Acknowledgement,简称ACK)及数据包的长度(Length,简称LEN)等参数。单个TCP包的数据长度有限,当应用层的数据较大时,会将其拆分为几个TCP数据包发送,所以应用层在解析收到的TCP包数据时,必须先将拆分的TCP包进行重组。
现有技术中提供一种报文重组的方法,根据TCP分片报文的源网络协议(Internet Protocol,简称IP)、目的IP和源端口确定超文本传输协议(HyperText Transfer Protocol,简称HTTP)报文所属的TCP会话;根据哈希函数计算出TCP会话的哈希关键字,将接收的TCP分片报文按照报文序号顺序链接至已建立的TCP会话的哈希链表中;当接收到TCP会话的全部TCP分片报文后,根据TCP会话对应的哈希链表进行HTTP报文重组。可见,该方法中,根据TCP分片报文的源IP、目的IP和源端口确定HTTP报文所属的TCP会话,需要通过哈希函数计算出TCP会话的哈希关键字,算法比较复杂,多次计算在海量数据的情况下重组效率较低。
综上,亟需一种报文重组方法,用于通过简单的方法实现报文的重组。
发明内容
本发明实施例提供一种报文重组方法,用于通过简单的方法实现报文的重组。
本发明实施例提供一种TCP报文重组方法,包括:
确定当前接收的传输控制协议TCP报文是否为待重组的TCP会话,若是,则根据当前接收的TCP报文的序列号SEQ判断当前接收的TCP报文是否为正常顺序到达;
若当前接收的TCP报文为正常顺序到达,则将当前TCP报文放入正常队列;否则,从正常队列的最后一个TCP报文的SEQ和失序队列中的所有TCP报文的SEQ中确定出不大于当前TCP报文的SEQ的最大SEQ,将不大于当前TCP报文的SEQ的最大SEQ对应的TCP报文确定为当前接收的TCP报文的上一个TCP报文;
根据上一个TCP报文对当前TCP报文进行去重操作,并根据上一个TCP报文,确定当前TCP报文是否放入正常队列或失序队列;
在确定待重组TCP会话对应的所有TCP报文传输完毕时,根据每个TCP会话的确认号ACK,将正常队列和失序队列中的所有TCP报文进行重组,得到多组TCP报文;其中,每组TCP报文中的所有TCP报文的ACK相同;且每组TCP报文中的所有TCP报文按每个TCP报文的SEQ升序排列。
可选地,确定当前接收的TCP报文是否为待重组的TCP会话,具体包括:
预先配置待重组TCP会话对应的网络协议IP和端口;
若确定接收到的TCP报文的源IP和源端口为待重组TCP会话对应的IP和端口,或者确定接收到的TCP报文的目标IP和目标端口为待重组TCP会话对应的IP和端口,则确定接收到TCP报文为待重组TCP会话;
否则,则确定接收到TCP报文不是待重组TCP会话。
可选地,通过以下方式确定接收到的当前TCP报文为正常顺序到达:
接收到的当前TCP报文的SEQ等于正常队列的最后一个TCP报文的SEQ与正常队列的最后一个TCP报文的长度LEN之和。
可选地,根据上一个TCP报文对当前TCP报文进行去重操作,并根据上一个TCP报文,确定当前TCP报文是否放入正常队列或失序队列,具体包括:
若当前TCP报文的SEQ等于上一个TCP报文的SEQ,且当前TCP报文的LEN不大于上一个TCP报文的LEN,则:
将当前TCP报文的所有内容确定为重复内容,并将当前TCP报文丢弃。
可选地,根据上一个TCP报文对当前TCP报文进行去重操作,并根据上一个TCP报文,确定当前TCP报文是否放入正常队列或失序队列,具体包括:
若当前TCP报文的SEQ大于上一个TCP报文的SEQ,当前TCP报文的SEQ小于上一个TCP报文的SEQ与LEN之和,且当前TCP报文的SEQ与LEN之和大于上一个TCP报文的SEQ与LEN之和;则:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国移动通信集团广西有限公司,未经中国移动通信集团广西有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510980136.8/2.html,转载请声明来源钻瓜专利网。