STUN:Simple Traversal of User Datagram Protocol (UDP)
Through Network Address Translators (NATs)
stun是一个用于UDP NAT打洞的协议,注意是UDP,不是TCP,UDP NAT通常有以下四种,但是stun只适用于前三种:
1) Full Cone
这种NAT内部的一台机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.不管是不是C发过来的.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100:8000) -> C(292.88.88.88:2000)
任何发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
2) Address Restricted Cone
这种NAT内部的一台机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用任何端口和A通信.其他的外网机器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何从C发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
3) Port Restricted Cone
这种NAT内部的一台机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用原来的端口和A通信.其他的外网机器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
C(202.88.88.88:2000)发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
以上三种NAT通称Cone NAT(圆锥形NAT).我们只能用这种NAT进行UDP打洞.
4) Symmetric(对称形)
对于这种NAT。连接不同的外部Server,NAT打开的端口会变化。也就是内部机器A连接外网机器B时,NAT会打开一个端口,连接外网机器C时又会打开另外一个端口
另外可以参考RFC3489中的NAT Variations部分关于这四种nat的解释,英文可能解释的更明白http://www.ietf.org/rfc/rfc3489.txt
参考:
http://www.cnblogs.com/whyandinside/archive/2010/12/08/1900492.html
http://en.wikipedia.org/wiki/STUN
NAT穿越方式:
NAT/ALG 方式
MIDCOM 方式
STUN 方式
TURN方式
ICE方式
参考:http://baike.baidu.com/view/1580678.htm
分享到:
相关推荐
STUN(Session Traversal Utilities for NAT,NAT穿越服务)是一种网络协议,主要设计用于帮助在NAT(网络地址转换)环境下进行UDP通信。在P2P应用中,如VoIP、在线游戏或视频通话,两个处于不同NAT之后的设备需要...
STUN(Session Traversal Utilities for NAT,NAT穿越工具)服务器是网络通信中解决NAT(Network Address Translation,网络地址转换)问题的关键技术。在P2P(Peer-to-Peer,对等网络)应用,如VoIP(Voice over ...
STUN(Simple Traversal of UDP through NATs,简单UDP穿越NAT)是一种协议,用于帮助穿越NAT,从而在因NAT而隔离的设备之间建立直接的UDP通信。 NAT是互联网访问中常见的一种技术,它允许多个内部网络设备共享一个...
stunserver 的客户端源码,已经裁剪和移植到android系统,编译和测试已经通过,如果编译不过,只需要改下mk文件就可以了,用于nat穿越和检测
对于更复杂的NAT环境,可以结合使用TURN(Traversal Using Relays around NAT,NAT穿越中继)或ICE(Interactive Connectivity Establishment,交互式连接建立)等更高级的穿透策略。 总的来说,STUN服务器在C#中...
### UPnP和STUN相结合的NAT穿越技术研究 #### 概述 随着互联网技术的发展,网络通信在各个领域中的应用越来越广泛。然而,在实际应用过程中,由于NAT(Network Address Translation)的存在,使得内网主机之间的...
Python中的pystun.py文件很可能是一个实现STUN协议的库,它可以帮助开发者测试和识别NAT类型,或者在需要时建立穿越NAT的连接。使用这个库,开发者可以通过编写代码来实现自定义的网络穿透解决方案。 在实际应用中...
stun4j作为Java中的STUN协议实现,为开发者提供了实现NAT穿越功能的有效工具。通过理解STUN协议的工作原理和stun4j库的使用方法,开发者可以更轻松地解决P2P通信中遇到的NAT障碍,实现跨网络环境的高效通信。
STUN(Session Traversal Utilities for NAT,NAT穿越服务)协议是一种用于网络应用程序通过NAT(Network Address Translation,网络地址转换)设备进行通信的技术。在P2P(peer-to-peer)网络、VoIP(Voice over ...
非常好的学习stun/turn/ice NAT穿越资料
NAT穿越技术详细解析 NAT(Network Address Translation,网络地址转换)是一种常用的技术,用于将私网IP地址转换为公网IP地址,以便在互联网上进行通信。然而,在SIP(Session Initiation Protocol,会话初始协议...
常见的NAT穿越方法包括STUN(Simple Traversal of UDP through NAT)、ALG(Application-Level Gateway)和TURN(Traversal Using Relays around NAT)。 - STUN服务器:STUN服务器提供一个公网IP和端口,内网设备...
3. NAT穿越:了解NAT如何工作以及为什么它对P2P通信构成挑战。 4. STUN协议:深入研究STUN服务器如何协助NAT穿透,以及客户端如何利用STUN服务来发现公网信息。 5. C++编程:实际编写代码来实现P2P UDP NAT穿透...
**NAT穿越(UDP)详解** NAT(网络地址转换)穿越是指在存在NAT设备的网络环境中,使位于不同私有网络中的设备能够相互通信的技术。在互联网上,许多设备都通过NAT访问公共网络,这为点对点(P2P)通信带来了挑战,...
通过研究这些示例,开发者可以更快地理解工具包的工作原理,从而有效地利用它解决NAT穿越问题。 总的来说,《RADVISION STUN NAT Traversal Toolkit程序员参考指南》为希望在复杂网络环境中实现无缝通信的应用程序...
为了解决这个问题,NAT穿越技术应运而生。 其中,UDP打洞和STUN(简单Traversal of UDP through NATs)是两种常见的NAT穿透方法。UDP打洞是一种直接在两个NAT后的设备之间建立通道的技术,它利用了UDP协议的无连接...
P2P技术的NAT穿越方案,需要针对上述的4种NAT类型使用不同的方案,才有可能打洞(穿墙)成功,而最在要紧的是,我该怎么知道目前某台客户端所处的路由属于哪种NAT类型呢?