999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

NAT穿越技術研究

2020-07-27 14:10:34陳恒勛閆永航孟丹夏倫
現代信息科技 2020年6期

陳恒勛 閆永航 孟丹 夏倫

摘? 要:NAT是一種在IP數據包通過路由器或防火墻時重寫源IP地址或目的IP地址的技術,作為一種解決IPv4地址短缺的方案而流行起來,但卻阻礙了以P2P網絡為基礎的應用的發展。為解決這一問題,各種NAT穿越技術應運而生,文章基于不同場景視角闡述四種主流的NAT穿越方案,包括UDP打洞技術、STUN協議、TURN協議和ICE框架,并說明了各方案的研究進展。

關鍵詞:NAT穿越;UDP打洞;STUN;TURN;ICE

中圖分類號:TP393? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)06-0094-05

Abstract:Network Address Translation (NAT) is a technology that rewrites a source IP address or a destination IP address when an IP data packet passes through a router or firewall. NAT is popular as a solution to the shortage of IPv4 addresses,but it has hindered the development of applications based on P2P networks. In order to solve this problem,various NAT traversal technologies have emerged at the historic moment. This paper describes four mainstream NAT traversal solutions based on different scenarios,including UDP hole punching technology,STUN protocol,TURN protocol and ICE framework,and then describes the research progress of each scheme.

Keywords:NAT traversal;UDP hole punching;STUN;TURN;ICE

0? 引? 言

1994年,網絡地址轉換(Network Address Translation,NAT)[1]作為一種解決IPv4地址短缺的方案流行起來,在許多國家廣泛使用。時至今日,NAT成為了家庭和中小型辦公室路由器上的一個標準實現。雖然NAT提供了許多益處,但仍存在許多缺點,其最大的缺點就是使用了NAT設備私有網絡中的主機連接問題。在傳統的P2P網絡中,端到端通信的兩臺主機之間的地位是平等的,參與通信的兩臺主機均可主動發起連接[2]。但NAT設備卻使得外網的主機無法主動訪問私有網絡中的主機,從而破壞了這種通信平等,這一問題嚴重地阻礙了P2P應用的發展[3]。

為了解決上述問題,NAT穿越技術應運而生,其中UDP打洞、TCP打洞及STUN技術可有效穿越非對稱型的NAT設備,而TURN技術通過服務器中繼轉發可以解決上述方法無法解決的對稱型NAT穿越問題。盡管有許多穿越NAT的技術,但沒有一種是完美的,所以后來又出現了ICE這類框架,使各種NAT穿越技術可以實現統一,最大程度地保障了NAT穿越的可行性。本文以河南大學計算機網絡課程為基礎,對NAT穿越技術展開研究,首先闡述NAT的基本概念和類型,之后描述各種實現NAT穿越的解決方案。

1? NAT類型

根據NAT設備內部地址映射的表現不同,可將NAT分為四類,即完全錐型(Full Cone)、限制錐型(Restricted Cone)、端口限制型(Port Restricted Cone)和對稱型(Sym- metric)[4]。

(1)完全錐型:將來自相同內部IP地址和端口的所有請求都映射到同一個外部IP地址和端口。任何外部主機都可以通過向映射后的外部地址發送數據包實現與內部主機通信。

(2)限制錐型:將來自同一內部IP地址和端口的所有的請求都映射到同一個外部IP地址和端口。但與完全錐型NAT不同,假設外部主機擁有IP地址X,只有當內部主機先前與IP地址X發送過數據包,內部主機才能接收到外部主機發送的數據包。

(3)端口限制型:與限制錐型NAT相似,但是增加了對端口的限制。詳細來說,假設一個外部主機發送的數據包擁有IP地址X源端口號Y,則只有當內部主機先前與(IP:X,Port:Y)發送過數據包,內部主機才能接收到外部主機發送的數據包。

(4)對稱型:來自相同IP地址和端口且傳送至同一目的IP地址和端口的所有請求都映射為同一個外部IP地址和端口。如果主機通過相同的IP地址和端口向不同的目的地發送數據包,那么將產生不同的映射。而且只有先前收到內部主機數據包的外部主機才能向內部主機成功發送數據包。

2? NAT穿越方案

2.1? UDP打洞

UDP打洞技術的核心在于將請求對等方時的映射添加至地址映射表,以保證后續的數據包可達。這種穿越方案需要具有公網IP地址的第三方服務器進行協助。我們假定主機A與主機B進行通信,兩主機均已與第三方服務器建立連接,第三方服務器已獲得此連接請求中雙方主機的映射地址與端口,下面按照四種情況分別給出穿越策略[5,6]。

