用於無實體ip的網路連線

 

STUNSession Traversal Utilities for NAT,NAT會話傳輸應用程式)是一種網路協議,它允許位於NAT(或多重NAT)後的客戶端找出自己的公網地址,查出自己位於哪種類型的NAT之後以及NAT為某一個本地埠所綁定的Internet端埠。這些信息被用來在兩個同時處於NAT 路由器之後的主機之間建立UDP通信。該協議由RFC 5389定義。

 

一旦客戶端得知了Internet端的UDP埠,通信就可以開始了。如果NAT是完全圓錐型的,那麼雙方中的任何一方都可以發起通信。如果NAT是受限圓錐型或埠受限圓錐型,雙方必須一起開始傳輸。

需要注意的是,要使用STUN RFC中描述的技術並不一定需要使用STUN協議——還可以另外設計一個協議並把相同的功能集成到運行該協議的伺服器上。

SIP之類的協議是使用UDP分組在Internet上傳輸音頻和/或視頻數據的。不幸的是,由於通信的兩個末端往往位於NAT之後,因此用傳統的方法是無法建立連接的。這也就是STUN發揮作用的地方。

STUN是一個客戶機-伺服器協議。一個VoIP電話或軟體包可能會包括一個STUN客戶端。這個客戶端會向STUN伺服器發送請求,之後,伺服器就會向STUN客戶端報告NAT路由器的公網IP位址以及NAT為允許傳入流量傳回內網而開通的埠。

以上的響應同時還使得STUN客戶端能夠確定正在使用的NAT類型——因為不同的NAT類型處理傳入的UDP分組的方式是不同的。四種主要類型中有三種是可以使用的:完全圓錐型NAT受限圓錐型NAT埠受限圓錐型NAT——但大型公司網路中經常採用的對稱型NAT(又稱為雙向NAT)則不能使用。

 

可用的網路資源

 

STUNTMAN 是一个由RFCs5389, 5769, and 5780规范的STUN协议(Session Traversal Utilities for NAT)的开源实现,同时兼容旧版本的STUN RFC3489 。源码分发版中包含一个高性能的STUN服务器,一个客户端程序,以及一套实现一个STUN客户端应用所需的代码库。

目前STUNMAN使用C++开发,代码可在大多数UNIX分发版包含Linux, MacOS, BSD, and Solaris等上使用gcc/g++编译。将来会考虑实现windows版。

https://github.com/jselbie/stunserver.git

 

http://www.stunprotocol.org/

http://jstun.javawi.de/

http://sourceforge.net/projects/stun/

http://sourceforge.net/projects/stuntman/

 

 

 

 

arrow
arrow
    文章標籤
    網路管理 製作通訊軟體
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()