專利名稱::一種tcp連接的處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種TCP(TransmissionControlProtocol,傳輸控制協(xié)議)連接的處理方法和裝置。
背景技術(shù):
:通信協(xié)議要么是面向連接(Connection-Oriented)的,要么是無(wú)連接(ConnectionlessProtocols)的。這依賴于信息發(fā)送方是否需要與接收方聯(lián)系并通過聯(lián)系來(lái)維持一個(gè)對(duì)話(面向連接的),還是沒有任何預(yù)先聯(lián)系就發(fā)送消息(無(wú)連接的),并希望接收方能順序接收所有內(nèi)容。這兩種方法對(duì)應(yīng)著網(wǎng)絡(luò)上實(shí)現(xiàn)通信的兩種途徑。在面向連接的方法中,網(wǎng)絡(luò)負(fù)責(zé)順序發(fā)送報(bào)文并且以一種可靠的方法檢測(cè)丟失和沖突。這種方法被"可靠的"傳輸協(xié)議使用。在無(wú)連接的方法中,網(wǎng)絡(luò)只需要將報(bào)文分組發(fā)送到接收點(diǎn),檢錯(cuò)與流控由發(fā)送方和接收方處理。這種方法被稱作"最佳工作(best-effort)"或"無(wú)應(yīng)答(unacknowledged)"的傳輸協(xié)議使用。狀態(tài)檢測(cè)(statefolinspection)的思想基于"連接"的概念。連接必然是有序的,通信雙方的連接狀態(tài)也是有一定順序進(jìn)行變化的,就象打電話,一定要先撥號(hào)對(duì)方電話才能振鈴,不可能沒人撥鈴就響了,那樣的話一定是哪出了故障。狀態(tài)檢測(cè)就是事先確定好連接的合法過程模式,如果數(shù)據(jù)交互過程符合這個(gè)模式,則說明數(shù)據(jù)是合法正確的,否則就是非法數(shù)據(jù),應(yīng)該被丟棄。TCP協(xié)議是一個(gè)面向連接協(xié)議,在真正的通信前,必須按一定協(xié)議先建立連接,連接建立好后才能通信,通信結(jié)束后釋放連接。TCP連接建立過程稱為三次握手(Three-wayHandshake),包括以下步驟步驟一,客戶端發(fā)送一個(gè)包含SYN(Synchronize,同步)標(biāo)志的TCP報(bào)文(被稱為SYN報(bào)文),SYN報(bào)文會(huì)指明客戶端使用的端口以及TCP連接的初始序號(hào);步驟二,服務(wù)器在收到客戶端的SYN報(bào)文后,將返回一個(gè)帶SYN和ACK(Acknowledgement,確認(rèn))標(biāo)志的報(bào)文(被稱為SYNACK報(bào)文)給客戶端,表示客戶端的請(qǐng)求被接受,同時(shí)TCP序號(hào)被加一;步驟三,客戶端在接收到SYNACK報(bào)文后再發(fā)送一個(gè)帶ACK標(biāo)志的報(bào)文(被稱為ACK報(bào)文)給服務(wù)器,同樣TCP序列號(hào)被加一。服務(wù)器收到該ACK報(bào)文后就可認(rèn)為連接己經(jīng)成功建立;在正常斷開時(shí),一方會(huì)發(fā)送帶FIN(請(qǐng)求關(guān)閉TCP連接)標(biāo)志的報(bào)文(被稱為FIN報(bào)文)到對(duì)方,表示本方已經(jīng)不會(huì)再發(fā)送數(shù)據(jù)了,但還可以接收數(shù)據(jù),對(duì)方接收后還可以發(fā)數(shù)據(jù),發(fā)完后也會(huì)發(fā)送帶FIN標(biāo)志的報(bào)文,雙方進(jìn)入斷開狀態(tài),經(jīng)過一段時(shí)間后連接徹底刪除。在異常情況會(huì)發(fā)送RST(請(qǐng)求重置TCP連接)標(biāo)志的包來(lái)執(zhí)行異常斷開,不論是在連接開始還是通信和斷開過程。由此可見,第一,TCP的連接過程是一個(gè)有序過程,新連接一定是通過SYN包來(lái)開始的,防火墻只有收到了SYN報(bào)文才會(huì)建立一個(gè)TCP連接記錄;如果防火墻收到一個(gè)不是SYN的TCP報(bào)文,但找不到該TCP報(bào)文對(duì)應(yīng)的連接記錄,那么就可以斷定該報(bào)文一定是非法的,可以將其扔掉;其二,數(shù)據(jù)通信過程是有方向性的,一定是客戶端發(fā)送SYN報(bào)文,服務(wù)器發(fā)SYNACK報(bào)文,反之則為非法。所以,TCP狀態(tài)檢測(cè)就是當(dāng)TCP連接處于某種特定狀態(tài)時(shí),只允許來(lái)自特定方向的特定類型的報(bào)文。SYNFlood(洪水)是當(dāng)前最流行的DoS(DenialofService,拒絕服務(wù)攻擊)與DDoS(DistributedDenialofService,分布式拒絕服務(wù)攻擊)的方式之一,這是一種利用TCP協(xié)議缺陷,發(fā)送大量偽造的TCP連接請(qǐng)求,從而使得被攻擊方資源耗盡(CPU(CentralProcessingUnit,中央處理器)滿負(fù)荷或內(nèi)存不足)的攻擊方式。問題就出在TCP連接的三次握手中,假設(shè)一個(gè)用戶向服務(wù)器發(fā)送了SYN報(bào)文后突然死機(jī)或掉線,那么服務(wù)器在發(fā)出SYNACK應(yīng)答報(bào)文后是無(wú)法收到客戶端的ACK報(bào)文的,則第三次握手無(wú)法完成,這種情況下服務(wù)器端一般會(huì)重試(即再次發(fā)送SYNACK給客戶端)并等待一段時(shí)間后丟棄這個(gè)未完成的連接,這段時(shí)間的長(zhǎng)度我們稱為SYNTimeout,一般來(lái)說這個(gè)時(shí)間是分鐘的數(shù)量級(jí)(大約為30秒-2分鐘)。由于每個(gè)TCP連接都要占用服務(wù)器一定的存儲(chǔ)資源和計(jì)算資源,一個(gè)用戶出現(xiàn)異常導(dǎo)致服務(wù)器的一個(gè)線程等待1分鐘并不是什么很大的問題,但如果有一個(gè)惡意的攻擊者大量模擬這種情況,服務(wù)器端將為了維護(hù)一個(gè)非常大的未完成三次握手(也稱"半連接")的TCP連接列表而消耗非常多的資源,數(shù)以萬(wàn)計(jì)的半連接,即使是簡(jiǎn)單的保存并遍歷也會(huì)消耗非常多的CPU時(shí)間和內(nèi)存,何況還要不斷對(duì)這個(gè)列表中的IP進(jìn)行SYNACK的重試。實(shí)際上如果服務(wù)器的TCP/IP(InternetProtocol,因特網(wǎng)協(xié)議)棧不夠強(qiáng)大,最后的結(jié)果往往是堆棧溢出崩潰。即使服務(wù)器端的系統(tǒng)足夠強(qiáng)大,服務(wù)器端也將忙于處理攻擊者偽造的TCP連接請(qǐng)求而無(wú)暇理睬客戶的正常請(qǐng)求(畢竟客戶端的正常請(qǐng)求比率非常之小),此時(shí)從正常客戶的角度看來(lái),服務(wù)器失去響應(yīng),這種情況我們稱作服務(wù)器端受到了SYNFlood攻擊。SYN代理安裝在保護(hù)服務(wù)器的防火墻上。SYN代理收到客戶端的SYN報(bào)文后,自己構(gòu)造一個(gè)SYNACK報(bào)文回復(fù)給客戶端,同時(shí)緩存客戶端的SYN報(bào)文,建立并維護(hù)TCP連接記錄,當(dāng)客戶端返回ACK報(bào)文,也就意味著客戶端的連接請(qǐng)求不是SYN-FLOOD攻擊,SYN代理于是把之前緩存的客戶端SYN報(bào)文發(fā)給服務(wù)器,代替客戶端和服務(wù)器建立TCP連接,這個(gè)過程中SYN代理要給客戶端發(fā)送SYNACK報(bào)文一個(gè),給服務(wù)器發(fā)送SYN和ACK報(bào)文各一個(gè),SYN代理和服務(wù)器連接建立后,客戶端與服務(wù)器通信的后續(xù)報(bào)文,SYN代理都要修改序列號(hào)或確認(rèn)號(hào),因?yàn)镾YN代理回復(fù)客戶端的SYNACK報(bào)文的序列號(hào)基本不可能等于服務(wù)器發(fā)送的SYNACK包的序列號(hào),所以需要調(diào)整。SYN代理可以保證到達(dá)服務(wù)器的連接都是合法的連接,當(dāng)SYN-FLOOD發(fā)生時(shí),服務(wù)器并不會(huì)受到?jīng)_擊,而是由SYN代理承受。但是,SYN代理在橋接起客戶端和服務(wù)器的連接后,不具備后續(xù)階段的TCP狀態(tài)檢測(cè)能力,給其他類型的入侵行為留下可利用的機(jī)會(huì)。
發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種TCP連接的處理方法和裝置,用以保證到達(dá)服務(wù)器的連接都是合法的連接,并能夠進(jìn)行TCP狀態(tài)檢測(cè),防止入侵行為。為了解決上述問題,本發(fā)明實(shí)施例提供了一種TCP連接的處理方法,包括在傳輸控制協(xié)議TCP連接的當(dāng)前狀態(tài)為NONE狀態(tài)或CLOSE狀態(tài)時(shí),若接收到客戶端發(fā)送的第一同步SYN報(bào)文,則以服務(wù)器的名義回復(fù)第一同步確認(rèn)SYNACK報(bào)文給所述客戶端,并令TCP連接進(jìn)入SYN—ACKED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN—ACKED狀態(tài)時(shí),若接收到所述客戶端發(fā)送的用以確認(rèn)所述第一SYNACK報(bào)文的第一確認(rèn)ACK報(bào)文,則以所述客戶端的名義向所述服務(wù)器發(fā)送第二SYN報(bào)文,并令所述TCP連接進(jìn)入SYN—FWED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN—FWED狀態(tài)時(shí),若接收到所述服務(wù)器發(fā)送的第二SYNACK報(bào)文,則向所述服務(wù)器發(fā)送確認(rèn)所述第二SYNACK報(bào)文的第二ACK報(bào)文,并令所述TCP連接進(jìn)入已連接狀態(tài);在接收到報(bào)文時(shí),根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法。本發(fā)明實(shí)施例還提供了一種TCP連接的處理裝置,包括接收模塊,用于接收客戶端或服務(wù)器發(fā)送的報(bào)文;同步SYN代理模塊,用于在傳輸控制協(xié)議TCP連接的當(dāng)前狀態(tài)為NONE狀態(tài)或CLOSE狀態(tài)時(shí),若所述接收模塊接收到客戶端發(fā)送的第一同步SYN報(bào)文,則以服務(wù)器的名義回復(fù)第一同步確認(rèn)SYNACK報(bào)文給所述客戶端,并令TCP連接進(jìn)入SYN—ACKED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN一ACKED狀態(tài)時(shí),若所述接收模塊接收到所述客戶端發(fā)送的用以確認(rèn)所述第一SYNACK報(bào)文的第一確認(rèn)ACK報(bào)文,則以所述客戶端的名義向所述服務(wù)器發(fā)送第二SYN報(bào)文,并令所述TCP連接進(jìn)入SYN一FWED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN—FWED狀態(tài)時(shí),若所述接收模塊接收到所述服務(wù)器發(fā)送的第二SYNACK報(bào)文,則向所述服務(wù)器發(fā)送確認(rèn)所述第二SYNACK報(bào)文的第二ACK報(bào)文,并令所述TCP連接進(jìn)入已連接狀態(tài);狀態(tài)檢測(cè)模塊,用于在所述接收模塊接收到報(bào)文時(shí),根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法。本發(fā)明實(shí)施例的有益效果在于本發(fā)明實(shí)施例提供的技術(shù)方案采用SYN代理來(lái)建立TCP連接,從而保證到達(dá)服務(wù)器的連接都是合法的連接,能夠有效防御SYN-FLOOD攻擊,并且在TCP連接處于各狀態(tài)時(shí),根據(jù)預(yù)設(shè)的各狀態(tài)下能夠接收的合法報(bào)文確定接收到的報(bào)文是否合法,從而防止其他可能存在的入侵行為。為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例中的SYN代理方案在TCP建立階段的處理流程圖2為實(shí)施例一中的TCP狀態(tài)檢測(cè)方法的流程圖3為圖2中的sFW流程的流程圖4為圖2中的sCL流程的流程圖;圖5為圖2中的SES流程的流程圖;圖6為圖2中的默認(rèn)流程的流程圖;圖7為實(shí)施例二中的TCP連接的處理裝置的框圖。具體實(shí)施例方式本發(fā)明實(shí)施例中,由位于客戶端和服務(wù)器之間的防火墻來(lái)實(shí)現(xiàn)SYN代理,該SYN代理方案在TCP建立階段的處理流程如圖1所示,包括以下步驟步驟SIOI,接收客戶端發(fā)送的第一SYN報(bào)文,以服務(wù)器的名義回復(fù)第一SYNACK報(bào)文給客戶端,令TCP連接進(jìn)入SYN—ACKED狀態(tài);該SYN—ACKED狀態(tài)即防火墻已響應(yīng)客戶端的TCP連接建立請(qǐng)求的狀態(tài)。步驟S102,接收客戶端發(fā)送的用以確認(rèn)第一SYNACK報(bào)文的第一ACK報(bào)文,并以客戶端的名義向服務(wù)器發(fā)送第二SYN報(bào)文,令TCP連接進(jìn)入SYN一FWED狀態(tài);該SYN—FWED狀態(tài)即防火墻已向服務(wù)器發(fā)出TCP連接建立請(qǐng)求的狀態(tài)。在SYN—FWED狀態(tài)下,防火墻可以緩存客戶端所發(fā)送的報(bào)文中的用戶數(shù)據(jù)??梢钥闯?,防火墻并未在接收到第一SYN報(bào)文后就立刻轉(zhuǎn)發(fā),而是在接收客戶端發(fā)送的用以確認(rèn)第一SYNACK報(bào)文的第一ACK報(bào)文后,才以客戶端的名義向服務(wù)器發(fā)送第二SYN報(bào)文,這是由于如果客戶端回復(fù)了第一ACK報(bào)文,防火墻和客戶端之間的三次握手完成,成功建立連接,這就可以確定該次連接不是SYN-FLOOD攻擊,可以向服務(wù)器發(fā)起TCP連接了。步驟S103,接收服務(wù)器發(fā)送的第二SYNACK報(bào)文,并向服務(wù)器發(fā)送確認(rèn)第二SYNACK報(bào)文的第二ACK報(bào)文,令TCP連接進(jìn)入己連接(ESTABLISHED)狀態(tài)。該ESTABLISHED狀態(tài)表示客戶端和服務(wù)器之間的TCP連接已建立。在步驟S103結(jié)束后,則客戶端與服務(wù)器之間的TCP連接建立完成,客戶端與服務(wù)器之間可以進(jìn)行通信。為了防止可能存在的入侵行為,本發(fā)明實(shí)施例對(duì)TCP連接的各個(gè)狀態(tài)下接收到的報(bào)文進(jìn)行監(jiān)控,根據(jù)接收到的報(bào)文以及TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法,以確保接收到的報(bào)文是合法的。在本發(fā)明實(shí)施例的具體實(shí)現(xiàn)中,可以根據(jù)接收到的報(bào)文以及TCP連接的當(dāng)前狀態(tài)確定TCP連接的新狀態(tài),并根據(jù)該新狀態(tài)確定接收到的報(bào)文是否合法。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行詳細(xì)描述。實(shí)施例一在本實(shí)施例中,采用TCP狀態(tài)轉(zhuǎn)換表來(lái)實(shí)現(xiàn)狀態(tài)的監(jiān)控,預(yù)設(shè)TCP狀態(tài)轉(zhuǎn)換表,TCP狀態(tài)轉(zhuǎn)換表用于標(biāo)識(shí)在TCP連接的當(dāng)前狀態(tài)下,接收到來(lái)自各種來(lái)源的各種類型的報(bào)文時(shí)轉(zhuǎn)換得到的TCP連接的新狀態(tài),該來(lái)源可以為客戶端或服務(wù)器;在接收到報(bào)文時(shí),根據(jù)TCP連接的當(dāng)前狀態(tài)和接收到的報(bào)文的來(lái)源以及類型查詢TCP狀態(tài)轉(zhuǎn)換表,確定TCP連接的新狀態(tài),并根據(jù)該新狀態(tài)確定接收到的報(bào)文是否合法。該TCP狀態(tài)轉(zhuǎn)換表中的各TCP狀態(tài)定義如下<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>具體的TCP狀態(tài)轉(zhuǎn)換表如表2、表3所示,其中:輸入①TCP連接當(dāng)前狀態(tài),⑦報(bào)文的類型輸出TCP連接新狀態(tài)表2示出了來(lái)源為客戶端時(shí)的狀態(tài)裝換表表2<table>tableseeoriginaldocumentpage12</column></row><table>表3示出了來(lái)源為服務(wù)器時(shí)的狀態(tài)裝換表:表3<table>tableseeoriginaldocumentpage12</column></row><table>TCP狀態(tài)轉(zhuǎn)換表的詳細(xì)解說如下A、防火墻接收到來(lái)自客戶端的第一SYN報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表4所示表4TCP狀態(tài)轉(zhuǎn)換情況防火墻的相應(yīng)操作或狀態(tài)說明sNO->sSA:初始化一個(gè)新連接,防火墻以服務(wù)器名義響應(yīng)第一SYNACK給客戶端sSA->sSA:防火墻認(rèn)為接收到客戶端重發(fā)的第一SYN,再次響應(yīng)第一SYNACKsSF->sIV:防火墻認(rèn)為可能是重發(fā)的SYN遲到,丟棄sES->sIV:防火墻認(rèn)為該第一SYN為非法報(bào)文。sFW->sIV:同上SCW->SIV:同上sLA->sIV:同上sTW-〉sSATCP連接重打開sCL->sSA同上B、防火墻接收到來(lái)自客戶端的第一SYNACK報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表5所示表5TCP狀態(tài)轉(zhuǎn)換情況防火墻的相應(yīng)操作或狀態(tài)說明sNO->sIV:來(lái)自連接發(fā)起方的SYNACK總視為非法,不允許TCP通訊雙方都發(fā)出連接請(qǐng)求sSA->sIV同上sSF->sIV同上sES->sIV同上sFW->sIV同上sCW->sIV同上sLA->sIV同上sTW->sIV同上sCL->sIV同上C、防火墻接收到來(lái)自客戶端的第一FIN報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表6所示表6TCP狀態(tài)轉(zhuǎn)換情況防火墻的相應(yīng)操作或狀態(tài)說明sNO->SIV:延遲太久,防火墻已刪除連接記錄,視為非法sSA->SCL:客戶端在與防火墻三次握手完成之前提出連接關(guān)閉請(qǐng)求,防火墻響應(yīng)RSTsSF->SCL:同上sES->SFW:客戶端發(fā)起關(guān)閉連接請(qǐng)求sFW->sLA:通訊雙方都發(fā)過FIN,尚欠最后一個(gè)ACK完成連接關(guān)閉,也可能是重傳的FINsCW->sLA:同上sLA->sLA:重傳的FIN,TCP連接狀態(tài)保持不變sTW->STW:同上sCL->SCL:同上D、防火墻接收到來(lái)自客戶端的第一ACK報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表7所示:表7<table>tableseeoriginaldocumentpage14</column></row><table>E、防火墻接收到來(lái)自客戶端的第一RST報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表8所示-表8<table>tableseeoriginaldocumentpage14</column></row><table>F、防火墻接收到來(lái)自服務(wù)器的第二SYN報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表9所示表9<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>G、防火墻接收到來(lái)自服務(wù)器的第二SYNACK報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表10所示<table>tableseeoriginaldocumentpage15</column></row><table>H、防火墻接收到來(lái)自服務(wù)器的第二FIN報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表11所示<table>tableseeoriginaldocumentpage15</column></row><table>I、防火墻接收到來(lái)自服務(wù)器的第二ACK報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表12所示表12TCP狀態(tài)轉(zhuǎn)換情況防火墻的相應(yīng)操作或狀態(tài)說明sNO->sIV:不可能發(fā)生的情況sSA->sIV:同上sSF->sCL:防火墻響應(yīng)RST給服務(wù)器。對(duì)客戶端等待超時(shí)后重發(fā)的報(bào)文響應(yīng)RSTsES->sES:三次握手完成后雙方的數(shù)據(jù)交互sFW->sCW:響應(yīng)關(guān)閉連接請(qǐng)求的ACK.sCW->sCW:連接一端尚未完成數(shù)據(jù)傳輸sLA->sTW:收到完成關(guān)閉連接的最后一個(gè)ACKsTW->sTW:重傳的最后一個(gè)ACKsCL->sCL同上J、防火墻接收到來(lái)自服務(wù)器的第二RST報(bào)文時(shí)的TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明如表13所示表13TCP狀態(tài)轉(zhuǎn)換情況防火墻的相應(yīng)操作或狀態(tài)說明sNO-〉SIV:不可能發(fā)生的情況sSA->SIV:同上sSF->SCL:服務(wù)器拒絕連接請(qǐng)求sES->SCL:連接重置sFW->SCL:同上sCW->SCL:同上sLA->SCL:同上sTW->STW:RST重傳,TCP連接狀態(tài)維持不變sCL->SCL:同上由于在本實(shí)施例中,在TCP建立過程中采用了SYN代理,因此與現(xiàn)有的TCP通信過程相比,增加了SYN_ACKED狀態(tài)、SYN—FWED狀態(tài)這兩個(gè)狀態(tài),下面將上述TCP狀態(tài)轉(zhuǎn)換表以及TCP狀態(tài)轉(zhuǎn)換情況以及防火墻的相應(yīng)操作或狀態(tài)說明的對(duì)應(yīng)表中與SYN一ACKED狀態(tài)、SYN—FWED狀態(tài)相關(guān)的狀態(tài)轉(zhuǎn)換以及操作進(jìn)行詳細(xì)說明。由TCP狀態(tài)轉(zhuǎn)換表可知,SYN_ACKED狀態(tài)下能夠接收的合法報(bào)文包括第一SYN報(bào)文、第一ACK報(bào)文;以及客戶端發(fā)送的第一FIN報(bào)文、客戶端發(fā)送的第一RST報(bào)文。在TCP連接的當(dāng)前狀態(tài)為SYN_ACKED狀態(tài)時(shí),若接收到上述16SYN—ACKED狀態(tài)下能夠接收的合法報(bào)文之外的報(bào)文,則認(rèn)為是非法報(bào)文并丟棄。若接收到合法報(bào)文,則對(duì)應(yīng)如下處理1、若接收到所述第一SYN報(bào)文,則令所述TCP連接保持所述SYN—ACKED狀態(tài),并以服務(wù)器的名義重發(fā)第一SYNACK報(bào)文給所述客戶i山順。2、若接收到所述第一FIN報(bào)文,則令所述TCP連接進(jìn)入CLOSE狀態(tài),并響應(yīng)RST報(bào)文給所述客戶端。3、若接收到所述第一RST報(bào)文,則令所述TCP連接進(jìn)入CLOSE狀態(tài),并刪除TCP連接記錄。4、若接收到所述第一SYNACK報(bào)文的第一確認(rèn)ACK報(bào)文,則以所述客戶端的名義向所述服務(wù)器發(fā)送第二SYN報(bào)文,并令所述TCP連接進(jìn)入SYN一FWED狀態(tài)。由TCP狀態(tài)轉(zhuǎn)換表可知,SYN一FWED狀態(tài)下能夠接收的合法報(bào)文包括第一ACK報(bào)文、第二SYNACK報(bào)文、第一FIN報(bào)文、第一RST報(bào)文、第二ACK報(bào)文、第二RST報(bào)文。在TCP連接的當(dāng)前狀態(tài)為SYN_FWED狀態(tài)時(shí),若接收到上述SYN—FWED狀態(tài)下能夠接收的合法報(bào)文之外的報(bào)文,則認(rèn)為是非法報(bào)文并丟棄。若接收到合法報(bào)文,則對(duì)應(yīng)如下處理1、若接收到所述第一ACK報(bào)文,則令所述TCP連接保持所述SYN—FWED狀態(tài),當(dāng)所述第一ACK報(bào)文攜帶用戶數(shù)據(jù)時(shí),緩存所述用戶數(shù)據(jù);當(dāng)所述第一ACK報(bào)文未攜帶用戶數(shù)據(jù)時(shí),則向所述服務(wù)器重發(fā)所述二SYN報(bào)文。2、若接收到所述第一FIN報(bào)文,則令所述TCP連接進(jìn)入CLOSE狀態(tài),并響應(yīng)RST報(bào)文給所述客戶端。3、若接收到所述第二ACK報(bào)文,則令所述TCP連接進(jìn)入CLOSE狀態(tài),并響應(yīng)RST報(bào)文給所述服務(wù)器,對(duì)客戶端等待超對(duì)后重發(fā)的報(bào)文響應(yīng)RST報(bào)17文。4、若接收到所述第二RST報(bào)文,則令所述TCP連接進(jìn)入CLOSE狀態(tài),并丟棄所述第二RST報(bào)文。5、若接收到所述第一RST報(bào)文,則令所述TCP連接進(jìn)入CLOSE狀態(tài),并修改第一RST報(bào)文的acknum為0,發(fā)給服務(wù)器。6、若接收到第二SYNACK報(bào)文,則向所述服務(wù)器發(fā)送確認(rèn)所述第二SYNACK報(bào)文的第二ACK報(bào)文,并令所述TCP連接進(jìn)入ESTABLISHED狀態(tài)。在具體實(shí)現(xiàn)時(shí),只要預(yù)設(shè)了某個(gè)TCP狀態(tài)下能夠接收的合法報(bào)文,則在接收到報(bào)文時(shí),就可以獲知該報(bào)文是否合法了。本實(shí)施例中的TCP狀態(tài)檢測(cè)方法可以如圖2所示,包括以下步驟步驟S201,接收網(wǎng)絡(luò)報(bào)文;該網(wǎng)絡(luò)報(bào)文可能來(lái)自客戶端或者服務(wù)器。步驟S202,判斷TCP連接記錄是否存在,若是,進(jìn)行步驟S203,否則進(jìn)行步驟S207;步驟S203,將TCP連接當(dāng)前的狀態(tài)、報(bào)文的來(lái)源、報(bào)文的類型輸入TCP狀態(tài)轉(zhuǎn)換表,確定TCP連接的新狀態(tài);步驟S204,判斷該確定出的新狀態(tài)是否sSA,若是,則進(jìn)行步驟S205,否則,進(jìn)行步驟S206;步驟S205,構(gòu)造第一SYNACK報(bào)文,發(fā)送給客戶端,建立連接記錄,令TCP連接的新狀態(tài)為sSA,返回步驟S201;步驟S206,丟棄接收到的報(bào)文,返回步驟S201;步驟S207,將TCP連接當(dāng)前的狀態(tài)、報(bào)文的來(lái)源、報(bào)文的類型輸入TCP狀態(tài)轉(zhuǎn)換表,獲得TCP連接的新狀態(tài);步驟S208,判斷該確定出的新狀態(tài)是否sFW,若是,進(jìn)行sFW流程,否則進(jìn)行步驟S209;18步驟S209,判斷該確定出的新狀態(tài)是否sCL,若是,進(jìn)行sCL流程,否則進(jìn)行步驟S210;步驟S210,判斷該確定出的新狀態(tài)是否sSA,若是,重發(fā)第一SYNACK給客戶端,返回步驟S201,否則進(jìn)行步驟S211;步驟S211,判斷該確定出的新狀態(tài)是否sIV,若是,丟棄接收到的報(bào)文,返回步驟S201,否則進(jìn)行步驟S212;步驟S212,判斷該確定出的新狀態(tài)是否sES,若是,進(jìn)行sES流程,否則進(jìn)行默認(rèn)流程。在上述流程中,步驟S208至步驟S212沒有一定的先后順序。上述sFW流程如圖3所示,包括以下步驟步驟S301,判斷TCP連接的當(dāng)前狀態(tài)是否為sFW,若是,進(jìn)行步驟S302,否則進(jìn)行步驟S305;步驟S302,判斷接收到的報(bào)文是否攜帶用戶數(shù)據(jù),若是,進(jìn)行步驟S303,否則進(jìn)行步驟S304;步驟S303,緩存報(bào)文攜帶的用戶數(shù)據(jù),結(jié)束;步驟S304,向服務(wù)器重發(fā)第一SYN報(bào)文,結(jié)束;步驟S305,向服務(wù)器發(fā)送首個(gè)第一SYN報(bào)文。由狀態(tài)轉(zhuǎn)換表可知,若TCP連接的當(dāng)前狀態(tài)與確定出的新狀態(tài)都是sFW,則該接收到的報(bào)文為第一ACK報(bào)文,因此,也可以直接判斷該報(bào)文是否為第一ACK報(bào)文并根據(jù)判斷結(jié)果進(jìn)行后續(xù)步驟。上述sCL流程如圖4所示,包括以下步驟步驟S401,判斷TCP連接的當(dāng)前狀態(tài)是否為sSA,若是,進(jìn)行步驟S402,否則,進(jìn)行步驟S405;步驟S402,判斷接收到的報(bào)文是否為RST,若是,進(jìn)行步驟S403,否則,進(jìn)行步驟S404;步驟S403,丟棄接收到的報(bào)文,結(jié)束;步驟S404,反饋RST給該報(bào)文的發(fā)送方,結(jié)束;步驟S405,判斷TCP連接的當(dāng)前狀態(tài)是否為sFW,若是,進(jìn)行步驟S402,否則進(jìn)行步驟S406;步驟S406,進(jìn)行默認(rèn)流程。上述sES流程如圖5所示,包括以下步驟步驟S501,判斷TCP連接的當(dāng)前狀態(tài)是否為sFW,若是,進(jìn)行步驟S502,否則進(jìn)行默認(rèn)流程,結(jié)束;步驟S502,判斷是否存在被緩存的客戶端的用戶數(shù)據(jù),若是,進(jìn)行步驟S503,否則,進(jìn)行步驟S504;步驟S503,構(gòu)造響應(yīng)第二SYNACK的第二ACK報(bào)文,以緩存的客戶端的用戶數(shù)據(jù)作為報(bào)文的用戶數(shù)據(jù),進(jìn)行步驟S505;步驟S504,構(gòu)造響應(yīng)第二SYNACK的第二ACK報(bào)文,報(bào)文的用戶數(shù)據(jù)字節(jié)數(shù)為0;步驟S505,發(fā)送第二ACK給服務(wù)器,結(jié)束。上述默認(rèn)流程如圖6所示,包括以下步驟步驟S601,判斷接收到的報(bào)文是否來(lái)自服務(wù)器,若是,進(jìn)行步驟S602,否則,進(jìn)行步驟S603;步驟S602,調(diào)整報(bào)文的seqNum(SequenceNumber,序列編號(hào)),進(jìn)行步驟S604;步驟S603,調(diào)整報(bào)文的AckNum;步驟S604,發(fā)送調(diào)整后的報(bào)文給目的端。該目的端可能為客戶端或服務(wù)器,若接收到的報(bào)文為客戶端發(fā)送給服務(wù)器,則目的端為服務(wù)器;若接收到的報(bào)文為服務(wù)器發(fā)送給客戶端,則目的端為客戶端。進(jìn)行上述默認(rèn)流程的原因是防火墻構(gòu)造的發(fā)給客戶端的第一SYNACK報(bào)文的SeqNum(以下稱F_SEQ)與服務(wù)器響應(yīng)連接請(qǐng)求的第二SYNACK報(bào)20文的SeqNum(以下稱S—SEQ)存在值差;連接建立完成后,來(lái)自服務(wù)器的報(bào)文的SeqNum(以下稱SA—SEQ)要改成SA—SEQ+F—SEQ-S—SEQ,才會(huì)被客戶端接受;同理,來(lái)自客戶端報(bào)文的AckNum(以下成CA一ACK)要改成CA—ACK-(F一SEQ-S—SEQ),才會(huì)被服務(wù)器接受。本發(fā)明實(shí)施例將SYN代理與狀態(tài)檢測(cè)進(jìn)行結(jié)合,能夠檢測(cè)TCP連接建立完成以后報(bào)文交互所引起的連接狀態(tài)變換的合法性,進(jìn)一步消除被其他入侵攻擊利用的安全隱患。并且,相比于SYN代理和TCP狀態(tài)檢測(cè)獨(dú)立實(shí)現(xiàn)的方案,本發(fā)明實(shí)施例在實(shí)現(xiàn)時(shí)代碼量少,執(zhí)行效率高,可以在條件更苛刻(例如系統(tǒng)指令空間小,內(nèi)存小)的環(huán)境下實(shí)現(xiàn)。另外,由于SYN代理存在以下缺點(diǎn)1)SYN代理緩存客戶端的SYN報(bào)文,與客戶端三次握手完成連接建立后,SYN代理要代替客戶端與服務(wù)器建立連接,SYN代理發(fā)給服務(wù)器的SYN報(bào)文即之前緩存的來(lái)自客戶端的SYN報(bào)文。當(dāng)遭受SYN-FLOOD攻擊時(shí),運(yùn)行SYN代理的防火墻的有限系統(tǒng)內(nèi)存會(huì)因?yàn)樾枰彺娲罅康腟YN報(bào)文而被迅速耗盡。2)SYN代理與客戶端三次握手完成連接建立后,才開始與服務(wù)器建立連接。而在客戶端看來(lái),它與服務(wù)器的連接已經(jīng)建立了,于是客戶端開始發(fā)送數(shù)據(jù)給服務(wù)器。SYN代理與服務(wù)器連接建立完成之前,必須緩存客戶端發(fā)送來(lái)的所有報(bào)文,并在收到服務(wù)器的SYNACK報(bào)文后,把所緩存的全部客戶端ACK報(bào)文,逐條順序發(fā)送給服務(wù)器。因此SYN代理必須為每個(gè)TCP連接預(yù)留了足夠大的內(nèi)存空間,當(dāng)系統(tǒng)內(nèi)存資源有限時(shí),無(wú)法支持足夠多的TCP連接數(shù)。因此,本實(shí)施例還對(duì)SYN代理作了一些改進(jìn),本實(shí)施例中客戶端、服務(wù)器和防火墻三方參與的一次TCP連接建立,數(shù)據(jù)傳輸,及TCP連接關(guān)閉的過程與現(xiàn)有技術(shù)的區(qū)別點(diǎn)具體如下1、本發(fā)明不緩存客戶端的第一SYN報(bào)文,而僅緩存客戶端的第一SYN報(bào)文的TCP選項(xiàng),如window-scale,sack-permit,MSS等,與客戶端三次握手建立連接后,把客戶端完成三次握手的第一ACK報(bào)文添加上緩存的TCP選項(xiàng),改造成第二SYN報(bào)文,發(fā)給服務(wù)器。當(dāng)遭受SYN-FLOOD攻擊時(shí),本實(shí)施例中的防火墻的有限的系統(tǒng)內(nèi)存不至于因?yàn)樾枰彺娲罅康腟YN報(bào)文而被迅速耗盡。2、本實(shí)施例中將響應(yīng)給客戶端的第一SYNACK報(bào)文的WINDOW(TCP報(bào)文的WINDOW選項(xiàng)域表示該報(bào)文的發(fā)送方的接收緩存區(qū)的大小)域置為1(即通知對(duì)方,本方的接收緩沖區(qū)只能容納一個(gè)字節(jié)),這就保證了在防火墻與客戶端三次握手完成連接建立后,至與服務(wù)器建立連接之前的這段時(shí)間,客戶端最多只會(huì)發(fā)來(lái)數(shù)據(jù)總量只有一個(gè)字節(jié)的報(bào)文,客戶端和防火墻三次握手建立連接后,僅發(fā)來(lái)一條含有一個(gè)字節(jié)用戶數(shù)據(jù)的報(bào)文。本發(fā)明不緩存整條報(bào)文,而只緩存報(bào)文中的用戶數(shù)據(jù)。采用本實(shí)施例,在防火墻等待與和服務(wù)器建立連接的過程中,需要預(yù)留的緩存空間也僅為1字節(jié),進(jìn)一步節(jié)省了防火墻系統(tǒng)內(nèi)存。而服務(wù)器在接收到包含用戶數(shù)據(jù)的報(bào)文后,返回響應(yīng)報(bào)文,該響應(yīng)報(bào)文中攜帶服務(wù)器的窗口大小,防火墻修改SeqNum后把該響應(yīng)報(bào)文轉(zhuǎn)給客戶端,客戶端后續(xù)根據(jù)服務(wù)器的窗口大小發(fā)送數(shù)據(jù)報(bào)文。3、本實(shí)施例中響應(yīng)服務(wù)器第二SYNACK的第二ACK報(bào)文直接基于第二SYNACK改造,并附帶上所緩存的客戶端用戶數(shù)據(jù)內(nèi)容。在收到服務(wù)器的第二SYNACK之前收到的所有客戶端第一ACK報(bào)文可以合并為一條報(bào)文,作為對(duì)服務(wù)器SYNACK的確認(rèn)報(bào)文發(fā)送,提高了傳輸效率??梢?,本實(shí)施例與通常SYN代理的主要差別在于內(nèi)存開銷小,特別適用于系統(tǒng)內(nèi)存資源有限的防火墻,并提高了安全性。實(shí)施例二本實(shí)施例中的TCP連接的處理裝置,如圖7所示,包括接收模塊701,用于接收客戶端或服務(wù)器發(fā)送的報(bào)文;SYN代理模塊702,用于在傳輸控制協(xié)議TCP連接的當(dāng)前狀態(tài)為NONE狀態(tài)或CLOSE狀態(tài)時(shí),若所述接收模塊接收到客戶端發(fā)送的第一同步SYN報(bào)文,則以服務(wù)器的名義回復(fù)第一同步確認(rèn)SYNACK報(bào)文給所述客戶端,并令TCP連接進(jìn)入SYN_ACKED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN—ACKED狀態(tài)時(shí),若所述接收模塊接收到所述客戶端發(fā)送的用以確認(rèn)所述第一SYNACK報(bào)文的第一確認(rèn)ACK報(bào)文,則以所述客戶端的名義向所述服務(wù)器發(fā)送第二SYN報(bào)文,并令所述TCP連接進(jìn)入SYN—FWED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN_FWED狀態(tài)時(shí),若所述接收模塊接收到所述服務(wù)器發(fā)送的第二SYNACK報(bào)文,則向所述服務(wù)器發(fā)送確認(rèn)所述第二SYNACK報(bào)文的第二ACK報(bào)文,并令所述TCP連接進(jìn)入ESTABLISHED狀態(tài);狀態(tài)檢測(cè)模塊703,用于在所述接收模塊接收到報(bào)文時(shí),根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法。進(jìn)一步地,該裝置可以包括存儲(chǔ)模塊,用于保存預(yù)設(shè)的TCP狀態(tài)轉(zhuǎn)換表,所述TCP狀態(tài)轉(zhuǎn)換表用于標(biāo)識(shí)在TCP連接的當(dāng)前狀態(tài)下,接收到來(lái)自各種來(lái)源的各種類型的報(bào)文時(shí)轉(zhuǎn)換得到的TCP連接的新狀態(tài),所述來(lái)源為客戶端或服務(wù)器;在包括存儲(chǔ)模塊的情況下,所述狀態(tài)檢測(cè)模塊,用于在所述接收模塊接收到報(bào)文時(shí),根據(jù)所述TCP連接的當(dāng)前狀態(tài)和接收到的報(bào)文的來(lái)源以及類型査詢所述TCP狀態(tài)轉(zhuǎn)換表,確定所述TCP連接的新狀態(tài),并根據(jù)所述新狀態(tài)確定接收到的報(bào)文是否合法。進(jìn)一步地,該裝置可以包括處理模塊,用于在所述狀態(tài)檢測(cè)模塊確定所述接收模塊接收到的報(bào)文合法時(shí),根據(jù)所述接收模塊接收到的報(bào)文進(jìn)行相應(yīng)處理;在所述狀態(tài)檢測(cè)模塊確定所述接收模塊接收到的報(bào)文不合法時(shí),丟棄所述接收模塊接收到的報(bào)文。綜上所述,本發(fā)明實(shí)施例提供的技術(shù)方案采用SYN代理來(lái)建立TCP連接,從而保證到達(dá)服務(wù)器的連接都是合法的連接,能夠有效防御SYN-FLOOD攻擊,并且在TCP連接處于各狀態(tài)時(shí),根據(jù)預(yù)設(shè)的各狀態(tài)下能夠接收的合法報(bào)文確定接收到的報(bào)文是否合法,從而防止其他可能存在的入侵行為。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求1、一種TCP連接的處理方法,其特征在于,包括在傳輸控制協(xié)議TCP連接的當(dāng)前狀態(tài)為NONE狀態(tài)或CLOSE狀態(tài)時(shí),若接收到客戶端發(fā)送的第一同步SYN報(bào)文,則以服務(wù)器的名義回復(fù)第一同步確認(rèn)SYNACK報(bào)文給所述客戶端,并令TCP連接進(jìn)入SYN_ACKED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN_ACKED狀態(tài)時(shí),若接收到所述客戶端發(fā)送的用以確認(rèn)所述第一SYNACK報(bào)文的第一確認(rèn)ACK報(bào)文,則以所述客戶端的名義向所述服務(wù)器發(fā)送第二SYN報(bào)文,并令所述TCP連接進(jìn)入SYN_FWED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN_FWED狀態(tài)時(shí),若接收到所述服務(wù)器發(fā)送的第二SYNACK報(bào)文,則向所述服務(wù)器發(fā)送確認(rèn)所述第二SYNACK報(bào)文的第二ACK報(bào)文,并令所述TCP連接進(jìn)入已連接狀態(tài);在接收到報(bào)文時(shí),根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法。2、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法的方法為根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定所述TCP連接的新狀態(tài),并根據(jù)所述新狀態(tài)確定接收到的報(bào)文是否合法。3、根據(jù)權(quán)利要求2所述的方法,其特征在于,預(yù)設(shè)TCP狀態(tài)轉(zhuǎn)換表,所述TCP狀態(tài)轉(zhuǎn)換表用于標(biāo)識(shí)在TCP連接的當(dāng)前狀態(tài)下,接收到來(lái)自各種來(lái)源的各種類型的報(bào)文時(shí)轉(zhuǎn)換得到的TCP連接的新狀態(tài),所述來(lái)源為客戶端或服務(wù)器;所述根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定所述TCP連接的新狀態(tài)的方法為根據(jù)所述TCP連接的當(dāng)前狀態(tài)和接收到的報(bào)文的來(lái)源以及類型査詢所述TCP狀態(tài)轉(zhuǎn)換表,確定所述TCP連接的新狀態(tài)。4、根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述SYN—ACKED狀態(tài)下能夠接收的合法報(bào)文包括所述第一SYN報(bào)文、所述第一ACK報(bào)文;以及所述客戶端發(fā)送的第一FIN報(bào)文、所述客戶端發(fā)送的第一RST報(bào)文。5、根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述SYN—FWED狀態(tài)下能夠接收的合法報(bào)文包括所述第一ACK報(bào)文、所述第二SYNACK報(bào)文、所述第一FIN報(bào)文、第一RST報(bào)文;所述服務(wù)器發(fā)送的第二ACK報(bào)文、第二RST報(bào)文。6、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收客戶端發(fā)送的第一SYN報(bào)文后,緩存所述第一SYN報(bào)文的TCP選項(xiàng);所述接收所述客戶端發(fā)送的用以確認(rèn)所述第一SYNACK報(bào)文的第一ACK報(bào)文后,在所述第一ACK報(bào)文上添加所述TCP選項(xiàng)得到所述第二SYN報(bào)文。7、根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述第一SYNACK報(bào)文中的WINDOW域置為1。8、一種TCP連接的處理裝置,其特征在于,包括接收模塊,用于接收客戶端或服務(wù)器發(fā)送的報(bào)文;同步SYN代理模塊,用于在傳輸控制協(xié)議TCP連接的當(dāng)前狀態(tài)為NONE狀態(tài)或CLOSE狀態(tài)時(shí),若所述接收模塊接收到客戶端發(fā)送的第一同步SYN報(bào)文,則以服務(wù)器的名義回復(fù)第一同步確認(rèn)SYNACK報(bào)文給所述客戶端,并令TCP連接進(jìn)入SYN—ACKED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN—ACKED狀態(tài)時(shí),若所述接收模塊接收到所述客戶端發(fā)送的用以確認(rèn)所述第一SYNACK報(bào)文的第一確認(rèn)ACK報(bào)文,則以所述客戶端的名義向所述服務(wù)器發(fā)送第二SYN報(bào)文,并令所述TCP連接進(jìn)入SYN一FWED狀態(tài);在所述TCP連接的當(dāng)前狀態(tài)為SYN—FWED狀態(tài)時(shí),若所述接收模塊接收到所述服務(wù)器發(fā)送的第二SYNACK報(bào)文,則向所述服務(wù)器發(fā)送確認(rèn)所述第二SYNACK報(bào)文的第二ACK報(bào)文,并令所述TCP連接進(jìn)入已連接狀態(tài);狀態(tài)檢測(cè)模塊,用于在所述接收模塊接收到報(bào)文時(shí),根據(jù)所述接收到的報(bào)文以及所述TCP連接的當(dāng)前狀態(tài)確定接收到的報(bào)文是否合法。9、根據(jù)權(quán)利要求8所述的裝置,其特征在于,包括存儲(chǔ)模塊,用于保存預(yù)設(shè)的TCP狀態(tài)轉(zhuǎn)換表,所述TCP狀態(tài)轉(zhuǎn)換表用于標(biāo)識(shí)在TCP連接的當(dāng)前狀態(tài)下,接收到來(lái)自各種來(lái)源的各種類型的報(bào)文時(shí)轉(zhuǎn)換得到的TCP連接的新狀態(tài),所述來(lái)源為客戶端或服務(wù)器;所述狀態(tài)檢測(cè)模塊,用于在所述接收模塊接收到報(bào)文時(shí),根據(jù)所述TCP連接的當(dāng)前狀態(tài)和接收到的報(bào)文的來(lái)源以及類型査詢所述TCP狀態(tài)轉(zhuǎn)換表,確定所述TCP連接的新狀態(tài),并根據(jù)所述新狀態(tài)確定接收到的報(bào)文是否合法。10、根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,包括處理模塊,用于在所述狀態(tài)檢測(cè)模塊確定所述接收模塊接收到的報(bào)文合法時(shí),根據(jù)所述接收模塊接收到的報(bào)文進(jìn)行相應(yīng)處理;在所述狀態(tài)檢測(cè)模塊確定所述接收模塊接收到的報(bào)文不合法時(shí),丟棄所述接收模塊接收到的報(bào)文。全文摘要本發(fā)明實(shí)施例涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種TCP連接的處理方法和裝置。在本發(fā)明實(shí)施例提供的技術(shù)方案采用SYN代理來(lái)建立TCP連接,從而保證到達(dá)服務(wù)器的連接都是合法的連接,能夠有效防御SYN-FLOOD攻擊,并且在TCP連接處于各狀態(tài)時(shí),根據(jù)預(yù)設(shè)的各狀態(tài)下能夠接收的合法報(bào)文確定接收到的報(bào)文是否合法,從而防止其他可能存在的入侵行為。文檔編號(hào)H04L12/56GK101547210SQ20091013719公開日2009年9月30日申請(qǐng)日期2009年5月14日優(yōu)先權(quán)日2009年5月14日發(fā)明者黃凱明申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司