[發(fā)明專利]一種Tcp重組方法及裝置有效
| 申請?zhí)枺?/td> | 201110425695.4 | 申請日: | 2011-12-16 |
| 公開(公告)號: | CN102404340A | 公開(公告)日: | 2012-04-04 |
| 發(fā)明(設計)人: | 張標依;張曉民 | 申請(專利權)人: | 山東中創(chuàng)軟件商用中間件股份有限公司 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06 |
| 代理公司: | 北京集佳知識產(chǎn)權代理有限公司 11227 | 代理人: | 逯長明 |
| 地址: | 250014 山*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 tcp 重組 方法 裝置 | ||
技術領域
本發(fā)明涉及通信領域,尤其涉及一種Tcp重組方法及裝置。
背景技術
傳輸控制協(xié)議(Tcp)是一種面向連接的,基于字節(jié)流的運輸層通信協(xié)議。Tcp連接具有請求和返回兩個對應的方向,每個Tcp包具有流水號(Seq)、確認號(Ack)及數(shù)據(jù)包長度(Len)等參數(shù)。單個Tcp包的數(shù)據(jù)長度有限,當應用層的數(shù)據(jù)較大時,會將其拆分為幾個Tcp數(shù)據(jù)包發(fā)送,所以應用層在解析收到的Tcp包數(shù)據(jù)時,必須先將拆分的Tcp包進行重組。
目前,Tcp的重組方法大多使用Snort和Libnids的重組方法,但是,Snort方法只有在滿足連接結束或內(nèi)存用盡或重組的數(shù)據(jù)包達到一定量的條件時才會進行Tcp重組,并交由應用層解析,重組的數(shù)據(jù)包括了整個連接過程中的全部數(shù)據(jù),會影響應用層的分析;而Libnids方法則是每接收一個Tcp數(shù)據(jù)就會進行一次重組,并交由應用層解析,而這時應用層的實際數(shù)據(jù)可能并未傳送到,所以會導致解析失敗。
總之,Snort或Libnids的重組方法,重組的粒度不是太大就是太小,而導致重組后的數(shù)據(jù)不適用于應用層解析。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種Tcp重組方法,目的在于解決現(xiàn)有的Tcp重組方法重組后的數(shù)據(jù)不適用于應用層解析的問題。
一種Tcp重組方法,包括:
在第一鏈表的存儲所述Tcp包的第一節(jié)點中,設置上邊界標志和下邊界標志,并初始化為0;
在與所述第一鏈表對應方向的第二鏈表中,查找確認號等于所述第一節(jié)點的流水號的第二節(jié)點,如果找到,則設置所述第一節(jié)點的上邊界標志為1;
在與所述第一鏈表對應方向的第二鏈表中,查找確認號等于所述第一節(jié)點的流水號與數(shù)據(jù)包長度的和的第三節(jié)點,如果找到,則設置所述第一節(jié)點的下邊界標志為1;
如果所述第一節(jié)點的上邊界標志和下邊界標志都為1,則完成所述Tcp的重組。
優(yōu)選地,在設置第一鏈表中存儲所述Tcp包的第一節(jié)點的上邊界標志和下邊界標志為0之前,還包括:
將接收到的Tcp包存儲到第一鏈表中對應的第一節(jié)點中。
優(yōu)選地,所述將接收到的Tcp包存儲到第一鏈表中對應的第一節(jié)點中,包括:
依據(jù)所述接收到的Tcp包的流水號,將所述Tcp包存儲到第一節(jié)點,使得所述第一節(jié)點與其它節(jié)點按照流水號由大到小或者由小到大的順序排列。
優(yōu)選地,在設置第一鏈表中存儲所述Tcp包的第一節(jié)點的上邊界標志和下邊界標志為0之后,在與所述第一鏈表對應方向的第二鏈表中,查找確認號等于所述第一節(jié)點的流水號的第二節(jié)點之前,還包括:
查找所述第一鏈表中確認號與所述第一節(jié)點的確認號相同的節(jié)點;
如果所述節(jié)點的流水號與數(shù)據(jù)包長度的和等于所述第一節(jié)點的流水號的節(jié)點,則將所述節(jié)點中的數(shù)據(jù)合并到所述第一節(jié)點中對應的數(shù)據(jù)中,并刪除所述節(jié)點;
如果所述節(jié)點的流水號等于所述第一節(jié)點的流水號與數(shù)據(jù)包長度的和,則將所述第一節(jié)點中的數(shù)據(jù)合并到所述節(jié)點中對應的數(shù)據(jù)中,并刪除所述第一節(jié)點,將合并后的節(jié)點作為第一節(jié)點。
優(yōu)選地,在所述完成所述Tcp的重組之后,還包括:
將所述第一節(jié)點的負載信息交由應用層處理,并在所述第一鏈表中刪除所述第一節(jié)點。
一種Tcp重組裝置,包括:
邊界設置單元,用于在第一鏈表存儲所述Tcp包的第一節(jié)點中,設置上邊界標志和下邊界標志,并初始化為0;并在與所述第一鏈表對應方向的第二鏈表中,查找確認號等于所述第一節(jié)點的流水號的第二節(jié)點,如果找到,則設置所述第一節(jié)點的上邊界標志為1;在與所述第一鏈表對應方向的第二鏈表中,查找確認號等于所述第一節(jié)點的流水號與數(shù)據(jù)包長度的和的第三節(jié)點,如果找到,則設置所述第一節(jié)點的下邊界標志為1;
Tcp重組單元,用于判斷所述第一節(jié)點的上邊界標志和下邊界標志,如果都為1,則完成所述Tcp的重組。
優(yōu)選地,所述裝置還包括:
存儲單元,用于將接收到的Tcp包存儲到第一鏈表中對應的第一節(jié)點中。
優(yōu)選地,所述存儲單元包括:
排序存儲單元,用于依據(jù)所述接收到的Tcp包的流水號,將所述Tcp包存儲到第一節(jié)點,使得所述第一節(jié)點與其它節(jié)點按照所述流水號由大到小或者由小到大的順序排列。
優(yōu)選地,所述裝置還包括:
節(jié)點查詢單元,用于查找所述第一鏈表中確認號與所述第一節(jié)點的確認號相同的節(jié)點;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于山東中創(chuàng)軟件商用中間件股份有限公司,未經(jīng)山東中創(chuàng)軟件商用中間件股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110425695.4/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種多功能橡皮
- 下一篇:多功能圓規(guī)





