您现在的位置: 首页 > 技术转让 > 一种TCP流重组拼包方法和装置
一种TCP流重组拼包方法和装置

一种TCP流重组拼包方法和装置

  • 专利类型:发明专利
  • 有效期:不限
  • 发布日期:2021-07-15
  • 技术成熟度:详情咨询
交易价格: ¥面议
  • 法律状态核实
  • 签署交易协议
  • 代办官方过户
  • 交易成功

专利推荐

  • 技术(专利)类型 发明专利
  • 申请号/专利号 CN201010175954.8 
  • 技术(专利)名称 一种TCP流重组拼包方法和装置 
  • 项目单位 中国科学院计算技术研究所
  • 发明人 阮元;杨卫兵;赵晓芳;陈明宇 
  • 行业类别 电学
  • 技术成熟度 详情咨询
  • 交易价格 ¥面议
  • 联系人 李志文
  • 发布时间 2021-07-15  
  • 01

    项目简介

    本发明公开了一种TCP流重组拼包方法和装置。所述方法包括:接收当前处理报文和记录当前处理报文信息的TCP流记录,将报文分成包头信息和负载数据并将负载数据写入报文负载数据先入先出队列;判断缓存当前处理报文是否需要申请新的缓冲区,若是,则发送分配缓冲区请求,采用哈希函数和位图文件的方式为当前处理报文的负载数据分配缓存空间中空闲的单元缓冲块,返回空闲的单元缓冲块的地址索引,更新TCP流记录;否则,从报文负载数据先入先出队列中读取负载数据,根据新的TCP流记录中指定的位置将负载数据写入负载数据缓冲区,完成重组和/或拼包。
    展开
  • 02

    说明书


    1.一种TCP流重组拼包方法,其特征在于,所述方法,包括下列步骤:步骤100.报文处理模块接收当前处理报文,然后从TCP流记录表中找到该报文相关TCP流记录,将所述报文分成包头信息和负载数据两部分,并将所述负载数据写入报文负载数据先入先出队列;步骤200.报文处理模块根据所述包头信息更新所述TCP流记录,并根据更新后的TCP流记录判断缓存当前处理报文是否需要申请新的单元缓冲块,若是,则执行步骤300;否则,执行步骤400;步骤300.报文处理模块向缓冲区分配模块发送分配缓冲区请求,同时传递给缓冲区分配模块所述当前处理报文的四元组,缓冲区分配模块采用哈希函数和位图文件的方式为当前处理报文的负载数据分配负载数据缓冲区中空闲的单元缓冲块,返回空闲的单元缓冲块的地址索引;报文处理模块根据所述单元缓冲块的地址索引,更新所述TCP流记录得到新的TCP流记录;步骤400.缓冲区数据管理模块获得所述新的TCP流记录,并从报文负载数据先入先出队列中读取所述负载数据,根据所述新的TCP流记录中指定的位置将所述负载数据写入负载数据缓冲区,完成重组和/或拼包,并将经过重组和/或拼包的TCP流数据上传给主机。
    2.根据权利要求1所述的TCP流重组拼包方法,其特征在于,所述TCP流记录,记录了对一条TCP流进行重组拼包所需的信息,包括:客户端IP、服务器端IP、客户端端口、服务器端端口、TCP流状态,并为客户端至服务器端和服务器端至客户端两个方向各设置一个报文缓冲区管理字段,其中,每一个方向的报文缓冲区管理字段可分成以下几个部分:期待序列号,单元缓冲块有效位字段,单元缓冲块地址索引字段,期待序列号偏移字段,缓存数据段描述符,其中:单元缓冲块有效位字段和单元缓冲块地址索引字段分别描述分配给这条TCP流负载数据缓冲区的各个单元缓冲块的状态信息;期待序列号偏移字段,记录这条TCP连接在一个方向上期待的下一个顺序报文要存储在负载数据缓冲区中的偏移;若干个缓存数据段描述符,每个缓存数据段描述符用于描述一段存放在负载数据缓冲区中的连续报文负载数据,由两个指针组成,两个指针分别指向该段负载数据在负载数据缓冲区的起始地址和结尾地址。
    3.根据权利要求1所述的TCP流重组拼包方法,其特征在于,所述缓冲区分配模块将缓存空间划分成n个区域,每个区域中包括多个单元缓冲块,每个区域用一个位图文件记录该区域的使用情况,每一比特记录所述区域中的一个单元缓冲块是否已经分配;每一条TCP流在一个方向上的负载数据缓冲区由n个单元缓冲块构成,且一条TCP流在每个区域中只允许分配到一个单元缓冲块。
    4.根据权利要求3所述的TCP流重组拼包方法,其特征在于,所述单元缓冲块的物理地址是由单元缓冲块地址索引字段Index和报文的四元组Tuples配合运算得到的,具体的过程为:预先设定好n个hash函数H(H[0],H[1]……H[n-1]),每个hash函数对应缓存空间的一个区域,Index[i]代表了负载数据缓冲区中的第i个单元缓冲块属于n个区域中的哪一个,H[Index[i]]代表了负载数据缓冲区中的第i个单元缓冲块是根据哪个hash函数得到的,则{Index[i],H[Index[i]](Tuples)}就是负载数据缓冲区中第i个单元缓冲块的物理地址基址。
    5.根据权利要求2所述的TCP流重组拼包方法,其特征在于,所述步骤200,包括下列步骤:步骤210.判断当前处理报文的序列号是否等于当前所述TCP流记录中的期待序列号;若是,则执行步骤220;否则,执行步骤240;步骤220.判断负载数据缓冲区中是否存在乱序数据,若是,则执行步骤230;否则,所述期待序列号的值=当前期待序列号的值+报文长度的值;期待序列号偏移的值=当前期待序列号偏移的值+报文长度的值,执行步骤240;步骤230.判断当前处理报文与所述乱序数据是否相邻,若是,则所述期待序列号的值=当前期待序列号的值+报文长度的值+拼好的乱序数据长度的值;期待序列号偏移的值=当前期待序列号偏移的值+报文长度的值+拼好的乱序数据长度的值,并更新缓存数据段描述符,执行步骤260;否则,所述期待序列号的值=当前期待序列号的值+报文长度的值;期待序列号偏移的值=当前期待序列号偏移的值+报文长度的值,更新缓存数据段描述符,执行步骤260;步骤240.判断当前处理报文的序列号是否小于当前TCP流记录中的期待序列号,若是,则执行步骤250;否则按照当前报文的负载数据在其所属TCP流的负载数据缓冲区的存放位置更新缓存数据段描述符,执行步骤260;步骤250.判断所述负载数据的序列号是否均小于当前所述TCP流记录中的期待序列号,若是,则当前待处理报文被视为老数据包,不修改所述TCP流记录;否则,所述期待序列号的值=当前期待序列号的值+当前待处理报文中新数据的长度的值;期待序列号偏移的值=期待序列号偏移的值+当前待处理报文中新数据的长度的值,更新缓存数据段描述符,执行步骤260;步骤260.判断更新后的缓存数据段描述符是否要求分配新的单元缓冲块,若是,表示需要申请新的单元缓冲块;否则,表示不需要申请新的单元缓冲块。
    6.根据权利要求4所述的TCP流重组拼包方法,其特征在于,所述步骤300,包括下列步骤:步骤310.缓冲区分配模块接收当前处理报文的四元组,同时使用预设的所有哈希函数对所述四元组进行计算,得到多个哈希运算结果;步骤320.缓冲区分配模块以所述哈希运算结果为索引访问所述哈希运算结果对应的位图文件,读到多个1比特的数据;步骤330.判断读到的多个1比特的数据中是否有“0”,若是,则表示对应所述区域中这个哈希运算结果索引的位置上的单元缓冲区块空闲;否则执行步骤350;步骤340.从多个1比特的数据中任意选择一个“0”,将“0”在多个1比特的数据中的位置作为分配的单元缓冲块的地址索引,返还给报文处理模块,并修改所述位图文件;步骤350.不缓存当前处理报文,通知缓冲区数据管理模块将这条TCP流的缓存的所有数据和当前处理报文一并传给主机。
    7.根据权利要求6所述的TCP流重组拼包方法,其特征在于,所述步骤400,包括下列步骤:步骤410.缓冲区数据管理模块根据报文处理模块的结果,从所述先入先出队列中读出报文负载数据写入负载数据缓冲区;步骤420.判断是否存在一条TCP流在缓冲区中存储的顺序数据长度超过一个预设值,若是,则执行步骤430;否则,执行步骤440;步骤430.缓冲区数据管理模块将拼好的顺序数据取出,根据当前处理报文的包头信息为这一段数据添加一个伪造包头,生成一个拼好的大包上传给主机;步骤440.判断是否存在一条TCP流在缓冲区中存储的乱序数据长度超过一个预设值,或是乱序数据超出了负载数据缓冲区的范围,若是,则执行步骤450;否则,返回步骤410;步骤450.缓冲区数据管理模块根据流记录中的缓存数据段描述符取出缓冲区中存储的乱序数据,生成拼好的大包上传给主机。
    8.一种TCP流重组拼包装置,其特征在于,所述装置,包括:报文处理模块,用于接收当前处理报文,将所述报文分成包头信息和负载数据两部分,将所述负载数据写入报文负载数据先入先出队列,根据所述包头信息以及缓冲分配模块的地址索引更新TCP流记录;如果缓存当前处理报文需要申请新的单元缓冲块,向缓冲区分配模块发送分配缓冲区请求;缓冲区数据管理模块,用于根据所述包头信息从报文负载数据先入先出队列中读取负载数据,根据更新后的TCP流记录中指定的位置将所述负载数据写入负载数据缓冲区,完成重组和/或拼包,并将经过重组和/或拼包的TCP流数据上传给主机;报文负载数据FIFO,用于缓存报文的负载数据;缓冲区分配模块,采用哈希函数和位图文件的方式为当前处理报文的负载数据分配负载数据缓冲区中空闲的单元缓冲块,返回空闲的单元缓冲块的地址索引;缓存空间,用于按照相应TCP流的报文顺序缓存乱序报文的报文负载数据。
    9.根据权利要求8所述的TCP流重组拼包装置,其特征在于,所述TCP流记录,记录了对一条TCP流进行重组拼包所需的信息,包括:客户端IP、服务器端IP、客户端端口、服务器端端口、TCP流状态,并为客户端至服务器端和服务器端至客户端两个方向各设置一个报文缓冲区管理字段,其中,每一个方向的报文缓冲区管理字段可分成以下几个部分:期待序列号,单元缓冲块有效位字段,单元缓冲块地址索引字段,期待序列号偏移字段,缓存数据段描述符,其中:单元缓冲块有效位字段和单元缓冲块地址索引字段分别描述分配给这条TCP流的负载数据缓冲区的各个单元缓冲块的状态信息;期待序列号偏移字段,记录这条TCP连接在一个方向上期待的下一个顺序报文要存储在负载数据缓冲区中的偏移;若干个缓存数据段描述符,每个缓存数据段描述符用于描述一段存放在负载数据缓冲区中的连续报文负载数据,由两个指针组成,两个指针分别指向该段负载数据在负载数据缓冲区的起始地址和结尾地址。
    10.根据权利要求8所述的TCP流重组拼包装置,其特征在于,所述缓存空间被划分成n个区域,每个区域中包括多个单元缓冲块,每个区域用一个位图文件记录该区域的使用情况,每一比特记录所述区域中的一个单元缓冲块是否已经分配;每一条TCP流在一个方向上的负载数据缓冲区由n个单元缓冲块构成,且一条TCP流在每个区域中只允许分配到一个单元缓冲块。
    11.根据权利要求10所述的TCP流重组拼包装置,其特征在于,所述单元缓冲块的物理地址是由单元缓冲块地址索引字段Index和报文的四元组Tuples配合运算得到的,具体的过程为:预先设定好n个hash函数H(H[0],H[1]……H[n-1]),每个hash函数对应缓存空间的一个区域,Index[i]代表了负载数据缓冲区中的第i个单元缓冲块属于n个区域中的哪一个,H[Index[i]]代表了负载数据缓冲区中的第i个单元缓冲块是根据哪个hash函数得到的,则{Index[i],H[Index[i]](Tuples)}就是负载数据缓冲区中第i个单元缓冲块的物理地址基址。
    12.根据权利要求8所述的TCP流重组拼包装置,其特征在于,所述报文处理模块,包括:判断模块和TCP流记录修改模块,其中:所述判断模块,包括:序列号判断子模块,用于比较当前处理报文的序列号与当前所述TCP流记录中的期待序列号的关系;若等于,则触发乱数判断子模块;若大于,则触发所述TCP流记录修改模块;若当所述负载数据的序列号均小于当前所述TCP流记录中的期待序列号时,则将当前待处理报文被视为老数据包,不修改所述TCP流记录直接上传给主机;否则,触发所述TCP流记录修改模块;乱数判断子模块,用于判断负载数据缓冲区中是否存在乱序数据,若是,则触发相邻判断子模块;否则,触发所述TCP流记录修改模块;相邻判断子模块,用于判断当前处理报文与所述乱序数据是否相邻,若是,则触发所述TCP流记录修改模块;否则,触发所述TCP流记录修改模块;所述TCP流记录修改模块,用于根据所述判断模块的判断结果修改所述TCP流记录,更新缓存数据段描述符。
    13.根据权利要求8所述的TCP流重组拼包装置,其特征在于,所述缓冲区分配模块,包括:接收模块,用于接收当前处理报文的四元组;计算模块,用于使用与所述数据缓冲区中多个区域对应的多个哈希函数对接收到的四元组进行计算,得到多个哈希运算结果;访问模块,用于以所述哈希运算结果为索引访问所述哈希运算结果对应的位图文件,读到多个1比特的数据;0判断模块,用于判断读到的多个1比特的数据中是否有“0”,若是,则表示对应所述区域中这个哈希运算结果索引的位置上的单元缓冲区块空闲,触发分配模块;否则触发上传模块;上传模块,不缓存当前处理报文,通知缓冲区数据管理模块将这条TCP流的负载数据缓冲区缓存的所有数据和当前处理报文一并传给主机;分配模块,用于从读到的多个1比特的数据中任意选择一个“0”,将“0”在多个1比特的数据中的位置作为分配的单元缓冲块的地址索引,返还给报文处理模块,并修改所述位图文件。
    14.根据权利要求8所述的TCP流重组拼包装置,其特征在于,所述缓冲区数据管理模块,包括:负载数据读取模块,用于从所述先入先出队列中读出报文负载数据写入所述负载数据缓冲区;阈值判断模块,用于判断是否存在一条TCP流在负载数据缓冲区中存储的顺序数据长度超过一个预设值,若是,则触发顺序拼包模块;否则,触发乱数阈值判断模块;顺序拼包模块,用于将拼好的顺序数据取出,根据当前处理报文的包头信息为这一段数据添加一个伪造包头,生成一个拼好的大包上传给主机;乱数阈值判断模块,用于判断是否存在一条TCP流在缓冲区中存储的乱序数据长度超过一个预设值,或是乱序数据超出了负载数据缓冲区的范围,若是,则触发乱序拼包模块;否则,触发负载数据读取模块;乱序拼包模块,根据流记录中的缓存数据段描述符取出缓冲区中存储的乱序数据,生成拼好的大包上传给主机。
    展开

专利技术附图

< >

服务流程

过户资料

  • 买卖双方需提供资料
  • 平台提供
  • 过户后您将获得
  • 买家
  • 卖家
  • 公司
  • 企业营业执照
  • 企业营业执照

    专利注册证原件

  • 个人
  • 身份证

    个体户营业执照

  • 身份证

    专利注册证原件

  • 专利代理委托书

    转让申请书

    转让协议

  • 手续合格通知书

    专利证书

    专利利登记簿副本

安全保障

  • 品类齐全

    海量资源库,平台整合几十万闲置资源。
  • 交易保障

    完善的资金保障体系确保买卖双方资金安全。
  • 专人跟进

    专业交易顾问全程服跟进,确保交易流畅。
  • 快速响应

    专业在线/电话客服服务,快速响应贴心服务。
  • 售后无忧

    资质过硬,国内大知识产权服务平台。

在线客服

在线咨询

010-83278899

返回顶部