期刊VIP學術指導 符合學術規范和道德
保障品質 保證專業,沒有后顧之憂
摘要:由于局域網與互聯網編址方式不同,NAT 設備掩藏了參與構建P2P 網絡的大量用戶節點。因此位于不同NAT 之后的用戶節點如何發現對方、如何彼此建立直接連接就成為P2P 亟待解決的問題之一。
P2P技術打破了傳統的服務器與客戶端的界限,消除了傳統的IPv4與DNS 域名系統的局限性,讓所有聯網并參與到P2P 應用來的所有機器聯合起來,組成一個威力強大的并行計算機,從而實現計算能力與計算資源的突破。P2P所帶來的效益,首先將體現在運營成本的大幅降低上,甚至可以讓一些原本高成本服務的實際成本接近零,從而,讓一些原本是不可能實現的商業模式成為可能。
現有的互聯網是基于IPv4架構,隨著計算機接入數量的不斷增加,IP 地址資源愈加匱乏,NAT的引入解決了這個問題,通過部署NAT 可以使一個局域網所有主機通過一個或幾個公網IP 地址來訪問互聯網,不僅如此,NAT 實際應用中還有負載均衡、保護內部局域網和優化重疊網絡等功能。
1 NAT類型
根據NAT的工作方式不同,可以分四種類型:完全圓錐型NAT(Full Cone NAT),地址限制圓錐型NAT (Address Restricted Cone NAT),端口限制圓錐型NAT (Port Restricted Cone NAT),對稱型NAT (Symmetric NAT)。假設節點A 在內網,內網IP地址記為Aip,端口號Aport;穿越NAT 后的外部IP地址記為A’ip / port,外網設備節點B的地址為Bip / port。以下圖網絡結構為例,分別說明四種類型的特點。
完全圓錐型NAT情況下,NAT外的任意設備如節點B,訪問A’ip / port 即可訪問Aip / port;
地址限制圓錐型NAT情況下,NAT外的任意設備如節點B,訪問A’ip / port 即可訪問Aip / port,但是B 要能訪問A,必須A 先訪問B的IP 地址Bip;
端口限制圓錐型NAT情況下,NAT外的任意設備如節點B,訪問A’ip / port 即可訪問Aip / port,但是B 要能訪問A,必須A 先訪問B的IP 地址Bip以及端口B port;
以上三種類型有個共同特點,不管節點A 訪問NAT 以外的任何地址,穿越NAT 后映射為公網地址A’ip / port,即只要從同一個內部地址和端口出來的包,NAT都將它轉換成同一個外部地址和端口。因此,它們被統稱為Cone NAT。
而在對稱型NAT情況下,NAT 內的節點A(Aip / port)訪問特定的NAT 外的節點B(Bip / port),使用相同的外部地址A’ip / port。如果節點A訪問NAT 外的其他節點,將使用不同的外部地址和端口號;而且必須先有內部節點首先訪問外部節點,外部節點才能訪問內部節點。如此設計是出于安全性考慮,一些功能較強的NAT 提供這種可選的工作模式。
2 NAT穿越技術
不少方案已經被應用于解決穿透NAT問題,例如:ALGs(Application Layer Gateways)、Middlebox Control Protocol、STUN (Simple Traversal of UDP through NAT)、TURN(Traversal Using Relay NAT)、RSIP(Realm Specific IP)、symmetric RTP等。然而,當這些技術應用于不同的網絡拓撲時都有著顯著的利弊,以至于我們只能根據不同的接入方式來應用不同的方案,為了適應各種NAT 環境,出現了一種ICE的解決方案。
ICE(Interactive Connectivity Establishment)本身不是一種新技術,它只是把原來的一些技術綜合運用。作為最為全面的一種解決NAT 穿越方案,ICE的設計方案大多綜合使用STUN 和 TURN 這兩種穿越技術,最大限度地利用STUN,當STUN 無法作用的時候才使用TRUN,這樣就能避免單獨使用STUN 不能穿越某些NAT 的弊病和最大限度的減少TRUN 的使用。其中NAT 設備的類型對于ICE 選擇穿越技術有很重要的影響,所以在穿越NAT設備前應先檢測NAT 設備的類型。
3 NAT類型檢測實現方案
假設節點Client 在內網,通過NAT 設備連接Internet,Internet 設備節點A的會話地址為ServerA:PortX,Internet設備節點B的會話地址為ServerB:PortX和ServerB:PortY,其中ServerA 和ServerB 是兩個不同的公網IP,網絡布局如下圖所示:
那么怎么來檢測該網絡中的NAT 設備的類型呢?網絡傳輸協議TCP / IP 協議簇中傳輸層的協議包括TCP(Transmission Control Protocol 傳輸控制協議)和UDP (User Datagram Protocol 用戶數據報協議),TCP 相比UDP而言更為復雜,因為TCP 是面向連接的服務,需要三次握手機制,會涉及到連接狀態的保持等問題,UDP雖然是一個不可靠的協議,但它是分發信息的一個理想協議,UDP具有TCP所望塵莫及的速度和性能優勢。NAT網絡檢測需要傳輸的數據量少,對傳輸可靠性的依賴小,因此選擇基于UDP 協議來實現方案,圖3是具體的程序算法流程圖。
在UDP 通訊中,內網中的節點Client 主動向外發送數據包請求,并根據返回包的信息判定內網中NAT 設備的類型。Internet 設備節點A和節點B都有回應Client返回包的功能,而且節點A還具備接收節點Client的申請轉發數據包給節點B的能力。
4 結束語
P2P技術已經被大量運用于各種互聯網應用中,在實現P2P 應用的過程中,如果某個節點(Peer)位于私有網絡則必定會遇到NAT 穿越的問題,換而言之,這樣的節點在與其他節點通訊時必須先完成NAT 穿越。NAT 類型檢測算法使NAT 的穿越更加智能,檢測NAT 的類型的結果可以用于選擇合適的NAT 穿透技術方案,提高了穿透的效能,具有很大靈活性。
參考文獻:
[1] Egevang K,Francis P.Rfc 1631: The ip network address translator(nat) [S].1994.
[2] Rosenberg J,Mahy R.Session Traversal Utilities for NAT(STUN) [S] .RFC 5389, IETF, 2008.
[3] Rosenberg J,Mahy R,Matthews P.Traversalusing relays aroundnat (TURN): Relay extensions to session traversal utilities for nat (stun)[S].RFC 5766 (Review Copy), IETF, 2010.
[4] Rosenberg J,Mahy R, jdrosen.net.Interactive Connectivity Establishment (ICE):A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols[S].RFC5245, IETF, 2010.
[5] 張澤鵬. P2P網絡中NAT穿透技術的研究與實現[D].北京:北京郵電大學,2010.
[6] Gary R,Wright W.Richard Stevens. TCP/IP詳解(卷2) :實現[M].陸學瑩,譯.北京:機械工業出版社,2000.