发明名称 基于http的网络数据包还原方法
摘要 本发明涉及一种网络应用协议分析方法。在TCP会话数据流重组算法的基础上,根据网络应用协议及其内容的相关特点进行分析设计,“因材施教”的提出了一种基于http的网络数据包还原方法。在基本的网络数据包还原算法的基础上,对http协议中post方法提交的数据,添加通过Content-Length的值判断数据是否发送完,精简了基于http的网络数据包编译前的准备工作,有效的解决了在大流量环境下对内容进行分析的瓶颈,提高了万维网应用中对提交数据部分分析的高效性与准确率。使用本算法可以在不考虑tcp应答报文的情况下完成http数据的还原。大大简化网络数据流的重组和还原流程,从而有效降低系统负荷,加快数据处理速度。
申请公布号 CN102307151B 申请公布日期 2014.04.02
申请号 CN201110303996.X 申请日期 2011.10.10
申请人 上海西默通信技术有限公司 发明人 张水华
分类号 H04L29/08(2006.01)I;H04L29/06(2006.01)I;H04L12/811(2013.01)I;H04L12/26(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 郑州大通专利商标代理有限公司 41111 代理人 白毅明
主权项 一种基于http的网络数据包还原方法,其特征是:在TCP会话数据流重组算法的基础上,对http协议中post方法提交的数据,通过添加Content‑Length的值判断数据是否发送完,即通过下述步骤实现网络数据包编译前的准备工作:对于获取的网络数据包的一个报文数据段,设该报文数据段第一字节的序号数据报长度seq1=xlen1=a其中,x、a为自然数,则对于下一个来到的报文数据段可能出现的情况,依次分析如下:1)正常报文Seq2=yLen2=by=x+a,其中y、b为自然数,由此报文的seq可知,这个报文携带数据序号y~(y+b‑1),正是上一个报文的预期后续报文,将此报文追加到正常报文队列;2)完全重复报文Seq2=y1Len2=b1y1==y并且b1==b;该报文携带数据序号y1~(y1+b1‑1),与上一个报文携带的数据序号y~(y+b‑1)完全一样,即这两个报文完全重复,则丢弃该报文;3)重复子报文Seq2=y2Len2=b2y2==x而且b2<a这个报文携带数据序号y2~(y2+b2‑1),是上一个报文的一部分,丢弃这个报文;4)部分重复报文情况一Seq2=y3Len2=b3Y3>x且y3<y2且b3<=x+a即:seq2>seq1而且seq2<seq1+len1而且seq2+len2<=seq1+len1即这个报文携带序号y3~(v3+b3‑1),这个序号段被包含在上一个报文段中(x~x+a‑1),所以应该丢弃这个报文;5)部分重复报文情况二Seq2=y4Len2=b4y4>x且y4<x+a且y4+b4>x+a即:seq2>seq1而且seq2<seq1+len1而且seq2+len2>seq1+len1即这个报文携带序号y4~(y4+b4‑1),这个序号段前一部分y4~x+a‑1被包含在上 一个报文段(x~x+a‑1)中,后一部分x+a~y4+b4‑1是新的数据,此时应该对这个报文作如下处理:A.计算重复字节数(seq1+len1)‑Seq2=x+a‑y4即这个报文段前(x+a‑y4)个字节是重复的;B.截取报文段新数据丢弃这个报文段的前x+a‑y4字节,截取后面的新数据,即只保留字节序号段x+a~y4+b4‑1;C.重新设置这个报文段的序列号seq2=seq2+(x+a‑y4)即:seq2=x+aD.重新设置这个报文段的数据长度len2=len2‑(x+a‑y4)=b4‑x‑a+y4E.重新设置后报文段如下Seq2=x+aLen2=b4+v4‑x‑a即现在这个报文段携带数据序号x+a~y4+b4‑1,正好是上一个报文的后续报文,现在将其作为正常报文追加到正常报文队列;6)对于提前到达的报文Seq2=nLen2=pn>x+a即:seq2>seq1+len1这个报文数据段携带序号n~n+p‑1的数据,即不是上一个报文x~x+a‑1的后续报文,而是提前到来的报文,此时则将这个报文放置到失序报文队列存储起来,以备后续重组使用;重复上述步骤,直到tcp断开这个socket的链接,此时将正常报文队列和失序报文队列中的数据合并起来,完成报文数据重组。
地址 201100 上海市嘉定区浏翔公路3135号1幢319室