(1)情況1:主機A(或B)具有公網IP,另一主機處于私網中。假設主機A具有公網IP,此時主機A想要向主機B發送數據包,因為主機B位于NAT后且先前主機B未與主機A發送過消息,所以此數據包會被丟棄。這時主機A只能向第三方服務器請求打洞。第三方服務器指示主機B向主機A發送打洞消息,因為主機A位于公網,所以主機A可以正確接收消息,當主機A接收到打洞消息后,按此消息中的源地址與源端口號回復應答消息,因為主機B發送打洞消息時,地址映射表中已經具有主機A的表項,所以主機B也能正確接收應答消息。這種打洞方式也稱為反向連接。

(2)情況2:主機A(或B)在完全錐型或限制錐型NAT后,另一主機在任意類型NAT后。兩主機均位于NAT后,若此前未互通消息,則任一主機發消息均會被丟棄。如圖1所示,假設NATA是完全錐型或限制錐型,此時主機A想與主機B通信,主機A首先向服務器請求主機B映射后的公網地址,并向此公網地址定時發送打洞消息,此時主機A的地址映射表中就包含了請求主機B的表項,然后主機A請求服務器協助打洞,服務器將主機A映射后的公網地址發送給主機B并指示主機B向主機A發送打洞消息,此時主機B的地址映射表中也有了請求主機A的表項,主機A和主機B均可接收到對方的打洞消息,通信線路建立。

(3)情況3:主機A、B均在端口限制型NAT后。采用情況2的方法,由于兩主機地址映射后的端口未發生改變,所以打洞依然可以成功。

(4)情況4:主機A(或B)在端口限制型或對稱型NAT后,另一主機在對稱型NAT后。文獻[7]給出了一種基于UDP打洞的通信實現。由于位于對稱型NAT后的主機的映射端口會隨著數據包中目標地址與目標端口的改變而發生變化,UDP打洞方法不適用于對稱型NAT。周敏等[8]將UDP打洞與HTTP代理相結合實現了對稱型NAT和UDP報文受阻的穿越,保證了即使只允許HTTP傳輸的NAT也可實現穿越。劉繼明等[9]根據對稱型NAT的特性,采用端口預測機制實現了對稱性NAT的穿越,端口預測機制僅適用于增量型的NAT分配策略,當NAT隨機分配端口時,此機制不能正常工作。邱耀群等[10]對對稱性NAT采用小范圍端口預測機制,在實驗結果中使小范圍隨機型NAT達到了100%的成功率。

2.2? STUN

STUN[11]是一個輕量級的NAT穿越協議,它提供了一個標準的NAT類型檢測方法并允許主機得知自己被NAT分配的映射地址和端口,它可以在兩主機間具有任意數量的NAT時正常工作,解決了兩個重要問題:

(1)獲得主機映射后地址與端口。STUN Client向STUN Server發送Binding Request,Binding Request是STUN定義的一種消息類型,當此請求到達STUN Server時,它可能經過了一個或多個NAT,因為當Binding Request經過NAT時,NAT會更改數據包中的源地址和源端口號,結果Server接收到的數據包中的源地址和源端口號就是最靠近Server的NAT分配的公網IP和端口號。STUN Server將此傳輸地址拷貝至Binding Response的XOR-MAPPED-ADDRESS屬性中,并發送至STUN Client。之后STUN Client就可以得知其最外層NAT分配的映射公網地址與端口。

(2)檢測NAT類型:

前提條件:STUN Server具有兩個公網IP,假設為(IP1,Port1)(IP2,Port2)。

以下為NAT類型檢測的流程:

步驟1:選擇STUN Server的(IP1,Port1),經過(1)中的交互后STUN Client獲得映射后地址與端口,將此地址和端口與發送此數據包時的本地地址與端口比較。如果不匹配,說明STUN Client在NAT后,否則,STUN Client具有公網地址。

步驟2:STUN Client向(IP2,Port2)再次發送Binding Request,如果應答中的地址與端口與步驟1中的地址與端口不匹配,則Client位于對稱型NAT后,否則繼續步驟3。

步驟3:STUN Client向(IP1,Port1)發送Binding Request并攜帶改變IP和端口的Flag,STUN Server根據Flag用(IP2,Port2)向源地址發送Binding Response,若STUN Client接收到此應答消息,則Client位于完全錐型NAT后,否則繼續步驟4。

步驟4:STUN Client向(IP1,Port1)發送Binding Request并僅攜帶改變端口的Flag,STUN Server根據Flag用(IP2,Port2)向源地址發送Binding Response,若STUN Client接收到此應答消息,則Client位于限制錐型NAT后,否則位于端口限制型NAT后。

