一种TCP会话重组的方法和装置制造方法及图纸

技术编号:37406724 阅读:10 留言:0更新日期:2023-04-30 09:33
本发明专利技术提供一种TCP会话重组的方法和装置。一种TCP会话重组的方法和装置,其中一种TCP会话重组的装置包括TCP传输通道建立模块、数据包获取模块、数据处理模块、TCP会话链表管理模块、TCP会话组装链表管理模块、定位节点管理模块和会话ID匹配模块。本发明专利技术基于在大流量网络环境中,一段数据拆分成的多个数据包总是相邻顺序进行传输的,根据上一次定位的节点,通过在此节点附近对数据包进行匹配,减少匹配次数,提高了TCP会话的定位重组效率。提高了TCP会话的定位重组效率。提高了TCP会话的定位重组效率。

【技术实现步骤摘要】
一种TCP会话重组的方法和装置


[0001]本专利技术涉及信息
,更具体的说,它涉及一种TCP会话重组的方法和装置。

技术介绍

[0002]在目前的互联网数据传输过程中,本地主机将数据传输至目标主机中,需要遵循严格的互联网协议,互联网协议包括以太网协议、IP协议、TCP传输控制协议和应用层协议,由于以太网协议中定义的以太网数据包具有固定的大小,所以在传输数据时往往需要将一段数据拆分成多段数据包;随后将多段数据包还原成一段完整的数据传入应用层。
[0003]其中的TCP传输控制协议是一种面向连接的、可靠的、基于字节流传输层通信协议,被广泛应用于网络数据传输。采用TCP协议传输数据时,需要把数据分拆成多个数据包,将相应的数据包进行定位重组,才能还原一次完整的TCP会话。在实际网络环境中,尤其是大流量网络环境下,同一网络节点,同一时间发生着N个TCP会话;TCP会话的定位重组效率直接影响了应用层的数据解析。
[0004]目前,TCP会话定位重组大多采用如下方式:一个数据报文到来,通过顺序比对TCP会话链表中的五元组信息定位到目的TCP会话,再通过此数据报文中的序列号等信息重组当前会话。对于流量不大的网络,这样的重组方式可以适用;但对于大流量网络时,TCP会话五元组的比对会占用大量计算机性能和太多时间,适用性不强。进而影响到后续应用层对数据的解析应用。

技术实现思路

[0005]本专利技术基于在大流量网络环境中,一段数据拆分成的多个数据包总是相邻顺序进行传输的,根据上一次定位的节点,通过在此节点附近对数据包进行匹配,减少匹配次数,提高了TCP会话的定位重组效率。
[0006]一种TCP会话重组的方法,包括如下步骤:
[0007]S1:建立目标主机和本地主机的连接,建立一个空的TCP会话链表TcpSessionList;
[0008]S2:获取数据包,数据包包括以太网头信息、IP头信息和TCP数据,TCP数据包括syn层、fin层、seq层、len层、prev层、next层和tcpdata层;
[0009]S3:按照索引查找此数据包的syn层内存储的值syn,判断“syn==1”是否成立,若是“syn==1”成立,进入S4;若是“syn==1”不成立,进入S7;
[0010]S4:判断TCP会话链表TcpSessionList内部是否为空,若是TCP会话链表TcpSessionList内部为空,进入S5;说明TCP会话链表TcpSessionList内部已有内容,进入S6;
[0011]S5:按照索引查找此数据包的IP头信息,根据IP头信息生成唯一会话ID,并生成节点序号TSLindex和建立对应的TCP会话组装链表TcpList,将此数据包对应的节点序号TSLindex、会话ID和TCP会话组装链表TcpList一一映射添加至TCP会话链表
TcpSessionList中,其中,每个节点序号TSLindex对应一个节点;同时将此数据包对应的TCP数据添加至TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;
[0012]S6:释放定位节点管理模块中存储的节点序号TSLindex,按照索引查找此数据包的IP头信息,根据IP头信息生成唯一会话ID,获取TCP会话链表TcpSessionList中最大的TSLindex,并将TSLindex+1赋值给TSLindex,此TSLindex即为此数据包对应的节点序号TSLindex,建立对应的TCP会话组装链表TcpList,将此数据包对应的节点序号TSLindex、会话ID和TCP会话组装链表TcpList一一映射添加至TCP会话链表TcpSessionList的尾部,同时将此数据包对应的TCP数据添加至TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;
[0013]S7:根据定位节点管理模块中存储的节点序号TSLindex在TCP会话链表TcpSessionList找到对应的节点,按照索引查找此数据包的IP头信息,根据IP头信息生成会话ID;
[0014]S8:将此会话ID与满足“PostLindex

