防止分布式拒絕服務DDoS攻擊的數(shù)據(jù)傳輸方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本申請涉及網(wǎng)絡技術(shù),特別涉及防止分布式拒絕服務(DDoS:Distributed Denialof Service)攻擊的數(shù)據(jù)傳輸方法和裝置。
【背景技術(shù)】
[0002]DDoS攻擊指借助于客戶端/服務器技術(shù),將多個計算機聯(lián)合起來作為攻擊平臺,對一個或多個目標發(fā)動DDoS攻擊,從而成倍地提高DDoS的威力。通常,攻擊者使用一個偷竊帳號將DDoS主控程序安裝在一個計算機上,在一個設(shè)定的時間主控程序向大量代理程序發(fā)送指令,代理程序收到指令時就發(fā)動DDoS攻擊。
[0003]目前,DDoS攻擊常用的模式就是:攻擊者發(fā)送海量的連接請求給目標對象以與目標對象建立傳輸控制協(xié)議(TCP:Transmiss1n Control Protocol)連接;之后通過建立的TCP連接再發(fā)送斷開指令,以斷開已建立的TCP連接,但因為TCP連接有一個等待時間(time-wait),即使目標對象收到斷開指令,其也不會立即斷開TCP連接,而是等待time-wait到期時再斷開TCP連接,而在等待期間目標對象被攻擊者攻擊,并且無暇處理正常的業(yè)務請求。
【發(fā)明內(nèi)容】
[0004]本申請?zhí)峁┝朔乐狗植际骄芙^服務DDoS攻擊的數(shù)據(jù)傳輸方法和裝置,以通過用戶數(shù)據(jù)報協(xié)議(UDP:User Datagram Protocol)模擬TCP的通信方式自主防止DDos攻擊。
[0005]本申請?zhí)峁┑募夹g(shù)方案包括:
[0006]一種防止分布式拒絕服務DDoS攻擊的數(shù)據(jù)傳輸方法,包括:
[0007]發(fā)送端采用用戶數(shù)據(jù)報協(xié)議UDP模擬傳輸控制協(xié)議TCP的方式與接收端建立連接;
[0008]發(fā)送端確定所述連接的最大傳輸單元MTU;
[0009]發(fā)送端按照數(shù)據(jù)包的大小不超過所述MTU的原則通過所述連接發(fā)送數(shù)據(jù)包給接收端;
[0010]發(fā)送端在斷開所述連接時,發(fā)送斷開指令給接收端,以使接收端收到所述斷開指令后立即斷開所述連接。
[0011]一種防止分布式拒絕服務DDoS攻擊的數(shù)據(jù)傳輸裝置,包括:
[0012]連接單元,用于采用用戶數(shù)據(jù)報協(xié)議UDP模擬傳輸控制協(xié)議TCP的方式與接收端建立連接;
[00?3]確定單元,用于確定所述連接的最大傳輸單元MTU ;
[0014]傳輸單元,用于按照數(shù)據(jù)包的大小不超過所述MTU的原則通過所述連接發(fā)送數(shù)據(jù)包給接收端;
[0015]斷開單元,用于在斷開所述連接時,發(fā)送斷開指令給接收端,以使接收端收到所述斷開指令后立即斷開所述連接。
[0016]一種防止分布式拒絕服務DDoS攻擊的數(shù)據(jù)傳輸裝置,包括:
[0017]連接單元,用于與發(fā)送端之間建立連接;所述連接是按照用戶數(shù)據(jù)報協(xié)議UDP模擬傳輸控制協(xié)議TCP的方式建立的;
[0018]接收單元,用于通過所述連接接收發(fā)送端發(fā)送的數(shù)據(jù)包;
[0019]斷開單元,用于在接收到發(fā)送端發(fā)送的斷開指令后,立即斷開所述連接。
[0020]由以上技術(shù)方案可以看出,本發(fā)明中,盡管發(fā)送端是采用UDP模擬TCP的方式與接收端建立連接,但實質(zhì)并非是采用TCP建立連接,因此,本發(fā)明并沒有必要按照TCP為建立的連接設(shè)置一個time-wait以維護連接的狀態(tài),基于此,當發(fā)送端發(fā)送斷開指令給接收端,接收端收到斷開指令,會立即斷開之前建立的與發(fā)送端之間的連接,防止了接收端像現(xiàn)有技術(shù)那樣在等待time-wait到期的一段時間內(nèi)被占用過多資源、進而防止了 DDoS的攻擊。
【附圖說明】
[0021 ]圖1為本發(fā)明提供的方法流程圖;
[0022]圖2為本發(fā)明提供的步驟101實現(xiàn)實施例流程圖;
[0023]圖3為本發(fā)明提供的步驟102實現(xiàn)實施例流程圖;
[0024]圖4為本發(fā)明提供的裝置結(jié)構(gòu)圖;
[0025]圖5為本發(fā)明提供的另一裝置結(jié)構(gòu)圖。
【具體實施方式】
[0026]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述。
[0027]本發(fā)明提供的方法包括圖1所示的流程:
[0028]參見圖1,圖1為本發(fā)明提供的方法流程圖。如圖1所示,該流程可包括以下步驟:
[0029]步驟101,發(fā)送端采用UDP模擬TCP的方式與接收端建立連接。
[0030]這里,發(fā)送端采用UDP模擬TCP的方式與接收端建立的連接可稱為UDP連接。
[0031]本發(fā)明中,盡管發(fā)送端是采用UDP模擬TCP的方式與接收端建立連接,但實質(zhì)并非是采用TCP建立連接,因此,本發(fā)明并沒有必要按照TCP為建立的連接設(shè)置一個time-wait,以維護連接的狀態(tài)。
[0032]作為本發(fā)明的一個優(yōu)選實施例,步驟101具體可通過圖2所示的步驟201至步驟204實現(xiàn),這里暫不贅述。
[0033]步驟102,發(fā)送端確定所述連接的最大傳輸單元(MTU)。
[0034]本發(fā)明中,盡管發(fā)送端是采用UDP模擬TCP的方式與接收端建立連接,但實質(zhì)并非是采用TCP建立連接,所以,盡管TCP沒有MTU確定的功能,但本發(fā)明卻因為需要額外增加了MTU確定的功能,以保證后續(xù)發(fā)送端與接收端之間按照不大于該MTU的大小傳輸數(shù)據(jù)包,具體見步驟103,提升數(shù)據(jù)包的傳輸效率。
[0035]作為本發(fā)明的一個優(yōu)選實施例,步驟102具體可通過圖3所示的步驟301至步驟303實現(xiàn),這里暫不贅述。
[0036]步驟103,發(fā)送端按照數(shù)據(jù)包的大小不超過MTU的原則通過所述連接發(fā)送數(shù)據(jù)包給接收端。
[0037]步驟104,發(fā)送端在斷開連接時,發(fā)送斷開指令給接收端,以使接收端收到所述斷開指令后立即斷開所述連接。
[0038]如上步驟101所述,本發(fā)明沒有必要按照TCP為建立的連接設(shè)置一個time-wait以維護連接的狀態(tài),基于此,當發(fā)送端發(fā)送斷開指令給接收端,接收端收到斷開指令,會立即斷開之前建立的與發(fā)送端之間的連接,防止了接收端像現(xiàn)有技術(shù)那樣在等待time-wait到期的一段時間內(nèi)被占用過多資源、進而防止了 DDoS的攻擊。
[0039]至此,完成圖1所示的流程。
[0040]參見圖2,圖2為本發(fā)明提供的步驟101實現(xiàn)實施例流程圖。如圖2所示,該流程可包括以下步驟:
[0041 ]步驟201,發(fā)送端向接收端發(fā)送第一UDP消息,并設(shè)置自身的狀態(tài)為消息發(fā)送狀態(tài)。
[0042]在UDP中,是不允許發(fā)送同步序列編號(SYN:Synchronize Sequence Numbers)包的,而由于本發(fā)明是采用UDP模擬TCP的方式與接收端建立連接,基于此,按照TCP,作為一個優(yōu)選實施例,這里的第一UDP消息可為SYN包,其攜帶了序列號(比如SYN= j)。相應地,消息發(fā)送狀態(tài)可為序列號發(fā)送(SYN-SEND)狀態(tài)。
[0043]本步驟201相當于發(fā)送端和接收端之間在建立連接時的第一次握手。
[0044]步驟202,接收端接收到第一UDP消息后,向發(fā)送端發(fā)送第二UDP消息和針對第一UDP消息的第一響應消息,并設(shè)置自身的狀態(tài)為消息接收狀態(tài)。
[0045]借用TCP,則在第一UDP消息為SYN包時,針對第一UDP消息的第一響應消息相應為確認(ACK: Acknowledgement)消息,以確認收到SYN包。相應地,消息接收狀態(tài)可為序列號接收(SYN-RECEIVED)狀態(tài)。
[0046 ] 在本發(fā)明中,第二UDP消息也為SYN包,只不過其攜帶的序列號(比如SYN = k)不同于發(fā)送端發(fā)送的SYN包所攜帶的序列號(比如SYN=j)。
[0047]步驟202相當于發(fā)送端和接收端之間在建立連接時的第二次握手。
[0048]步驟203,發(fā)送端接收第二UDP消息和第一響應消息后,向接收端發(fā)送第二響應消息,并將自身的狀態(tài)從消息發(fā)送狀態(tài)更新為連接建立完成狀態(tài)(ESTABLISHED)。
[0049]在本發(fā)明中,第二響應消息是針對第二UDP消息發(fā)送的,在第二UDP消息為SYN包的前提下,第二響應消息相應為ACK消息,以確認收到接收端發(fā)送的SYN包。
[0050]步驟204,接收端接收到第二響應消息后,將自身的狀態(tài)從消息發(fā)送狀態(tài)更新為連接建立完成狀態(tài),發(fā)送端與接收端之間的連接完成建立。
[0051]步驟203至步驟204相當于發(fā)送端和接收端之間在建立連接時的第三次握手。
[0052]可以看出,本發(fā)明中,通過上述發(fā)送端和接收端之間的三次握手,即實現(xiàn)了發(fā)送端采用UDP模擬TCP的方式與接收端建立連接的操作,該建立的連接可稱為UDP連接。
[0053]參見圖3,圖3為本發(fā)明提供的步驟102實現(xiàn)實施例流程圖。如圖3所示,該流程可包括以下步驟:
[0054]步驟301,發(fā)送端將本端與接收端之間的各個路徑所允許的數(shù)據(jù)包傳輸最大值發(fā)送給接收端。
[0055]這里,各個路徑所允許的數(shù)據(jù)包傳輸最大值可按照現(xiàn)有的數(shù)據(jù)探測獲取,這里不再贅述。
[0056]步驟302,接收端接收到發(fā)送端發(fā)送的各個路徑所允許的數(shù)據(jù)包傳輸最大值后,從接收的各個路徑所允許的數(shù)據(jù)包傳輸最大值中選擇一個取值最小的數(shù)據(jù)包傳輸最大值,將選擇的數(shù)據(jù)包傳輸最大值發(fā)送給發(fā)送端。
[0057]步驟303,發(fā)送端接收接收端發(fā)送的數(shù)據(jù)包傳輸最大值,將接收的數(shù)據(jù)包傳輸最大值作為所述MTU。
[0058]至此,完成圖3所示的流程。通過圖3所示的流程能夠確定發(fā)送端與接收端之間傳輸?shù)腗TU。
[0059]需要說明的是,在本發(fā)明中,為保證發(fā)送端和接收端之間的數(shù)據(jù)傳輸,可為發(fā)送端分配緩沖區(qū)?;诖?,上述步驟103中,發(fā)送端按照數(shù)據(jù)包的大小不超過所述MTU的原則通過所述連接發(fā)送數(shù)據(jù)包給接收端可包括:
[0060]發(fā)送端在按照數(shù)據(jù)包的大小不超過所述MTU的原則發(fā)送數(shù)據(jù)包時,先將該數(shù)據(jù)包緩存,之后再發(fā)送該數(shù)據(jù)包。
[0061]當接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)包后,其會針對該數(shù)據(jù)包返回一個確認接收響應消息,以告知發(fā)送端其已收到發(fā)送端發(fā)送的數(shù)據(jù)包。
[0062]基于此,為避免緩沖區(qū)存放一些已被接收端成