解決上述兩個問題后,就可根據UDP打洞策略擴展STUN協議,實現NAT穿越。STUN在穿越環節需要大量信息交換,所以造成了有效數據的傳輸滯后,文獻[12]將數據庫技術應用于STUN中,數據庫存儲公私網映射條目,簡化了STUN的交互過程,提高了15%的有效數據傳輸率。文獻[13]將UPnP與STUN結合,通過運用UPnP服務增加了NAT穿越的成功率。

2.3? TURN

TURN是一種使用中繼手段實現NAT穿越的方案。它允許主機使用中繼手段與對等方交換數據包,允許一個客戶端使用一個中繼地址與多個對等方通信。TURN協議可以實現所有類型的NAT穿越,包括對稱型NAT穿越,但它實現穿越的代價是增加服務器的帶寬負擔。

如圖2的網絡拓撲,TURN的交互流程[14]大致如下:

Client可以使用主機傳輸地址發送TURN消息至TURN Server,消息經過NAT時,源地址與端口會被映射為服務器反射傳輸地址。在實現中繼的過程中,Client首先使用TURN命令在Server上創建一個Allocation,Allocation是一個數據結構,其中包含了Server為Client與Peers實現通信而分配的中繼傳輸地址,Peers可以使用此傳輸地址中繼數據至Client。一個中繼傳輸地址對應一個唯一的Allocation。

當Allocation建立后,Client可以使用TURN消息發送數據至Server并指示發送至哪一個Peer,Server根據指示中繼此數據至相應的Peer。而Peer可以將數據發送至一個與Allocation對應的中繼傳輸地址,Server收到數據后將數據包裝成TURN消息,中繼至相應的Client。這就實現了一次對等主機間的交互。每一個Allocation只屬于一個Client,且只包含一個中繼傳輸地址。因此,當數據包到達Server的中繼傳輸地址時,Server可以識別出數據包對應的Client。

文獻[15]在TURN協議上增加了對IPv6的支持,實現了IPv4至IPv6、IPv6至IPv4和IPv6至IPv6的中繼方案。文獻[16]在原標準中加入了TCP Allocation,為Client分配TCP端口提供了一種解決方案。文獻[17]將自動發現機制加入至原有的標準中,避免了手動配置的必要,增強了TURN的可移植性。

2.4? ICE

當前已經有許多協議可以實現NAT穿越,如ALGs、STUN、TURN等,但是這些方案都具有一定的局限性,在應用的實現中更是呈現出零零散散的狀態。于是,ICE作為一種NAT穿越的整合框架被定義出來。

ICE[18]是一個使用SDP offer/answer模型[19]建立的基于UDP的多媒體會話的NAT穿越協議。ICE使用STUN協議及其擴展TURN協議,其背后的基本思想是:每一個Agent,即主機,都具有不同類型的候選傳輸地址,用來使用這些地址同其他Agent進行通信。這些候選傳輸地址可能是以下幾種:

(1)直接與網絡接口相聯系的傳輸地址。

(2)位于NAT公共側的服務器反射傳輸地址。

(3)TURN Server分配的中繼傳輸地址。

ICE的工作流程如下:

(1)收集候選地址。為執行ICE,Agent需要識別自己所有的Candidate。這些Candidate的關系如圖3所示。首先,Host Candidate與本地網絡接口相聯系,十分容易確定,需要注意的是Host Candidate可能有多個。其次,Agent可以通過STUN或TURN獲得其他的Candidate,這些Candidate包括Server Reflexive Candidate和Relayed Transport Candidate。當TURN Server被使用時,這兩種Candidate均可通過TURN Server獲得,但如果僅僅使用了STUN Server,則只能從中獲得Server Reflexive Candidate。在圖3中,X:x為Host Candi-date,Y:y為Server Reflexive Candidate,而Z:z是TURN Server分配給Agent的Relayed Transport Candidate。

(2)連接性檢測。一旦Agent獲得它所有的Candidate,它就對其以從高到低的優先級進行排序,并將這些Candidate放入SDP offer中發送給要進行通信的另一方Agent。當另一方收到此Offer,也會進行相同的處理,將自身的Candidate列表作為應答送回。最終兩Agent均具有自身及對方的所有Candidate。他們將兩列表中的Candidate兩兩組合形成一個Check List。列表中的每一個Check都是一次STUN Request/Response交互,其中STUN Request從Local Candidate發往Remote Candidate。

連接性檢測的基本準則十分簡單:

