NAT穿透相关知识

来源:互联网 发布:淘宝直通车降价 编辑:程序博客网 时间:2024/05/20 11:21

相关知识都摘抄来自网上

http://bbs.csdn.net/topics/290081559


问题1: 
  既然内网的是需要打洞才能通信的,那QQ,msn,甚至是瑞星的升级程序,要TCP通信的,它们都会打洞的? 
------------------------------------------------------------------------------------
回答1:不是内网需要打洞,是在非同一路由的局域网之间通信需要打洞。

回答2:升级程序是内网TCP发起链接连公网 IP 不需要打洞


问题2: 
  ping包,既ICMP包,发出去,能够收回,为什么ping包不需要打洞?很奇怪啊,还有http,ftp它们为什么就不需要打洞? 
-------------------------------------------------------------------------------------------------
回答1:ping包能收回是因为在和公网固定IP通信或同一局域网内机器通信,http和ftp也是同理,这些都不满足需要打洞的条件,因此根本不需要打洞。
回答2:ICMP UDP TCP 内网发起通信通向公网 IP 都不需要打洞,应为服务端收到包里你的地址是 NAT 装换后的虚公网地址

问题3: 
  实现TCP打洞,或者让内网的用户能和外网的完全正常通信,有没有稍微简单点的方法?
-------------------------------------------------------------------
回答1:打洞的原理并不复杂,在弄懂原理后用什么语言和什么方法实现根本不成问题。
回答2:你的服务器跑在公网上,客户端连上来,服务端使用客户端的公网地址转发消息即可
附带提醒:如果路由不支持UPNP的话,软件实现了打洞也没用。


TCP打洞看下那个开源代码XSTUN ,是C++写的



问题1: 
  既然内网的是需要打洞才能通信的,那QQ,msn,甚至是瑞星的升级程序,要TCP通信的,它们都会打洞的? 
============================================================================================
  首先要弄明白什么样的情况下需要打洞(这个词实在是@#$@$@!),内网里的QQ/MSN/瑞星升级等程序,一般情况下(QQ应该分开来说,他的一些功能是有做内网穿透的)是内网IP与公网IP通信,这种情况不需要我们通常所说的打洞,我们通常说的打洞,是内网IP与内网IP跨越公网直接互连时的一个动作.是两个洞,在两个内网网段各自的NAT设备上分别有一个针对自身的端口映射,而内网IP对公网IP这种情况,拥有公网IP的一端是可以直接被路由到的,不需要IP地址的转换.但是,有一点要明确,这种情况下也是有"洞"的存在的,不过只有一个,就是在内网IP这一端的NAT设备(一般就是带NAT功能的路由器)上,要知道,共享一个公网IP给内网用户上网并不是路由协议的功劳,NAT才是.

问题2: 
  ping包,既ICMP包,发出去,能够收回,为什么ping包不需要打洞?很奇怪啊,还有http,ftp它们为什么就不需要打洞? 
===================================================================================================
  ICMP也是基于IP的,他虽然没有PORT段,但是IP头内有标识字段,所以洞依旧是打了的,只是不再依端口来做映射,这也是为什么在同一台机器上,开两个DOS窗口,PING同一个IP时,同一时间只有一个PING得到返回,另一个丢包的原因.至于HTTP/FTP,他们都是基于TCP的,连的是公网IP地址,还是那句话,不是不打"洞",是只打了一个"洞"

问题3; 
实现TCP打洞,或者让内网的用户能和外网的完全正常通信,有没有稍微简单点的方法?
===================================================================================================
  TCP实现打洞的说法我也关注过一段时间,没见过成品,有基于端口预测的做法,太不靠谱,基于TCP的内网互连有一个最简单的问题,当内网中的SERVER端bind一个端口并ACCEPT时,并没有和本地的NAT设备有任何通信,NAT如何知道内网中有个应用需要一个端口映射,因为一直觉得要实现TCP穿透不如实现个可靠的UDP协议来穿透更实际,所以也没太关注,感觉还是老老实实的用uPNP更好吧.



0 0
原创粉丝点击