專利名稱:服務(wù)器設(shè)備及其控制方法和使用該服務(wù)器建立連接的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于建立用來在客戶機(jī)設(shè)備和服務(wù)器設(shè)備之間發(fā)送和接收數(shù)據(jù)的連接的技術(shù)。
背景技術(shù):
近年來,使用因特網(wǎng)的各種通信業(yè)務(wù)已經(jīng)投入使用。用于在因特網(wǎng)上發(fā)送和接收數(shù)據(jù)的通信協(xié)議的一個示例是TCP(傳輸控制協(xié)議)。TCP是一種能夠使數(shù)據(jù)通信在因特網(wǎng)上被高度可靠執(zhí)行的連接型通信協(xié)議。在TCP環(huán)境下,在內(nèi)容數(shù)據(jù)的傳輸之前,數(shù)據(jù)發(fā)送設(shè)備(以下稱作“服務(wù)器設(shè)備”)和數(shù)據(jù)接收設(shè)備(以下稱作“客戶機(jī)設(shè)備”)交換連接數(shù)據(jù)(以下稱作“連接標(biāo)識符”)。將交換的連接標(biāo)識符用于指定通信路徑(以下稱作“連接”),以便由此建立內(nèi)容數(shù)據(jù)的傳輸所用的連接。連接標(biāo)識符的示例包括分配給服務(wù)器設(shè)備或客戶機(jī)設(shè)備的通信地址;指示了由設(shè)備分別用于發(fā)送和接收數(shù)據(jù)的通信端口(例如,通信端口號)的數(shù)據(jù);或序列號的初始值。在TCP環(huán)境下,利用被稱作“3方握手(3-way handshake)”的過程來建立連接。該過程的概括說明如下。
圖10提供了由客戶機(jī)設(shè)備20和服務(wù)器設(shè)備40執(zhí)行的3方握手的概況。每一個設(shè)備均能夠在TCP環(huán)境下進(jìn)行通信。出于說明的目的,假設(shè)希望從服務(wù)器40得到內(nèi)容數(shù)據(jù)的用戶執(zhí)行例如輸入數(shù)據(jù)(例如URL)的預(yù)定操作,所述數(shù)據(jù)表示了服務(wù)器設(shè)備40的通信地址和要用于獲取希望的內(nèi)容數(shù)據(jù)的通信協(xié)議??蛻魴C(jī)設(shè)備20首先向服務(wù)器設(shè)備40發(fā)送SYN消息200,如圖10所示。當(dāng)要從服務(wù)器設(shè)備40向客戶機(jī)設(shè)備20發(fā)送數(shù)據(jù)時(以下稱作“下行連接”),SYN消息用于請求建立連接;該消息包括用于下行連接的連接標(biāo)識符。
當(dāng)接收到SYN消息200時,服務(wù)器設(shè)備40分配用于與SYN消息200的源(客戶機(jī)設(shè)備20)建立連接的計(jì)算機(jī)資源(以下稱作“資源”)。具體地,服務(wù)器設(shè)備40將用于識別對應(yīng)設(shè)備(即,客戶機(jī)設(shè)備20)的數(shù)據(jù)(例如上述下行連接的連接標(biāo)識符)寫入到例如RAM(隨機(jī)存取存儲器)的存儲設(shè)備中。然后,服務(wù)器設(shè)備40向客戶機(jī)設(shè)備20發(fā)送指示接收到了SYN消息200的SYN/ACK消息210,并且還發(fā)送用于在反方向建立連接(以下稱作“上行連接”)的請求。當(dāng)數(shù)據(jù)從客戶機(jī)設(shè)備20傳送到服務(wù)器設(shè)備40時,使用上行連接;所述SYN/ACK消息210包括用于上行連接的連接標(biāo)識符。
當(dāng)接收到SYN/ACK消息210時,客戶機(jī)設(shè)備20讀取SYN/ACK消息210中的連接標(biāo)識符,并根據(jù)連接標(biāo)識符建立連接(即,上行連接)。然后,客戶機(jī)設(shè)備20向服務(wù)器設(shè)備40發(fā)送指示接收到了SYN/ACK消息210的確認(rèn)消息(以下稱作“ACK”)220。當(dāng)接收到ACK220時,服務(wù)器設(shè)備40建立上行連接,從存儲設(shè)備中刪除識別對應(yīng)設(shè)備的數(shù)據(jù),并等待來自對應(yīng)設(shè)備的消息的接收,例如用于發(fā)送數(shù)據(jù)的請求。
注意,由于服務(wù)器設(shè)備40的資源,例如存儲設(shè)備的容量,是有限的,也因此限制了能夠存儲在存儲設(shè)備中的連接標(biāo)識符的數(shù)目。因此,服務(wù)器設(shè)備40等待的、來自客戶機(jī)設(shè)備20的ACK220的數(shù)目被限制為能夠在服務(wù)器處保留的連接標(biāo)識符的數(shù)目。該限制造成容易濫用服務(wù)器。即,通過從設(shè)備向服務(wù)器發(fā)送大量用于排隊(duì)的SYN消息200,能夠發(fā)起惡意的、客戶機(jī)設(shè)備對服務(wù)器的服務(wù)器攻擊的拒絕,由此耗盡了服務(wù)器的資源。將這種攻擊稱作“SYN洪泛攻擊(SYN FloodAttack)”。
當(dāng)發(fā)起SYN洪泛攻擊時,作為攻擊源的惡意客戶機(jī)設(shè)備連續(xù)地向服務(wù)器設(shè)備40發(fā)送大量SYN消息200。當(dāng)服務(wù)器發(fā)送或試圖發(fā)送響應(yīng)SYN/ACK消息210時,沒有來自客戶機(jī)設(shè)備的ACK 220,因此,服務(wù)器在設(shè)定時間周期內(nèi)保留包含在所接收的SYN消息中的連接標(biāo)識符。當(dāng)在服務(wù)器處排隊(duì)的連接標(biāo)識符的數(shù)目達(dá)到上限時,耗盡了服務(wù)器設(shè)備的資源。結(jié)果,服務(wù)器設(shè)備不再能夠接受來自客戶機(jī)設(shè)備的連接請求;并且不能提供通信服務(wù)。已經(jīng)提出了各種方法用于對付SYN洪泛攻擊。包括,J.Lemon,“Resisting SYN flood DoS attacks witha SYN cache”,Proceedings of the B SDC on 2002 Conference,2002。http://people.freebsd.org/~ilemon/papers/synchame-pdf,其中,說明了被稱作SYN Cookie的技術(shù)。參考圖11,現(xiàn)在將給出SYN Cookie的說明。
圖11提供了根據(jù)SYS Cookie執(zhí)行的連接打開過程的概況。在接收到來自客戶機(jī)設(shè)備20的SYN消息200時,當(dāng)服務(wù)器設(shè)備50根據(jù)SYN Cookie建立連接時,其通過根據(jù)預(yù)定算法來壓縮所接收的SYN消息200的內(nèi)容,產(chǎn)生散列數(shù)據(jù)。然后,當(dāng)將所產(chǎn)生的散列數(shù)據(jù)寫入消息210之后,服務(wù)器設(shè)備50將SYN/ACK消息210發(fā)送到客戶機(jī)設(shè)備20。根據(jù)SYN Cookie,當(dāng)接收到消息200時,服務(wù)器設(shè)備50不會將包含在SYN消息200中的連接標(biāo)識符寫入到其存儲單元中。相反,如果散列數(shù)據(jù)包含在從客戶機(jī)設(shè)備20返回的ACK 220中,服務(wù)器設(shè)備50從散列數(shù)據(jù)中讀取連接標(biāo)識符,然后根據(jù)連接標(biāo)識符建立連接(即,下行連接)。因此,根據(jù)SYN Cookie,由于服務(wù)器設(shè)備50沒有存儲包含在SYN消息200中的連接標(biāo)識符,即使在沒有從一個或多個客戶機(jī)設(shè)備返回ACK 220的情況下,也不存在耗盡服務(wù)器設(shè)備50的資源的危險(xiǎn)。因此,服務(wù)器設(shè)備50能夠避免由SYN洪泛攻擊產(chǎn)生服務(wù)器狀態(tài)的拒絕。
然而,如圖11所示,假設(shè)TCP規(guī)定如果在消息的傳輸之后的預(yù)定時間內(nèi)沒有從對應(yīng)設(shè)備返回ACK,則重新發(fā)送消息,在SYN/ACK消息210的接收之后的預(yù)定時間內(nèi)沒有接收到ACK220的情況下,根據(jù)SYN Cookie的服務(wù)器設(shè)備50必須重新發(fā)送SYN/ACK消息210。然而,由于服務(wù)器設(shè)備50沒有存儲包含在SYN消息200中的連接標(biāo)識符,它不能識別用于重新傳輸?shù)腟YN/ACK消息210的目的地,所以也不能重新發(fā)送SYN/ACK消息210;該目的地通常是根據(jù)所存儲的連接標(biāo)識符來識別的。
結(jié)果,如果響應(yīng)SYN/ACK消息210不能從客戶機(jī)設(shè)備20向服務(wù)器設(shè)備50發(fā)送ACK 220,則服務(wù)器設(shè)備50和客戶機(jī)設(shè)備20之間的連接保持不完整。具體地,如果客戶機(jī)設(shè)備20安全地接收到SYN/ACK消息210,盡管建立了服務(wù)器設(shè)備50和客戶機(jī)設(shè)備20之間的上行連接,由于ACK 220的丟失,導(dǎo)致沒有建立下行連接。即,在服務(wù)器設(shè)備50和客戶機(jī)設(shè)備20之間產(chǎn)生了連接的不完整、半打開狀態(tài)。如果不能重新發(fā)送SYN/ACK消息210來使客戶機(jī)設(shè)備20重新發(fā)送ACK220,由于沒有建立下行連接,會持續(xù)曾經(jīng)產(chǎn)生的該半打開通信狀態(tài)。因此,利用SYN Cookie來對付SYN洪泛攻擊容易出現(xiàn)服務(wù)器設(shè)備和客戶機(jī)設(shè)備之間的連接保持不完整的問題。
發(fā)明內(nèi)容
考慮到上述問題設(shè)想了本發(fā)明,其目的在于提供一種對抗SYN洪泛攻擊的有效保護(hù),同時避免產(chǎn)生客戶機(jī)設(shè)備和服務(wù)器設(shè)備之間的不完整、半打開連接狀態(tài)。
為了解決上述問題,在一方面,本發(fā)明提出了一種服務(wù)器設(shè)備,包括接收裝置,用于接收從對應(yīng)設(shè)備發(fā)送的消息;發(fā)送裝置,用于當(dāng)接收裝置接收到第一消息時,向?qū)?yīng)設(shè)備發(fā)送請求建立要用于接收從對應(yīng)設(shè)備發(fā)送的數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且用于請求下行連接的建立;讀取裝置,用于當(dāng)接收裝置接收到包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求下行連接的建立,并確認(rèn)第二消息的接收;以及連接建立裝置,用于根據(jù)由讀取裝置讀取的標(biāo)識符,建立與對應(yīng)設(shè)備的下行連接。
在另一方面,本發(fā)明提出了一種程序,用于使計(jì)算機(jī)用作以下裝置接收裝置,用于接收從對應(yīng)設(shè)備發(fā)送的消息;發(fā)送裝置,用于當(dāng)接收裝置接收到第一消息時,向?qū)?yīng)設(shè)備發(fā)送請求建立要用于接收從對應(yīng)設(shè)備發(fā)送的數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且請求下行連接的建立;讀取裝置,用于當(dāng)接收裝置接收到包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求下行連接的建立,并確認(rèn)第二消息的接收;以及連接建立裝置,用于根據(jù)由讀取裝置讀取的標(biāo)識符,建立與對應(yīng)設(shè)備的下行連接,本發(fā)明還提供了一種存儲了程序的記錄介質(zhì)。
根據(jù)這種服務(wù)器設(shè)備、程序和記錄介質(zhì),當(dāng)通過接收到第三消息確認(rèn)作為對應(yīng)設(shè)備的客戶機(jī)設(shè)備已經(jīng)接收到第二消息時,在客戶機(jī)設(shè)備之間建立下行連接。
在優(yōu)選的實(shí)施例中,在第三消息包含附加數(shù)據(jù)的情況下,所述附加數(shù)據(jù)指定了用于通過下行連接向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的通信模式,除了標(biāo)識符以外,讀取裝置還讀取附加數(shù)據(jù);以及連接建立裝置根據(jù)由讀取裝置讀取的標(biāo)識符和附加數(shù)據(jù)來建立下行連接。
根據(jù)該優(yōu)選實(shí)施例,在建立下行連接之后,客戶機(jī)設(shè)備能夠根據(jù)由附加數(shù)據(jù)指定的通信模式來執(zhí)行通信。換句話說,能夠避免持續(xù)不完整的通信狀態(tài),并且能夠有效地對付SYN洪泛攻擊;此外,能夠按照微調(diào)(fine-tuned)模式來執(zhí)行與客戶機(jī)設(shè)備的通信。
在另一個優(yōu)選實(shí)施例中,服務(wù)器設(shè)備還包括確定裝置,用于根據(jù)第一和第三消息的內(nèi)容來確定第一消息的源是否與第三消息的源相同,其中只有當(dāng)確定的結(jié)果肯定時,讀取裝置才從第三消息中讀取標(biāo)識符。優(yōu)選地,第一和第三消息中的每一個包含序列號數(shù)據(jù),所述序列號數(shù)據(jù)示出了當(dāng)發(fā)送數(shù)據(jù)時由第一和第三消息的每一個源所使用的消息的序列號的初始值;以及當(dāng)包含在第一消息中的序列號數(shù)據(jù)與包含在第三消息中的序列號數(shù)據(jù)相同時,確定裝置確定第一消息的源與第三消息的源相同。
根據(jù)該優(yōu)選實(shí)施例,當(dāng)?shù)谝幌⒌脑磁c第三消息的源相同時,建立對應(yīng)設(shè)備之間的下行連接。
根據(jù)另一個優(yōu)選實(shí)施例,如果消息包含預(yù)定區(qū)域內(nèi)的附加數(shù)據(jù),則接收裝置丟棄從對應(yīng)設(shè)備發(fā)送的消息;以及當(dāng)將附加消息寫入預(yù)定區(qū)域之后,發(fā)送裝置發(fā)送第二消息。優(yōu)選地,服務(wù)器設(shè)備還包括確定裝置,用于根據(jù)第一消息的內(nèi)容,確定是否通過特定通信端口發(fā)送由接收裝置接收的第一消息;以及在確定裝置確定通過特定通信端口發(fā)送第一消息的情況下,當(dāng)將附加數(shù)據(jù)寫入預(yù)定區(qū)域之后,發(fā)送裝置發(fā)送第二消息。
根據(jù)該優(yōu)選實(shí)施例,在模仿本實(shí)施例的第一服務(wù)器設(shè)備的對應(yīng)設(shè)備向本實(shí)施例的第二服務(wù)器設(shè)備發(fā)送第一消息時,當(dāng)將附加數(shù)據(jù)寫入第二消息的預(yù)定區(qū)域之后,第二服務(wù)器設(shè)備向第一服務(wù)器設(shè)備發(fā)送第二消息。然后,第一設(shè)備丟棄第二消息。結(jié)果,能夠避免第一和第二服務(wù)器設(shè)備之間無休止的發(fā)送消息。
在另一方面,本發(fā)明提供了一種服務(wù)器設(shè)備,包括通信裝置和控制裝置,其中控制裝置執(zhí)行第一處理,在通信裝置接收到第一消息的情況下,通信裝置發(fā)送請求建立用于從對應(yīng)設(shè)備接收數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且第一消息還請求下行連接的建立;第二處理,當(dāng)通信裝置接收到包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求下行連接的建立,并確認(rèn)第二消息的接收;以及第三處理,根據(jù)在第二處理中讀取的標(biāo)識符,建立下行連接。
在另一方面,本發(fā)明還提供了一種程序,用于使計(jì)算機(jī)設(shè)備執(zhí)行第一處理,在通信裝置接收到第一消息的情況下,通信裝置發(fā)送請求建立用于從對應(yīng)設(shè)備接收數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且第一消息還請求下行連接的建立;第二處理,當(dāng)通信裝置接收到包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求下行連接的建立,并確認(rèn)第二消息的接收;以及第三處理,根據(jù)在第二處理中讀取的標(biāo)識符,建立下行連接,本發(fā)明還提供了一種其上存儲了程序的計(jì)算機(jī)可讀介質(zhì)。
根據(jù)這種服務(wù)器設(shè)備、程序和計(jì)算機(jī)可讀介質(zhì),在通過第三消息確認(rèn)作為對應(yīng)設(shè)備的客戶機(jī)設(shè)備已經(jīng)接收到第二消息的情況下,與客戶機(jī)設(shè)備之間建立下行連接。
為了解決上述問題,本發(fā)明還提供了一種控制服務(wù)器設(shè)備的控制方法,所述服務(wù)器設(shè)備建立了與對應(yīng)設(shè)備之間的連接并向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù),使服務(wù)器設(shè)備順序地執(zhí)行第一步驟,在從對應(yīng)設(shè)備發(fā)送第一消息的情況下,發(fā)送請求建立用于從對應(yīng)設(shè)備接收數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且第一消息還請求下行連接的建立;第二步驟,當(dāng)從對應(yīng)設(shè)備發(fā)送包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求下行連接的建立,并確認(rèn)第二消息;以及第三步驟,其中根據(jù)在第二步驟中讀取的標(biāo)識符,建立下行連接。
在另一方面,本發(fā)明提供了一種控制服務(wù)器設(shè)備的連接建立方法,所述服務(wù)器設(shè)備建立了與對應(yīng)設(shè)備之間的連接并向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù),使服務(wù)器設(shè)備順序地執(zhí)行第一步驟,在從對應(yīng)設(shè)備發(fā)送第一消息的情況下,發(fā)送請求建立用于從對應(yīng)設(shè)備接收數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向?qū)?yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且第一消息還請求下行連接的建立;第二步驟,當(dāng)從對應(yīng)設(shè)備發(fā)送包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求下行連接的建立,并確認(rèn)第二消息;以及第三步驟,根據(jù)在第二步驟中讀取的標(biāo)識符,建立下行連接。
根據(jù)該連接建立方法,在通過第三消息確認(rèn)客戶機(jī)設(shè)備已經(jīng)接收到第二消息的情況下,建立客戶機(jī)設(shè)備和服務(wù)器設(shè)備之間的下行連接。
根據(jù)本發(fā)明,當(dāng)建立客戶機(jī)設(shè)備和服務(wù)器設(shè)備之間的連接時,能夠防止持續(xù)不完整連接狀態(tài),并且能夠有效地對付SYN洪泛攻擊。
圖1示出了根據(jù)本發(fā)明實(shí)施例包括服務(wù)器設(shè)備30的通信系統(tǒng)的示例。
圖2是示出了根據(jù)TCP交換的消息的消息格式的圖。
圖3是示出了服務(wù)器設(shè)備30的硬件配置的示例的圖。
圖4是示出了由服務(wù)器設(shè)備30的控制單元100根據(jù)控制軟件執(zhí)行的控制操作的流程的流程圖。
圖5是示出了在服務(wù)器設(shè)備30和客戶機(jī)設(shè)備20之間執(zhí)行的用于建立連接的通信序列的示例的圖。
圖6示出了當(dāng)丟失從服務(wù)器設(shè)備30發(fā)送的ACK 220時執(zhí)行的通信序列的示例。
圖7示出了當(dāng)丟失從客戶機(jī)設(shè)備20發(fā)送的SYN消息205時執(zhí)行的通信序列的示例。
圖8示出了當(dāng)客戶機(jī)設(shè)備20模仿為服務(wù)器設(shè)備30B并根據(jù)變型4向服務(wù)器設(shè)備30A發(fā)送SYN消息時執(zhí)行的通信序列的示例。
圖9是示出了當(dāng)客戶機(jī)設(shè)備20模仿為服務(wù)器設(shè)備40并根據(jù)變型4向服務(wù)器設(shè)備30A發(fā)送SYN消息時執(zhí)行的通信序列的示例。
圖10是示出了傳統(tǒng)3方握手的圖。
圖11是示出了傳統(tǒng)SYN Cookie的圖。
具體實(shí)施例方式
下面,將參考附圖,給出本發(fā)明優(yōu)選實(shí)施例的說明。
A配置A-1通信系統(tǒng)的配置圖1是示出了根據(jù)本發(fā)明的實(shí)施例,包括服務(wù)器設(shè)備30的通信系統(tǒng)的整體配置的示例的圖。如圖1所示,通信系統(tǒng)包括通信網(wǎng)絡(luò)10、與通信網(wǎng)絡(luò)10相連的客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30。盡管在圖1中只示出了與通信網(wǎng)絡(luò)10相連的一個客戶機(jī)設(shè)備和一個服務(wù)器設(shè)備,可以將多個客戶機(jī)設(shè)備和/或多個服務(wù)器設(shè)備與通信網(wǎng)絡(luò)10相連。下面,在二者之間的區(qū)分不必要時,將客戶機(jī)設(shè)備和服務(wù)器設(shè)備統(tǒng)一地稱作通信設(shè)備。
如圖1所示,例如,通信網(wǎng)絡(luò)10可以是因特網(wǎng);其包括例如路由器、網(wǎng)關(guān)等的中繼設(shè)備。當(dāng)根據(jù)預(yù)定協(xié)議(在本實(shí)施例中是TCP)從與網(wǎng)絡(luò)相連的通信設(shè)備發(fā)送消息時,通信網(wǎng)絡(luò)10通過經(jīng)過中繼設(shè)備路由消息,將所述消息傳送到其目的地。在本實(shí)施例中,以通信網(wǎng)絡(luò)10是因特網(wǎng)的情況來進(jìn)行說明;但是通信網(wǎng)絡(luò)10還可以是LAN(局域網(wǎng))、移動分組通信網(wǎng)和例如無線LAN的無線通信網(wǎng)等。
圖1中的客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30是與通信網(wǎng)絡(luò)10相連的個人計(jì)算機(jī)(以下稱作“PC”);其能夠通過通信網(wǎng)絡(luò)10,執(zhí)行根據(jù)TCP的通信。具體地,客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30產(chǎn)生圖2所示格式的消息,并當(dāng)將預(yù)定數(shù)據(jù)寫入消息的報(bào)頭部分的區(qū)域時,發(fā)送所述消息。
圖2所示的格式用于根據(jù)TCP發(fā)送的消息。盡管省略了詳細(xì)的圖形描述,圖2的控制標(biāo)志區(qū)域是用于寫入6比特標(biāo)志的區(qū)域URG、ACK、PSH、RST、SYN和FIN。在發(fā)送每一個SYN、SYN/ACK和ACK消息之前,客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30將“1”或“0”設(shè)置到這6比特標(biāo)志中的每一個。
當(dāng)從客戶機(jī)設(shè)備20向服務(wù)器設(shè)備30發(fā)送SYN消息時,將各個數(shù)據(jù)寫入到消息的報(bào)頭部分的每一個區(qū)域。即,在源端口號字段,寫入了已經(jīng)請求通信開始的應(yīng)用程序(瀏覽器等)的通信端口號;在目的端口號字段,寫入了對應(yīng)的應(yīng)用程序(例如HTTPD)的通信端口號;以及在序列號字段,寫入了客戶機(jī)設(shè)備20使用的序列號的初始值。在控制標(biāo)志字段,只將SYN標(biāo)志設(shè)為“1”,而將其它標(biāo)志設(shè)為“0”。注意,盡管圖2未示出,當(dāng)在低于TCP的協(xié)議(例如因特網(wǎng)協(xié)議以下稱作“IP”)處理消息時,還將報(bào)頭附到在客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30之間交換的消息上。在較底層添加的報(bào)頭中,寫入了表示通信設(shè)備的數(shù)據(jù),其構(gòu)成了消息的目的地和源(例如,諸如分配到每一個設(shè)備的IP地址的通信地址)。
盡管在客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30是根據(jù)TCP進(jìn)行通信的PC的實(shí)施例中給出了說明,客戶機(jī)設(shè)備20和/或服務(wù)器設(shè)備30可以是根據(jù)TCP進(jìn)行通信的PDA(個人數(shù)字助理)或移動電話,只要該設(shè)備能夠根據(jù)TCP進(jìn)行通信。
由于客戶機(jī)設(shè)備20與根據(jù)TCP進(jìn)行通信的傳統(tǒng)計(jì)算機(jī)設(shè)備相同,省略圖1所示的通信系統(tǒng)的客戶機(jī)設(shè)備20的詳細(xì)說明。相反,服務(wù)器設(shè)備30配備了本發(fā)明的服務(wù)器設(shè)備特有的功能,利用該功能,根據(jù)本發(fā)明的連接建立方法來建立連接。因此,下面的說明集中于本發(fā)明的服務(wù)器設(shè)備30。
A-2服務(wù)器設(shè)備30的配置現(xiàn)在,參考圖3,給出服務(wù)器設(shè)備30的說明。如圖所示,服務(wù)器設(shè)備30具有控制單元100、通信接口(以下稱作“IF”)單元110、存儲器設(shè)備120和互連服務(wù)器設(shè)備30的每一個單元的總線130。
例如,控制單元100是CPU(中央控制單元),并通過運(yùn)行存儲在存儲設(shè)備120上的軟件來控制服務(wù)器設(shè)備30的每一個單元。與通信網(wǎng)絡(luò)10相連的通信IF單元110接收通過通信網(wǎng)絡(luò)10發(fā)送的消息,將消息送向控制單元100,并將來自控制單元100的消息發(fā)送到通信網(wǎng)絡(luò)10。
如圖3所示,存儲設(shè)備120包括易失性存儲器120a和非易失性存儲設(shè)備120b。例如,易失性存儲器120a是RAM,用作根據(jù)軟件進(jìn)行操作的控制單元100的工作區(qū)。例如,非易失性存儲設(shè)備120b是硬盤,其中存儲了各種數(shù)據(jù)。存儲在非易失性存儲設(shè)備120b中的數(shù)據(jù)的示例包括響應(yīng)來自客戶機(jī)設(shè)備20的請求,要發(fā)送到客戶機(jī)設(shè)備20的發(fā)送數(shù)據(jù),以及定義了根據(jù)TCP將發(fā)送數(shù)據(jù)傳送到客戶機(jī)設(shè)備20的通信模式的數(shù)據(jù)(例如,示出了擁塞窗大小、超時數(shù)值等的數(shù)據(jù))。
此外,非易失性存儲設(shè)備120b中存儲了用于使控制單元100實(shí)現(xiàn)OS功能的操作系統(tǒng)(以下稱作“OS”)軟件和用于使控制單元100根據(jù)TCP執(zhí)行通信的控制軟件。下面,將給出當(dāng)執(zhí)行OS和控制軟件時由控制單元100提供的功能的說明。
當(dāng)開啟服務(wù)器設(shè)備30時,控制單元100首先運(yùn)行并執(zhí)行來自非易失性存儲設(shè)備120b中的OS軟件。根據(jù)OS軟件操作的控制單元100配備了控制服務(wù)器設(shè)備30的每一個單元的功能,還配備了運(yùn)行并執(zhí)行來自非易失性存儲設(shè)備120b的其它軟件的功能。當(dāng)控制單元100完成OS軟件的執(zhí)行時,已經(jīng)實(shí)現(xiàn)了OS的控制單元100立即運(yùn)行并執(zhí)行來自非易失性存儲設(shè)備120b的上述控制軟件。
當(dāng)接收到來自客戶機(jī)設(shè)備20的SYN消息或SYN/ACK消息時,根據(jù)控制軟件進(jìn)行操作的控制單元100根據(jù)圖4的流程圖所示的過程,執(zhí)行以下三個處理。當(dāng)從客戶機(jī)設(shè)備20發(fā)送了請求建立下行連接的SYN消息時,執(zhí)行第一處理,所述第一處理包括產(chǎn)生請求用于發(fā)送到客戶機(jī)設(shè)備20的上行連接的SYN消息(步驟SA3,圖4)。當(dāng)接收到作為在請求建立下行連接的第一處理中發(fā)送的SYN消息的確認(rèn)接收的SYN/ACK消息時,執(zhí)行第二處理,所述第二處理包括通過從SYN/ACK消息中讀取標(biāo)識符來獲取用于識別下行連接的連接標(biāo)識符(步驟SA4)。第三處理包括根據(jù)在第二處理中獲取的連接標(biāo)識符來建立下行連接(步驟SA5)。因此,控制軟件使服務(wù)器設(shè)備30的控制單元100實(shí)現(xiàn)了本發(fā)明特有的控制方法,并執(zhí)行本發(fā)明特有的連接建立方法。
換句話說,控制軟件使控制單元100提供以下四個功能首先,用作接收裝置,用于通過通信IF單元110來接收從客戶機(jī)設(shè)備發(fā)送的消息;第二,用作發(fā)送裝置,用于當(dāng)接收裝置接收的消息是請求打開與客戶機(jī)設(shè)備20的下行連接的SYN消息時,產(chǎn)生請求建立用于發(fā)送到客戶機(jī)設(shè)備20的上行連接的SYN消息;第三,用作讀取裝置,用于當(dāng)接收裝置接收的消息是SYN/ACK消息時,從SYN/ACK消息中讀取用于識別下行連接的連接標(biāo)識符,所述SYN/ACK消息確認(rèn)由發(fā)送裝置發(fā)送的SYN消息,并請求建立下行連接;以及第四,用作連接建立裝置,用于根據(jù)由讀取裝置讀取的連接標(biāo)識符來建立下行連接。
如上所述,除了由控制單元100運(yùn)行并執(zhí)行存儲在存儲設(shè)備120中的各種軟件,服務(wù)器設(shè)備30的硬件配置與通用計(jì)算機(jī)設(shè)備相同,由此使控制單元100實(shí)現(xiàn)了本發(fā)明的服務(wù)器設(shè)備特有的功能。因此,實(shí)現(xiàn)了根據(jù)本發(fā)明的控制方法,并且通過客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30執(zhí)行了根據(jù)本發(fā)明的連接建立方法。在本實(shí)施例中,給出了根據(jù)軟件模塊實(shí)現(xiàn)本發(fā)明的服務(wù)器設(shè)備特有的功能的說明。當(dāng)然,可以利用具有與軟件模塊相同功能的硬件模塊來配置服務(wù)器設(shè)備30;即,可以通過利用硬件模塊實(shí)現(xiàn)接收裝置、發(fā)送裝置以及讀取裝置和連接建立裝置來配置服務(wù)器設(shè)備30。
B操作接下來將給出服務(wù)器設(shè)備30執(zhí)行的操作的說明,具體地,給出當(dāng)清楚地示出了服務(wù)器設(shè)備30的特性時執(zhí)行的操作的說明。
B-1基本操作首先給出當(dāng)建立連接時,由客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30執(zhí)行的操作的流程圖的說明。由于客戶機(jī)設(shè)備20與根據(jù)TCP進(jìn)行通信的傳統(tǒng)通信設(shè)備相同,當(dāng)用戶執(zhí)行例如輸入服務(wù)器設(shè)備30的URL之類的預(yù)定操作時,客戶機(jī)設(shè)備20向服務(wù)器設(shè)備30發(fā)送SYN消息200,如圖5所示。下面,將參考圖4,給出當(dāng)接收到SYN消息200時由服務(wù)器設(shè)備30的控制單元100執(zhí)行的操作的說明。
如圖4所示,當(dāng)通過通信IF單元110接收到消息時(步驟SA1),服務(wù)器設(shè)備30的控制單元100根據(jù)消息的內(nèi)容確定該消息是SYN消息還是SYN/ACK消息(步驟SA2)。具體地,當(dāng)只將“1”設(shè)置到包含在消息中的控制標(biāo)志(圖2)的SYN標(biāo)志時,控制單元100確定該消息是SYN消息;而除SYN標(biāo)志以外,當(dāng)還將“1”設(shè)置到ACK標(biāo)志時,確定消息是SYN/ACK消息。在控制單元100在步驟SA2確定所接收的消息是SYN消息時,執(zhí)行圖4中步驟SA3的處理;而當(dāng)控制單元100在步驟SA2確定所接收的消息是SYN/ACK消息時,執(zhí)行從步驟SA4到SA6的處理。
在本操作示例中,從客戶機(jī)設(shè)備20發(fā)送SYN消息200。結(jié)果,執(zhí)行步驟SA3的處理。在步驟SA3,控制單元100向在步驟SA1接收的SYN消息的源,即客戶機(jī)設(shè)備20,發(fā)送請求建立上行連接的SYN消息。結(jié)果,如圖5所示,將SYN消息從服務(wù)器設(shè)備30發(fā)送到客戶機(jī)設(shè)備20。
基于當(dāng)接收到SYN消息205的同時建立連接的假設(shè),與能夠根據(jù)TCP進(jìn)行通信的傳統(tǒng)客戶機(jī)設(shè)備具有相同功能的客戶機(jī)設(shè)備20進(jìn)行操作;并假設(shè)在每一個客戶機(jī)設(shè)備20及其對應(yīng)設(shè)備實(shí)質(zhì)上同時發(fā)送SYN消息,并且在接收ACK之間接收到由其它設(shè)備發(fā)送的SYN消息的情況下,出現(xiàn)連接的同時建立。(對于“同時打開”,參考W.RichardStevens,Tcp/Ip IllustratedThe Protocols(Addison-Wesley ProfessionalComputing Series),250到251頁,Addison-Wesley Pub(Sd),1994)。因此,通過使服務(wù)器設(shè)備30向客戶機(jī)設(shè)備20發(fā)送SYN消息205,假設(shè)在客戶機(jī)設(shè)備20處同時出現(xiàn)打開。根據(jù)TCP,由于規(guī)定應(yīng)當(dāng)返回SYN/ACK消息,作為從對應(yīng)設(shè)備發(fā)送的SYN消息的響應(yīng),所以客戶機(jī)設(shè)備20向服務(wù)器設(shè)備30發(fā)送確認(rèn)SYN消息205并請求下行連接的建立的SYN/ACK消息210(圖5)。SYN/ACK消息210包含與SYN消息200所包含的相同的數(shù)據(jù),而確認(rèn)號(圖2)遞增,所述數(shù)據(jù)包括建立下行連接所需的信息,例如連接標(biāo)識符。
當(dāng)通過通信IF單元110接收到SYN/ACK消息時(步驟SA1),服務(wù)器設(shè)備30的控制單元100執(zhí)行如上所述的步驟SA4到SA6的處理。具體地,控制單元100通過從接收自客戶機(jī)設(shè)備20的SYN/ACK消息210中讀取,得到下行連接的連接標(biāo)識符(步驟SA4),并建立由連接標(biāo)識符表示的連接(步驟SA5)。結(jié)果,建立客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30之間的下行連接。然后,在寫入上行連接的標(biāo)識符之后,控制單元100向客戶機(jī)設(shè)備20發(fā)送確認(rèn)上述SYN/ACK消息的ACK220(步驟SA6)。當(dāng)ACK 220到達(dá)客戶機(jī)設(shè)備20時,客戶機(jī)設(shè)備20讀取寫入到ACK 220中的連接標(biāo)識符,以建立由連接標(biāo)識符指示的連接,即,上行連接。
因此,由于當(dāng)接收到從客戶機(jī)設(shè)備20發(fā)送的SYN消息200時,根據(jù)本實(shí)施例的服務(wù)器設(shè)備30不存儲寫入在SYN消息200中的連接標(biāo)識符(即,上行連接的連接標(biāo)識符),所以能夠有效地對付SYN洪泛攻擊。
B-2當(dāng)丟失ACK220或SYN/ACK210時的操作前面,給出了從客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30發(fā)送的每一個消息到達(dá)其目的地的情況的說明。下面,將給出在通信網(wǎng)絡(luò)10中丟失了消息的情況下由客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30執(zhí)行的操作的情況。
首先,給出丟失了從服務(wù)器設(shè)備30發(fā)送到客戶機(jī)設(shè)備20的ACK220的情況的說明。ACK 220用于通知客戶機(jī)設(shè)備20已經(jīng)在服務(wù)器設(shè)備30安全地接收到了從客戶機(jī)設(shè)備20發(fā)送的SYN/ACK消息210。當(dāng)在SYN/ACK消息210的發(fā)送之后的預(yù)定時間內(nèi)(例如,Tc秒,參考圖6)沒有在客戶機(jī)設(shè)備20處接收到ACK 220時,假設(shè)SYN/ACK消息210已經(jīng)丟失,服務(wù)器重新發(fā)送SYN/ACK消息210。如圖6所示,當(dāng)接收到重新發(fā)送的SYN/ACK消息210時,服務(wù)器設(shè)備30重新發(fā)送ACK 220。
因此,根據(jù)本實(shí)施例,即使丟失了從服務(wù)器設(shè)備30發(fā)送到客戶機(jī)設(shè)備20的ACK,客戶機(jī)設(shè)備20重新發(fā)送SYN/ACK消息210,由此提示服務(wù)器設(shè)備30重新發(fā)送ACK 220。由于在SYN/ACK消息210發(fā)送之后的預(yù)定時間之后重新發(fā)送SYN/ACK消息210,即使丟失了從客戶機(jī)設(shè)備20發(fā)送的SYN/ACK消息210,也重新發(fā)送SYN/ACK消息210。
此外,根據(jù)本實(shí)施例,給出了當(dāng)將ACK 220看作是用于SYN/ACK消息210的ACK時的說明。這意味著當(dāng)發(fā)送SYN消息200之后接收到SYN消息205時,停止用于測量SYN消息200發(fā)送之后的預(yù)定時間的定時器(未示出),并且當(dāng)發(fā)送SYN/ACK消息210時,再次將其啟動,以測量預(yù)定時間(Tv,圖6)。然而,當(dāng)SYN消息205的發(fā)送之后接收到SYN消息205時,不必停止定時器,如果沒有,則將ACK220看作是用于SYN消息200的確認(rèn)。因此,如果在SYN消息200的發(fā)送之后的預(yù)定時間內(nèi)沒有接收到ACK220,則能夠重新發(fā)送SYN消息200。
B-3當(dāng)丟失SYN消息205或200時的操作在丟失了從服務(wù)器設(shè)備30發(fā)送的SYN消息205的情況下,不將用于確認(rèn)SYN消息205的SYN/ACK消息210返回到服務(wù)器設(shè)備30。在這種情況下,當(dāng)SYN消息205的發(fā)送之后經(jīng)過了預(yù)定時間時,不得不重新發(fā)送SYN消息205。然而,由于當(dāng)接收到SYN消息200時,服務(wù)器設(shè)備30不存儲示出了SYN消息200的源的數(shù)據(jù),服務(wù)器設(shè)備30不能識別要重新發(fā)送的SYN消息205的目的地,并因此不能執(zhí)行重新發(fā)送。
然而,根據(jù)本實(shí)施例,如圖7所示,當(dāng)SYN消息200的發(fā)送之后經(jīng)過了預(yù)定時間之后,從客戶機(jī)設(shè)備20重新發(fā)送SYN消息200。然后,使服務(wù)器設(shè)備30重新發(fā)送SYN消息205。本領(lǐng)域技術(shù)人員顯而易見的是,在丟失了從客戶機(jī)設(shè)備20發(fā)送的SYN消息的情況下,當(dāng)SYN消息200的發(fā)送之后經(jīng)過了預(yù)定時間之后重新發(fā)送該消息。
如上所述,根據(jù)本實(shí)施例,即使要在客戶機(jī)設(shè)備20和服務(wù)器設(shè)備30之間交換的消息沒有發(fā)送或已經(jīng)丟失,則能夠始終重新發(fā)送消息。因此,可以防止服務(wù)器設(shè)備30和客戶機(jī)設(shè)備20之間的連接保持在不完整狀態(tài)。
C變型上文中,已經(jīng)給出了本發(fā)明優(yōu)選實(shí)施例的說明。然而,可以如下進(jìn)行變型。
C-1變型1
在上述實(shí)施例中,給出了客戶機(jī)設(shè)備和服務(wù)器設(shè)備基于TCP的情況的說明。然而,根據(jù)本發(fā)明的連接建立方法建立的連接并不局限于用于根據(jù)TCP執(zhí)行的數(shù)據(jù)通信,而可以是用于根據(jù)其它通信協(xié)議執(zhí)行的數(shù)據(jù)通信的連接,只要通信協(xié)議是連接型通信協(xié)議,例如在數(shù)據(jù)交換之前建立連接的TCP。此外,如上所述,即使使用了除TCP以外的連接型通信協(xié)議,如果重新發(fā)送裝置配備了用于重新發(fā)送消息的通信設(shè)備,其中從消息的發(fā)送之后經(jīng)過了預(yù)定時間周期內(nèi)沒有接收到確認(rèn),也可以避免連接的不完整狀態(tài)的持續(xù)。
C-2變型2在上述實(shí)施例中,給出了當(dāng)接收到來自客戶機(jī)設(shè)備的SYN/ACK消息時從SYN/ACK消息中讀取連接標(biāo)識符并建立由連接標(biāo)識符指示的下行連接的情況的說明。此外,在將指定了通過上述連接向客戶機(jī)20發(fā)送數(shù)據(jù)中使用的通信模式的細(xì)節(jié)的附加數(shù)據(jù)中寫入SYN/ACK消息的選項(xiàng)字段(參考圖2)的情況下,當(dāng)建立下行連接之后,服務(wù)器設(shè)備按照附加數(shù)據(jù)指定的通信模式發(fā)送數(shù)據(jù)。附加數(shù)據(jù)的示例是示出了各種選項(xiàng)的可用性的數(shù)據(jù),例如窗口比例選項(xiàng)和時間戳選項(xiàng),指示了選擇性確認(rèn)(SACK)的可用性的數(shù)據(jù),以及ECN。因此,根據(jù)本變型,利用根據(jù)本發(fā)明的連接建立方法建立的連接,能夠按照取決于對應(yīng)設(shè)備的能力的微調(diào)模式來執(zhí)行通信。
C-3變型3在上述實(shí)施例中,給出了當(dāng)接收到從客戶機(jī)設(shè)備發(fā)送的SYN/ACK消息時,服務(wù)器設(shè)備無條件地建立與客戶機(jī)設(shè)備20的下行連接的情況的說明。然而,還可以鑒別作為SYN消息的源(source)的客戶機(jī)設(shè)備是否與作為SYN/ACK消息的源的客戶機(jī)設(shè)備相同,以便只有當(dāng)將兩個客戶機(jī)設(shè)備鑒別為相同時,才建立下行連接。
更詳細(xì)地,上述實(shí)施例的服務(wù)器設(shè)備還配備了散列數(shù)據(jù)產(chǎn)生裝置,用于通過根據(jù)預(yù)定算法來壓縮所接收消息的內(nèi)容來產(chǎn)生散列數(shù)據(jù)。然后,當(dāng)根據(jù)從客戶機(jī)設(shè)備發(fā)送的SYN消息200,將通過散列數(shù)據(jù)產(chǎn)生裝置產(chǎn)生的散列數(shù)據(jù)寫入到SYN消息205中之后,使服務(wù)器設(shè)備發(fā)送請求建立上行連接的SYN消息205。如果從客戶機(jī)設(shè)備接收的SYN/ACK消息包含散列數(shù)據(jù),則確定已經(jīng)發(fā)送SYN消息200的客戶機(jī)設(shè)備與已經(jīng)發(fā)送SYN/ACK消息的客戶機(jī)設(shè)備相同,然后,服務(wù)器設(shè)備從SYN/ACK消息中讀取識別了下行連接的連接標(biāo)識符。
C-.4變型4在上述實(shí)施例中,給出了當(dāng)接收到來自客戶機(jī)設(shè)備的請求建立下行連接的SYN消息時,服務(wù)器設(shè)備無條件地返回請求建立到客戶機(jī)設(shè)備的上行連接的SYN消息的情況的說明。然而,在上述客戶機(jī)設(shè)備使用特定通信端口(例如,作為公知端口的通信端口)來發(fā)送SYN消息的情況下,服務(wù)器設(shè)備可以發(fā)送具有寫入到消息205的預(yù)定區(qū)域的預(yù)定附加數(shù)據(jù)的SYN消息205。下面將詳細(xì)說明用于本變型的基本原理。
根據(jù)TCP執(zhí)行通信的客戶機(jī)設(shè)備通常利用被稱作瞬息端口(ephemeral port)的通信端口來發(fā)送SYN消息。瞬息端口是沒有預(yù)定義特定使用的通信端口,客戶機(jī)設(shè)備能夠自由地決定其使用。公知的端口是預(yù)定義了使用的通信端口。例如,端口號80用于根據(jù)HTTP執(zhí)行的通信。
在客戶機(jī)設(shè)備模仿另一個通信設(shè)備的情況下,即,另一個服務(wù)器設(shè)備,這種客戶機(jī)設(shè)備通常通過傳統(tǒng)由服務(wù)器設(shè)備使用的公知端口來發(fā)送SYN消息。換句話說,利用公知端口發(fā)送SYN消息的客戶機(jī)設(shè)備像是模仿另一個服務(wù)器設(shè)備。
例如,假設(shè)客戶機(jī)設(shè)備20向服務(wù)器設(shè)備30A發(fā)送SYN消息,其中將分配給服務(wù)器設(shè)備30B的通信地址(以下稱作“AdrB”)寫作源地址,并將“80”寫作源端口號,服務(wù)器設(shè)備30A和30B具有與上述實(shí)施例的服務(wù)器設(shè)備30相同的功能。當(dāng)接收到SYN消息時,服務(wù)器設(shè)備30A根據(jù)包含在SYN消息中的數(shù)據(jù),檢測出消息源是服務(wù)器設(shè)備30B,并向服務(wù)器設(shè)備30B發(fā)送請求建立上行連接的SYN消息。由于這是服務(wù)器設(shè)備30B第一次接收到來自服務(wù)器設(shè)備30A的SYN消息,其將SYN消息返回到服務(wù)器設(shè)備30A。從此時起,不停地在服務(wù)器設(shè)備30A和30B之間發(fā)送和接收SYN消息。
因此,由于當(dāng)利用普通客戶機(jī)設(shè)備不使用的特定通信端口(例如公知端口)來從客戶機(jī)設(shè)備發(fā)送SYN消息,推斷客戶機(jī)設(shè)備在模仿另一個設(shè)備,并且通過將指示模仿的附加數(shù)據(jù)寫入到SYN消息205的預(yù)定區(qū)域中,能夠不停地進(jìn)行SYN消息的無止交換。
為了詳細(xì)說明,給出以下兩種情況的說明客戶機(jī)設(shè)備20模仿本發(fā)明的服務(wù)器設(shè)備;以及客戶機(jī)設(shè)備20模仿傳統(tǒng)的服務(wù)器設(shè)備。下面,將控制標(biāo)志字段(圖2)的URG標(biāo)志用作寫入附加數(shù)據(jù)的區(qū)域,并將“1”或“0”的1比特?cái)?shù)據(jù)寫作附加數(shù)據(jù)。可選地,可以將附加數(shù)據(jù)寫入到圖2所示的選項(xiàng)字段中。
圖8是示出了用于以下情況的通信系列客戶機(jī)設(shè)備20模仿本變型的服務(wù)器設(shè)備30B,并向本變型的服務(wù)器設(shè)備30A發(fā)送SYN消息。當(dāng)接收到SYN消息時,服務(wù)器設(shè)備30A基于包含在SYN消息中的數(shù)據(jù)(例如,包含在SYN消息中的連接標(biāo)識符),確定用于SYN消息的傳輸?shù)耐ㄐ哦丝谑欠袷翘囟ㄍㄐ艆f(xié)議(例如,公知端口)。當(dāng)確定的結(jié)果是肯定時,服務(wù)器設(shè)備30A發(fā)送其中將“1”設(shè)為控制標(biāo)志字段的URG標(biāo)志的SYN消息(以下稱作SYN/URG消息)。
由于客戶機(jī)設(shè)備20在模仿服務(wù)器設(shè)備30B,如圖8所示,服務(wù)器設(shè)備30A將上述SYN/URG消息發(fā)送到服務(wù)器設(shè)備30B。另一方面,在沒有執(zhí)行例如SYN的消息交換的狀態(tài)下(例如,根據(jù)TCP的LISTEN狀態(tài)),服務(wù)器設(shè)備30B接收上述SYN/URG消息。為了避免SYN消息的無休止交換,當(dāng)服務(wù)器設(shè)備30B進(jìn)入這種狀態(tài)時,使服務(wù)器設(shè)備30B放棄SYN/URG消息。
接下來,將參考圖9,給出客戶機(jī)設(shè)備20模仿傳統(tǒng)服務(wù)器設(shè)備40并向服務(wù)器設(shè)備30發(fā)送SYN消息的第二狀態(tài)的說明。首先,當(dāng)按照與圖8所示上述情況相同的方式接收到SYN消息時,服務(wù)器設(shè)備30向服務(wù)器設(shè)備40發(fā)送SYN/URG消息。
圖9的服務(wù)器設(shè)備40是根據(jù)TCP進(jìn)行通信的傳統(tǒng)服務(wù)器設(shè)備,并且當(dāng)接收到上述SYN/URG消息時,向SYN/URG消息的源發(fā)送SYN/ACK消息。在這種情況下,如圖9所示,由于服務(wù)器設(shè)備40獨(dú)立地將隨機(jī)初始序列號設(shè)置為SYN/ACK消息的序列號,包含在SYN/ACK消息中的序列號(Nb)是獨(dú)立于寫入在從客戶機(jī)設(shè)備20發(fā)送的SYN消息中的SYN消息的序列號(N0)并且與其無關(guān)的編號。另一方面,如果客戶機(jī)設(shè)備20沒有模仿其它服務(wù)器設(shè)備,當(dāng)從本實(shí)施例的服務(wù)器設(shè)備30返回SYN/URG消息,作為從客戶機(jī)設(shè)備20發(fā)送到服務(wù)器設(shè)備30的初始消息的響應(yīng)時,客戶機(jī)設(shè)備20確定這是同時連接狀態(tài),并且當(dāng)遞增確認(rèn)號之后,向服務(wù)器設(shè)備30發(fā)送SYN/ACK消息,所述SYN/ACK消息中包含了與包含在發(fā)送到服務(wù)器設(shè)備30的初始SYN消息相同的數(shù)據(jù)。因此,在寫入在SYN/ACK消息中的序列號與包含在SYN消息中的序列號相同的情況下,可以將SYN/ACK消息的源確定為與初始SYN消息的源相同。換句話說,在寫入在SYN/ACK消息中的序列號與在SYN/ACK消息的接收之前接收到的SYN消息中包含的不同的情況下,服務(wù)器設(shè)備30確定SYN/ACK消息是非法消息,于是,使服務(wù)器設(shè)備30發(fā)送RST(RESSET)消息。結(jié)果,暫停了建立連接的操作,并且防止了SYN消息的無休止交換。
在本變型4中,在特定通信端口用于從對應(yīng)設(shè)備發(fā)送的SYN消息的情況下,為此,使服務(wù)器設(shè)備30A返回包含了附加數(shù)據(jù)的SYN消息。然而,由于模仿其它設(shè)備的對應(yīng)設(shè)備在發(fā)送SYN消息時不必使用特定通信端口,服務(wù)器設(shè)備30可以將附加數(shù)據(jù)添加到SYN消息中,作為對于從對應(yīng)設(shè)備發(fā)送的每一個SYN消息的響應(yīng),而與是否利用特定通信端口從對應(yīng)設(shè)備發(fā)送SYN消息無關(guān)。
C-5變型5在上述實(shí)施例中,提前將用于使控制單元100實(shí)現(xiàn)本發(fā)明的服務(wù)器設(shè)備特有的功能的軟件存儲在非易失性存儲設(shè)備120中。為了存儲軟件,除了硬盤以外,存在可以用作非易失性存儲設(shè)備的其它介質(zhì),例如CD-ROM(壓縮盤只讀存儲器)、DVD(數(shù)字多功能盤)等,通常利用這種介質(zhì)將軟件安裝到通用計(jì)算機(jī)設(shè)備上。按照這種方式,可以使處于已有通信系統(tǒng)中的服務(wù)器設(shè)備用作根據(jù)本發(fā)明的服務(wù)器設(shè)備。
C-6變型6在上述實(shí)施例中,當(dāng)其每一次接收到來自客戶機(jī)設(shè)備20的SYN消息200時,使服務(wù)器設(shè)備30發(fā)送SYN消息205,以便從客戶機(jī)設(shè)備20發(fā)送SYN/ACK消息210??蛇x地,只有當(dāng)確定服務(wù)器設(shè)備20處可用的資源稀缺時,服務(wù)器設(shè)備30才發(fā)送SYN消息205,作為對于從客戶機(jī)設(shè)備20接收到的SYN消息200的響應(yīng)。具體地,例如,通過連續(xù)地更新示出了已占用存儲器區(qū)域相對于整個存儲器容量的百分?jǐn)?shù)的數(shù)據(jù),服務(wù)器設(shè)備30的CPU100監(jiān)控例如RAM的存儲器單元的可用容量。當(dāng)接收到來自客戶機(jī)設(shè)備20的SYN消息200時,確定存儲器單元的可用容量是否超出了百分?jǐn)?shù)的特定閾值。當(dāng)確定否定時,根據(jù)傳統(tǒng)的3方握手方法,向客戶機(jī)設(shè)備發(fā)送SYN/ACK消息;當(dāng)確定存儲器單元的可用容量超出了特定閾值時,即,當(dāng)確定服務(wù)器設(shè)備30處的可用資源稀缺時,向客戶機(jī)設(shè)備20發(fā)送SYN消息205。因此,由于在正常操作器件使用了傳統(tǒng)的3方握手方法,并且只有當(dāng)發(fā)現(xiàn)服務(wù)器設(shè)備處的可用資源稀缺時才使用本發(fā)明的連接建立方法,能夠使由發(fā)送本發(fā)明方法的一個額外消息所引起的開銷的潛在負(fù)面效果最小。因此,能夠有效地對付SYN洪泛攻擊。
權(quán)利要求
1.一種服務(wù)器設(shè)備,包括接收裝置,用于接收從對應(yīng)設(shè)備發(fā)送的消息;發(fā)送裝置,用于當(dāng)所述接收裝置接收到第一消息時,向所述對應(yīng)設(shè)備發(fā)送請求建立要用于接收從對應(yīng)設(shè)備發(fā)送的數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向所述對應(yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且請求所述下行連接的建立;讀取裝置,用于當(dāng)所述接收裝置接收到包含標(biāo)識符的第三消息時,從第三消息中讀取該標(biāo)識符,請求所述下行連接的建立,并確認(rèn)所述第二消息的接收;以及連接建立裝置,用于根據(jù)由所述讀取裝置讀取的所述標(biāo)識符,建立與所述對應(yīng)設(shè)備的所述下行連接。
2.根據(jù)權(quán)利要求1所述的服務(wù)器設(shè)備,其特征在于,在所述第三消息包含指定了用于通過所述下行連接向所述對應(yīng)設(shè)備發(fā)送數(shù)據(jù)的通信模式的附加數(shù)據(jù)的情況下,除了所述標(biāo)識符以外,所述讀取裝置還讀取所述附加數(shù)據(jù);以及所述連接建立裝置根據(jù)由所述讀取裝置讀取的所述標(biāo)識符和所述附加數(shù)據(jù)來建立所述下行連接。
3.根據(jù)權(quán)利要求1所述的服務(wù)器設(shè)備,其特征在于還包括,確定裝置,用于根據(jù)所述第一和第三消息的內(nèi)容來確定所述第一消息的源是否與第三消息的源相同,其中,只有當(dāng)所述確定的結(jié)果肯定時,所述讀取裝置才從第三消息中讀取標(biāo)識符。
4.根據(jù)權(quán)利要求3所述的服務(wù)器設(shè)備,其特征在于,所述第一和第三消息中的每一個包含序列號數(shù)據(jù),所述序列號數(shù)據(jù)示出了當(dāng)發(fā)送數(shù)據(jù)時由第一和第三消息的每一個源所使用的消息的序列號的初始值;以及其中當(dāng)包含在所述第一消息中的所述序列號數(shù)據(jù)與包含在所述第三消息中的所述序列號數(shù)據(jù)相同時,所述確定裝置確定所述第一消息的源與所述第三消息的源相同。
5.根據(jù)權(quán)利要求1所述的服務(wù)器設(shè)備,其特征在于,如果消息包含預(yù)定區(qū)域內(nèi)的附加數(shù)據(jù),則所述接收裝置丟棄從對應(yīng)設(shè)備發(fā)送的消息;以及當(dāng)將所述附加消息寫入所述預(yù)定區(qū)域之后,所述發(fā)送裝置發(fā)送所述第二消息。
6.根據(jù)權(quán)利要求5所述的服務(wù)器設(shè)備,其特征在于還包括,確定裝置,用于根據(jù)所述第一消息的內(nèi)容,確定是否通過特定通信端口發(fā)送由所述接收裝置接收的所述第一消息;以及在所述確定裝置確定通過所述特定通信端口發(fā)送所述第一消息的情況下,當(dāng)將所述附加數(shù)據(jù)寫入所述預(yù)定區(qū)域之后,所述發(fā)送裝置發(fā)送所述第二消息。
7.一種服務(wù)器設(shè)備,包括通信裝置;以及控制裝置,其中控制裝置執(zhí)行第一處理,在所述通信裝置接收到第一消息的情況下,所述通信裝置發(fā)送請求建立用于從對應(yīng)設(shè)備接收數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向所述對應(yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且所述第一消息還請求所述下行連接的建立;第二處理,當(dāng)所述通信裝置接收到包含標(biāo)識符第三消息時,從所述第三消息中讀取所述標(biāo)識符,請求所述下行連接的建立,并確認(rèn)所述第二消息的接收;以及第三處理,根據(jù)在所述第二處理中讀取的所述標(biāo)識符,建立所述下行連接。
8.一種控制服務(wù)器設(shè)備的方法,所述服務(wù)器設(shè)備建立與對應(yīng)設(shè)備之間的連接,并且向所述對應(yīng)設(shè)備發(fā)送數(shù)據(jù),其中使所述服務(wù)器設(shè)備順序地執(zhí)行第一步驟,在從所述對應(yīng)設(shè)備發(fā)送第一消息的情況下,發(fā)送請求建立用于從所述對應(yīng)設(shè)備接收數(shù)據(jù)的上行連接的第二消息,所述第一消息包含識別要用于向所述對應(yīng)設(shè)備發(fā)送數(shù)據(jù)的下行連接的標(biāo)識符,并且所述第一消息還請求所述下行連接的建立;第二步驟,當(dāng)從所述對應(yīng)設(shè)備發(fā)送包含標(biāo)識符的第三消息時,從所述第三消息中讀取該標(biāo)識符,請求所述下行連接的建立,并確認(rèn)所述第二消息;以及第三步驟,根據(jù)在所述第二步驟中讀取的所述標(biāo)識符,建立所述下行連接。
9.一種連接建立方法,包括以下順序步驟第一步驟,從客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送請求建立用于接收數(shù)據(jù)的下行連接的第一消息;第二步驟,從已經(jīng)接收到所述第一消息的所述服務(wù)器設(shè)備發(fā)送第二消息,所述第二消息請求用于從所述客戶機(jī)設(shè)備接收數(shù)據(jù)的上行連接的建立;第三步驟,從已經(jīng)接收到所述第二消息的所述客戶機(jī)設(shè)備向所述服務(wù)器設(shè)備發(fā)送確認(rèn)所述第二消息并請求所述下行連接的建立的第三消息;以及第四步驟,根據(jù)所述第三消息的內(nèi)容,在已經(jīng)接收到所述第三消息的所述服務(wù)器設(shè)備處建立所述下行連接。
全文摘要
公開了一種服務(wù)器設(shè)備及其控制方法和使用該服務(wù)器建立連接的方法,其中,當(dāng)在客戶機(jī)設(shè)備和服務(wù)器設(shè)備之間建立連接時,從客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送請求建立下行連接的第一消息,使已經(jīng)接收到第一消息的服務(wù)器設(shè)備向客戶機(jī)設(shè)備發(fā)送請求建立上行連接的第二消息。使已經(jīng)接收到第二消息的客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送確認(rèn)第二消息并請求建立下行連接的第三消息。使已經(jīng)接收到第三消息的服務(wù)器設(shè)備根據(jù)第三消息的內(nèi)容建立下行連接。
文檔編號H04L12/28GK1728671SQ200510088428
公開日2006年2月1日 申請日期2005年7月28日 優(yōu)先權(quán)日2004年7月29日
發(fā)明者三宅基治, 中川智尋, 稻村浩 申請人:株式會社Ntt都科摩