NAT- STUN和TURN简介
一.ICE框架
ICE,全名叫交互式連接建立(Interactive?Connectivity?Establishment),一種綜合性的NAT穿越技術,它是一種框架,可以整合各種NAT穿越技術如STUN、TURN(Traversal?Using?Relay?NAT?中繼NAT實現的穿透)。ICE會先使用STUN,嘗試建立一個基于UDP的連接,如果失敗了,就會去TCP(先嘗試HTTP,然后嘗試HTTPS),如果依舊失敗ICE就會使用一個中繼的TURN服務器。
在實際用途中,ICE會試著找最好的路徑來讓客戶端建立連接,他會嘗試所有可能的選項,然后選擇最合適的方案,ICE首先嘗試P2P連接,如果失敗就會通過Turn服務器進行轉接.
換一個說法就是:
1,STUN服務器是用來取外網地址的.
2,TURN服務器是在P2P失敗時進行轉發的.
每個TURN服務器都支持STUN,ICE處理復雜的NAT設置,同時NAT打洞要求不止一個公網IP和端口.
NAT的實現方式有4種,分別如下:
1. Full?Cone?NAT
完全錐形NAT,所有從同一個內網IP和端口號發送過來的請求都會被映射成同一個外網IP和端口號,并且任何一個外網主機都可以通過這個映射的外網IP和端口號向這臺內網主機發送包。
2.Restricted?Cone?NAT
限制錐形NAT,它也是所有從同一個內網IP和端口號發送過來的請求都會被映射成同一個外網IP和端口號。與完全錐形不同的是,外網主機只能夠向先前已經向它發送過數據包的內網主機發送包。
3. Port?Restricted?Cone?NAT
端口限制錐形NAT,與限制錐形NAT很相似,只不過它包括端口號。也就是說,一臺IP地址X和端口P的外網主機想給內網主機發送包,必須是這臺內網主機先前已經給這個IP地址X和端口P發送過數據包。
4.Symmetric?NAT
對稱NAT,所有從同一個內網IP和端口號發送到一個特定的目的IP和端口號的請求,都會被映射到同一個IP和端口號。如果同一臺主機使用相同的源地址和端口號發送包,但是發往不同的目的地,NAT將會使用不同的映射。此外,只有收到數據的外網主機才可以反過來向內網主機發送包。
二.STUN
STUN(Simple?Traversal?of?UDP?over?NATs,NAT?的UDP簡單穿越)是一種網絡協議,它允許位于NAT(或多重NAT)后的客戶端找出自己的公網地址,查出自己位于哪種類型的NAT之后以及NAT為某一?個本地端口所綁定的Internet端端口。這些信息被用來在兩個同時處于NAT路由器之后的主機之間建立UDP通信。
如果NAT是受限圓錐型或端口受限圓錐型,雙方必須一起開始傳輸。
SIP之類的協議是使用UDP分組在Internet上傳輸音頻和/或視頻數據的。這也就是STUN發揮作用的地方。
服務器就會向STUN客戶端報告NAT路由的公網IP地址以及NAT為允許傳入流量傳回內網而開通的端口。
四種主要類型中有三種是可?以使用的:完全圓錐型NAT、受限圓錐型NAT和端口受限圓錐型NAT——但大型公司網絡中經常采用的對稱型NAT(又稱為雙向NAT)則不能使用。
簡單來說STUN就是用來找出自己對應的外網的ip和端口,并且可以知道自己所處的網絡NAT
三.TURN
TURN又稱SPAN(Simple?Protocol?for?Augmenting?NATs)方式
TURN可以看作時STUN的擴張,TURN與STUN的共同點都是通過修改應用層中的私網地址達到NAT穿透的效用,異同點是TUN采用了兩方通訊的“中間人”方式實現穿透,突破了原先STUN協議無法在兩臺主機不能夠點對點直接連接下提供作用的限制。
簡單來說就是TURN服務器實現理一個中間人的功能,讓兩者間的傳輸數據通過它進行一次轉發,達到穿網的目的。
四.SNAT和DNAT
nat主要有snat和dnat兩張
SNAT:源的地址轉化 用于內部共享ip訪問外部,局域網內用戶上網,內部主動發起連接
DNAT:目的地址轉化 用于外部訪問內網服務器,外部主動發起連接
總結
以上是生活随笔為你收集整理的NAT- STUN和TURN简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux配置并编译内核
- 下一篇: webrtc系列3——对于stun和tu