一種通信方法和通信裝置的制造方法
【專利摘要】本發明提供一種通信方法,通過判斷客戶端本身的地址是否與服務器上接收到的客戶端的地址相同來確定鏈路上是否存在NAT設備,以及通過判斷客戶端連接的網絡設備的地址與服務器上接收到的客戶端的地址判斷是否為多級NAT串聯,并由此采用UPnP或長連接方式在所述客戶端與所述服務器之間通信。本發明還提供一種通信裝置。本發明的方案結合多種NAT穿透方式的優點,可以穿透所有NAT類型,既保證了穿透效率,還提高了系統性能。
【專利說明】
_種通信方法和通信裝置
技術領域
[0001]本發明涉及計算機通信,具體涉及一種用于在客戶端與服務器進行通信的方法和
目.0
【背景技術】
[0002]NAT (Network Address Translat1n)又稱〃網絡地址轉換〃,它是一種把內部私有網絡地址翻譯成合法網絡IP地址的技術。NAT就是在局域網內部使用私有地址,而當內部節點要與外部網絡進行通訊時,就在網關(可以理解為出口)處將內部地址替換成公用地址,從而在公網(internet)上正常使用.通過這種方法,可以只申請一個合法IP地址,就把整個局域網中的計算機接入Internet中。
[0003]在這樣的體系中,設備的私有地址在公網上是不能被路由。這樣,NAT不僅解決了IPv4地址資源不足的問題,還能夠有效避免來自網絡外部的攻擊,隱藏并保護網絡內部的計算機。同時,NAT也阻礙了外網到內網的直接訪問,設備必須通過NAT設備才能訪問外網,外網上的設備也必須通過NAT才能訪問內網的設備。而P2P通信是兩臺設備直接通信,這樣當有一個設備處于NAT設備下的內網時,這兩個設備之間就不能進行P2P通信。于是,人們就需要采用一種方法能夠使得消除NAT的障礙,稱為NAT穿透。NAT穿透是P2P通信的主要問題。
[0004]已知的一種NAT穿透方法是使用UPnPWPnP是微軟提出的通用即插即用協議簇,用于全網絡嵌入式設備的點到點互聯通信。當NAT設備支持UPnP時,利用UPnP能夠把P2P通信的端口號自動映射到公網上,從而公網上的設備能夠對NAT私網側發起連接。然而,使用UPnP只能穿透一層NAT。也就是,如果NAT設備本身也處于另一 NAT設備的私網上,則UPnP就不能起到作用。
[0005]長連接是一種TCP連接,是具有保活通信的TCP連接,可以穿透TCP NAT和對稱型,支持多級串聯的NAT穿透,是當前互聯網常用的TCP穿透方法。長連接的應用缺陷是服務器負載和帶寬占用較高。
【發明內容】
[0006]本發明的目的提供一種可用于NAT穿透的新的通信方案。
[0007]按照本發明的一個方面,一種通信方法,用于在客戶端與服務器之間的通信,包括如下步驟:SlO,在所述客戶端與所述服務器之間建立連接;S20,判斷所述客戶端的第一地址是否與所述服務器上存儲的所述客戶端的第二地址相同;S30,如果所述第一地址與所述第二地址不同,則,判斷所述客戶端連接的網絡設備的地址與所述第二地址是否相同;S40,如果所述第二地址與所述網絡設備的地址相同,則在所述客戶端與所述服務器之間基于UPnP協議的通信;S50,如果所述第二地址與所述網絡設備的地址不同,則在所述客戶端與所述服務器之間基于長連接方式進行通信。
[0008]在一個實施例中,該方法還包括:將所述第二地址從所述服務器傳輸到所述客戶端,以及在所述客戶端完成步驟S20。
[0009]在一個實施例中,該方法還包括:將所述第一地址從所述客戶端發送到所述服務器,以及在所述服務器完成步驟S20。
[0010]在一個實施例中,該方法還包括:將所述網絡設備的地址發送到所述客戶端,以及在所述客戶端完成所述步驟S30。
[0011]在一個實施例中,該方法還包括:將所述網絡設備的地址發送到所述服務器,以及在所述服務器完成所述步驟S30。
[0012]按照本發明另一方面,一種通信裝置,其用于在客戶端與服務器之間的通信,包括:第一判斷單元,其判斷所述客戶端的第一地址與所述服務器上存儲的所述客戶端的第二地址是否相同;第二判斷單元,其判斷所述第二地址與所述客戶端連接的網絡設備的地址是否相同;第一通信單元,其構造為基于UPnP協議在所述客戶端與所述服務器之間進行通信;第二通信單元,其構造為基于長連接方式在所述客戶端與所述服務器之間進行通信;其中,當所述第二地址與所述網絡設備的地址相同時,所述第一通信單元運行,當所述第二地址與所述網絡設備的地址不同時,所述第二通信的運行。
[0013]進一步,該裝置還包括信息獲取單元,其獲取所述第一地址、第二地址和所述網絡設備的地址,并將所述第一地址和第二地址發送至所述第一判斷單元,以及將所述第二地址和所述網絡設備的地址發送至所述第二判斷單元。
[0014]在本發明中,網路設備可以是路由器或者網關。其中,客戶端可以為任何能夠接入網絡的設備,服務器是連接在公網上并且提供網絡服務的計算設備,例如存儲或其他信息服務。
[0015]本發明的方案結合多種NAT穿透方式的優點,可以穿透所有NAT類型,既保證了穿透效率,還提高了系統性能。
【附圖說明】
[0016]下面將以明確易懂的方式,結合【附圖說明】優選實施方式,對上述特性、技術特征、優點及其實現方式予以進一步說明。
[0017]圖1示出客戶端設備通過網關與服務器的網絡連接。
[0018]圖2示出按照本發明的通信裝置的實施例的示意圖。
[0019]附圖標號說明:
[0020]10移動設備20網關30服務器40計算機50路由器60網關
[0021]100第一比較單元200第二比較單元300第一通信單元400第二通信單元500信息獲取單元
【具體實施方式】
[0022]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對照【附圖說明】本發明的【具體實施方式】。顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖,并獲得其他的實施方式。
[0023]如前所述,NAT是將私網內的設備的地址轉換為公網上的地址。例如,當客戶端處于NAT設備的內網時,連接到服務器上的地址實際上是NAT設備映射的地址,而不是客戶端從內網的DHCP服務器獲取的地址作為客戶端本身的地址。當客戶端與服務器通信時,NAT設備會將客戶端本身的地址映射為公網上的地址(映射地址),例如,可以是NAT設備在公網上分配到的地址。客戶端發出報文時,其報頭的源地址是客戶端本身的地址。當到達NAT設備時,報頭中的源地址就被修改為前述映射后的地址。服務器接收到的報文的報頭中的源地址就是該映射地址。也就是,在服務器接收到的數據報文的報頭中的源地址實際上是NAT設備在建立連接時分配給客戶端的映射地址,而不是客戶端發出上述數據報文時寫入報頭的地址。
[0024]在本說明書中,術語“私網”與“內網”的含義相同,而術語“公網”與“外網”的含義相同,均為本領域公知的術語。
[0025]在圖1示出的網絡拓撲結構中,移動設備10通過網關20與服務器30連接。網關20是NAT設備,此時,移動設備10實際上處于網關20的私網中。
[0026]同時,如圖1所示,計算機40通過路由器50、網關60連接到服務器30。路由器50為NAT設備,此時計算機40處于路由器50的內網中。同時,當網關60也是NAT設備時,則路由器50的整個內網實際上也是處于網關60的內網中。這就形成了兩級串聯的NAT拓撲結構。
[0027]在這種情況下,移動設備10的地址是所處的網關20的內網中的DHCP服務器分配給移動設備10的地址。DHCP服務器可以是集成在網關20上的模塊,也可以是單獨的服務器。
[0028]當移動設備10與服務器30通信時,服務器30接收到的數據報文的報頭中的源地址實際上是網關20的分配給移動設備10的地址,而不是移動設備10本身的地址。
[0029]類似地,計算機40從路由器50的內網上的DHCP服務器分配到IP地址作為計算機40本身的地址。通常,路由器50本身會具有DHCP服務端的功能。也就是,路由器50會將一個IP地址分配給計算機40作為其本身的地址。而路由器50本身的地址是網關60的內網上的DHCP服務器分配給路由器50的地址。
[0030]當計算機40與服務器30通信時,計算機40發出數據報文時,報頭的源地址是計算機40本身的地址。當數據報文經過路由器50時,路由器50將報頭中的源地址映射為路由器50在網關60的內網上的地址。而當數據報文經過網關60時,網關60將報頭中的源地址映射為網關60在公網上的地址。當服務器30收到報文時,報頭中的源地址就不是計算機40本身的地址,也不是路由器50本身的地址,而是網關60在公網上的地址。
[0031]在上述拓撲結構中,按照本發明的通信方法,在移動設備10與服務器30之間經過網關20建立連接。為了方便描述,移動設備10本身的地址為第一地址,而服務器30收到的報文的報頭中的源地址為第二地址,也就是服務器保存的移動設備10的地址。則比較第一地址與第二地址。如前所述,網關20為NAT設備時,移動設備10本身的地址(第一地址)與服務器接收到的報文中的源地址(第二地址)是不同的。反之,當第一地址與第二地址不同時,可以確定在移動設備10與服務器30的鏈路上存在NAT設備。
[0032]在一個例子中,可以由移動設備10向服務器30發出請求,獲取服務器上的報文的源地址,而后在移動設備10端進行所述的比較。或者,在另外的例子中,可以是服務器30向移動設備10發出請求以獲取移動設備10的第一地址,并在服務器10端進行所述比較。
[0033]類似地,在計算機40與服務器30建立連接。比較計算機40本身的地址(第一地址)與服務器30收到的報文的源地址(第二地址)。如前所述,當路由器50或者網關60為NAT設備時,所述第一地址與所述第二地址是不同的。反之,當第一地址與第二地址不同時,也可以確定在鏈路上存在NAT設備。
[0034]對于客戶端10與服務器30的連接,當第一地址與第二地址不同時,進一步比較網關20的地址與服務器30上的得到的第二地址。如前所述,通常情況下,NAT設備所映射的公網地址實際上就是NAT設備本身在公網上的地址。因此,當網關20的地址與服務器30上的第二地址相同時,則確定網關20與服務器30之間沒有更多的NAT設備。這樣,客戶端10與服務器30之間可以基于UPnP協議進行通信。
[0035]對于計算機40與服務器30的通信。當第一地址與第二地址不同時,比較路由器50的地址與服務器上的第二地址。路由器50實際上在網關60的內網,其地址是網關60的內網上的地址。路由器上的第二地址實際上是網關60在公網上的地址。因此,路由器50的地址與第二地址是不同的。反之,就可以確定,在路由器與服務器之間還存在其他NAT設備。在這個例子中,就是網關60。
[0036]此時,計算機40與服務器30之間通過UPnP協議進行通信也不能穿透NAT設備。計算機40與服務器30之間可以通過長連接的方式進行通信。
[0037]在一個例子中,可以是服務器將第二地址發送到計算機40,并且計算機40向路由器50請求獲取路由器的地址,并且在計算機40進行比較。或者,計算機40向路由器50請求獲取路由器的地址并發送給服務器30,在服務器30處比較路由器的地址與第二地址。
[0038]在上面的描述中,本領域技術人員能夠了解基于UPnP協議通信以及通過長連接的方式進行通信可以采用任何適當的方案。
[0039]如上所述,上述的方法可適于不同的網絡拓撲中完成NAT穿透。
[0040]由此,在另一實施例中,一種通信裝置,包括:第一判斷單元100,其判斷前述的第一地址與所述服務器上存儲的第二地址是否相同;以及,第二判斷單元200,其判斷所述第二地址與路由器或網關的地址是否相同。
[0041]當該第一地址與該第二地址不同時,則第一判斷單元100向該第二判斷單元傳輸指令,判斷第二地址與路由器或網關的地址是否相同。
[0042]當該第二地址與路由器或網關的地址相同時,則第二判斷單元將指令發送給第一通信單元300,其構造為基于UPnP協議在移動設備或計算機與服務器之間進行通信。
[0043]當該第二地址與路由器或網關的地址不同時,則該第二判斷單元將指令發送給第二通信單元400,其構造為基于長連接方式在所述移動設備或計算機與所述服務器之間進行通信。
[0044]進一步,該裝置還包括信息獲取單元500,其獲取所述第一地址、第二地址和路由器或網關的地址,并將所述第一地址和第二地址發送至所述第一判斷單元,以及將所述第二地址和路由器或網關的地址發送至所述第二判斷單元。
[0045]在一個例子中,該信息獲取單元設在移動設備或計算機上,其通過網絡協議向服務器發出請求獲取第二地址,以及通過網絡協議向路由器/網關發出請求獲取路由器/網關的地址。該第一和第二判斷單元設在移動設備或計算機上。該第一和第二通信單元可以由設在移動設備/計算機、路由器/網關以及服務器上的網絡通信模塊組成。
[0046]應當說明的是,上述實施例均可根據需要自由組合。以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
【主權項】
1.一種通信方法,用于在客戶端與服務器之間的通信,其特征在于,該方法包括如下步驟: SlO,在所述客戶端與所述服務器之間建立連接; S20,判斷所述客戶端的第一地址是否與所述服務器上存儲的所述客戶端的第二地址相同; S30,如果所述第一地址與所述第二地址不同,則,判斷所述客戶端連接的網絡設備的地址與所述第二地址是否相同; S40,如果所述第二地址與所述網絡設備的地址相同,則在所述客戶端與所述服務器之間基于UPnP協議的通信; S50,如果所述第二地址與所述網絡設備的地址不同,則在所述客戶端與所述服務器之間基于長連接方式進行通信。2.根據權利要求1所述的通信方法,其特征在于,還包括:將所述第二地址從所述服務器傳輸到所述客戶端,以及在所述客戶端完成步驟S20。3.根據權利要求1所述的通信方法,其特征在于,還包括:將所述第一地址從所述客戶端發送到所述服務器,以及在所述服務器完成步驟S20。4.根據權利要求1所述的通信方法,其特征在于,還包括:將所述網絡設備的地址發送到所述客戶端,以及在所述客戶端完成所述步驟S30。5.根據權利要求1所述的通信方法,其特征在于,還包括:將所述網絡設備的地址發送到所述服務器,以及在所述服務器完成所述步驟S30。6.—種通信裝置,其用于在客戶端與服務器之間的通信,其特征在于,包括: 第一判斷單元,其判斷所述客戶端的第一地址與所述服務器上存儲的所述客戶端的第二地址是否相同; 第二判斷單元,其判斷所述第二地址與所述客戶端連接的網絡設備的地址是否相同; 第一通信單元,其構造為基于UPnP協議在所述客戶端與所述服務器之間進行通信; 第二通信單元,其構造為基于長連接方式在所述客戶端與所述服務器之間進行通信; 其中,當所述第二地址與所述網絡設備的地址相同時,所述第一通信單元運行,當所述第二地址與所述網絡設備的地址不同時,所述第二通信的運行。7.根據權利要求6所述的通信裝置,其特征在于,還包括信息獲取單元,其獲取所述第一地址、第二地址和所述網絡設備的地址,并將所述第一地址和第二地址發送至所述第一判斷單元,以及將所述第二地址和所述網絡設備的地址發送至所述第二判斷單元。
【文檔編號】H04L29/12GK106027689SQ201610283819
【公開日】2016年10月12日
【申請日】2016年4月29日
【發明人】張享達
【申請人】上海斐訊數據通信技術有限公司