(1)使用特定算法對 進行優先級排序;

(2)根據優先級順序在每一Candidate Pairs間發送Check消息;

(3)從其他Agent接收Check確認。

實際上,Candidate Pairs的一次檢測過程即是一個四次握手的交互過程,如圖4所示。

(3)斷定ICE。在連接性檢測過程中會出現連接成功的Candidate Pair,ICE安排兩Agent之一來確認用來進行后續媒體通信的合法Candidate Pair,此Agent稱為Controlling Agent。確認最終Candidate Pair有兩種策略,即Regular Nomination和Aggressive Nomination。前者是在Controlling Agent找到合法的Pair后再發送一個額外的STUN Request,并在請求中添加完成標志以告知另一Agent。而后者則要求Controlling Agent的每一個STUN Request都帶有完成標志,第一次檢測成功后,Controlling Agent就無需再發送額外的請求,這種方式更加快速,但缺乏靈活性。在找到合法的Candidate Pair后通信雙方就可以順利地進行后續的媒體通信。

文獻[20]使用NAT類型對連通性檢測過程進行制約,避免了多余的地址對檢測,縮短了連通性檢測時間。文獻[21]則調整了檢測過程,將收集-檢測過程分類多次執行,盡可能減少對候選地址的收集,減少了連通性檢測時間,提高了NAT穿透效率。

3? 結? 論

本文總結提煉一些主流可行的NAT穿越技術,首先說明NAT產生的背景以及其對P2P網絡通信帶來的問題,之后詳細地闡述的NAT的不同類型,剖析了不同類型NAT所具有的特性,最后詳細描述了四種NAT穿越方案,即UDP打洞、STUN協議、TURN協議和ICE框架,并說明了各方案近期的研究進展。其中UDP打洞簡單易實現,但欠缺安全性且不能穿透對稱型NAT;STUN協議靈活易擴展,且可以實現多級NAT穿越,但不可實現對稱型NAT穿越;TURN協議可以實現任何類型的NAT穿越但會增加服務器的帶寬負擔;ICE整合了多種NAT穿越協議,安全可靠、局限性小但是實現相對復雜。本文為具有P2P通信需求的應用程序提供了一系列靈活有效的方案實現NAT穿越,在實際應用中可根據所處的網絡環境,選擇合適的解決方案以滿足項目需求。

參考文獻:

[1] SRISURESH P,EGEVANG K. Traditional IP Network Address Translator (Traditional NAT) [M]. RFC Editor,2001:1-2.

[2] 賀文華,劉浩,賀勁松.P2P網絡現狀與發展研究 [J].軟件工程,2019,22(4):1-5.

[3] 曹申會.NAT穿越技術的研究與實現 [D].南京:南京郵電大學,2013:8-11.

[4] ROSENBERG J,WEINBERGER J,HUITEMA C,et al.STUN-Simple traversal of user datagram protocol (UDP) through network address translators (NATs) [J]. Ietf Rfc,2003:5-6.

[5] 姚秋紅.基于P2P的網絡視頻會議系統的研究和開發 [D].上海:上海交通大學,2010:38-40.

[6] FORD B,SRISURESH P,KEGEL D. Peer-to-Peer Communication Across Network Address Translators [C]. USENIX Annual Technical Conference,Anaheim,CA,2005:13.

[7] 李自薦,趙順,劉宏,等.P2P網絡通信中NAT穿越技術的研究及實現 [J].數字技術與應用,2015(8):34-35.

[8] 周敏,余慕春,黃維豐.綜合UDP打洞與Http代理的SIP穿越NAT方案 [J].計算機技術與發展,2014,24(8):147-151+156.

[9] 劉繼明,馬樂,李波.一種基于NAT穿越的優化STUN算法 [J].西安郵電大學學報,2019,24(3):19-24.

[10] 邱耀群,金光,江先亮,等.對稱型NAT穿越技術的研究 [J].移動通信,2015,39(7):57-60+65.

[11] ROSENBERG J,MAHY R,MATTHEWS P,et al.Session traversal utilities for NAT (STUN):RFC 5389 [S].IETF,2008:5-8.

[12] 楊金花.STUN技術通信問題的研究 [J].電子設計工程,2015,23(6):92-94+98.

[13] 任浩,王勁林,魯逸峰.UPnP和STUN相結合的NAT穿越技術研究 [J].計算機工程與應用,2009,45(2):99-101.

[14] MAHY R,MATTHEWS P,ROSENBERG J.Traversal Using Relays around NAT (TURN):Relay Extensions to Session Traversal Utilities for NAT (STUN):RFC 5766 [S].IETF,2010:5-11.