r≤TSLindex≤PostLindex+r”的所有节点序号TSLindex对应的会话ID进行逐一匹配,其中r为预设节点范围,若是匹配成功,进入S9;若是匹配失败,进入S10;
[0015]S9:获取匹配成功对应的节点序号TSLindex,并将此数据包对应的TCP数据添加至此节点序号TSLindex对应的TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;
[0016]S10:判断匹配过程中是否遍历所有节点,若是未遍历完所有节点,进入S11;若是遍历完所有节点,进入S12;
[0017]S11:将r+w赋值给r,其中w为节点范围扩大系数,能够通过自主学习进行调整,回到S8;
[0018]S12:获取TCP会话链表TcpSessionList中最大的TSLindex,并将TSLindex+1赋值给TSLindex,此TSLindex即为此数据包对应的节点序号TSLindex,建立对应的TCP会话组装链表TcpList,将此数据包对应的节点序号TSLindex、会话ID和TCP会话组装链表TcpList一一映射添加至TCP会话链表TcpSessionList的尾部,同时将此数据包对应的TCP数据添加至TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;
[0019]在上述步骤进行的同时,TCP会话组装链表TcpList根据TCP数据对数据包进行重组,还原原来的数据。
[0020]作为优选的一个方面,TCP数据中,syn层用于记录一段数据的开头,用1来表示;fin层用于记录一段数据的结束,用0来表示;seq层用于记录此数据包的数据序列号;len层用于记录此数据包中要传输的数据的长度;prev层用于记录按照顺序的上一个数据包的数据序列号;next层用于记录按照顺序的下一个数据包的数据序列号;tcpdata层用于存储此数据包中要传输的数据。
[0021]作为优选的一个方面,在同一个TCP数据中,next层的数据序列号为seq层的数据序列号加上此数据包中要传输的数据的长度。
[0022]作为优选的一个方面,在TCP会话组装链表TcpList,选取syn层的值为1的数据包
作为TCP会话组装链表TcpList的起始节点,获取此数据包对应next层的数据序列号,寻找与此数据序列号相同的seq层对应的数据包,作为TCP会话组装链表TcpList的下一个数据节点,并且将此数据节点对应prev层的数据序列号与上一个数据节本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种TCP会话重组的方法,其特征在于,包括如下步骤:S1:建立目标主机和本地主机的连接,建立一个空的TCP会话链表TcpSessionList;S2:获取数据包,数据包包括以太网头信息、IP头信息和TCP数据,TCP数据包括syn层、fin层、seq层、len层、prev层、next层和tcpdata层;S3:按照索引查找此数据包的syn层内存储的值syn,判断“syn==1”是否成立,若是“syn==1”成立,进入S4;若是“syn==1”不成立,进入S7;S4:判断TCP会话链表TcpSessionList内部是否为空,若是TCP会话链表TcpSessionList内部为空,进入S5;说明TCP会话链表TcpSessionList内部已有内容,进入S6;S5:按照索引查找此数据包的IP头信息,根据IP头信息生成唯一会话ID,并生成节点序号TSLindex和建立对应的TCP会话组装链表TcpList,将此数据包对应的节点序号TSLindex、会话ID和TCP会话组装链表TcpList一一映射添加至TCP会话链表TcpSessionList中,其中,每个节点序号TSLindex对应一个节点;同时将此数据包对应的TCP数据添加至TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;S6:释放定位节点管理模块中存储的节点序号TSLindex,按照索引查找此数据包的IP头信息,根据IP头信息生成唯一会话ID,获取TCP会话链表TcpSessionList中最大的TSLindex,并将TSLindex+1赋值给TSLindex,此TSLindex即为此数据包对应的节点序号TSLindex,建立对应的TCP会话组装链表TcpList,将此数据包对应的节点序号TSLindex、会话ID和TCP会话组装链表TcpList一一映射添加至TCP会话链表TcpSessionList的尾部,同时将此数据包对应的TCP数据添加至TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;S7:根据定位节点管理模块中存储的节点序号TSLindex在TCP会话链表TcpSessionList找到对应的节点,按照索引查找此数据包的IP头信息,根据IP头信息生成会话ID;S8:将此会话ID与满足“PostLindex

r≤TSLindex≤PostLindex+r”的所有节点序号TSLindex对应的会话ID进行逐一匹配,其中r为预设节点范围,若是匹配成功,进入S9;若是匹配失败,进入S10;S9:获取匹配成功对应的节点序号TSLindex,并将此数据包对应的TCP数据添加至此节点序号TSLindex对应的TCP会话组装链表TcpList中,在定位节点管理模块中存储此节点序号TSLindex,记为定位节点PostLindex,回到S2;S10:判断匹配过程中是否遍历所有节点,若是未遍历完所有节点,进入S11;若是遍历完所有节点,进入S12;S11:将r+w赋值给r,其中w为节点范围扩大系数,能够通过自主学习进行调整,回到S8;S12:获取TCP会话链表TcpSessionList中最大的TSLindex,并将TSLindex+1赋值给TSLindex,此TSLindex即为此数据包对应的节点序号TSLindex,建立对应的TCP会话组装链表TcpList,将此数据包对应的节点序号TSLindex、会话ID和TCP会话组装链表TcpList一一

【专利技术属性】
技术研发人员:梁圆张磊朱旭晖陈承强
申请(专利权)人:杭州西软计算机工程有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1