Tcp數據包處理方法及裝置的制造方法
【技術領域】
[0001]本申請涉及網絡安全技術領域,特別是涉及一種傳輸控制協議(Transmiss1nControl Protocol,簡稱TCP)數據包處理方法及裝置。
【背景技術】
[0002]隨著網絡技術的發展,針對互聯網的各種攻擊行為層出不窮,其中分布式拒絕服務(DDoS, Distributed Denial of Service)攻擊指借助于客戶/服務器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動拒絕服務(DoS, Denial of Service)攻擊,從而成倍地提高拒絕服務攻擊的威力。實踐中常見的DDoS攻擊包括:Rst Flood攻擊、HttpFlood攻擊、DNS Query Flood攻擊、ack flood攻擊、fin flood攻擊等等。上述的這些TCPFlood攻擊可以瞬間消耗服務器大量資源,造成大量的半連接被占用,使得正常的用戶無法訪問服務器。同時也存在一些發送大量數據包以堵塞帶寬為目的的行為,有些TCP數據包在沒有建立過正常的三次握手前,就被送到服務端,我們可以很明顯地認為這些數據包是非法的,并且是人為構造出來的。
【發明內容】
[0003]本申請實施例解決的問題是如何簡單有效地對不符合正常的TCP連接建立過程的異常TCP數據包進行地檢測和過濾。
[0004]為解決上述問題,本申請實施例提供了一種TCP數據包處理方法,所述方法包括:
[0005]提取待處理的TCP數據包的會話特征;
[0006]根據所提取的待處理的TCP數據包的會話特征查找會話列表中所述待處理的TCP數據包所屬TCP會話的狀態,所述會話列表中包括TCP數據包的會話特征和TCP數據包所屬TCP會話狀態的信息;
[0007]根據所述待處理的TCP數據包所屬TCP會話的狀態,對所述待處理的TCP數據包進行相應處理。
[0008]可選地,所述會話特征包括源端口和源IP地址。
[0009]可選地,所述TCP會話的狀態包括第一狀態、第二狀態和第三狀態,所述第一狀態包括TCP會話的初始狀態,所述第二狀態包括正在進行數據傳輸的TCP會話的狀態,所述第三狀態包括處于所述第二狀態的TCP會話在預設時間內未接收到新的待處理的TCP數據包而轉換得到的TCP會話的狀態。
[0010]可選地,所述根據所述待處理的TCP數據包所屬TCP會話的狀態,對所述待處理的TCP數據包進行相應處理,包括以下至少任一項:
[0011]當所述待處理的TCP數據包所屬TCP會話的狀態為所述第一狀態,且所述待處理的TCP數據包是SYN數據包和SYN_ACK數據包時,透傳所述待處理的TCP數據包,并將所述待處理的TCP數據包所屬TCP會話的狀態轉換為所述第二狀態;
[0012]當所述待處理的TCP數據包所屬TCP會話的狀態為所述第二狀態時,透傳所述待處理的TCP數據包;
[0013]當所述待處理的TCP數據包所屬TCP會話的狀態為所述第三狀態時,透傳所述待處理的TCP數據包,并將所述待處理的TCP數據包所屬TCP會話的狀態由所述第三狀態轉換為第二狀態。
[0014]可選地,所述方法還包括:當所述待處理的TCP數據包所屬TCP會話的狀態為所述第一狀態,且所述待處理的TCP數據包不是SYN數據包和SYN_ACK數據包時,丟棄所述待處理的TCP數據包。
[0015]可選地,所述方法還包括:在預設時間對所述會話列表中存儲的TCP會話進行處理。
[0016]可選地,在預設時間對所述會話列表中存儲的TCP會話進行處理,包括:
[0017]在預設時間獲取所述會話列表中TCP會話的狀態;
[0018]當所述TCP會話的狀態為所述第二狀態時,將所述TCP會話的狀態轉換成為所述第二狀態;
[0019]當TCP會話的狀態為所述第三狀態時,將所述TCP會話的狀態轉換成為所述第一狀態。
[0020]本申請實施例還提供了一種TCP數據包處理裝置,包括:
[0021]提取單元,提取待處理的TCP數據包的會話特征;
[0022]獲取單元,適于根據所述提取單元所提取的所述待處理的TCP數據包的會話特征查找會話列表,獲取所述待處理的TCP數據包所屬TCP會話的狀態,所述會話列表中包括TCP數據包的會話特征和TCP數據包所屬TCP會話的狀態;
[0023]第一處理單元,適于根據所述獲取單元所獲取的所述待處理的TCP數據包所屬TCP會話的狀態,對所述待處理的TCP數據包進行相應處理。
[0024]可選地,所述會話特征包括源端口和源IP地址。
[0025]可選地,所述TCP會話的狀態包括第一狀態、第二狀態和第三狀態,所述第一狀態包括TCP會話的初始狀態,所述第二狀態包括正在進行數據傳輸的TCP會話的狀態,所述第三狀態包括處于所述第二狀態的TCP會話在預設時間內未接收到新的待處理的TCP數據包而轉換得到的TCP會話的狀態。
[0026]可選地,所述第一處理單元包括:
[0027]第一判斷子單元,適于當所述獲取單元獲取的所述待處理的TCP數據包所屬TCP會話的狀態為所述第一狀態時,判斷所述待處理的TCP數據包是否為SYN數據包和SYN_ACK數據包;
[0028]第一透傳子單元,適于當所述第一判斷子單元判斷所述待處理的TCP數據包是SYN數據包和SYN_ACK數據包時,透傳所述待處理的TCP數據包;
[0029]第一轉換子單元,適于所述第一判斷子單元判斷所述待處理的TCP數據包是SYN數據包和SYN_ACK數據包時,將所述待處理的TCP數據包所屬TCP會話的狀態轉換為所述第二狀態;
[0030]第二透傳子單元,適于當所述獲取單元所獲取的所述待處理的TCP數據包所屬TCP會話的狀態為所述第二狀態時,透傳所述待處理的TCP數據包;
[0031]第三透傳子單元,適于當所述獲取單元所獲取的所述待處理的TCP數據包所屬TCP會話的狀態為所述第三狀態時,透傳所述待處理的TCP數據包;
[0032]第三轉換子單元,適于當所述獲取單元所獲取的所述待處理的TCP數據包所屬TCP會話的狀態為所述第三狀態時,將所述待處理的TCP數據包所屬TCP會話的狀態轉換為第二狀態。
[0033]可選地,所述第一處理單元還包括:丟棄子單元,適于當所述第一判斷子單元判斷所述待處理的TCP數據包不是SYN數據包和SYN_ACK數據包時,丟棄所述待處理的TCP數據包。
[0034]可選地,所述裝置還包括:第二處理單元,適于在預設時間對所述會話列表中的TCP會話進行處理。
[0035]可選地,所述第二處理單元包括:
[0036]獲取子單元,適于在預設時間獲取所述會話列表中TCP會話的狀態;
[0037]第四轉換子單元,適于當所述獲取子單元所獲取的TCP會話的狀態為所述第二狀態時,將所述TCP會話的狀態轉換成為所述第三狀態;
[0038]第五轉換子單元,適于當所述獲取子單元所獲取的TCP會話的狀態為所述第三狀態時,將所述TCP會話的狀態轉換成為所述第一狀態。
[0039]與現有技術相比,本申請的技術方案具有以下的優點:
[0040]上述的技術方案,由于根據所接收的待處理的TCP數據包所屬TCP會話的狀態,對所接收的待處理的TCP數據包進行丟棄或者透傳操作,因此,可以對不符合正常的TCP連接建立過程的異常TCP數據包進行有效地檢測和過濾,使得數據的傳輸更加安全、可靠。
[0041]進一步地,由于通過源端口和源IP地址的二元組信息來查找待處理的TCP數據包所屬TCP會話的狀態,可以有效提高查詢的效率,從而可以提高待處理的TCP數據包處理的效率,且占用資源較少。
[0042]進一步地,由于當待處理的TCP數據包所在TCP會話的會話為第一狀態時,對于所接收的SYN數據包和SYN_ACK數據包進行透傳,不僅可以對自客戶端的未建立三次握手的大部分TCP數據包進行有效地檢測和過濾同時,對服務器發起的TCP會話的三次握手過程不造成干擾),適用范圍廣泛。
[0043]進一步地,由于在預設時間內對于會話列表中所記錄的TCP會話的狀態進行轉換,將長時間不更新的TCP會