[15] CAMARILLO G,NOVO O,PERREAULT S.Traversal using relays around NAT (TURN) extension for IPv6:RFC 6156 [S].IETF,2011:4-10.

[16] PERREAULT S,ROSENBERG J.Traversal using relays around NAT (TURN) extensions for TCP allocations:RFC 6062 [S].IETF,2010:6-11.

[17] PATIL P,REDDY T,WING D,.Traversal using relays around NAT (TURN) server auto discovery:RFC 8155 [S].IETF,2017:4-9.

[18] ROSENBERG J.Interactive connectivity establishment (ICE):A protocol for network address translator (NAT) traversal for Offer/Answer protocols:RFC 5245 [S].IETF,2010:6-16.

[19] ROSENBERG J,SCHULZRINNE H.An Offer/Answer model with the session description protocol (SDP):RFC 3264 [S].IETF,2002:3-5.

[20] 王夢杰,何加銘.基于ICE的SIP穿越NAT方法的研究 [J].移動通信,2015,39(2):45-50.

[21] 劉繼明,王逸凡,呂芳,等.一種優化連接速率的ICE算法實現 [J].西安郵電大學學報,2017,22(6):92-97.

作者簡介:陳恒勛(1998-),男,漢族,河南商丘人,本科在讀,研究方向:移動Adhoc網絡;通訊作者:閆永航(1981-),男,漢族,河南周口人,副教授,研究生導師,博士,研究方向:互聯網體系結構、移動Ad hoc網絡、網絡安全、物聯網、區塊鏈;孟丹(1995-),女,漢族,河南商丘人,碩士研究生,研究方向:網絡體系結構;夏倫(1996-),男,漢族,河南信陽人,碩士研究生,研究方向:網絡體系結構。

主站蜘蛛池模板: 成人韩免费网站| 亚洲青涩在线| 国产亚洲日韩av在线| 国产尹人香蕉综合在线电影| 中文字幕永久在线看| 亚洲欧美日本国产综合在线| 亚洲精品大秀视频| 亚洲视频免费在线| 都市激情亚洲综合久久| 欧美成在线视频| 亚洲成在线观看 | 深夜福利视频一区二区| 精品久久久久久久久久久| 亚洲无码视频一区二区三区| 国产又黄又硬又粗| 亚洲Av激情网五月天| 麻豆国产在线观看一区二区| 成人精品区| 99偷拍视频精品一区二区| 免费a级毛片视频| 亚洲天堂高清| 老司机精品99在线播放| 国产欧美日韩va| 日韩毛片免费观看| 亚洲狠狠婷婷综合久久久久| 无码啪啪精品天堂浪潮av| 毛片视频网址| 亚洲欧美自拍中文| 成人va亚洲va欧美天堂| 欧美在线精品一区二区三区| 精品久久久久久成人AV| 狠狠v日韩v欧美v| 国产在线拍偷自揄观看视频网站| 成人无码一区二区三区视频在线观看| 激情综合网址| 丰满的少妇人妻无码区| 一区二区偷拍美女撒尿视频| 色综合久久无码网| 国产自视频| 精品三级网站| 欧美亚洲国产视频| 伊人久久大线影院首页| 538国产在线| 国产精品成人免费视频99| 91精品aⅴ无码中文字字幕蜜桃| 亚洲欧美综合另类图片小说区| 久久国产精品77777| 日韩高清成人| 亚洲成a人片在线观看88| 超清无码一区二区三区| 亚洲无线一二三四区男男| 精品视频一区二区三区在线播| 国产一区二区精品福利| 亚洲成AV人手机在线观看网站| 久久人人妻人人爽人人卡片av| 色九九视频| 手机精品福利在线观看| 成人福利在线观看| 乱人伦中文视频在线观看免费| 欧美特级AAAAAA视频免费观看| 久久精品国产精品一区二区| 欧美成人看片一区二区三区| 99久久亚洲精品影院| 九九九国产| 国产精品九九视频| 久热中文字幕在线| 欧美激情视频在线观看一区| 亚洲国产精品日韩av专区| 国产精品19p| 亚洲香蕉久久| 97se亚洲综合在线| 国产亚洲现在一区二区中文| a级毛片在线免费| 日本成人一区| 91免费片| 日韩福利在线视频| 亚洲A∨无码精品午夜在线观看| 在线观看免费黄色网址| 国产精品太粉嫩高中在线观看| 亚洲日韩精品无码专区| 久久 午夜福利 张柏芝| 网友自拍视频精品区|