通信設(shè)備、通信系統(tǒng)、通信設(shè)備的控制方法以及程序的制作方法
【專利摘要】本發(fā)明公開了通信設(shè)備、通信系統(tǒng)、通信設(shè)備的控制方法。所述通信設(shè)備包括:發(fā)送源映射算法獲取部,其獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào);目的地映射算法獲取部,其獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);以及生成部,其在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。所述控制方法包括步驟:獲取發(fā)送源映射算法;獲取目的地映射算法;生成外部端口號(hào)。所述通信系統(tǒng)包括服務(wù)器和上述通信設(shè)備。根據(jù)本發(fā)明,能夠提高各裝置間直接通信成功的可能性。
【專利說明】通信設(shè)備、通信系統(tǒng)、通信設(shè)備的控制方法以及程序
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信設(shè)備、通信系統(tǒng)、通信設(shè)備的控制方法以及程序。具體來說,本發(fā)明涉及與其它通信設(shè)備進(jìn)行直接通信的通信設(shè)備、通信系統(tǒng)、通信設(shè)備的控制方法以及程序。
【背景技術(shù)】
[0002]在相關(guān)技術(shù)中,使用NAT (Network Address Translat1n,網(wǎng)絡(luò)地址轉(zhuǎn)換)功能來暫時(shí)避免IPv4 (Internet Protocol vers1n4,互聯(lián)網(wǎng)協(xié)議版本4)地址枯竭的問題。NAT功能表示將IP (Internet Protocol,互聯(lián)網(wǎng)協(xié)議)地址轉(zhuǎn)換為另一 IP地址的功能。近年來,經(jīng)常使用能夠轉(zhuǎn)換IP地址以及端口號(hào)的NAPT (Network Address Port Translat1n,網(wǎng)絡(luò)地址端口轉(zhuǎn)換)或者被稱作“ IP偽裝”的NAT功能。
[0003]在NAPT中,例如,將外部IP地址和外部端口號(hào)分配給LAN(Local Area Network,局域網(wǎng))內(nèi)的內(nèi)部IP (Internet Protocol,互聯(lián)網(wǎng)協(xié)議)地址和內(nèi)部端口號(hào)。由于諸如路由器的NAT設(shè)備能夠分配多個(gè)外部端口號(hào),因此,能夠通過NAPT將多個(gè)內(nèi)部IP地址和一個(gè)外部IP地址相互轉(zhuǎn)換。以此方式,LAN內(nèi)的多個(gè)裝置可利用一個(gè)外部IP地址,且同時(shí)與外部裝置進(jìn)行通信。
[0004]這里,在NAT設(shè)備將外部端口號(hào)動(dòng)態(tài)分配給LAN內(nèi)的裝置的情況下,LAN外部的裝置難以獲取與LAN內(nèi)的裝置對(duì)應(yīng)的外部端口號(hào)。為解決這種問題,使外部裝置在NAT設(shè)備的控制下訪問裝置被稱作“NAT穿越”。
[0005]作為實(shí)現(xiàn)NAT穿越的方法,雖然存在使用者手動(dòng)進(jìn)行將外部端口號(hào)分配(即端口映射)給內(nèi)部IP地址的方法,但由于使用者必須具有專門的知識(shí),因此難以實(shí)行。因此,為自動(dòng)進(jìn)行端口映射,利用諸如UPnP (Universal Plug and Play,通用即插即用)和STUN(Simple Traversal of UDP through NATs, UDP對(duì)NAT的簡(jiǎn)單穿越)的協(xié)議。在這些協(xié)議中,在UPnP中僅能夠進(jìn)行靜態(tài)端口映射,而且,除非NAT設(shè)備和裝置適應(yīng)UPnP,否則不適用,因此缺乏通用性。
[0006]同時(shí),在STUN中,如果裝置適應(yīng)STUN,則可不依賴于NAT設(shè)備來進(jìn)行NAT穿越。在STUN中,裝置S能夠調(diào)查關(guān)于通信對(duì)象的裝置D的端口映射的算法。而且,在利用這種STUN的通信系統(tǒng)中,經(jīng)常使用稱作“打洞(hole punching)”的技術(shù)。在打洞過程中,例如,裝置D通過裝置D側(cè)的NAT設(shè)備向裝置S發(fā)送打洞包。通過這種打洞包,在裝置D側(cè)的NAT設(shè)備中注冊(cè)(換言之,釋放)能夠用于與裝置S通信的端口號(hào)。然而,如果在裝置S側(cè)也存在NAT設(shè)備,則該打洞包無法到達(dá)裝置S。這是因?yàn)椋藭r(shí),在裝置S側(cè)的NAT設(shè)備中未釋放能夠用于與裝置D通信的端口號(hào)。
[0007]由于打洞包無法到達(dá)裝置S,因此,裝置S不可能獲取在裝置D側(cè)的NAT設(shè)備中釋放的端口號(hào)。因此,裝置S根據(jù)通過STUN調(diào)查到的端口映射的算法來預(yù)測(cè)釋放的端口號(hào),并將包發(fā)送到該端口號(hào)。通過利用這些STUN和打洞,不同LAN內(nèi)的裝置相互間能夠進(jìn)行直接通信。通過進(jìn)行裝置間的直接通信,降低了服務(wù)器與裝置間的通信量以及服務(wù)器的負(fù)荷。
[0008]為進(jìn)行這樣的直接通信,由于裝置S和裝置D必須預(yù)先獲取對(duì)方的IP地址和端口號(hào),因此,提出了這樣一種通信系統(tǒng),其中,服務(wù)器將IP地址等通知給上述各裝置(參照專利文獻(xiàn) JP2005-45678A)。
【發(fā)明內(nèi)容】
[0009]然而,在上述相關(guān)技術(shù)中,存在著直接通信失敗的擔(dān)憂。例如,當(dāng)用于生成打洞包的裝置D與另一裝置S’進(jìn)行通信時(shí),裝置S所預(yù)測(cè)的外部端口號(hào)可能被用在與所述裝置S’的通信中。在此情況下,由于裝置S所預(yù)測(cè)的端口號(hào)與打洞實(shí)際釋放的端口號(hào)的值不同,因此裝置S發(fā)送的包無法到達(dá)裝置D。因此,直接通信失敗。
[0010]鑒于這種狀況進(jìn)行了本發(fā)明,期望提高裝置間直接通信成功的可能性。
[0011]根據(jù)本發(fā)明的第一實(shí)施例,提供了一種通信設(shè)備、一種通信設(shè)備的控制方法以及一種用于使計(jì)算機(jī)執(zhí)行所述方法的程序。所述通信設(shè)備包括:發(fā)送源映射算法獲取部,所述發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào);目的地映射算法獲取部,所述目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);以及生成部,所述生成部在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。這導(dǎo)致了這樣的效果:在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配的外部端口號(hào)。
[0012]根據(jù)本發(fā)明的第一實(shí)施例,所述發(fā)送源映射算法獲取部可以包括:映射調(diào)查請(qǐng)求包發(fā)送部,所述映射調(diào)查請(qǐng)求包發(fā)送部向多個(gè)不同的目的地發(fā)送作為映射調(diào)查請(qǐng)求包的多個(gè)包,所述多個(gè)包用于請(qǐng)求關(guān)于分配給所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)的通知;和映射調(diào)查應(yīng)答包接收部,所述映射調(diào)查應(yīng)答包接收部接收關(guān)于所述映射調(diào)查請(qǐng)求包的映射調(diào)查應(yīng)答包,并且根據(jù)由所述映射調(diào)查應(yīng)答包通知的外部地址和外部端口號(hào)來獲取所述發(fā)送源映射算法。這導(dǎo)致了這樣的效果:根據(jù)由所述映射調(diào)查應(yīng)答包通知的外部地址和外部端口號(hào)獲取所述發(fā)送源映射算法。
[0013]根據(jù)本發(fā)明第一實(shí)施例,所述通信設(shè)備可以還包括:發(fā)送源過濾算法獲取部,其獲取作為發(fā)送源過濾算法的算法,該算法判斷是否使指向所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的包通過;和目的地過濾算法獲取部,其獲取作為目的地過濾算法的算法,該算法判斷是否使指向所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的包通過。所述生成部在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下可以生成所述外部端口號(hào)。這導(dǎo)致了這樣的效果:在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成所述外部端口號(hào)。
[0014]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備還可以包括:表,所述表被構(gòu)造用來存儲(chǔ)這樣的標(biāo)志,所述標(biāo)志示出了:對(duì)于所述發(fā)送源映射算法和所述目的地映射算法的每種組合,所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜;和算法判定部,所述算法判定部根據(jù)與所述發(fā)送源映射算法和所述目的地映射算法的組合相對(duì)應(yīng)的所述標(biāo)志來判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。所述生成部在所述算法判定部判定所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下可以生成所述外部端口號(hào)。這造成了這樣的效果:根據(jù)對(duì)于所述發(fā)送源映射算法和所述目的地映射算法的各種組合存儲(chǔ)在表中的標(biāo)志,判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0015]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備還可以包括:同一內(nèi)部網(wǎng)絡(luò)地址判定部,所述同一內(nèi)部網(wǎng)絡(luò)地址判定部被構(gòu)造用來判斷所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是否是同一局域網(wǎng)內(nèi)的地址。所述算法判定部在所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是位于不同局域網(wǎng)內(nèi)的地址的情況下可以判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。這造成了這樣的效果:在所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是位于不同局域網(wǎng)內(nèi)的地址的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0016]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備,還可以包括:地址類型判定部,地址類型判定部被構(gòu)造用來判斷被分配的地址是否是所述內(nèi)部地址。所述算法判定部在所述被分配的地址是所述內(nèi)部地址的情況下可以判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。這造成了這樣的效果:在所述被分配的地址是所述內(nèi)部地址的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0017]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備還可以包括:轉(zhuǎn)換裝置判定部,所述轉(zhuǎn)換裝置判定部被構(gòu)造用來判斷發(fā)送源轉(zhuǎn)換裝置是否與目的地轉(zhuǎn)換裝置相同,所述發(fā)送源轉(zhuǎn)換裝置執(zhí)行所述發(fā)送源映射算法并且將所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部地址和外部端口號(hào),所述目的地轉(zhuǎn)換裝置執(zhí)行所述目的地映射算法并且將所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部地址和外部端口號(hào)。所述算法判定部在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下可以判斷所述目的地映射算法是否比所述發(fā)送源映射算法更復(fù)雜。這造成了這樣的效果:在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下,判斷所述目的地映射算法是否比所述發(fā)送源映射算法更復(fù)雜。
[0018]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備還可以包括:環(huán)回判定部,所述環(huán)回判定部被構(gòu)造用來判斷所述發(fā)送源轉(zhuǎn)換裝置是否進(jìn)行環(huán)回處理,所述環(huán)回處理將來自被分配給所述發(fā)送源的內(nèi)部地址的外部地址的包轉(zhuǎn)送至與所述發(fā)送源的所述內(nèi)部地址相對(duì)應(yīng)的外部地址。所述算法判定部在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下,或者在所述發(fā)送源轉(zhuǎn)換裝置和所述目的地轉(zhuǎn)換裝置相同并且所述發(fā)送源轉(zhuǎn)換裝置進(jìn)行所述環(huán)回處理的情況下,可以判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。這造成了這樣的效果:在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下,或者在所述發(fā)送源轉(zhuǎn)換裝置和所述目的地轉(zhuǎn)換裝置相同并且所述發(fā)送源轉(zhuǎn)換裝置進(jìn)行所述環(huán)回處理的情況下,判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0019]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備還可以包括:打洞包發(fā)送部,所述打洞包發(fā)送部在所述發(fā)送源映射算法不比所述目的地映射算法更復(fù)雜的情況下將包發(fā)送至被分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)作為打洞包。這造成了這樣的效果:在所述發(fā)送源映射算法不比所述目的地映射算法更復(fù)雜的情況下,打洞包被發(fā)送至被分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)。
[0020]根據(jù)本發(fā)明的第一實(shí)施例,所述打洞包發(fā)送部在所述發(fā)送源映射算法是特定算法的情況下可以生成所述外部端口號(hào)并且將所述打洞包發(fā)送至所述外部端口號(hào)和所述外部地址。這造成了這樣的效果:在所述發(fā)送源映射算法是特定算法的情況下,所述打洞包被發(fā)送至所述外部地址和生成的外部端口號(hào)。
[0021]根據(jù)本發(fā)明的第一實(shí)施例,所述通信設(shè)備還可以包括包發(fā)送部,所述包發(fā)送部在生成了所述外部端口號(hào)的時(shí)候向生成的外部端口號(hào)發(fā)送包。這造成了這樣的效果:在生成了所述外部端口號(hào)的時(shí)候,包被發(fā)送至該外部端口號(hào)。
[0022]本發(fā)明第二實(shí)施例提供了一種通信系統(tǒng),所述通信系統(tǒng)包括:服務(wù)器,所述服務(wù)器發(fā)送作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);和通信設(shè)備,其包括發(fā)送源映射算法獲取部、目的地映射算法接收部和生成部,所述發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào),所述目的地映射算法接收部被構(gòu)造用來接收所述目的地映射算法,并且所述生成部在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
[0023]根據(jù)本發(fā)明的第二實(shí)施例,所述服務(wù)器可以包括:目的地映射算法發(fā)送部,其被構(gòu)造用來發(fā)送所述目的地映射算法;發(fā)送源過濾算法發(fā)送部,其被構(gòu)造用來獲取用于判斷是否使指向所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的包通過的算法,并且發(fā)送該算法作為發(fā)送源過濾算法;以及目的地過濾算法發(fā)送部,其被構(gòu)造用來獲取用于判斷是否使指向所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的包通過的算法,并且發(fā)送該算法作為目的地過濾算法。所述通信設(shè)備還可以包括:發(fā)送源過濾算法接收部,其被構(gòu)造用來接收所述發(fā)送源過濾算法;和目的地過濾算法接收部,其被構(gòu)造用來接收所述目的地過濾算法。所述生成部在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,可以生成被重新分配的外部端口號(hào)。這造成了這樣的效果:在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,生成所述外部端口號(hào)。
[0024]根據(jù)本發(fā)明的第二實(shí)施例,所述發(fā)送源過濾算法發(fā)送部和所述目的地過濾算法發(fā)送部可以包括:過濾調(diào)查請(qǐng)求包發(fā)送部,其被構(gòu)造用來發(fā)送來自所述服務(wù)器中的不同的外部地址和外部端口號(hào)的多個(gè)包作為過濾調(diào)查請(qǐng)求包,所述多個(gè)包請(qǐng)求對(duì)于被分配給所述發(fā)送源和所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部地址和外部端口號(hào)的應(yīng)答;和過濾算法獲取部,其被構(gòu)造用來根據(jù)是否存在對(duì)于每個(gè)所述過濾調(diào)查請(qǐng)求包的應(yīng)答來獲取并發(fā)送所述發(fā)送源過濾算法和所述目的地過濾算法。這造成了這樣的效果:根據(jù)是否存在對(duì)于每個(gè)所述過濾調(diào)查請(qǐng)求包的應(yīng)答,獲取所述發(fā)送源過濾算法和所述目的地過濾算法。
[0025]根據(jù)本發(fā)明的實(shí)施例,能夠提供這樣卓越的優(yōu)點(diǎn):能夠提高各裝置間直接通信成功的可能性。
【專利附圖】
【附圖說明】
[0026]圖1是圖示第一實(shí)施例中的通信系統(tǒng)的一個(gè)構(gòu)造示例的框圖;
[0027]圖2是圖示第一實(shí)施例中的路由器的一個(gè)構(gòu)造示例的框圖;
[0028]圖3圖示了第一實(shí)施例中的地址轉(zhuǎn)換表的一個(gè)構(gòu)造示例;
[0029]圖4是圖示第一實(shí)施例中的裝置的一個(gè)構(gòu)造示例的框圖;
[0030]圖5是圖示第一實(shí)施例中的服務(wù)器的一個(gè)構(gòu)造示例的框圖;
[0031]圖6圖示了第一實(shí)施例中的存儲(chǔ)在裝置信息存儲(chǔ)部520中的信息的一個(gè)示例;
[0032]圖7圖示了第一實(shí)施例中的映射調(diào)查請(qǐng)求包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0033]圖8說明了第一實(shí)施例中的映射調(diào)查應(yīng)答包的生成方法;
[0034]圖9圖示了第一實(shí)施例中的在端點(diǎn)獨(dú)立映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0035]圖10圖示了第一實(shí)施例中的在依賴地址的映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0036]圖11圖示了第一實(shí)施例中的在依賴地址和端口的映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0037]圖12圖示了第一實(shí)施例中的在隨機(jī)映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0038]圖13圖示了第一實(shí)施例中的映射算法通知包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0039]圖14圖示了第一實(shí)施例中的判定表的一個(gè)構(gòu)造示例;
[0040]圖15是圖示第一實(shí)施例中的裝置操作的一個(gè)示例的流程圖;
[0041]圖16是圖示第一實(shí)施例中的映射算法獲取處理的一個(gè)示例的流程圖;
[0042]圖17是圖示第一實(shí)施例中的NAT穿越處理的一個(gè)示例的流程圖;
[0043]圖18是圖示第一實(shí)施例中的服務(wù)器操作的一個(gè)示例的流程圖;
[0044]圖19是圖示第一實(shí)施例中的服務(wù)器和裝置操作的一個(gè)示例的時(shí)序圖;
[0045]圖20圖示了第一實(shí)施例中的外部端口號(hào)的使用狀況的一個(gè)示例;
[0046]圖21是圖示第二實(shí)施例中的路由器的一個(gè)構(gòu)造示例的框圖;
[0047]圖22圖示了第二實(shí)施例中的過濾表的一個(gè)構(gòu)造示例;
[0048]圖23是圖示第二實(shí)施例中的服務(wù)器的一個(gè)構(gòu)造示例的框圖;
[0049]圖24圖示了第二實(shí)施例中的過濾調(diào)查請(qǐng)求包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0050]圖25圖示第二實(shí)施例中的通過端點(diǎn)獨(dú)立過濾和依賴地址的過濾處理的分組的一個(gè)示例的圖;
[0051]圖26是圖示第二實(shí)施例中的通過依賴地址和端口的過濾來處理的包的一個(gè)示例;
[0052]圖27圖示了第二實(shí)施例中的過濾算法通知包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;
[0053]圖28是圖示第二實(shí)施例中的裝置的一個(gè)構(gòu)造示例的框圖;
[0054]圖29圖示了第二實(shí)施例中的判定表的一個(gè)構(gòu)造示例;
[0055]圖30是圖示了第二實(shí)施例中的裝置操作的一個(gè)示例的流程圖;
[0056]圖31是圖示第二實(shí)施例中的一個(gè)過濾算法獲取處理的流程圖;
[0057]圖32是圖示第二實(shí)施例中的服務(wù)器操作的一個(gè)示例的流程圖;
[0058]圖33圖示了第二實(shí)施例中的外部端口號(hào)的使用狀況的一個(gè)示例;
[0059]圖34是圖示第三實(shí)施例中的裝置的一個(gè)構(gòu)造示例的框圖;
[0060]圖35是圖示第三實(shí)施例中的網(wǎng)絡(luò)類型判定部的一個(gè)構(gòu)造示例的框圖;
[0061]圖36圖示了第三實(shí)施例中的裝置操作的一個(gè)示例;
[0062]圖37圖示了第三實(shí)施例中的網(wǎng)絡(luò)類型Tl和網(wǎng)絡(luò)類型T2的一個(gè)示例;
[0063]圖38圖示了第三實(shí)施例中的網(wǎng)絡(luò)類型T4和網(wǎng)絡(luò)類型T5的一個(gè)示例;
[0064]圖39是圖示第三實(shí)施例中的裝置操作的一個(gè)示例的流程圖;并且
[0065]圖40是圖示第三實(shí)施例中的NAT穿越處理的一個(gè)示例的流程圖。
【具體實(shí)施方式】
[0066]下面,參照附圖來詳述本發(fā)明的優(yōu)選實(shí)施例。注意,在本申請(qǐng)文件和附圖中,以相同的附圖標(biāo)記來表示具有基本相同的功能和構(gòu)造的構(gòu)造元件,且省略了對(duì)這些構(gòu)造元件的重復(fù)說明。
[0067]以下,說明用于實(shí)施本發(fā)明的方式(以下,稱作“實(shí)施例”)。以下列順序進(jìn)行說明。
[0068]1.第一實(shí)施例(根據(jù)映射算法來判定主機(jī)的示例)
[0069]2.第二實(shí)施例(根據(jù)過濾算法和映射算法來判定主機(jī)的示例)
[0070]3.第三實(shí)施例(判定網(wǎng)絡(luò)類型之后根據(jù)映射算法來判定主機(jī)的示例)
[0071]1.第一實(shí)施例
[0072][通信系統(tǒng)的構(gòu)造示例]
[0073]圖1是圖示第一實(shí)施例中的通信系統(tǒng)的一個(gè)構(gòu)造示例的框圖。該通信系統(tǒng)表示各裝置間進(jìn)行直接通信的系統(tǒng),且用于IP電話服務(wù)、視頻會(huì)議系統(tǒng)或在線游戲等。例如,所述通信系統(tǒng)包括裝置100、裝置101以及服務(wù)器500。
[0074]裝置100和裝置101是處于相互不同的LAN內(nèi)的通信設(shè)備。通過這些LAN內(nèi)的DHCP (Dynamic Host Configurat1n Protocol,動(dòng)態(tài)主機(jī)配置協(xié)議)服務(wù)器等將私有IP地址分配給裝置100和裝置101。圖1中省略了 DHCP服務(wù)器。這里,裝置100或裝置101可采用包括全局IP地址的配置。而且,可為裝置100和裝置101設(shè)定靜態(tài)私有IP地址。而且,裝置100和裝置101是權(quán)利要求書中所述的通信設(shè)備的一個(gè)示例。
[0075]裝置100與路由器300連接,而裝置101與路由器301連接。該路由器300將裝置100的IP地址和端口號(hào)轉(zhuǎn)換為路由器300的全局IP地址和端口號(hào)。同時(shí),路由器301將裝置101的IP地址和端口號(hào)轉(zhuǎn)換為路由器301的全局IP地址和端口號(hào)。
[0076]這里,將轉(zhuǎn)換前的IP地址(私有IP地址等)和端口號(hào)稱作“內(nèi)部IP地址”和“內(nèi)部端口號(hào)”。而且,將轉(zhuǎn)換后的全局IP地址和端口號(hào)稱作“外部IP地址”和“外部端口號(hào)”。
[0077]該路由器300不僅與裝置100連接,還可選擇地連接至與裝置100處于同一 LAN中的裝置。類似地,與裝置101處于同一 LAN內(nèi)的裝置與路由器301可選擇地連接。而且,裝置100和裝置101通過路由器300和路由器301與諸如互聯(lián)網(wǎng)的WAN(Wide Area Network,廣域網(wǎng))400連接。
[0078]而且,雖然路由器采用轉(zhuǎn)換IP地址和端口號(hào)的構(gòu)造,但除路由器以外的其它設(shè)備也可采用轉(zhuǎn)換地址和端口的構(gòu)造。例如,安裝有具有NAT功能的0S(0perat1n System,操作系統(tǒng))的設(shè)備可以轉(zhuǎn)換IP地址和端口號(hào)。
[0079]而且,可采用這樣的構(gòu)造,在該構(gòu)造中,在路由器300和301與WAN400之間還安裝有一個(gè)以上路由器,且路由器300和301經(jīng)由那些路由器連接至WAN400。
[0080]服務(wù)器500是用于管理裝置100和裝置101的設(shè)備。當(dāng)裝置100和裝置101進(jìn)行直接通信時(shí),服務(wù)器500將請(qǐng)求直接通信的信息發(fā)送至裝置100和裝置101。而且,多個(gè)全局IP地址被分配給服務(wù)器500。在后面說明這些IP地址的使用方法。
[0081]裝置100和裝置101與服務(wù)器500連接,且當(dāng)裝置100和裝置101中的一個(gè)裝置將用于請(qǐng)求與另一個(gè)裝置直接通信的會(huì)話建立請(qǐng)求包發(fā)送到服務(wù)器500時(shí),服務(wù)器500將所述包轉(zhuǎn)送至所述另一個(gè)裝置。
[0082]此外,裝置100獲取了這樣的映射算法,該映射算法將路由器300的外部IP地址和外部端口號(hào)分配給裝置100的內(nèi)部IP地址和內(nèi)部端口號(hào)。另一方面,裝置101還獲取了這樣的映射算法,該映射算法將路由器301的外部IP地址和外部端口號(hào)分配給裝置101的內(nèi)部IP地址和內(nèi)部端口號(hào)。裝置100和裝置101通過服務(wù)器500相互通知獲取的映射算法。而且,裝置100和裝置101通過服務(wù)器500相互通知它們的外部IP地址和外部端口號(hào)。
[0083]裝置100和裝置101根據(jù)所獲取的映射算法來判定它們中的哪個(gè)裝置成為主機(jī)。這里,主機(jī)是嘗試進(jìn)行直接通信的兩個(gè)裝置中的、預(yù)測(cè)由打洞包重新分配的(換言之,釋放的)外部端口號(hào)的裝置。另一方面,從機(jī)是可選擇地發(fā)送打洞包并且新釋放外部端口號(hào)的裝置。
[0084]從機(jī)可選擇地發(fā)送指向主機(jī)的包作為打洞包。此外,主機(jī)根據(jù)從機(jī)的外部端口號(hào)和從機(jī)可選擇地預(yù)測(cè)由從機(jī)重新分配的外部端口號(hào),并將通信包發(fā)送到所預(yù)測(cè)的端口號(hào)。以此方式,實(shí)現(xiàn)主機(jī)和從機(jī)間的直接通信。
[0085][路由器的構(gòu)造示例]
[0086]圖2是圖示第一實(shí)施例中的路由器300的一個(gè)構(gòu)造示例的框圖。路由器300包括路由處理部310、地址轉(zhuǎn)換部320以及地址轉(zhuǎn)換表330。路由器301的構(gòu)造類似于路由器300。
[0087]當(dāng)接收包時(shí),路由處理部310根據(jù)接收的包的目的地來選擇所述包的路徑(即,路由)。該路由處理部310將經(jīng)地址轉(zhuǎn)換后的來自LAN內(nèi)部的包轉(zhuǎn)送到外部,并將來自外部的包通過地址轉(zhuǎn)換部320轉(zhuǎn)送到內(nèi)部。
[0088]地址轉(zhuǎn)換部320將內(nèi)部IP地址、內(nèi)部端口號(hào)與外部IP地址、外部端口號(hào)相互轉(zhuǎn)換。當(dāng)接收從LAN內(nèi)部到外部的包時(shí),該地址轉(zhuǎn)換部320判斷在地址轉(zhuǎn)換表330中是否注冊(cè)有與所述包的發(fā)送源的內(nèi)部IP地址和內(nèi)部端口號(hào)相對(duì)應(yīng)的外部端口號(hào)。
[0089]如果注冊(cè)了對(duì)應(yīng)的外部端口號(hào),則地址轉(zhuǎn)換部320將內(nèi)部IP地址和內(nèi)部端口號(hào)轉(zhuǎn)換為路由器300的外部IP地址和路由器300的外部端口號(hào),并且將路由器300的外部IP地址和路由器300的外部端口號(hào)提供給路由處理部310。
[0090]另一方面,如果對(duì)應(yīng)的外部端口號(hào)未被注冊(cè),則地址轉(zhuǎn)換部320根據(jù)預(yù)設(shè)的映射算法將外部端口號(hào)重新分配給內(nèi)部IP地址和內(nèi)部端口號(hào),并且將該外部端口號(hào)注冊(cè)在地址轉(zhuǎn)換表330中。此外,地址轉(zhuǎn)換部320將內(nèi)部IP地址和內(nèi)部端口號(hào)轉(zhuǎn)換為路由器300的外部IP地址和所分配的外部端口號(hào),并且將路由器300的外部IP地址和所分配的外部端口號(hào)提供給路由處理部310。
[0091 ] 這里,例如使用端點(diǎn)獨(dú)立映射、依賴地址的映射、依賴地址和端口的映射以及隨機(jī)映射中的任何算法作為映射算法。在后面說明這些算法的細(xì)節(jié)。在這些算法中,將端點(diǎn)獨(dú)立映射、依賴地址的映射以及依賴地址和端口的映射定義為RFC (Request for Comments,請(qǐng)求注解)4787等。
[0092]而且,地址轉(zhuǎn)換部320從路由處理部310接收從LAN外部到內(nèi)部的包。地址轉(zhuǎn)換部320判斷在地址轉(zhuǎn)換表330中是否注冊(cè)有與所述包的目的地的外部端口號(hào)相對(duì)應(yīng)的內(nèi)部IP地址和內(nèi)部端口號(hào)。
[0093]如果注冊(cè)了對(duì)應(yīng)的內(nèi)部IP地址和內(nèi)部端口號(hào),則地址轉(zhuǎn)換部320將外部IP地址和外部端口號(hào)轉(zhuǎn)換為內(nèi)部IP地址和內(nèi)部端口號(hào),并且將內(nèi)部IP地址和內(nèi)部端口號(hào)轉(zhuǎn)送到目的地。
[0094]另一方面,如果對(duì)應(yīng)的內(nèi)部IP地址和內(nèi)部端口號(hào)未被注冊(cè),則地址轉(zhuǎn)換部320將接收到的包丟棄。
[0095][地址轉(zhuǎn)換表的構(gòu)造示例]
[0096]圖3圖示了第一實(shí)施例中的地址轉(zhuǎn)換表330的一個(gè)構(gòu)造示例。在該地址轉(zhuǎn)換表330中,為每個(gè)內(nèi)部IP地址和內(nèi)部端口號(hào)注冊(cè)有外部IP地址、外部端口號(hào)和目的地。
[0097]地址轉(zhuǎn)換表330中注冊(cè)的目的地是從LAN內(nèi)部到外部發(fā)送的包的目的地的IP地址和端口號(hào),且將所述目的地與所述包的發(fā)送源的內(nèi)部IP地址和內(nèi)部端口號(hào)相關(guān)聯(lián)地注冊(cè)。
[0098]該目的地用于判斷在映射算法中是否重新分配外部端口號(hào)。
[0099]具體來說,在端點(diǎn)獨(dú)立映射中不參照目的地。這是因?yàn)樵诙它c(diǎn)獨(dú)立映射中,當(dāng)與內(nèi)部IP地址和內(nèi)部端口號(hào)有關(guān)的外部端口號(hào)一旦被注冊(cè)時(shí),即使目的地改變也不再重新分配外部端口號(hào)。
[0100]例如,假設(shè)了這樣的情況,其中,存在(內(nèi)部IP地址:內(nèi)部端口號(hào))為(X1:xl)的裝置、(外部IP地址:外部端口號(hào))為(Yl:yl)的裝置以及(外部IP地址:外部端口號(hào))為(Y2:y2)的裝置。(XI:xl)的裝置例如為裝置101,且(Yl:yl)的裝置例如為服務(wù)器500。(Y2:y2)的裝置例如為路由器301。而且,路由器300的通信接口的外部IP地址為XI’,路由器300的外部端口號(hào)為xl’或x2’,等等。
[0101]在端點(diǎn)獨(dú)立映射中,當(dāng)在初始狀態(tài)下從(X1:xl)將包發(fā)送至(Yl:yl)時(shí),將路由器300的(Χ1':χ1')分配給(X1:xl)。然而,即使此后從(X1:xl)將包發(fā)送至(Υ2:y2),也不再將新的外部端口號(hào)分配給(X1:xl),并將包的發(fā)送源轉(zhuǎn)換為(XI’ =Xl')。
[0102]接著,在依賴地址的映射中,當(dāng)目的地IP地址改變時(shí),分配新的外部端口號(hào)。
[0103]在依賴地址的映射中,例如,當(dāng)在初始狀態(tài)下從(X1:xl)發(fā)送包至(Yl:yl)時(shí),與(X1:xl)相關(guān)聯(lián)地注冊(cè)(Χ1':χ1')和目的地Y1。此后,當(dāng)從(X1:xl)發(fā)送包至(Υ2:y2)時(shí),由于目的地IP地址不同,與目的地Y2相關(guān)聯(lián)地將(Χ1':x2’)重新分配給(X1:xl)。同時(shí),即使從(X1:xl)發(fā)送包至(Yl:y2)時(shí),由于目的地IP地址相同,因此,也不再分配新的外部端口號(hào)。圖3中示例的地址轉(zhuǎn)換表330是在該依賴地址的映射中使用的表。
[0104]此外,在依賴地址和端口的映射中,當(dāng)目的地的IP地址或端口號(hào)改變時(shí),分配新的外部端口號(hào)。
[0105]在依賴地址和端口的映射中,例如,當(dāng)在初始狀態(tài)下從(X1:xl)發(fā)送包至(Yl:yl)時(shí),與(X1:X1)相關(guān)聯(lián)地注冊(cè)(Χ1':Χ1')和目的地(Yl:yl)。此后,當(dāng)從(X1:xl)發(fā)送包至(Υ2:y2)時(shí),由于目的地IP地址不同,因此,與目的地(Y2:y2)相關(guān)聯(lián)地將(Χ1':χ2’ )重新分配給(X1:xl)。而且,即使在從(X1:xl)發(fā)送包至(Yl:y2)的情況下,由于目的地端口號(hào)不同,因此分配新的外部端口號(hào)。
[0106]在端點(diǎn)獨(dú)立映射、依賴地址的映射以及依賴地址和端口的映射這些映射中,分配規(guī)則地生成的外部端口號(hào)。例如,在分配某外部端口號(hào)xl’并且隨后分配新的外部端口號(hào)的情況下,分配使xl’遞增的編號(hào)。
[0107]與之對(duì)比,在隨機(jī)映射中,每當(dāng)目的地的IP地址或端口號(hào)改變時(shí),分配不規(guī)則地生成的外部端口號(hào)。
[0108]因此,在這些映射算法中,復(fù)雜性不同。依賴地址的映射比端點(diǎn)獨(dú)立映射更復(fù)雜,因?yàn)樵谝蕾嚨刂返挠成渲?,每?dāng)目的地改變時(shí)分配外部端口號(hào),而在端點(diǎn)獨(dú)立映射中,即使目的地改變也不分配新的外部端口號(hào)。而且,依賴地址和端口的映射比依賴地址的映射更復(fù)雜,因?yàn)樵谝蕾嚨刂泛投丝诘挠成渲?,每?dāng)目的地端口號(hào)改變時(shí)分配外部端口號(hào),而在依賴地址的映射中,即使目的地端口號(hào)改變也不分配新的外部端口號(hào)。而且,隨機(jī)映射比依賴地址和端口的映射更復(fù)雜,因?yàn)樵陔S機(jī)映射中,不規(guī)則地分配端口號(hào),而在依賴地址和端口的映射中,規(guī)則地分配端口號(hào)。
[0109]S卩,當(dāng)以復(fù)雜度的順序來排列時(shí),以從隨機(jī)映射、依賴地址和端口的映射、依賴地址的映射到端點(diǎn)獨(dú)立映射的順序來排列。
[0110]隨著算法變復(fù)雜,變得難以預(yù)測(cè)被重新分配的外部端口號(hào)。因此,期望裝置100或裝置101通過更簡(jiǎn)單的算法來預(yù)測(cè)分配的外部端口號(hào)。例如,假設(shè)這樣的情況,其中,用于支持裝置101的路由器301的映射算法比用于支持裝置100的路由器300的映射算法更復(fù)雜。在此情況下,裝置101可成為主機(jī),且裝置101僅需要根據(jù)與路由器300的更簡(jiǎn)單的映射算法相對(duì)應(yīng)的預(yù)測(cè)算法來預(yù)測(cè)外部端口號(hào)。
[0111][裝置的構(gòu)造示例]
[0112]圖4是圖示第一實(shí)施例中的裝置100的一個(gè)構(gòu)造示例的框圖。該裝置100包括映射算法獲取部150、主機(jī)/從機(jī)判定部160、判定表170以及直接通信部180。而且,映射算法獲取部150包括發(fā)送源映射算法獲取部151、映射算法通知部152以及目的地映射算法獲取部153。裝置101的構(gòu)造類似于裝置100。
[0113]發(fā)送源映射算法獲取部151獲取以下算法作為發(fā)送源映射算法,所述算法將外部端口號(hào)分配給發(fā)送源裝置的內(nèi)部IP地址和內(nèi)部端口號(hào)。當(dāng)請(qǐng)求直接通信時(shí),發(fā)送源映射算法獲取部151將用于指定通信對(duì)象裝置的會(huì)話建立請(qǐng)求包發(fā)送至服務(wù)器500。例如,根據(jù)SIP (Sess1n Initiat1n Protocol,會(huì)話發(fā)起協(xié)議)收發(fā)該會(huì)話建立請(qǐng)求包。
[0114]在發(fā)送會(huì)話建立請(qǐng)求包后,發(fā)送源映射算法獲取部151將多個(gè)映射調(diào)查請(qǐng)求包發(fā)送至服務(wù)器500。這些映射調(diào)查請(qǐng)求包表示這樣的包:其請(qǐng)求通知被分配給裝置100的內(nèi)部IP地址和內(nèi)部端口號(hào)的外部IP地址和外部端口號(hào)。如上所述,當(dāng)目的地改變時(shí)的映射方法隨著不同的映射算法而變化。為判斷此算法的差異,將多個(gè)映射調(diào)查請(qǐng)求包依次發(fā)送至各個(gè)目的地。
[0115]例如,依次發(fā)送不同目的地的四個(gè)映射調(diào)查請(qǐng)求包Rqml、Rqm2、Rqm3、Rqm4。Rqm2表示目的地IP地址與Rqml相同而目的地端口號(hào)與Rqml不同的包。Rqm3表示目的地IP地址與Rqml不同而端口號(hào)與Rqml相同的包。Rqm4表示目的地IP地址和端口號(hào)都與Rqml不同的包。為了由一個(gè)服務(wù)器500接收這四個(gè)包,請(qǐng)求多個(gè)外部IP地址。因此,將所述多個(gè)外部IP地址分配給服務(wù)器500的通信接口。
[0116]路由器300將外部IP地址和外部端口號(hào)分配給映射調(diào)查請(qǐng)求包的發(fā)送源的內(nèi)部IP地址和內(nèi)部端口號(hào)。服務(wù)器500生成映射調(diào)查應(yīng)答包Rpml并將映射調(diào)查應(yīng)答包Rpml返送到裝置100,映射調(diào)查應(yīng)答包Rpml將映射調(diào)查請(qǐng)求包Rqml的發(fā)送源的外部IP地址和外部端口號(hào)存儲(chǔ)在有效負(fù)荷中。類似地,服務(wù)器500根據(jù)映射調(diào)查請(qǐng)求包Rqm2、Rqm3和Rqm4來生成映射調(diào)查應(yīng)答包Rpm2、Rpm3和Rpm4,并將映射調(diào)查應(yīng)答包Rpm2、Rpm3和Rpm4返送到裝置100。
[0117]發(fā)送源映射算法獲取部151接收這些映射調(diào)查應(yīng)答包,并從所述有效負(fù)荷獲取外部IP地址和外部端口號(hào)。此外,發(fā)送源映射算法獲取部151從這些外部IP地址和外部端口號(hào)獲取發(fā)送源映射算法。
[0118]更具體地,在四個(gè)映射調(diào)查請(qǐng)求包的外部端口號(hào)全部相同的情況下,發(fā)送源映射算法獲取部151判定是端點(diǎn)獨(dú)立映射。這是因?yàn)?,在端點(diǎn)獨(dú)立映射中即使目的地改變,與LAN內(nèi)的裝置對(duì)應(yīng)的端口號(hào)也不改變。
[0119]而且,考慮到這樣的情況,其中,盡管映射調(diào)查應(yīng)答包Rpml、Rpm2的外部端口號(hào)相同,但映射調(diào)查應(yīng)答包Rpml、Rpm3、Rpm4的外部端口號(hào)不同。在此情況下,發(fā)送源映射算法獲取部151判定是依賴地址的映射。這是因?yàn)樵谝蕾嚨刂返挠成渲校?dāng)目的地IP地址改變時(shí),與LAN內(nèi)的裝置對(duì)應(yīng)的端口號(hào)也改變。
[0120]此外,當(dāng)四個(gè)映射調(diào)查請(qǐng)求包的外部端口號(hào)全部不同時(shí),發(fā)送源映射算法獲取部151按照映射調(diào)查請(qǐng)求包的發(fā)送順序來計(jì)算出相鄰的外部端口號(hào)的差。由于四個(gè)映射調(diào)查請(qǐng)求包是依次發(fā)送的,因此計(jì)算出三個(gè)差。在這些差相同的情況下,發(fā)送源映射算法獲取部151判定是依賴地址和端口的映射。這是因?yàn)樵谠撘蕾嚨刂泛投丝诘挠成渲?,?dāng)目的地的IP地址或端口號(hào)改變時(shí),與LAN內(nèi)的裝置對(duì)應(yīng)的端口號(hào)也規(guī)則地改變。
[0121]在四個(gè)映射調(diào)查請(qǐng)求包的外部端口號(hào)全部不同并且計(jì)算出的三個(gè)差不同的情況下,發(fā)送源映射算法獲取部151判定是隨機(jī)映射。這是因?yàn)樵陔S機(jī)映射中,當(dāng)目的地的IP地址或端口號(hào)改變時(shí),與LAN內(nèi)的裝置對(duì)應(yīng)的端口號(hào)不規(guī)則地改變。
[0122]發(fā)送源映射算法獲取部151將發(fā)送源映射算法、裝置100的外部IP地址和外部端口號(hào)以及計(jì)算出的差提供至映射算法通知部152。而且,發(fā)送源映射算法獲取部151將發(fā)送源映射算法提供至主機(jī)/從機(jī)判定部160。
[0123]映射算法通知部152通過服務(wù)器500將由裝置100獲取的映射算法通知給裝置101。該映射算法通知部152生成映射算法通知包,所述映射算法通知包將由裝置100獲取的映射算法、裝置100的外部IP地址和外部端口號(hào)以及上述的差存儲(chǔ)在有效負(fù)荷中。映射算法通知部152將映射算法通知包發(fā)送到服務(wù)器500。服務(wù)器500將映射算法通知包轉(zhuǎn)送到裝置101。
[0124]目的地映射算法獲取部153獲取下述算法作為目的地映射算法,所述算法將外部端口號(hào)分配給目的地裝置的內(nèi)部IP地址和內(nèi)部端口號(hào)。該目的地映射算法獲取部153接收由服務(wù)器500轉(zhuǎn)送的、來自裝置101的映射算法通知包。目的地映射算法獲取部153從映射算法通知包的有效負(fù)荷中獲取目的地映射算法、裝置101的外部IP地址和外部端口號(hào)以及上述差。目的地映射算法獲取部153將目的地映射算法、裝置101的外部IP地址和外部端口號(hào)以及上述差提供給主機(jī)/從機(jī)判定部160。
[0125]圖4圖示了在裝置100是會(huì)話建立請(qǐng)求包的發(fā)送源的情況下收發(fā)的包,為便于說明,省略了在裝置100是目的地的情況下收發(fā)的包。在裝置100是目的地的情況下,目的地映射算法獲取部153從裝置101接收會(huì)話建立請(qǐng)求包。此外,目的地映射算法獲取部153將四個(gè)映射調(diào)查請(qǐng)求包發(fā)送至服務(wù)器500,并且從服務(wù)器500的響應(yīng)包獲取目的地映射算法。映射算法通知部152通過服務(wù)器500將目的地映射算法發(fā)送到裝置101。同時(shí),發(fā)送源映射算法獲取部151從裝置101接收映射算法通知包,并且獲取發(fā)送源映射算法、裝置101的外部IP地址和外部端口號(hào)以及上述差。
[0126]判定表170存儲(chǔ)這樣的標(biāo)志,該標(biāo)志表示:對(duì)于發(fā)送源映射算法和目的地映射算法的每種組合,是否將裝置100設(shè)為主機(jī)。例如,在發(fā)送源映射算法比目的地映射算法更復(fù)雜的情況下,發(fā)送源裝置變?yōu)橹鳈C(jī),并且根據(jù)更簡(jiǎn)單的目的地映射算法來預(yù)測(cè)外部端口號(hào)。相反地,在目的地映射算法比發(fā)送源映射算法更復(fù)雜的情況下,目的地裝置變?yōu)橹鳈C(jī),并且根據(jù)更簡(jiǎn)單的發(fā)送源映射算法來預(yù)測(cè)外部端口號(hào)。在目的地映射算法的復(fù)雜性和發(fā)送源映射算法的復(fù)雜性相同的情況下,例如,將發(fā)送源裝置設(shè)定為主機(jī)。
[0127]這里,在目的地映射算法和發(fā)送源映射算法相同的情況下,由于未確定發(fā)送源和目的地裝置之間的優(yōu)劣,因此可將目的地裝置設(shè)為主機(jī)。
[0128]主機(jī)/從機(jī)判定部160根據(jù)發(fā)送源映射算法和目的地映射算法來判定是否將裝置100設(shè)為主機(jī)。主機(jī)/從機(jī)判定部160從判定表中讀出與發(fā)送源映射算法和目的地映射算法相對(duì)應(yīng)的標(biāo)志,并且判斷是否將裝置100設(shè)為主機(jī)。主機(jī)/從機(jī)判定部160將判定結(jié)果、裝置101的映射算法、裝置101的外部IP地址和外部端口號(hào)以及上述差提供給直接通信部180。
[0129]直接通信部180與裝置101進(jìn)行直接通信。根據(jù)外部端口號(hào)和上述差,直接通信部180按照與從機(jī)(裝置101)側(cè)的映射算法相對(duì)應(yīng)的預(yù)測(cè)算法來預(yù)測(cè)被重新分配的外部端口號(hào)。
[0130]更具體地,在從機(jī)側(cè)的映射算法是依賴地址的映射或依賴地址和端口的映射的情況下,直接通信部180通過將接收的外部端口號(hào)與上述差相加來生成端口號(hào)作為預(yù)測(cè)的外部端口號(hào)。
[0131]直接通信部180生成指向裝置101的外部IP地址和生成的外部端口號(hào)的通信包,并且不通過服務(wù)器500來發(fā)送所述通信包。以此方式,實(shí)現(xiàn)與裝置101的直接通信。
[0132]這里,考慮到這樣的情況,其中,裝置100為主機(jī),且主機(jī)(裝置100)側(cè)的映射算法為端點(diǎn)獨(dú)立映射。在此情況下,當(dāng)主機(jī)不僅將通信包發(fā)送到預(yù)測(cè)的外部端口號(hào)還發(fā)送到周邊的外部端口號(hào)時(shí),直接通信成功的可能性提高。
[0133]同時(shí),考慮到這樣的情況,其中,裝置100為從機(jī),且主機(jī)(裝置101)側(cè)的映射算法不是端點(diǎn)獨(dú)立映射。在此情況下,直接通信部180發(fā)送指向裝置101的外部IP地址和生成的端口號(hào)的包作為打洞包。
[0134]這里,期望調(diào)節(jié)打洞包的TTL (Time To Live,生存時(shí)間)以使其不到達(dá)最上層的路由器。
[0135]而且,在主機(jī)側(cè)的映射算法不是端點(diǎn)獨(dú)立映射的情況下,從機(jī)預(yù)測(cè)在主機(jī)側(cè)的路由器中釋放的外部端口號(hào),并將打洞包發(fā)送到該外部端口號(hào)。此時(shí),當(dāng)從機(jī)進(jìn)行多次打洞時(shí),直接通信成功的可能性提高。多次打洞表示從機(jī)發(fā)送多個(gè)打洞包。通過多次打洞,不僅釋放由主機(jī)所預(yù)測(cè)的外部端口號(hào),還釋放周邊的外部端口號(hào)。在預(yù)測(cè)外部端口號(hào)時(shí),存在實(shí)際釋放的外部端口號(hào)不同于預(yù)測(cè)的外部端口號(hào)的情況。例如,除裝置101以外的裝置可與裝置101側(cè)的路由器301連接,當(dāng)路由器300將外部端口號(hào)分配給該裝置時(shí),釋放的外部端口號(hào)可能與預(yù)測(cè)不同??商娲兀?dāng)路由器300將外部端口號(hào)分配給在裝置101中工作的其它網(wǎng)絡(luò)服務(wù)的內(nèi)部端口號(hào)時(shí),釋放的外部端口號(hào)可能與預(yù)測(cè)不同。通過多次打洞,能夠支持外部端口號(hào)的這種不同,且提高了直接通信成功的可能性。
[0136]而且,在裝置100是從機(jī)且從機(jī)側(cè)的映射算法是端點(diǎn)獨(dú)立映射的情況下,直接通信部180不必發(fā)送打洞包。這是因?yàn)樵诙它c(diǎn)獨(dú)立映射中,即使地址改變,與從機(jī)對(duì)應(yīng)的外部端口號(hào)也不變。
[0137]當(dāng)由打洞包注冊(cè)(釋放)新的外部端口號(hào)時(shí),主機(jī)(裝置101)預(yù)測(cè)釋放的外部端口號(hào)并發(fā)送通信包。直接通信部180接收通信包。以此方式,實(shí)現(xiàn)與裝置100的直接通信。
[0138]這里,直接通信部180是權(quán)利要求書中說明的生成部的一個(gè)示例。
[0139][服務(wù)器的構(gòu)造示例]
[0140]圖5是圖示了第一實(shí)施例中的服務(wù)器500的一個(gè)構(gòu)造示例的框圖。該服務(wù)器500包括轉(zhuǎn)送部510、裝置信息存儲(chǔ)部520以及映射調(diào)查應(yīng)答部550。
[0141]裝置信息存儲(chǔ)部520相互關(guān)聯(lián)地存儲(chǔ)與服務(wù)器500連接的每個(gè)裝置的識(shí)別信息以及該裝置的外部IP地址和外部端口號(hào)。裝置的識(shí)別信息表示在提供直接通信的服務(wù)中分配給該裝置的識(shí)別信息,諸如,裝置名和裝置的用戶名。
[0142]轉(zhuǎn)送部510轉(zhuǎn)送會(huì)話建立請(qǐng)求包和映射算法通知包。當(dāng)與服務(wù)器500的通信開始時(shí),轉(zhuǎn)送部510使得裝置信息存儲(chǔ)部520相互關(guān)聯(lián)地存儲(chǔ)裝置的識(shí)別信息以及裝置的外部IP地址和外部端口號(hào)。
[0143]此外,當(dāng)從裝置接收會(huì)話建立請(qǐng)求包時(shí),轉(zhuǎn)送部510從裝置信息存儲(chǔ)部520讀出該會(huì)話建立請(qǐng)求包所請(qǐng)求連接的裝置的外部IP地址和外部端口號(hào)。此外,轉(zhuǎn)送部510將會(huì)話建立請(qǐng)求包轉(zhuǎn)送至讀出的外部IP地址和外部端口號(hào)。
[0144]當(dāng)在轉(zhuǎn)送會(huì)話建立請(qǐng)求包之后從會(huì)話建立請(qǐng)求包的發(fā)送源和目的地中的一者接收映射算法通知包時(shí),轉(zhuǎn)送部510將該映射算法通知包轉(zhuǎn)送到所述發(fā)送源和目的地中的另一者O
[0145]映射調(diào)查應(yīng)答部550根據(jù)映射調(diào)查請(qǐng)求包來返送映射調(diào)查應(yīng)答包。當(dāng)接收映射調(diào)查請(qǐng)求包時(shí),該映射調(diào)查應(yīng)答部550獲取該映射調(diào)查請(qǐng)求包的發(fā)送源的外部IP地址和外部端口號(hào)。映射調(diào)查應(yīng)答部550生成映射調(diào)查應(yīng)答包并將其返送到映射調(diào)查請(qǐng)求包的發(fā)送源,所述映射調(diào)查應(yīng)答包將獲取的外部IP地址和外部端口號(hào)存儲(chǔ)在有效負(fù)荷中。
[0146]圖6是第一實(shí)施例中的裝置信息存儲(chǔ)部520中存儲(chǔ)的信息的一個(gè)示例的圖。裝置信息存儲(chǔ)部520相互關(guān)聯(lián)地存儲(chǔ)裝置名、IP地址以及端口號(hào)。這些IP地址和端口號(hào)表示被分配給裝置的內(nèi)部IP地址和內(nèi)部端口號(hào)的外部IP地址和外部端口號(hào)。
[0147]例如,當(dāng)將裝置名“D1”與服務(wù)器500連接時(shí),將IP地址“Y.Y.Y.1”與端口號(hào)“8000”與“D1”相關(guān)聯(lián)并存儲(chǔ)。此外,當(dāng)將裝置名“D2”與服務(wù)器500連接時(shí),將IP地址“Y.Y.Y.2”和端口號(hào)“8001 ”與“D2”相關(guān)聯(lián)并存儲(chǔ)。
[0148]當(dāng)“D1”的裝置向服務(wù)器500發(fā)送用于將“D2”指定為通信對(duì)象的會(huì)話建立請(qǐng)求包時(shí),服務(wù)器500將所述會(huì)話建立請(qǐng)求包轉(zhuǎn)送到與“D2”對(duì)應(yīng)的“Y.Y.Y.2”和“8001”。
[0149]圖7是圖示第一實(shí)施例中的映射調(diào)查請(qǐng)求包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例的圖。在圖7中,“a”圖示了映射調(diào)查請(qǐng)求包Rqml的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。映射調(diào)查請(qǐng)求包Rqml包括在報(bào)頭中的發(fā)送源IP地址、發(fā)送源端口號(hào)、目的地IP地址以及地址端口號(hào)。這些發(fā)送源IP地址和發(fā)送源端口號(hào)表示裝置100的內(nèi)部IP地址和內(nèi)部端口號(hào)。而且,目的地IP地址和地址端口號(hào)表示服務(wù)器500的外部IP地址和外部端口號(hào)。
[0150]在圖7中,“b”圖示了映射調(diào)查請(qǐng)求包Rqm2的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。除了地址端口號(hào)不同之外,映射調(diào)查請(qǐng)求包Rqm2的構(gòu)造與映射調(diào)查請(qǐng)求包Rqml相同。
[0151]在圖7中,“c”圖示了映射調(diào)查請(qǐng)求包Rqm3的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。除了目的地IP地址不同之外,映射調(diào)查請(qǐng)求包Rqm3的構(gòu)造與映射調(diào)查請(qǐng)求包Rqml相同。
[0152]在圖7中,“d”圖示了映射調(diào)查請(qǐng)求包Rqm4的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。除了目的地IP地址和地址端口號(hào)不同之外,映射調(diào)查請(qǐng)求包Rqm4的構(gòu)造與映射調(diào)查請(qǐng)求包Rqml相同。
[0153]從針對(duì)這些映射調(diào)查請(qǐng)求包的映射調(diào)查應(yīng)答包中,裝置100能夠獲取與裝置100對(duì)應(yīng)的路由器300的映射算法。
[0154]圖8是說明第一實(shí)施例中的映射調(diào)查應(yīng)答包的生成方法的圖。當(dāng)從裝置100發(fā)送映射調(diào)查請(qǐng)求包Rqml時(shí),路由器300將映射調(diào)查請(qǐng)求包Rqml的發(fā)送源的內(nèi)部IP地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部IP地址和外部端口號(hào)。由于不可能從裝置100直接參照這些外部IP地址和外部端口號(hào),因此,必須由映射調(diào)查應(yīng)答包從服務(wù)器500通知所述外部IP地址和外部端口號(hào)。
[0155]服務(wù)器500從報(bào)頭獲取映射調(diào)查請(qǐng)求包Rqml’(在映射調(diào)查請(qǐng)求包Rqml’中IP地址等被轉(zhuǎn)換)的發(fā)送源的IP地址和端口號(hào),并生成將該IP地址和端口號(hào)存儲(chǔ)在有效負(fù)荷中的映射調(diào)查應(yīng)答包Rpml。此外,服務(wù)器500將所述映射調(diào)查應(yīng)答包Rpml返送到裝置100。裝置100可通過參照映射調(diào)查應(yīng)答包Rpml的有效負(fù)荷來獲取被分配給裝置100的外部IP地址和外部端口號(hào)。
[0156]圖9圖示了第一實(shí)施例中的在端點(diǎn)獨(dú)立映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在圖9中,“a”表示映射調(diào)查應(yīng)答包Rpml的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在該映射調(diào)查應(yīng)答包Rpml的有效負(fù)荷中存儲(chǔ)發(fā)送源IP地址和發(fā)送源端口號(hào)。發(fā)送源IP地址和發(fā)送源端口號(hào)表示在路由器300中被分配給裝置100的外部IP地址和外部端口號(hào)。
[0157]在圖9中,“b”表示映射調(diào)查應(yīng)答包Rpm2的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在圖9中,“c”表示映射調(diào)查應(yīng)答包Rpm3的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖9中,“d”表示映射調(diào)查應(yīng)答包Rpm4的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。這些分組的數(shù)據(jù)結(jié)構(gòu)類似于映射調(diào)查應(yīng)答包Rpml。由此推測(cè),即使目的地改變,外部端口號(hào)的分配(即端口映射)也不改變。因此,在此情況下,判定為端點(diǎn)獨(dú)立映射。
[0158]圖10圖示了第一實(shí)施例中的在依賴地址的映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在圖10中,“a”表示映射調(diào)查應(yīng)答包Rpml的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖10中,“b”表示映射調(diào)查應(yīng)答包Rpm2的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。而且,在圖10中,“c”表示映射調(diào)查應(yīng)答包Rpm3的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖10中,“d”表示映射調(diào)查應(yīng)答包Rpm4的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。
[0159]在映射調(diào)查應(yīng)答包Rpml和映射調(diào)查應(yīng)答包Rpm2中,外部端口號(hào)不變。然而,映射調(diào)查應(yīng)答包Rpml中的外部端口號(hào)不同于映射調(diào)查應(yīng)答包Rpm3和映射調(diào)查應(yīng)答包Rpm4中的外部端口號(hào)。由此推測(cè),端口映射根據(jù)目的地IP地址的變化而改變。因此,在此情況下,判定為依賴地址的映射。
[0160]圖11圖示了第一實(shí)施例中的在依賴地址和端口的映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在圖11中,“a”表示映射調(diào)查應(yīng)答包Rpml的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖11中,“b”表示映射調(diào)查應(yīng)答包Rpm2的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。而且,在圖11中,“c”表示映射調(diào)查應(yīng)答包Rpm3的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖11中,“d”表示映射調(diào)查應(yīng)答包Rpm4的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。
[0161]映射調(diào)查應(yīng)答包Rpml、Rpm2、Rpm3、Rpm4的外部端口號(hào)互不相同。而且,Rpml的外部端口號(hào)“8000”和下一個(gè)Rpm2的外部端口號(hào)“8001”之間的差為“+I”。Rpm2的外部端口號(hào)和下一個(gè)Rpm3的外部端口號(hào)之間的差也為“+I”,且Rpm3的外部端口號(hào)和Rpm4的外部端口號(hào)之間的差為“+I”。由此推測(cè),端口映射根據(jù)目的地的IP地址或端口號(hào)的變化而規(guī)則地改變。因此,在此情況下,判定為依賴地址和端口的映射。
[0162]圖12圖示了第一實(shí)施例中的在隨機(jī)映射時(shí)的映射調(diào)查應(yīng)答包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在圖12中,“a”表示映射調(diào)查應(yīng)答包Rpml的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖12中,“b”表示映射調(diào)查應(yīng)答包Rpm2的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。而且,在圖12中,“c”表示映射調(diào)查應(yīng)答包Rpm3的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,且在圖12中,“d”表示映射調(diào)查應(yīng)答包Rpm4的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。
[0163]映射調(diào)查應(yīng)答包Rpml、Rpm2、Rpm3、Rpm4的外部端口號(hào)互不相同。而且,Rpml的外部端口號(hào)“8000”和下一個(gè)Rpm2的外部端口號(hào)“8011”之間的差為“+II”。然而,Rpm2的外部端口號(hào)和下一個(gè)Rpm3的外部端口號(hào)之間的差為“+I ”,且Rpm3的外部端口號(hào)和Rpm4的外部端口號(hào)之間的差為“+3”。即,按照發(fā)送順序相鄰的外部端口號(hào)之間的差并不相同。由此推測(cè),端口映射根據(jù)目的地的IP地址或端口號(hào)的變化而不規(guī)則地改變。因此,在此情況下,判定為隨機(jī)映射。
[0164]圖13圖示了第一實(shí)施例中的映射算法通知包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。該映射算法通知包包括映射算法信息、整數(shù)N、發(fā)送源IP地址以及發(fā)送源端口號(hào)。
[0165]映射算法信息表示示出了裝置獲取的映射算法的信息?!癗”表示按照映射調(diào)查應(yīng)答包的發(fā)送順序相鄰的外部端口號(hào)之間的差值。“N”用于預(yù)測(cè)外部端口號(hào)。然而,在映射算法為端點(diǎn)獨(dú)立映射或隨機(jī)映射的情況下,不存儲(chǔ)“N”,這是因?yàn)椴灰蠡虿豢赡茴A(yù)測(cè)外部端口號(hào)??商鎿Q地,在此情況下,將N設(shè)為無效值。
[0166]發(fā)送源IP地址和發(fā)送源端口號(hào)表示在按照發(fā)送順序最后的映射調(diào)查應(yīng)答包Rpm4中的裝置外部IP地址和外部端口號(hào)。這里,裝置100可通過與映射算法通知包不同的包來通知外部IP地址和外部端口號(hào)。
[0167][判定表的構(gòu)造示例]
[0168]圖14圖不了第一實(shí)施例中的判定表170的一個(gè)構(gòu)造不例。該判定表170記載了這樣的標(biāo)志,該標(biāo)志示出了:對(duì)于發(fā)送源映射算法和目的地映射算法的每種組合,是否將發(fā)送源設(shè)為主機(jī)。在判定表170中,通過服務(wù)器500被轉(zhuǎn)送的會(huì)話建立請(qǐng)求包的目的地被設(shè)定為裝置A,而將該會(huì)話建立請(qǐng)求包的發(fā)送源設(shè)定為裝置B。
[0169]而且,“頂”代表端點(diǎn)獨(dú)立映射。“AM”代表依賴地址的映射?!癙M”代表依賴地址和端口的映射?!癛M”代表隨機(jī)映射。
[0170]在裝置A側(cè)的目的地映射算法比裝置B側(cè)的發(fā)送源映射算法更復(fù)雜的情況下,記錄用于表示將裝置A設(shè)為主機(jī)的標(biāo)志。這是因?yàn)?,裝置B側(cè)的映射算法更簡(jiǎn)單,并且相比于裝置B更易于預(yù)測(cè)裝置A中的外部端口號(hào)。
[0171]相反地,在裝置B側(cè)的目的地映射算法比裝置A側(cè)的發(fā)送源映射算法更復(fù)雜的情況下,記錄用于表示將裝置B設(shè)為主機(jī)的標(biāo)志。而且,在裝置B側(cè)的目的地映射算法與裝置A側(cè)的發(fā)送源映射算法相同的情況下,記錄用于表示將裝置B設(shè)為主機(jī)的標(biāo)志。
[0172][裝置的操作示例]
[0173]圖15是圖示第一實(shí)施例中的裝置100的操作的一個(gè)示例的流程圖。例如,當(dāng)裝置100通過路由器300與服務(wù)器500連接時(shí),本操作開始。
[0174]裝置100判斷是否執(zhí)行用于請(qǐng)求直接通信的程序。用于請(qǐng)求直接通信的程序例如是用于在線游戲中進(jìn)行通信對(duì)戰(zhàn)的程序或者用于在IP電話中開始通話的程序等(步驟S901)。
[0175]如果未執(zhí)行上述程序(步驟S901:否),則裝置100判斷是否從服務(wù)器500接收到會(huì)話建立請(qǐng)求包(步驟S902)。如果未接收到會(huì)話建立請(qǐng)求包(步驟S902:否),則裝置100返回至步驟S901。
[0176]如果執(zhí)行程序(步驟S901:是),則裝置100生成用于指定通信對(duì)象的裝置的會(huì)話建立請(qǐng)求包,并將所述會(huì)話建立請(qǐng)求包發(fā)送到服務(wù)器500 (步驟S904)。
[0177]在接收到會(huì)話建立請(qǐng)求包的情況下(步驟S902:是),或者在步驟S904后,裝置100執(zhí)行映射算法獲取處理以獲取映射算法(步驟S920)。此外,裝置100進(jìn)行NAT穿越處理以進(jìn)行NAT穿越和直接通信(步驟S930)。在步驟S930后,裝置100完成操作。這里,裝置101的操作類似于裝置100。
[0178]圖16是圖示第一實(shí)施例中的一個(gè)映射算法獲取處理的流程圖。裝置100將多個(gè)映射調(diào)查請(qǐng)求包依次發(fā)送到服務(wù)器500 (步驟S921)。裝置100接收多個(gè)映射調(diào)查應(yīng)答包(步驟S922)。此外,裝置100根據(jù)這些映射調(diào)查應(yīng)答包獲取裝置100側(cè)的映射算法(步驟S923)。在步驟S923中,如果裝置100是會(huì)話建立請(qǐng)求包的發(fā)送源,則獲取發(fā)送源映射算法,而如果裝置100是會(huì)話建立請(qǐng)求包的目的地,則獲取目的地映射算法。
[0179]裝置100生成用于通知獲取的映射算法的映射算法通知包,并將所述映射算法通知包發(fā)送到服務(wù)器500 (步驟S924)。而且,裝置100從服務(wù)器500接收用于通知由裝置101獲取的映射算法的映射算法通知包(步驟S925)。在步驟S925中,如果裝置100是會(huì)話建立請(qǐng)求包的發(fā)送源,則接收用于通知目的地映射算法的映射算法通知包,而如果裝置100是會(huì)話建立請(qǐng)求包的目的地,則接收用于通知發(fā)送源映射算法的映射算法通知包。在步驟S925后,裝置100完成映射算法獲取處理。
[0180]圖17是圖示第一實(shí)施例中的NAT穿越處理的一個(gè)示例的流程圖。裝置100參照判定表170,并獲取與發(fā)送源映射算法和目的地映射算法的組合相對(duì)應(yīng)的標(biāo)志(步驟S935)。
[0181]裝置100根據(jù)上述標(biāo)志來判定是否將裝置100設(shè)為主機(jī)(步驟S936)。在將裝置100設(shè)為主機(jī)的情況下(步驟S936:是),裝置100判斷是否必須預(yù)測(cè)外部端口號(hào)。例如,如果從機(jī)側(cè)的映射算法為端點(diǎn)獨(dú)立映射,則判定不必預(yù)測(cè)端口號(hào)(步驟S937)。
[0182]如果必須預(yù)測(cè)外部端口號(hào)(步驟S937:是),則裝置100根據(jù)與從機(jī)側(cè)的映射算法相對(duì)應(yīng)的預(yù)測(cè)算法來預(yù)測(cè)被分配給從機(jī)的新的外部端口號(hào)(步驟S938)。
[0183]在不必預(yù)測(cè)外部端口號(hào)的情況下(步驟S937:否),或者在步驟S938后,裝置100將通信包發(fā)送至所預(yù)測(cè)的外部端口號(hào)。在未請(qǐng)求預(yù)測(cè)的情況下,裝置100就使用通過服務(wù)器500從從機(jī)接收的外部端口號(hào)作為該編號(hào)的目的地來發(fā)送通信包(步驟S939)。
[0184]在將裝置100設(shè)為從機(jī)的情況下(步驟S936:否),裝置100判斷在從機(jī)側(cè)的路由器300中是否必須開放外部端口號(hào)。例如,如果從機(jī)側(cè)的映射算法為端點(diǎn)獨(dú)立映射,則判定外部端口號(hào)不必開放(步驟S940)。如果必須開放端口號(hào)(步驟S940:是),則裝置100將打洞包發(fā)送到主機(jī)(步驟S941)。
[0185]在不必開放端口號(hào)的情況下(步驟S940:否),或者在步驟S941后,裝置100可選擇地向/從裝置101發(fā)送/接收包,并完成NAT穿越處理。
[0186][服務(wù)器的操作示例]
[0187]圖18是圖示第一實(shí)施例中的服務(wù)器500的操作的一個(gè)示例的流程圖。例如,當(dāng)諸如裝置100和裝置101等裝置通過路由器300等與服務(wù)器500連接時(shí),本操作開始。
[0188]服務(wù)器500判斷是否已接收會(huì)話建立請(qǐng)求包(步驟S951)。如果未接收會(huì)話建立請(qǐng)求包(步驟S951:否),則服務(wù)器500返回至步驟S951。
[0189]如果接收了會(huì)話建立請(qǐng)求包(步驟S951:是),則服務(wù)器500將會(huì)話建立請(qǐng)求包轉(zhuǎn)送至在該包中被指定為通信對(duì)象的裝置(步驟S952)。
[0190]此外,服務(wù)器500判斷是否已接收多個(gè)映射調(diào)查請(qǐng)求包(步驟S957)。如果未接收映射調(diào)查請(qǐng)求包(步驟S957:否),則服務(wù)器500返回至步驟S957。如果接收了多個(gè)映射調(diào)查請(qǐng)求包(步驟S957:是),則服務(wù)器500根據(jù)這些映射調(diào)查請(qǐng)求包來生成并返送映射調(diào)查應(yīng)答包(步驟S958)。
[0191]此外,服務(wù)器500判斷是否已接收映射算法通知包(步驟S959)。如果未接收映射算法通知包(步驟S959:否),則服務(wù)器500返回至步驟S959。如果接收了映射算法通知包(步驟S959:是),則服務(wù)器500轉(zhuǎn)送映射算法通知包(步驟S960)。在步驟S960后,服務(wù)器500返回至步驟S951。
[0192]圖19是圖示第一實(shí)施例中的服務(wù)器和裝置的操作的一個(gè)示例的時(shí)序圖。在本圖中,假設(shè)了這樣的情況,其中,將裝置100判定為主機(jī)而將裝置101判定為從機(jī)。
[0193]裝置101將用于指定裝置100的會(huì)話建立請(qǐng)求包發(fā)送到服務(wù)器500 (步驟S904)。服務(wù)器500將會(huì)話建立請(qǐng)求包轉(zhuǎn)送到裝置100 (步驟S952)。
[0194]此外,裝置101生成四個(gè)映射調(diào)查請(qǐng)求包,并將所述四個(gè)映射調(diào)查請(qǐng)求包通過路由器301依次發(fā)送到服務(wù)器500 (步驟S921)。這些映射調(diào)查請(qǐng)求包的發(fā)送源的內(nèi)部IP地址和內(nèi)部端口號(hào)被轉(zhuǎn)換為路由器301中的外部IP地址和外部端口號(hào)。
[0195]服務(wù)器500將存儲(chǔ)著轉(zhuǎn)換后的外部IP地址和外部端口號(hào)的映射調(diào)查應(yīng)答包返送到裝置101 (步驟S958)。
[0196]裝置101根據(jù)映射調(diào)查應(yīng)答包獲取發(fā)送源映射算法(步驟S923)。裝置101將用于通知該映射算法的映射算法通知包發(fā)送到服務(wù)器500 (步驟S924)。
[0197]服務(wù)器500將來自裝置101的映射算法通知包轉(zhuǎn)送到裝置100 (步驟S960)。
[0198]并且,裝置100也將四個(gè)映射調(diào)查請(qǐng)求包依次發(fā)送到服務(wù)器500 (步驟S921),且服務(wù)器500將映射調(diào)查應(yīng)答包返送到裝置100 (步驟S958)。
[0199]此外,裝置100獲取目的地映射算法(步驟S923),并將映射算法通知包發(fā)送到服務(wù)器500 (步驟S924)。服務(wù)器500將來自裝置100的映射算法通知包轉(zhuǎn)送到裝置101 (步驟 S960)。
[0200]參照判定表170,裝置100成為主機(jī)而裝置101成為從機(jī)。作為從機(jī)的裝置101將打洞包發(fā)送到裝置100 (步驟S941)。
[0201]并且,裝置100預(yù)測(cè)由打洞包釋放的外部端口號(hào)(步驟S938)。此外,裝置100將通信包發(fā)送到預(yù)測(cè)的外部端口號(hào)(步驟S939 )。
[0202]圖20圖示了第一實(shí)施例中的外部端口號(hào)的使用狀態(tài)的一個(gè)示例。在圖20中,“a”示出了當(dāng)收發(fā)會(huì)話建立請(qǐng)求包時(shí)外部端口號(hào)的使用狀態(tài)的一個(gè)示例。假設(shè)路由器300與裝置100相關(guān)聯(lián)地注冊(cè)端口號(hào)“8001”和服務(wù)器500。而且,假設(shè)路由器301與裝置101相關(guān)聯(lián)地注冊(cè)端口號(hào)“ 8001 ”和服務(wù)器500。
[0203]裝置100將會(huì)話建立請(qǐng)求包發(fā)送到服務(wù)器500。該會(huì)話建立請(qǐng)求包的發(fā)送源的內(nèi)部端口號(hào)被轉(zhuǎn)換為路由器300中的“8001”。服務(wù)器500將會(huì)話建立請(qǐng)求包轉(zhuǎn)送到裝置101。該會(huì)話建立請(qǐng)求包的發(fā)送源的外部端口號(hào)“8001”被轉(zhuǎn)換為路由器301中的裝置101的內(nèi)部端口號(hào)。
[0204]此外,裝置100和裝置101分別獲取映射算法,并且借助映射算法通知包通過服務(wù)器500相互通知映射算法。
[0205]在圖20中,“b”示出了當(dāng)收發(fā)映射算法通知包時(shí)外部端口號(hào)的使用狀態(tài)的一個(gè)示例。此時(shí)的外部端口的使用狀態(tài)類似于圖20中的“a”。
[0206]這里,假設(shè)這樣的情況,其中,獲取依賴地址的映射(AM)作為路由器300的映射算法,且獲取隨機(jī)映射(RM)作為路由器301的映射算法。在此情況下,由于路由器300的依賴地址的映射更簡(jiǎn)單,因此裝置101作為主機(jī)來預(yù)測(cè)路由器300中的被分配給裝置100的新外部端口號(hào)。并且,作為從機(jī)的裝置100將打洞包發(fā)送到裝置101。
[0207]在圖20中,“c”示出了當(dāng)發(fā)送打洞包時(shí)外部端口號(hào)的使用狀態(tài)的一個(gè)示例。由于打洞包的目的地IP地址不同于服務(wù)器500的IP地址,因此路由器300將外部端口號(hào)“8002”重新分配給裝置100。從機(jī)調(diào)整TTL使得打洞包不到達(dá)路由器301。
[0208]作為主機(jī)的裝置101根據(jù)裝置100的先前的外部端口號(hào)“8001”預(yù)測(cè)被重新分配給裝置100的外部端口號(hào)“8002”。裝置101將通信包發(fā)送到該外部端口號(hào)。
[0209]在圖20中,“d”示出了當(dāng)發(fā)送通信包時(shí)外部端口號(hào)的使用狀態(tài)的一個(gè)示例。在路由器300中,由于釋放了預(yù)測(cè)的外部端口號(hào)“8002”,因此通信包被轉(zhuǎn)交至作為從機(jī)的裝置100。
[0210]這里,暫時(shí)考慮這樣的構(gòu)造,其中,在不參照判定表170的情況下,發(fā)送源裝置
(100)成為主機(jī)而目的地裝置(101)作為從機(jī)工作。在此情況下,從機(jī)裝置101發(fā)送打洞包,且釋放路由器301的外部端口號(hào)。
[0211]然而,由于路由器301的映射算法為隨機(jī)映射,因此裝置100不可能預(yù)測(cè)出釋放哪個(gè)外部端口號(hào)。因此,由裝置100發(fā)送的通信包無法到達(dá)從機(jī)裝置101,且直接通信失敗。
[0212]相反地,由于裝置100或裝置101比較兩種映射算法的復(fù)雜性,并根據(jù)與更簡(jiǎn)單的映射算法對(duì)應(yīng)的預(yù)測(cè)算法來預(yù)測(cè)外部端口號(hào),因此,直接通信成功的可能性高。
[0213]因此,根據(jù)本發(fā)明的第一實(shí)施例,裝置100或裝置101根據(jù)與發(fā)送源映射算法和目的地映射算法中更簡(jiǎn)單一者相對(duì)應(yīng)的預(yù)測(cè)算法來生成外部端口號(hào)。因此,能夠提高直接通信成功的可能性。
[0214]2.第二實(shí)施例
[0215][路由器的構(gòu)造示例]
[0216]圖21是圖示第二實(shí)施例中的路由器300的一個(gè)構(gòu)造示例的框圖。雖然在第一實(shí)施例中采用了路由器300不進(jìn)行過濾處理的構(gòu)造,但在路由器300中經(jīng)常進(jìn)行過濾處理。在路由器300進(jìn)行過濾處理的情況下,裝置100在考慮了過濾處理的情況下來判斷是否設(shè)定主機(jī)。
[0217]第二實(shí)施例的路由器300與第一實(shí)施例的不同之處在于,還包括過濾處理部340和過濾表350。第二實(shí)施例中的路由器301的構(gòu)造類似于路由器300。
[0218]過濾處理部340進(jìn)行過濾處理以判斷是否使包通過并且丟棄未通過的包。當(dāng)接收從LAN內(nèi)部至外部的包時(shí),該過濾處理部340參照過濾表350并判斷是否使包通過。此外,過濾處理部340將通過的包提供給地址轉(zhuǎn)換部320。而且,當(dāng)從地址轉(zhuǎn)換部320接收IP地址和端口號(hào)被轉(zhuǎn)換的包時(shí),過濾處理部340參照過濾表350并判斷是否使所述包通過。此夕卜,過濾處理部340將通過的包轉(zhuǎn)送至LAN內(nèi)部。
[0219]過濾表350表示這樣的表,該表存儲(chǔ)用于示出對(duì)于包的發(fā)送源和目的地的每種組合是否使包通過的信息。
[0220]這里,在過濾處理中,使用端點(diǎn)獨(dú)立過濾、依賴地址的過濾以及依賴地址和端口的過濾中的任何一種過濾算法。
[0221 ] 在端點(diǎn)獨(dú)立過濾中,當(dāng)一旦從LAN內(nèi)的裝置S向外部發(fā)送包時(shí),路由器300在不依賴于包的發(fā)送源的情況下使包從外部通過至裝置S。
[0222]這里,考慮這樣的情況,其中,存在(內(nèi)部IP地址:內(nèi)部端口號(hào))是(X1:xl)的裝置、(外部IP地址:外部端口號(hào))是(Yl:yl)的裝置以及(外部IP地址:外部端口號(hào))是(Y2:y2)的裝置。
[0223]例如,當(dāng)在初始狀態(tài)下從(X1:xl)發(fā)送包至(Yl:yl)時(shí),在過濾表350中,無論發(fā)送源如何,均許可來自外部的、目的地為(XI:xl)的包。因此,路由器300使得從(Yl:yl)至(XI:xl)的包以及不同發(fā)送源的從(Y2:y2)至(XI:xl)的包通過。
[0224]接著,在依賴地址的過濾中,當(dāng)從LAN內(nèi)部的裝置S發(fā)送包至外部裝置D時(shí),路由器300僅使從與裝置D同一 IP地址的發(fā)送源至裝置S的包通過。
[0225]例如,當(dāng)在初始狀態(tài)下從(X1:xl)發(fā)送包至(Yl:yl)時(shí),在過濾表350中許可來自外部的、發(fā)送源為Yl且目的地為(XI:xl)的包。因此,雖然路由器300使從(Yl:yl)至(XI:xl)的包通過,但路由器300使得IP地址不同的從(Y2:y2)至(XI:xl)的包不通過。而且,端口號(hào)不同的從(Yl:y2)至(XI:xl)的包具有相同的IP地址,因此使得該包通過。
[0226]此外,在依賴地址和端口的過濾中,當(dāng)從LAN內(nèi)部的裝置S向外部裝置D發(fā)送包時(shí),路由器300僅使得從與裝置D相同IP地址和端口號(hào)的發(fā)送源至裝置S的包通過。
[0227]例如,當(dāng)在初始狀態(tài)下從(X1:xl)發(fā)送包至(Yl:yl)時(shí),在過濾表350中許可來自外部的、發(fā)送源為(Yl:yl)且目的地為(XI:xl)的包。因此,雖然路由器300使得從(Yl:yl)至(XI:xl)的包通過,但路由器300使得IP地址不同的從(Y2:y2)至(XI:xl)的包不通過。而且,由于從(Yl:y2)至(X1:xl)的包具有不同的端口號(hào),因此路由器300使得該包不通過。
[0228]因此,這些過濾算法在復(fù)雜性方面不同。依賴地址的過濾比端點(diǎn)獨(dú)立過濾更復(fù)雜,因?yàn)樵谝蕾嚨刂返倪^濾中,當(dāng)發(fā)送源的IP地址改變時(shí)無法使包通過,而在端點(diǎn)獨(dú)立映射中,即使發(fā)送源改變也使包通過。依賴地址和端口的過濾比依賴地址的過濾更復(fù)雜,因?yàn)樵谝蕾嚨刂泛投丝诘倪^濾中,當(dāng)發(fā)送源的端口號(hào)改變時(shí)無法使包通過,而在依賴地址的過濾中,即使發(fā)送源的端口號(hào)改變也使包通過。
[0229]S卩,當(dāng)以復(fù)雜度的順序排列時(shí),按照從依賴地址和端口的過濾、依賴地址的過濾到端點(diǎn)獨(dú)立過濾的順序來排列。
[0230]隨著過濾算法變得更復(fù)雜,過濾算法就變得更難以使通信包通過。具體來說,在端點(diǎn)獨(dú)立過濾中,由于即使發(fā)送源改變也使包通過,因此,可以幾乎不用將過濾的存在考慮在內(nèi)。然而,在依賴地址的過濾中,由于當(dāng)發(fā)送源的IP地址改變時(shí)丟棄包,因此,從機(jī)必須借助打洞包來許可來自主機(jī)的通信包。另外,在依賴地址和端口的過濾中,從機(jī)必須預(yù)測(cè)主機(jī)側(cè)釋放的外部端口號(hào)并將打洞包發(fā)送至該外部端口號(hào)。
[0231]因此,期望裝置100或裝置101將通信包發(fā)送到以更簡(jiǎn)單的算法進(jìn)行過濾的路由器。
[0232]例如,考慮這樣的情況,其中,用于支持裝置101的路由器301的過濾算法比用于支持裝置100的路由器300的過濾算法更復(fù)雜。在此情況下,期望裝置101變?yōu)橹鳈C(jī),并通過進(jìn)行更簡(jiǎn)單的過濾的路由器300來發(fā)送通信包。
[0233][過濾表的構(gòu)造示例]
[0234]圖22是圖示了第二實(shí)施例中的過濾表350的一個(gè)構(gòu)造示例。該過濾表350存儲(chǔ)示出了如下“操作”的信息,所述“操作”是關(guān)于對(duì)發(fā)送源IP地址、發(fā)送源端口號(hào)、目的地IP地址和地址端口號(hào)的每種組合是否許可包。例如,所述操作包括“許可”和“禁止”包通過。
[0235]例如,考慮這樣的情況,其中,在初始狀態(tài)下,從LAN內(nèi)的內(nèi)部IP地址為“192.168.0.1”且外部端口號(hào)為“5000”的裝置向外部發(fā)送包。假設(shè)該包的目的地的外部IP地址為“X.X.X.1 ”且外部端口號(hào)為“8000”。
[0236]在此情況下,在端點(diǎn)獨(dú)立過濾中,注冊(cè)這樣的信息,該信息表示發(fā)送源的IP地址和端口號(hào)均被設(shè)定為“任意”并且許可目的地為“192.168.0.1”和“5000”的包。這里,“任意”意味著將任何IP地址或端口號(hào)作為許可或禁止的對(duì)象。
[0237]在依賴地址的過濾中,注冊(cè)這樣的信息,該信息表示發(fā)送源被設(shè)定為“X.X.X.1”和“任意”并且許可目的地為“192.168.0.1”和“5000”的包。
[0238]在依賴地址和端口的過濾中,注冊(cè)這樣的信息,該信息表示發(fā)送源被設(shè)定為“X.X.X.1”和“8000”并且許可目的地為“192.168.0.1”和“5000”的包。
[0239][服務(wù)器的構(gòu)造示例]
[0240]圖23是圖示第二實(shí)施例中的服務(wù)器500的一個(gè)構(gòu)造示例的框圖。第二實(shí)施例的服務(wù)器500與第一實(shí)施例的不同之處在于,還包括過濾算法獲取部530和過濾算法獲取部540。
[0241]過濾算法獲取部530獲取每個(gè)路由器中的過濾算法。該過濾算法獲取部530從轉(zhuǎn)送部510接收關(guān)于會(huì)話建立請(qǐng)求包的發(fā)送源和目的地中的各者的外部IP地址和外部端口號(hào)。
[0242]過濾算法獲取部530將用于請(qǐng)求應(yīng)答的多個(gè)包作為過濾調(diào)查請(qǐng)求包發(fā)送至這些外部IP地址和外部端口號(hào)。如上所述,當(dāng)發(fā)送源改變時(shí)的過濾方法隨著過濾算法的不同而改變。為判斷這種算法差異,通過服務(wù)器500從各個(gè)發(fā)送源發(fā)送多個(gè)過濾調(diào)查請(qǐng)求包。
[0243]例如,依次發(fā)送不同發(fā)送源的四個(gè)過濾調(diào)查請(qǐng)求包Rqfl、Rqf2、Rqf3、Rqf4。Rqf2表示發(fā)送源的IP地址與Rqfl相同而發(fā)送源的端口號(hào)與Rqfl不同的包。Rqf3表示發(fā)送源的IP地址與Rqfl不同而發(fā)送源的端口號(hào)與Rqfl相同的包。Rqf4表示發(fā)送源的IP地址和端口號(hào)均與Rqfl不同的包。
[0244]過濾算法獲取部530接收響應(yīng)于過濾調(diào)查請(qǐng)求包Rqfl、Rqf2, Rqf3, Rqf4而返送的過濾調(diào)查應(yīng)答包Rpfl、Rpf2, Rpf3, Rpf4。然而,存在這樣的情況,其中,根據(jù)過濾算法無法收到某些響應(yīng)包。過濾算法獲取部530根據(jù)響應(yīng)包的接收狀態(tài)來獲取過濾算法。
[0245]具體來說,當(dāng)接收到所有過濾調(diào)查應(yīng)答包Rpfl、Rpf2, Rpf3, Rpf4時(shí),判定為端點(diǎn)獨(dú)立過濾。這是因?yàn)樵诙它c(diǎn)獨(dú)立過濾中,即使發(fā)送源改變也允許包通過。
[0246]此外,在接收到過濾調(diào)查應(yīng)答包Rpfl和過濾調(diào)查應(yīng)答包Rpf2而未接收到過濾調(diào)查應(yīng)答包Rpf3和過濾調(diào)查應(yīng)答包Rpf4的情況下,判定為依賴地址的過濾。這是因?yàn)樵谝蕾嚨刂返倪^濾中,當(dāng)發(fā)送源的IP地址改變時(shí),不允許包通過。
[0247]此外,在僅接收到過濾調(diào)查應(yīng)答包Rpfl的情況下,判斷為依賴地址和端口的過濾。這是因?yàn)樵谝蕾嚨刂泛投丝诘倪^濾中,當(dāng)發(fā)送源的IP地址或端口號(hào)改變時(shí),不允許包通過。
[0248]過濾算法獲取部530獲取會(huì)話建立請(qǐng)求包的發(fā)送源側(cè)的路由器和目的地側(cè)的路由器的過濾算法。在下文中,將發(fā)送源側(cè)的路由器的過濾算法稱作“發(fā)送源過濾算法”,而將目的地側(cè)的路由器的過濾算法稱作“地址過濾算法”。過濾算法獲取部530將所獲取的過濾算法與發(fā)送源和目的地的外部IP地址和外部端口號(hào)一起提供給過濾算法通知部540。
[0249]這里,雖然過濾算法獲取部530通過發(fā)送過濾調(diào)查請(qǐng)求包和接收響應(yīng)包來獲取過濾算法,但不限于這種構(gòu)造。例如,過濾算法獲取部530可通過使用STUN協(xié)議來獲取過濾算法。
[0250]過濾算法獲取部540將所獲取的過濾算法通知給各裝置。過濾算法獲取部540生成用于存儲(chǔ)發(fā)送源過濾算法和目的地過濾算法的過濾算法通知包。此外,過濾算法獲取部540將過濾算法通知包發(fā)送至?xí)捊⒄?qǐng)求包的發(fā)送源和目的地。
[0251]圖24圖示了第二實(shí)施例中的過濾調(diào)查請(qǐng)求包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。在圖24中,“a”示出了過濾調(diào)查請(qǐng)求包Rqfl的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。該過濾調(diào)查請(qǐng)求包在報(bào)頭中包括發(fā)送源IP地址、發(fā)送源端口號(hào)、目的地IP地址以及地址端口號(hào)。這些發(fā)送源IP地址和發(fā)送源端口號(hào)是服務(wù)器500的IP地址和端口號(hào)。此外,目的地IP地址和地址端口號(hào)是路由器300或路由器301的外部IP地址和外部端口號(hào)。
[0252]在圖24中,“b”示出了過濾調(diào)查請(qǐng)求包Rqf2的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。除了發(fā)送源端口號(hào)不同之外,過濾調(diào)查請(qǐng)求包Rqf2的構(gòu)造與過濾調(diào)查請(qǐng)求包Rqfl相同。
[0253]在圖24中,“c”示出了過濾調(diào)查請(qǐng)求包Rqf3的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。除了發(fā)送源IP地址不同之外,過濾調(diào)查請(qǐng)求包Rqf3的構(gòu)造與過濾調(diào)查請(qǐng)求包Rqfl相同。
[0254]在圖24中,“d示出了過濾調(diào)查請(qǐng)求包Rqf4的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。除了發(fā)送源IP地址和發(fā)送源端口號(hào)不同之外,過濾調(diào)查請(qǐng)求包Rqf4的構(gòu)造與過濾調(diào)查請(qǐng)求包Rqfl相同。
[0255]服務(wù)器500能夠從針對(duì)這些過濾調(diào)查請(qǐng)求包的過濾調(diào)查應(yīng)答包獲取路由器300和路由器301的各個(gè)過濾算法。
[0256]圖25圖示了第二實(shí)施例中的通過端點(diǎn)獨(dú)立過濾和依賴地址的過濾處理的包的一個(gè)示例。在圖25中,“a”示出了通過端點(diǎn)獨(dú)立過濾處理的包的一個(gè)示例。在端點(diǎn)獨(dú)立過濾中,允許不同發(fā)送源的所有四個(gè)過濾調(diào)查請(qǐng)求包。因此,接收關(guān)于所有過濾調(diào)查請(qǐng)求包的響應(yīng)包。
[0257]在圖25中,“b”示出了通過依賴地址的過濾處理的分組的一個(gè)示例。在依賴地址的過濾中,允許具有相同的發(fā)送源IP地址的過濾調(diào)查請(qǐng)求包Rqfl和過濾調(diào)查請(qǐng)求包Rqf2。然而,發(fā)送源IP地址與Rqfl不同的過濾調(diào)查請(qǐng)求包Rqf3和過濾調(diào)查請(qǐng)求包Rqf4不被允許而被丟棄。因此,服務(wù)器500僅能夠接收過濾調(diào)查應(yīng)答包Rpfl和過濾調(diào)查應(yīng)答包Rpf2。
[0258]圖26圖示例如第二實(shí)施例中的通過依賴地址和端口的過濾處理的分組的一個(gè)示例。在依賴地址和端口的過濾中,發(fā)送源IP地址或端口號(hào)不同于Rqfl的過濾調(diào)查請(qǐng)求包Rqf 2 > Rqf 3, Rqf4不被允許而被丟棄。因此,服務(wù)器500能夠僅接收過濾調(diào)查應(yīng)答包Rpfl。
[0259]如圖25和圖26所示例,由于過濾調(diào)查應(yīng)答包的接收狀態(tài)根據(jù)過濾算法而變化,因此服務(wù)器500能夠從上述接收狀態(tài)中獲取過濾算法。
[0260]圖27圖示了第二實(shí)施例中的過濾算法通知包的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例。該過濾算法通知包包括發(fā)送源過濾算法信息和目的地過濾算法信息。發(fā)送源過濾算法信息表示用于識(shí)別發(fā)送源算法的信息。目的地過濾算法信息表示用于識(shí)別目的地算法的信息。
[0261][裝置的構(gòu)造示例]
[0262]圖28是圖示第二實(shí)施例中的裝置100的一個(gè)構(gòu)造示例的框圖。第二實(shí)施例的裝置100與第一實(shí)施例的不同之處在于,還包括過濾調(diào)查應(yīng)答部130、過濾算法獲取部140以及替代了判定表170的判定表171。第二實(shí)施例的裝置101的構(gòu)造類似于裝置100。
[0263]過濾調(diào)查應(yīng)答部130對(duì)過濾調(diào)查請(qǐng)求包做出應(yīng)答。當(dāng)從服務(wù)器500接收過濾調(diào)查請(qǐng)求包時(shí),過濾調(diào)查應(yīng)答部130生成過濾調(diào)查應(yīng)答包,并將所述過濾調(diào)查應(yīng)答包返送至服務(wù)器500。
[0264]過濾算法獲取部140獲取發(fā)送源過濾算法和目的地過濾算法。當(dāng)接收過濾算法通知包時(shí),該過濾算法獲取部140從該過濾算法通知包獲取發(fā)送源和目的地的過濾算法,并將所述過濾算法提供給主機(jī)/從機(jī)判定部160。
[0265]而且,第二實(shí)施例的判定表171存儲(chǔ)用于發(fā)送源映射算法、發(fā)送源過濾算法、目的地映射算法以及目的地過濾算法的每種組合的標(biāo)志。
[0266]這里,雖然裝置100具有包括過濾調(diào)查應(yīng)答部130的構(gòu)造,但裝置100以外的其它裝置可以代替裝置100具有包括過濾調(diào)查應(yīng)答部130的構(gòu)造。這是因?yàn)?,任何裝置都能夠?qū)τ糜谡{(diào)查路由器300的過濾的過濾調(diào)查請(qǐng)求包作出應(yīng)答,只要這些裝置在路由器300的控制下即可。
[0267][判定表的構(gòu)造示例]
[0268]圖29圖示了第二實(shí)施例中的判定表171的一個(gè)構(gòu)造示例。該判定表171存儲(chǔ)用于發(fā)送源映射算法、發(fā)送源過濾算法、目的地映射算法以及目的地過濾算法的每種組合的
O
[0269]在判定表171中,“IF”代表端點(diǎn)獨(dú)立過濾?!癆F”代表依賴地址的過濾。“PF”代表依賴地址和端口的過濾。
[0270]在裝置A側(cè)的目的地過濾算法比裝置B側(cè)的發(fā)送源過濾算法更復(fù)雜的情況下,記錄用于表示將裝置A設(shè)定為主機(jī)的信息。這是因?yàn)檠b置B側(cè)的過濾算法更簡(jiǎn)單,且更易于使通信包從裝置A通過至裝置B。
[0271]相反地,在裝置B側(cè)的發(fā)送源過濾算法比裝置A側(cè)的目的地過濾算法更復(fù)雜的情況下,記錄用于表示將裝置B設(shè)定為主機(jī)的信息。
[0272]而且,在裝置B側(cè)的發(fā)送源過濾算法和裝置A側(cè)的目的地過濾算法相同的情況下,基于映射算法來確定主機(jī)。
[0273]在目的地過濾算法和發(fā)送源過濾算法相同并且目的地映射算法比發(fā)送源映射算法更復(fù)雜的情況下,記錄用于表示將裝置A設(shè)定為主機(jī)的信息。這是因?yàn)檠b置B側(cè)的映射算法更簡(jiǎn)單,且裝置A比裝置B更容易預(yù)測(cè)外部端口號(hào)。
[0274]在目的地過濾算法和發(fā)送源過濾算法相同并且發(fā)送源映射算法比目的地映射算法更復(fù)雜的情況下,記錄用于表示將裝置B設(shè)定為主機(jī)的信息。而且,在目的地過濾算法和發(fā)送源過濾算法相同并且目的地映射算法和發(fā)送源映射算法也相同的情況下,記錄用于表示將裝置B設(shè)定為主機(jī)的信息。
[0275]而且,“ERR”表示直接通信困難。例如,在主機(jī)預(yù)測(cè)通過隨機(jī)映射分配的外部端口號(hào)的情況下記載“ERR”。這是因?yàn)橹鳈C(jī)不能準(zhǔn)確預(yù)測(cè)通過隨機(jī)映射分配的外部端口號(hào)。在此情況下,例如,裝置100通過服務(wù)器500與裝置101進(jìn)行通信。
[0276][裝置的操作例]
[0277]圖30是圖示第二實(shí)施例中的裝置100的操作的一個(gè)示例的流程圖。第二實(shí)施例的裝置100的操作與第一實(shí)施例的不同之處在于,還執(zhí)行步驟S910。第二實(shí)施例的裝置101的操作類似于裝置100。
[0278]在接收會(huì)話建立請(qǐng)求包的情況下(步驟S902:是),或者在步驟S904后,裝置100進(jìn)行過濾算法獲取處理以獲取過濾算法(步驟S910)。此外,裝置100進(jìn)行映射算法獲取處理(步驟S920)和NAT穿越處理(步驟S930)。
[0279]圖31是圖示第二實(shí)施例中的過濾算法獲取處理的一個(gè)示例的流程圖。裝置100判斷是否已從服務(wù)器500接收多個(gè)過濾調(diào)查請(qǐng)求包(步驟S911)。如果未接收到過濾調(diào)查請(qǐng)求包(步驟S911:否),則裝置100返回至步驟S911。
[0280]如果接收了多個(gè)過濾調(diào)查請(qǐng)求包(步驟S911:是),則裝置100根據(jù)所述過濾調(diào)查請(qǐng)求包來生成并發(fā)送過濾調(diào)查應(yīng)答包(步驟S912)。此外,裝置100從服務(wù)器500接收過濾算法通知包,并從該過濾算法通知包獲取發(fā)送源的過濾算法和目的地的過濾算法(步驟S913)。在步驟S913后,裝置100完成過濾算法獲取處理。
[0281][服務(wù)器的操作例]
[0282]圖32是圖示第二實(shí)施例中的服務(wù)器500的操作的一個(gè)示例的流程圖。第二實(shí)施例的服務(wù)器500的操作與第一實(shí)施例的不同之處在于,還執(zhí)行步驟S953?步驟S956。
[0283]服務(wù)器500轉(zhuǎn)送會(huì)話建立請(qǐng)求包(步驟S952),并將多個(gè)過濾調(diào)查請(qǐng)求包發(fā)送到發(fā)送源裝置和目的地裝置(步驟S953)。服務(wù)器500從發(fā)送源裝置和目的地裝置接收過濾調(diào)查應(yīng)答包(步驟S954)。服務(wù)器500根據(jù)這些響應(yīng)包的接收狀態(tài)獲取發(fā)送源過濾算法和目的地過濾算法(步驟S955)。
[0284]此外,服務(wù)器500生成用于存儲(chǔ)獲取的過濾算法的過濾算法通知包,并將所述過濾算法通知包發(fā)送到發(fā)送源裝置和目的地裝置(步驟S956 )。在步驟S956后,服務(wù)器500執(zhí)行步驟S957?步驟S960。
[0285]圖33圖示了第二實(shí)施例中的外部端口號(hào)的使用狀態(tài)的一個(gè)示例。在圖33中,“a”示出了這樣的圖,該圖圖示了當(dāng)裝置101 (發(fā)送源)將會(huì)話建立請(qǐng)求包發(fā)送到裝置100 (目的地)時(shí)的外部端口號(hào)的使用狀態(tài)的一個(gè)示例。假設(shè)路由器300在地址轉(zhuǎn)換表中與裝置100相關(guān)聯(lián)地注冊(cè)端口號(hào)“8001”和服務(wù)器500。而且,路由器301在地址轉(zhuǎn)換表中與裝置101相關(guān)聯(lián)地注冊(cè)端口號(hào)“8001”和服務(wù)器500。
[0286]在圖33中,“b”圖示了當(dāng)收發(fā)映射算法通知包時(shí)的外部端口號(hào)的使用狀態(tài)的一個(gè)示例。與圖33的“a”相比較,圖33的“b”中的外部端口的使用狀態(tài)未改變。
[0287]裝置100和裝置101獲取發(fā)送源映射算法、發(fā)送源過濾算法、目的地映射算法以及目的地過濾算法。
[0288]這里,假設(shè)獲取依賴地址的映射(AM)作為發(fā)送源映射算法和目的地映射算法。而且,假設(shè)獲取依賴地址和端口的過濾(PF)以作為路由器300中的目的地過濾算法。此外,假設(shè)獲取端點(diǎn)獨(dú)立過濾(IF)以作為路由器301中的發(fā)送源過濾算法。
[0289]在此情況下,由于在簡(jiǎn)單的端點(diǎn)獨(dú)立過濾中更易于使通信包通過,因此,裝置100成為主機(jī)且裝置101成為從機(jī)。作為從機(jī)的裝置101將打洞包發(fā)送到裝置100。
[0290]在圖33中,“c”圖示了當(dāng)發(fā)送打洞包時(shí)的外部端口號(hào)的使用狀態(tài)的一個(gè)示例。由于打洞包的目的地IP地址不同于服務(wù)器500的IP地址,因此路由器300將外部端口號(hào)“8002”重新分配給裝置100。
[0291]作為主機(jī)的裝置100根據(jù)裝置100的先前的外部端口號(hào)“8001”預(yù)測(cè)出重新分配給裝置100的外部端口號(hào)“8002”,并將通信包發(fā)送到該外部端口號(hào)。
[0292]在圖33中,“d”圖示了當(dāng)發(fā)送通信包時(shí)的外部端口號(hào)的使用狀態(tài)的一個(gè)示例。在路由器300中,由于釋放了預(yù)測(cè)的外部端口號(hào)“8002”,因此通信包被遞送到作為從機(jī)的裝置 100。
[0293]這里,暫時(shí)考慮這樣的構(gòu)造,其中,在不參照判定表171的情況下,發(fā)送源裝置
(101)成為主機(jī)且目的地裝置(100)作為從機(jī)工作。在本構(gòu)造中,作為從機(jī)的裝置100發(fā)送打洞包,且釋放路由器300的外部端口號(hào)。
[0294]然而,路由器300的過濾算法是依賴地址和端口的過濾。因此,由從機(jī)發(fā)送的指向主機(jī)的打洞包的目的地端口號(hào)必須與由主機(jī)發(fā)送的通信包的發(fā)送源端口號(hào)相一致。此外,當(dāng)從機(jī)發(fā)送指向主機(jī)的打洞包時(shí)路由器300分配的外部端口號(hào)必須與主機(jī)發(fā)送的通信包的發(fā)送源端口號(hào)相一致。因此,直接通信失敗的可能性上升。
[0295]與此相比,裝置100或裝置101比較兩種過濾算法的復(fù)雜性,并預(yù)測(cè)在進(jìn)行更簡(jiǎn)單的過濾的路由器中的外部端口號(hào)。因此,能夠提高直接通信成功的可能性。
[0296]因此,根據(jù)本發(fā)明的第二實(shí)施例,由于裝置100或裝置101生成在更簡(jiǎn)單過濾算法的路由器中被重新分配的外部端口號(hào),因此能夠提高直接通信成功的可能性。
[0297]3.第三實(shí)施例
[0298][裝置的構(gòu)造示例]
[0299]圖34是圖示第三實(shí)施例中的裝置100的一個(gè)構(gòu)造示例的框圖。在第二實(shí)施例中,無論裝置100所連接的網(wǎng)絡(luò)的類型如何,裝置100均判定是否設(shè)定主機(jī)。然而,存在著根據(jù)網(wǎng)絡(luò)類型而不必進(jìn)行上述判定的情況。例如,存在著不必進(jìn)行NAT穿越或者NAT穿越是不可能的等情況。第三實(shí)施例的裝置100與第二實(shí)施例的不同之處在于,在獲取網(wǎng)絡(luò)類型后判定是否可選擇地設(shè)定主機(jī)。
[0300]具體來說,第三實(shí)施例的裝置100與第二實(shí)施例的不同之處在于,還包括網(wǎng)絡(luò)類型判定部110和包發(fā)送/接收部120。第二實(shí)施例的裝置101的構(gòu)造類似于裝置100。
[0301]網(wǎng)絡(luò)類型判定部110判定與裝置100直接連接的網(wǎng)絡(luò)的類型以作為網(wǎng)絡(luò)類型。這里,將網(wǎng)絡(luò)類型分類為類型Tl、類型T2、類型T3、類型T4以及類型T5。
[0302]首先,網(wǎng)絡(luò)類型判定部110判斷作為通信對(duì)象的裝置101是否連接至與裝置100相同的LAN。如果裝置101是同一 LAN內(nèi)的裝置,則網(wǎng)絡(luò)類型判定部110判定網(wǎng)絡(luò)類型為類型Tl。在類型Tl的情況下,裝置100和裝置101能夠在不進(jìn)行NAT穿越的情況下進(jìn)行直接通信。
[0303]網(wǎng)絡(luò)類型判定部110將關(guān)于類型Tl的判定結(jié)果通知給過濾算法獲取部140、映射算法獲取部150、主機(jī)/從機(jī)判定部160以及包發(fā)送/接收部120。在類型Tl的情況下,過濾算法獲取部140不獲取過濾算法,且映射算法獲取部150不獲取映射算法。而且,主機(jī)/從機(jī)判定部160不判定是否設(shè)定主機(jī)。這是因?yàn)樵陬愋蚑l中,不必進(jìn)行NAT穿越。在類型Tl的情況下,包發(fā)送/接收部120代替直接通信部180與裝置101進(jìn)行直接通信。
[0304]接著,在不是類型Tl的情況下,網(wǎng)絡(luò)類型判定部110從映射算法獲取部150接收映射算法通知包,并判斷裝置100是否與WAN400直接連接。如果裝置100與WAN400直接連接,則網(wǎng)絡(luò)類型判定部110判定網(wǎng)絡(luò)類型為類型T2。在類型T2的情況下,由于未轉(zhuǎn)換裝置100的IP地址,因此裝置101不必預(yù)測(cè)外部端口號(hào)。因?yàn)槿绻麖难b置101向裝置100發(fā)送通信包則當(dāng)然能夠進(jìn)行通信,所以裝置100成為從機(jī)且裝置101成為主機(jī)。因此,裝置100不必參照判定表171判定是否設(shè)定主機(jī)。
[0305]網(wǎng)絡(luò)類型判定部110將關(guān)于類型T2的判定結(jié)果通知給主機(jī)/從機(jī)判定部160。在類型T2的情況下,主機(jī)/從機(jī)判定部160在不參照判定表171的情況下將裝置101判定為主機(jī)。
[0306]接著,當(dāng)既不是類型Tl也不是類型T2時(shí),網(wǎng)絡(luò)類型判定部110根據(jù)映射算法通知包來判斷裝置100的最上層路由器和裝置101的最上層路由器是否相同。此外,在最上層路由器相同的情況下,網(wǎng)絡(luò)類型判定部I1判斷最上層路由器是否具有發(fā)夾功能(hairpinfunct1n)。
[0307]這里,所述發(fā)夾功能表示這樣的功能:當(dāng)從路由器的LAN側(cè)向WAN側(cè)的外部IP地址發(fā)送包時(shí),路由器還將所述包轉(zhuǎn)送到LAN側(cè)。所述發(fā)夾功能還被稱為“NAT環(huán)回”或“IP環(huán)回”。在最上層路由器相同的情況下,LAN內(nèi)的裝置100和裝置101中的一者必須將被發(fā)送至路由器的外部IP地址的包轉(zhuǎn)送至LAN內(nèi)的裝置100和裝置101中的另一者。在沒有發(fā)夾功能的情況下,不進(jìn)行這種轉(zhuǎn)送,且不可能實(shí)現(xiàn)NAT穿越。
[0308]在最上層路由器不同的情況下,網(wǎng)絡(luò)類型判定部110判定網(wǎng)絡(luò)類型為類型T3。在最上層路由器相同且最上層路由器具有發(fā)夾功能的情況下,網(wǎng)絡(luò)類型判定部110判定網(wǎng)絡(luò)類型為類型T4。在最上層路由器相同且最上層路由器不具有發(fā)夾功能的情況下,網(wǎng)絡(luò)類型判定部110判定網(wǎng)絡(luò)類型為類型T5。雖然在類型T3和類型T4中,NAT穿越是可能的,但由于在類型T5中不可能實(shí)現(xiàn)NAT穿越,因此不能夠進(jìn)行直接通信。
[0309]網(wǎng)絡(luò)類型判定部110將關(guān)于類型T5的判定結(jié)果通知給包發(fā)送/接收部120和主機(jī)/從機(jī)判定部160。
[0310]在類型T5的情況下,主機(jī)/從機(jī)判定部160不判定是否設(shè)定主機(jī)。如上所述,這是因?yàn)椴豢赡軐?shí)現(xiàn)NAT穿越。
[0311]在類型T5的情況下,包發(fā)送/接收部120通過服務(wù)器500與裝置101進(jìn)行通信。在此情況下,例如,服務(wù)器500通過使用TURN(Traversal Using Relay NAT,利用中繼方式穿越NAT)來中繼數(shù)據(jù)。這里,服務(wù)器500可通過使用獨(dú)有協(xié)議來中繼數(shù)據(jù)。
[0312][網(wǎng)絡(luò)類型判定部的構(gòu)造示例]
[0313]圖35是圖示第三實(shí)施例中的網(wǎng)絡(luò)類型判定部110的一個(gè)構(gòu)造示例的框圖。該網(wǎng)絡(luò)類型判定部110包括相鄰裝置檢測(cè)部111、地址類型判定部112以及發(fā)夾功能調(diào)查部113。
[0314]相鄰裝置檢測(cè)部111判斷作為通信對(duì)象的裝置101是否是連接至與裝置100相同的LAN的裝置(以下稱作“相鄰裝置”)。相鄰裝置檢測(cè)部111在LAN內(nèi)廣播如下的包作為搜索包:該包請(qǐng)求用于規(guī)定裝置的信息(諸如裝置名和用戶名)的通知。例如使用SSDP(SimpleService Discovery Protocol,簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議)來發(fā)送所述搜索包。這里,可使用獨(dú)有協(xié)議來定義搜索包。
[0315]相鄰裝置檢測(cè)部111接收針對(duì)搜索包的搜索應(yīng)答包,并判斷被所述包通知的裝置是否是作為通信對(duì)象的裝置101。如果搜索應(yīng)答包是來自作為通信對(duì)象的裝置101的包,則相鄰裝置檢測(cè)部111檢測(cè)相鄰裝置。相鄰裝置檢測(cè)部111將檢測(cè)結(jié)果(即,關(guān)于是否為類型Tl的判定結(jié)果)通知給過濾算法獲取部140、映射算法獲取部150、主機(jī)/從機(jī)判定部160以及包發(fā)送/接收部120。而且,相鄰裝置檢測(cè)部111將所述檢測(cè)結(jié)果通知給地址類型判定部112。這里,在檢測(cè)相鄰裝置的情況下,相鄰裝置檢測(cè)部111將內(nèi)部IP地址和內(nèi)部端口號(hào)通知給包發(fā)送/接收部120。
[0316]地址類型判定部112判定裝置100的IP地址是否為內(nèi)部地址。在未檢測(cè)到相鄰裝置的情況下,地址類型判定部112通過執(zhí)行“ipconfig”指令等來獲取裝置100的IP地址。地址類型判定部112判定所獲取的IP地址是否為全局IP地址。在IP地址為私有IP地址的情況下,地址類型判定部112判定裝置100的IP地址為內(nèi)部IP地址。
[0317]同時(shí),在IP地址為全局IP地址的情況下,地址類型判定部112參照由裝置100生成的映射算法通知包來獲取由服務(wù)器500取得的裝置100的外部IP地址。根據(jù)該外部IP地址是否與由地址類型判定部112獲取的全局IP地址一致,地址類型判定部112判斷裝置100的IP地址是否被路由器轉(zhuǎn)換。在未進(jìn)行IP地址轉(zhuǎn)換的情況下(即,在該外部IP地址與由地址類型判定部112獲取的全局IP地址一致的情況下),地址類型判定部112判定裝置
100的IP地址是外部IP地址(換言之,與WAN直接連接)。地址類型判定部112將關(guān)于是否為外部IP地址的判定結(jié)果(即,關(guān)于是否為類型T2的判定結(jié)果)通知給主機(jī)/從機(jī)判定部160和發(fā)夾功能調(diào)查部113。
[0318]發(fā)夾功能調(diào)查部113調(diào)查最上層路由器是否具有發(fā)夾功能。在裝置100的IP地址是內(nèi)部IP地址的情況下,該發(fā)夾功能調(diào)查部113根據(jù)映射算法通知包來判斷最上層路由器是否相同。
[0319]具體來說,發(fā)夾功能調(diào)查部113從裝置100的映射算法通知包獲取發(fā)送源IP地址。該發(fā)送源IP地址是由服務(wù)器500接收的映射調(diào)查請(qǐng)求包的發(fā)送源的IP地址,并且對(duì)應(yīng)于裝置100的最上層路由器的IP地址。而且,發(fā)夾功能調(diào)查部113從裝置101的映射算法通知包獲取發(fā)送源IP地址。該發(fā)送源IP地址對(duì)應(yīng)于裝置101的最上層路由器的IP地址。如果這些發(fā)送源IP地址一致,則判定最上層路由器相同。
[0320]如果最上層路由器相同,則發(fā)夾功能調(diào)查部113生成從映射算法通知包獲取的與裝置100的外部端口號(hào)不同的外部端口號(hào)。發(fā)夾功能調(diào)查部113發(fā)送包括這個(gè)外部端口號(hào)和分配給裝置100的外部IP地址的指向目的地的包作為發(fā)夾調(diào)查請(qǐng)求包。如果路由器300具有發(fā)夾功能,則將該發(fā)夾調(diào)查請(qǐng)求包轉(zhuǎn)送到裝置100 (即IP環(huán)回)。
[0321]發(fā)夾功能調(diào)查部113判斷是否已接收發(fā)夾調(diào)查請(qǐng)求包。在接收到發(fā)夾調(diào)查請(qǐng)求包的情況下,發(fā)夾功能調(diào)查部113判定最上層路由器具有發(fā)夾功能。相反地,在未接收到發(fā)夾調(diào)查請(qǐng)求包的情況下,發(fā)夾功能調(diào)查部113判定最上層路由器不具有發(fā)夾功能。發(fā)夾功能調(diào)查部113將上述調(diào)查結(jié)果(換言之,關(guān)于是否為類型T5的判定結(jié)果)通知給包發(fā)送/接收部120和主機(jī)/從機(jī)判定部160。
[0322]這里,雖然發(fā)夾功能調(diào)查部113通過收發(fā)發(fā)夾調(diào)查請(qǐng)求包來調(diào)查發(fā)夾功能,但不限于這種構(gòu)造。例如,可使用STUN協(xié)議來調(diào)查發(fā)夾功能。
[0323]圖36圖示了第三實(shí)施例中的裝置的操作的一個(gè)示例。在檢測(cè)到相鄰裝置的情況下,判定網(wǎng)絡(luò)類型為類型Tl。在此情況下,不要求NAT穿越,裝置100與處于同一網(wǎng)絡(luò)中的裝置101進(jìn)行直接通信。
[0324]在未檢測(cè)到相鄰裝置的情況下,判斷裝置100的IP地址是否為內(nèi)部IP地址。如果為外部IP地址,則判定網(wǎng)絡(luò)類型為類型T2。在此情況下,不請(qǐng)求關(guān)于是否設(shè)定主機(jī)的判定,裝置100作為從機(jī)執(zhí)行NAT穿越處理并進(jìn)行直接通信。
[0325]如果裝置100的IP地址為內(nèi)部IP地址,則判斷最上層路由器是否相同。如果最上層路由器不同,則判定網(wǎng)絡(luò)類型為類型T3。
[0326]如果最上層路由器相同,則調(diào)查最上層路由器是否具有發(fā)夾功能。在最上層路由器具有發(fā)夾功能的情況下,判定網(wǎng)絡(luò)類型為類型T4。同時(shí),在最上層路由器不具有發(fā)夾功能的情況下,判定網(wǎng)絡(luò)類型為類型T5。
[0327]在類型T3或類型T4的情況下,裝置100判定是否設(shè)定主機(jī),進(jìn)行NAT穿越處理并且進(jìn)行直接通信。同時(shí),在類型T5的情況下,由于不可能直接通信,因此裝置100通過服務(wù)器500與裝置101進(jìn)行通信。
[0328]圖37圖示了第三實(shí)施例中的網(wǎng)絡(luò)類型Tl和網(wǎng)絡(luò)類型T2的一個(gè)示例。在圖37中,“a”示出了網(wǎng)絡(luò)類型Tl的一個(gè)示例。裝置100和裝置101與同一路由器300連接,且它們表示同一 LAN內(nèi)的裝置。在此情況下,各個(gè)裝置能夠在不進(jìn)行NAT穿越的情況下彼此進(jìn)行直接通信。
[0329]在圖37中,“b”示出了網(wǎng)絡(luò)類型T2的一個(gè)示例。裝置100與WAN400直接連接,且裝置101通過路由器301與WAN400連接。在此情況下,裝置100成為從機(jī)并且進(jìn)行NAT
穿越處理。
[0330]圖38圖示了第三實(shí)施例中的網(wǎng)絡(luò)類型T4和網(wǎng)絡(luò)類型T5的一個(gè)示例。裝置100通過路由器300與路由器301連接,且裝置101與路由器301直接連接。即,裝置100的最上層路由器和裝置101的最上層路由器相同。在此情況下,在裝置100與裝置101間的直接通信中,最上層路由器301必須將從LAN內(nèi)的裝置100指向外部的包轉(zhuǎn)送到LAN內(nèi)的裝置
101(B卩,IP環(huán)回)。因此,在路由器301具有發(fā)夾功能的情況下,實(shí)現(xiàn)了 NAT穿越。這里,網(wǎng)絡(luò)類型T3類似于圖1所示的配置。
[0331][裝置的操作例]
[0332]圖39是圖示第三實(shí)施例中的裝置100的操作的一個(gè)示例的流程圖。第三實(shí)施例的裝置100的操作與第二實(shí)施例的不同之處在于,還執(zhí)行步驟S903和步驟S905。第三實(shí)施例的裝置101的操作類似于裝置100。
[0333]當(dāng)執(zhí)行用于請(qǐng)求直接通信的程序時(shí)(步驟S901:是),裝置100判斷目的地裝置101是否是同一 LAN內(nèi)的裝置(相鄰裝置)(步驟S903)。
[0334]如果不是相鄰裝置(步驟S903:否),則裝置100向服務(wù)器500發(fā)送會(huì)話建立請(qǐng)求包(步驟S904)。同時(shí),如果是相鄰裝置(步驟S903:是),則裝置100以不通過服務(wù)器500的方式開始與裝置101的通信(步驟S905)。在步驟S905后,裝置100完成了操作。
[0335]圖40是圖示第三實(shí)施例的NAT穿越處理的一個(gè)示例的流程圖。第三實(shí)施例的NAT穿越處理與第二實(shí)施例的不同之處在于,還執(zhí)行步驟S931、步驟S932、步驟S933以及步驟S934。
[0336]裝置100判斷裝置100的地址是否為內(nèi)部IP地址(步驟S931)。在是內(nèi)部IP地址的情況下(步驟S931:是),裝置100判斷裝置100的最上層路由器和裝置101的最上層路由器是否相同(步驟S932)。在最上層路由器相同的情況下(步驟S932:是),裝置100判斷最上層路由器是否具有發(fā)夾功能(步驟S933)。
[0337]在最上層路由器不同的情況下(步驟S932:否),或者在最上層路由器具有發(fā)夾功能的情況下(步驟S933:是),裝置100參照判定表170 (步驟S935)。
[0338]裝置100根據(jù)標(biāo)志判斷是否將裝置100設(shè)定為主機(jī)(步驟S936)。在將裝置100設(shè)定為主機(jī)的情況下(步驟S936:是),或者在裝置100自身的地址是外部IP地址的情況下(步驟S931:否),裝置100執(zhí)行步驟S937?步驟S939。
[0339]在最上層路由器不具有發(fā)夾功能的情況下(步驟S933:否),裝置100通過服務(wù)器500進(jìn)行通信(步驟S934)。在步驟S934后,裝置100完成了操作。
[0340]而且,在第三實(shí)施例中,在步驟S940中,例如,在從機(jī)側(cè)設(shè)置端點(diǎn)獨(dú)立映射并且在從機(jī)側(cè)設(shè)置端點(diǎn)獨(dú)立過濾的情況下,判定不請(qǐng)求端口號(hào)的開放。
[0341]因此,本發(fā)明的第三實(shí)施例根據(jù)網(wǎng)絡(luò)類型可選擇地判斷是否將裝置100設(shè)定為主機(jī),因此,能夠在各種網(wǎng)絡(luò)配置中進(jìn)行直接通信。
[0342]注意,示出了上述實(shí)施例作為實(shí)施本技術(shù)的示例,在實(shí)施例中的事項(xiàng)與在權(quán)利要求的范圍內(nèi)限定本技術(shù)的事項(xiàng)之間存在著對(duì)應(yīng)關(guān)系。同樣,在權(quán)利要求的范圍內(nèi)限定本技術(shù)的事項(xiàng)與在本技術(shù)的實(shí)施例中具有同一名稱的事項(xiàng)之間存在著對(duì)應(yīng)關(guān)系。然而,本技術(shù)不限于所述實(shí)施例,在不脫離的本技術(shù)的主旨的范圍內(nèi)可通過對(duì)實(shí)施例作出各種修改來實(shí)施本技術(shù)。
[0343]此外,在上述每個(gè)實(shí)施例中說明的步驟可理解為包括一系列所述步驟的方法,且可理解為用于使計(jì)算機(jī)執(zhí)行這一系列步驟的程序或者其中存儲(chǔ)有所述程序的記錄介質(zhì)。例如,可使用⑶(光盤)、MD (小型磁盤)、DVD (數(shù)字視頻光盤)、存儲(chǔ)卡或藍(lán)光光盤(注冊(cè)商標(biāo))作為所述記錄介質(zhì)。
[0344]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,依據(jù)設(shè)計(jì)要求和其他因素,可以在本發(fā)明隨附的權(quán)利要求或其等同物的范圍內(nèi)進(jìn)行各種修改、組合、次組合以及改變。
[0345]此外,本技術(shù)還可構(gòu)造如下。
[0346]( I) 一種通信設(shè)備,包括:
[0347]發(fā)送源映射算法獲取部,所述發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào);
[0348]目的地映射算法獲取部,所述目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);以及
[0349]生成部,所述生成部在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,根據(jù)所述發(fā)送源映射算法生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
[0350](2)根據(jù)(I)所述的通信設(shè)備,
[0351]其中,所述發(fā)送源映射算法獲取部包括:
[0352]映射調(diào)查請(qǐng)求包發(fā)送部,所述映射調(diào)查請(qǐng)求包發(fā)送部向多個(gè)不同的目的地發(fā)送作為映射調(diào)查請(qǐng)求包的多個(gè)包,這些包用于請(qǐng)求關(guān)于分配給所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)的通知;和
[0353]映射調(diào)查應(yīng)答包接收部,所述映射調(diào)查應(yīng)答包接收部接收關(guān)于所述映射調(diào)查請(qǐng)求包的映射調(diào)查應(yīng)答包,并且根據(jù)由所述映射調(diào)查應(yīng)答包通知的外部地址和外部端口號(hào)來獲取所述發(fā)送源映射算法。
[0354](3)根據(jù)(I)或(2)所述的通信設(shè)備,還包括:
[0355]發(fā)送源過濾算法獲取部,其獲取作為發(fā)送源過濾算法的算法,該算法判斷是否使指向所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的包通過;和
[0356]目的地過濾算法獲取部,其獲取作為目的地過濾算法的算法,該算法判斷是否使指向所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的包通過;
[0357]其中,所述生成部在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,根據(jù)所述發(fā)送源映射算法生成所述外部端口號(hào)。
[0358](4)根據(jù)(I)至(3)中任一項(xiàng)所述的通信設(shè)備,還包括:
[0359]表,所述表被構(gòu)造用來存儲(chǔ)這樣的標(biāo)志,所述標(biāo)志示出了:對(duì)于所述發(fā)送源映射算法和所述目的地映射算法的每種組合,所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜;和
[0360]算法判定部,所述算法判定部根據(jù)與所述發(fā)送源映射算法和所述目的地映射算法的組合相對(duì)應(yīng)的所述標(biāo)志來判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜;
[0361]其中,所述生成部在所述算法判定部判定所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成所述外部端口號(hào)。
[0362](5)根據(jù)(4)所述的通信設(shè)備,還包括:
[0363]同一內(nèi)部網(wǎng)絡(luò)地址判定部,同一內(nèi)部網(wǎng)絡(luò)地址判定部被構(gòu)造用來判斷所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是否是同一局域網(wǎng)內(nèi)的地址;
[0364]其中,所述算法判定部在所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是位于不同局域網(wǎng)內(nèi)的地址的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0365](6 )根據(jù)(4 )或(5 )所述的通信設(shè)備,還包括:
[0366]地址類型判定部,地址類型判定部被構(gòu)造用來判斷被分配的地址是否是所述內(nèi)部地址;
[0367]其中,所述算法判定部在所述被分配的地址是所述內(nèi)部地址的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0368](7)根據(jù)(4)至(6)中任一項(xiàng)所述的通信設(shè)備,還包括:
[0369]轉(zhuǎn)換裝置判定部,所述轉(zhuǎn)換裝置判定部被構(gòu)造用來判斷發(fā)送源轉(zhuǎn)換裝置是否與目的地轉(zhuǎn)換裝置相同,所述發(fā)送源轉(zhuǎn)換裝置執(zhí)行所述發(fā)送源映射算法并且將所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部地址和外部端口號(hào),所述目的地轉(zhuǎn)換裝置執(zhí)行所述目的地映射算法并且將所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部地址和外部端口號(hào);
[0370]其中,所述算法判定部在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下判斷所述目的地映射算法是否比所述發(fā)送源映射算法更復(fù)雜。
[0371 ] ( 8 )根據(jù)(7 )所述的通信設(shè)備,還包括:
[0372]環(huán)回判定部,所述環(huán)回判定部被構(gòu)造用來判斷所述發(fā)送源轉(zhuǎn)換裝置是否進(jìn)行環(huán)回處理,所述環(huán)回處理將來自被分配給所述發(fā)送源的內(nèi)部地址的外部地址的包轉(zhuǎn)送至與所述發(fā)送源的所述內(nèi)部地址相對(duì)應(yīng)的外部地址;
[0373]其中,所述算法判定部在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下,或者在所述發(fā)送源轉(zhuǎn)換裝置和所述目的地轉(zhuǎn)換裝置相同并且所述發(fā)送源轉(zhuǎn)換裝置進(jìn)行所述環(huán)回處理的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
[0374](9)根據(jù)(I)至(8)中任一項(xiàng)所述的通信設(shè)備,還包括:
[0375]打洞包發(fā)送部,所述打洞包發(fā)送部在所述發(fā)送源映射算法不比所述目的地映射算法更復(fù)雜的情況下將包發(fā)送至被分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)作為打洞包。
[0376](10)根據(jù)(9)所述的通信設(shè)備,其中,所述打洞包發(fā)送部在所述發(fā)送源映射算法是特定算法的情況下生成所述外部端口號(hào)并且將所述打洞包發(fā)送至所述外部端口號(hào)和所述外部地址。
[0377](11)根據(jù)(I)至(10)中任一項(xiàng)所述的通信設(shè)備,還包括:
[0378]包發(fā)送部,所述包發(fā)送部在生成了所述外部端口號(hào)的時(shí)候向生成的外部端口號(hào)發(fā)送包。
[0379](12) 一種通信系統(tǒng),其包括:
[0380]服務(wù)器,所述服務(wù)器發(fā)送作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);和
[0381]通信設(shè)備,其包括發(fā)送源映射算法獲取部、目的地映射算法接收部和生成部,
[0382]所述發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào),
[0383]所述目的地映射算法接收部被構(gòu)造用來接收所述目的地映射算法,并且
[0384]所述生成部在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,根據(jù)所述發(fā)送源映射算法生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
[0385](13)根據(jù)(12)所述的通信系統(tǒng),
[0386]其中,所述服務(wù)器包括:
[0387]目的地映射算法發(fā)送部,所述目的地映射算法發(fā)送部發(fā)送所述目的地映射算法;
[0388]發(fā)送源過濾算法發(fā)送部,所述發(fā)送源過濾算法發(fā)送部獲取用于判斷是否使指向所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的包通過的算法,并且發(fā)送該算法作為發(fā)送源過濾算法;以及
[0389]目的地過濾算法發(fā)送部,所述過濾算法發(fā)送部獲取用于判斷是否使指向所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的包通過的算法,并且發(fā)送該算法作為目的地過濾算法;其中,所述通信設(shè)備還包括:
[0390]發(fā)送源過濾算法接收部,所述發(fā)送源過濾算法接收部接收所述發(fā)送源過濾算法;和
[0391]目的地過濾算法接收部,所述目的地過濾算法接收部接收所述目的地過濾算法;并且
[0392]其中,所述生成部在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配的外部端口號(hào)。
[0393]( 14)根據(jù)(13)所述的通信系統(tǒng),
[0394]其中,所述發(fā)送源過濾算法發(fā)送部和所述目的地過濾算法發(fā)送部包括:
[0395]過濾調(diào)查請(qǐng)求包發(fā)送部,所述過濾調(diào)查請(qǐng)求包發(fā)送部發(fā)送來自所述服務(wù)器中的不同的外部地址和外部端口號(hào)的多個(gè)包作為過濾調(diào)查請(qǐng)求包,所述多個(gè)包請(qǐng)求對(duì)于被分配給所述發(fā)送源和所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部地址和外部端口號(hào)的應(yīng)答;和
[0396]過濾算法獲取部,所述過濾算法獲取部根據(jù)是否存在對(duì)于每個(gè)所述過濾調(diào)查請(qǐng)求包的應(yīng)答來獲取并發(fā)送所述發(fā)送源過濾算法和所述目的地過濾算法。
[0397]( 15) 一種通信設(shè)備的控制方法,所述方法包括:
[0398]由發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào);
[0399]由目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);并且
[0400]在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,由生成部根據(jù)所述發(fā)送源映射算法生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
[0401](16) 一種程序,其用于使計(jì)算機(jī)執(zhí)行:
[0402]由發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào);
[0403]由目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);并且
[0404]在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,由生成部根據(jù)所述發(fā)送源映射算法生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
[0405]相關(guān)申請(qǐng)的交叉參考
[0406]本申請(qǐng)包含與2013年3月29日向日本專利局提交的日本優(yōu)先權(quán)專利申請(qǐng)JP2013-072362所公開的內(nèi)容相關(guān)的主題,因此將該日本優(yōu)先權(quán)申請(qǐng)的全部?jī)?nèi)容以引用的方式并入本文。
【權(quán)利要求】
1.一種通信設(shè)備,其包括: 發(fā)送源映射算法獲取部,所述發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào); 目的地映射算法獲取部,所述目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);以及 生成部,所述生成部在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
2.如權(quán)利要 求1所述的通信設(shè)備, 其中,所述發(fā)送源映射算法獲取部包括: 映射調(diào)查請(qǐng)求包發(fā)送部,所述映射調(diào)查請(qǐng)求包發(fā)送部向多個(gè)不同的目的地發(fā)送作為映射調(diào)查請(qǐng)求包的多個(gè)包,所述多個(gè)包用于請(qǐng)求關(guān)于被分配給所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)的通知;和 映射調(diào)查應(yīng)答包接收部,所述映射調(diào)查應(yīng)答包接收部接收關(guān)于所述映射調(diào)查請(qǐng)求包的映射調(diào)查應(yīng)答包,并且根據(jù)由所述映射調(diào)查應(yīng)答包通知的外部地址和外部端口號(hào)來獲取所述發(fā)送源映射算法。
3.如權(quán)利要求1所述的通信設(shè)備,還包括: 發(fā)送源過濾算法獲取部,其獲取作為發(fā)送源過濾算法的算法,該算法判斷是否使指向所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的包通過;和 目的地過濾算法獲取部,其獲取作為目的地過濾算法的算法,該算法判斷是否使指向所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的包通過; 其中,所述生成部在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成所述外部端口號(hào)。
4.如權(quán)利要求1至3中任一項(xiàng)所述的通信設(shè)備,還包括: 表,所述表被構(gòu)造用來存儲(chǔ)這樣的標(biāo)志,所述標(biāo)志示出了:對(duì)于所述發(fā)送源映射算法和所述目的地映射算法的每種組合,所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜;和 算法判定部,所述算法判定部根據(jù)與所述發(fā)送源映射算法和所述目的地映射算法的組合相對(duì)應(yīng)的所述標(biāo)志來判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜; 其中,所述生成部在所述算法判定部判定所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成所述外部端口號(hào)。
5.如權(quán)利要求4所述的通信設(shè)備,還包括: 同一內(nèi)部網(wǎng)絡(luò)地址判定部,所述同一內(nèi)部網(wǎng)絡(luò)地址判定部被構(gòu)造用來判斷所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是否是同一局域網(wǎng)內(nèi)的地址; 其中,所述算法判定部在所述發(fā)送源的內(nèi)部地址和所述目的地的內(nèi)部地址是位于不同局域網(wǎng)內(nèi)的地址的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
6.如權(quán)利要求4所述的通信設(shè)備,還包括: 地址類型判定部,地址類型判定部被構(gòu)造用來判斷被分配的地址是否是所述內(nèi)部地址;其中,所述算法判定部在所述被分配的地址是所述內(nèi)部地址的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
7.如權(quán)利要求4所述的通信設(shè)備,還包括: 轉(zhuǎn)換裝置判定部,所述轉(zhuǎn)換裝置判定部被構(gòu)造用來判斷發(fā)送源轉(zhuǎn)換裝置是否與目的地轉(zhuǎn)換裝置相同,所述發(fā)送源轉(zhuǎn)換裝置執(zhí)行所述發(fā)送源映射算法并且將所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部地址和外部端口號(hào),所述目的地轉(zhuǎn)換裝置執(zhí)行所述目的地映射算法并且將所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)轉(zhuǎn)換為外部地址和外部端口號(hào); 其中,所述算法判定部在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下判斷所述目的地映射算法是否比所述發(fā)送源映射算法更復(fù)雜。
8.如權(quán)利要求7所述的通信設(shè)備,還包括: 環(huán)回判定部,所述環(huán)回判定部被構(gòu)造用來判斷所述發(fā)送源轉(zhuǎn)換裝置是否進(jìn)行環(huán)回處理,所述環(huán)回處理將來自被分配給所述發(fā)送源的內(nèi)部地址的外部地址的包轉(zhuǎn)送至與所述發(fā)送源的所述內(nèi)部地址相對(duì)應(yīng)的外部地址; 其中,所述算法判定部在所述發(fā)送源轉(zhuǎn)換裝置與所述目的地轉(zhuǎn)換裝置不同的情況下,或者在所述發(fā)送源轉(zhuǎn)換裝置和所述目的地轉(zhuǎn)換裝置相同并且所述發(fā)送源轉(zhuǎn)換裝置進(jìn)行所述環(huán)回處理的情況下判斷所述發(fā)送源映射算法是否比所述目的地映射算法更復(fù)雜。
9.如權(quán)利要求1至3中任一項(xiàng)所述的通信設(shè)備,還包括: 打洞包發(fā)送部,所述打洞包發(fā)送部在所述發(fā)送源映射算法不比所述目的地映射算法更復(fù)雜的情況下將包發(fā)送至被分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的所述外部地址和所述外部端口號(hào)作為打洞包。
10.如權(quán)利要求9所述的通信設(shè)備,其中,所述打洞包發(fā)送部在所述發(fā)送源映射算法是特定算法的情況下生成所述外部端口號(hào)并且將所述打洞包發(fā)送至所述外部端口號(hào)和所述外部地址。
11.如權(quán)利要求1至3中任一項(xiàng)所述的通信設(shè)備,還包括: 包發(fā)送部,所述包發(fā)送部在生成了所述外部端口號(hào)的時(shí)候向生成的外部端口號(hào)發(fā)送包。
12.一種通信系統(tǒng),其包括: 服務(wù)器,所述服務(wù)器發(fā)送作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);和 通信設(shè)備,其包括發(fā)送源映射算法獲取部、目的地映射算法接收部和生成部, 所述發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào), 所述目的地映射算法接收部被構(gòu)造用來接收所述目的地映射算法,并且所述生成部在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
13.如權(quán)利要求12所述的通信系統(tǒng), 其中,所述服務(wù)器包括: 目的地映射算法發(fā)送部,所述目的地映射算法發(fā)送部發(fā)送所述目的地映射算法; 發(fā)送源過濾算法發(fā)送部,所述發(fā)送源過濾算法發(fā)送部獲取用于判斷是否使指向所述發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào)的包通過的算法,并且發(fā)送該算法作為發(fā)送源過濾算法;以及 目的地過濾算法發(fā)送部,所述過濾算法發(fā)送部獲取用于判斷是否使指向所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的包通過的算法,并且發(fā)送該算法作為目的地過濾算法;其中,所述通信設(shè)備還包括: 發(fā)送源過濾算法接收部,所述發(fā)送源過濾算法接收部接收所述發(fā)送源過濾算法;和目的地過濾算法接收部,所述目的地過濾算法接收部接收所述目的地過濾算法;并且其中,所述生成部在所述發(fā)送源過濾算法比所述目的地過濾算法更復(fù)雜的情況下,或者在所述發(fā)送源過濾算法和所述目的地過濾算法相同并且所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下生成被重新分配的外部端口號(hào)。
14.如權(quán)利要求13所述的通信系統(tǒng), 其中,所述發(fā)送源過濾算法發(fā)送部和所述目的地過濾算法發(fā)送部包括: 過濾調(diào)查請(qǐng)求包發(fā)送部,所述過濾調(diào)查請(qǐng)求包發(fā)送部發(fā)送來自所述服務(wù)器中的不同的外部地址和外部端口號(hào)的多個(gè)包作為過濾調(diào)查請(qǐng)求包,所述多個(gè)包請(qǐng)求對(duì)于被分配給所述發(fā)送源和所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部地址和外部端口號(hào)的應(yīng)答;和 過濾算法獲取部,所述過濾算法獲取部根據(jù)是否存在對(duì)于每個(gè)所述過濾調(diào)查請(qǐng)求包的應(yīng)答來獲取并發(fā)送所述發(fā)送源過濾算法和所述目的地過濾算法。
15.一種通信設(shè)備的控制方法,所述方法包括: 由發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào); 由目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);并且 在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,由生成部生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
16.一種程序,其用于使計(jì)算機(jī)執(zhí)行: 由發(fā)送源映射算法獲取部獲取作為發(fā)送源映射算法的算法,該算法將外部地址和外部端口號(hào)分配給發(fā)送源的內(nèi)部地址和內(nèi)部端口號(hào); 由目的地映射算法獲取部獲取作為目的地映射算法的算法,該算法將外部地址和外部端口號(hào)分配給目的地的內(nèi)部地址和內(nèi)部端口號(hào);并且 在所述發(fā)送源映射算法比所述目的地映射算法更復(fù)雜的情況下,由生成部生成被重新分配給所述目的地的內(nèi)部地址和內(nèi)部端口號(hào)的外部端口號(hào)。
【文檔編號(hào)】H04L12/749GK104079487SQ201410108280
【公開日】2014年10月1日 申請(qǐng)日期:2014年3月21日 優(yōu)先權(quán)日:2013年3月29日
【發(fā)明者】佐原保徳, 初川健介, 巖崎拓史, 菅原崇行, 吉村英明 申請(qǐng)人:索尼公司