本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


 公告


后其身而身先,外其身而身存。以其无私,故能成其私。


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:火页的窝
日志总数:84
评论数量:180
留言数量:36
访问次数:612206
建立时间:2006年3月14日




[网络管理员之路]STUN协议
电脑与网络

火页 发表于 2006/9/21 17:15:23

STUN协议的全称是Simple Traversal of User Datagram Protocol Through Network Address Translators,主要功能是检测是否位于NAT后面,如果位于NAT后面,经过NAT转换后的地址和端口是什么,另外可以检测NAT的类型。 基本思想 在私网内部安装一个STUN client,在公网上安装一个STUN Server,STUN协议定义了一些消息格式,大体上分成Request/Response,client向server发送request,server发送response给client。如何检测STUN client是否在NAT后面呢?原理很简单,Server在收到client的UDP包以后,Server将接收到该包的地址和端口利用udp传回来给client,client把这些地址和端口与本机的ip地址和端口进行比较,如果不同,说明在NAT后面,否则就位于NAT后面。为了检测不同类型的NAT,STUN协议定义了一些消息属性,要求Server有不同的动作,比如发送响应的时候使用不同的IP地址和端口,或者改变端口等等。STUN协议对NAT可能有效,但是对防火墙就无能为力了,因为防火墙可能不会打开UDP端口。 NAT分类 STUN协议将NAT粗略分为4种类型,即Full Cone、Restricted Cone、Port Restricted Cone和Symmetric。举个实际例子来说明这四种NAT的区别: A机器在私网(192.168.0.4) NAT服务器(210.21.12.140) B机器在公网(210.15.27.166) C机器在公网(210.15.27.140) 现在,A机器连接过B机器,假设是 A(192.168.0.4:5000)-> NAT(转换后210.21.12.140:8000)-> B(210.15.27.166:2000)。 同时A从来没有和C通信过。 则对于不同类型的NAT,有下列不同的结果: Full Cone NAT:C发数据到210.21.12.140:8000,NAT会将数据包送到A(192.168.0.4:5000)。因为NAT上已经有了192.168.0.4:5000到210.21.12.140:8000的映射。 Restricted Cone:C无法和A通信,因为A从来没有和C通信过,NAT将拒绝C试图与A连接的动作。但B可以通过210.21.12.140:8000与A的 192.168.0.4:5000通信,且这里B可以使用任何端口与A通信。如:210.15.27.166:2001 -> 210.21.12.140:8000,NAT会送到A的5000端口上。 Port Restricted Cone:C无法与A通信,因为A从来没有和C通信过。而B也只能用它的210.15.27.166:2000与A的192.168.0.4:5000通信,因为A也从来没有和B的其他端口通信过。该类型NAT是端口受限的。 Symmetric NAT:上面3种类型,统称为Cone NAT,有一个共同点:只要是从同一个内部地址和端口出来的包,NAT都将它转换成同一个外部地址和端口。但是Symmetric有点不同,具体表现在:只要是从同一个内部地址和端口出来,且到同一个外部目标地址和端口,则NAT也都将它转换成同一个外部地址和端口。但如果从同一个内部地址和端口出来,是到另一个外部目标地址和端口,则NAT将使用不同的映射,转换成不同的端口(外部地址只有一个,故不变)。而且和Port Restricted Cone一样,只有曾经收到过内部地址发来包的外部地址,才能通过NAT映射后的地址向该内部地址发包。 现针对Symmetric NAT举例说明: A机器连接过B机器,假使是 A(192.168.0.4:5000)-> NAT(转换后210.21.12.140:8000)-> B(210.15.27.166:2000) 如果此时A机器(192.168.0.4:5000)还想连接C机器(210.15.27.140:2000),则NAT上产生一个新的映射,对应的转换可能为A(192.168.0.4:5000)-> NAT(转换后210.21.12.140:8001)-> C(210.15.27.140:2000)。此时,B只能用它的210.15.27.166:2000通过NAT的210.21.12.140: 8000与A的192.168.0.4:5000通信, C也只能用它的210.15.27.140:2000通过NAT的210.21.12.140:8001与A的192.168.0.4:5000通信,而 B或者C的其他端口则均不能和A的192.168.0.4:5000通信。  


阅读全文(14786) | 回复(4) | 编辑 | 精华
 


回复:STUN协议
电脑与网络

防火墙(游客)发表评论于2010/3/25 11:30:47

很好


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:STUN协议
电脑与网络

vin(游客)发表评论于2008/8/8 10:55:56

good

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:STUN协议
电脑与网络

肉包(游客)发表评论于2008/1/23 16:39:57

stun协议的设计就是为了让外面的UDP包来穿透NAT 至于“检测是否位于NAT后面”这个不是stun的功能。您理解的大错特错了。  

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:STUN协议
电脑与网络

SEN(游客)发表评论于2006/10/2 16:59:49

你好.我现在目前也在看STUN想请问相关的问题 1.STUN本身就含有穿透的功能吗? 2.有的话,是在STUN的哪个部份呢? 3.另外它取外部IP/PORT跟内部IP/PORT的命令是哪些呢?     是from.addr  from.port 吗? 那内部是哪些呢?

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144754472 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号