您的位置:首页 > 其它

NAT穿透相关知识

2016-03-30 17:07 302 查看
相关知识都摘抄来自网上
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更好吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: