2014-01-05 57 views
4

我尝试制作一个P2P程序,并需要获取客户端NAT的帮助。 我在这里阅读了很多关于stackoverflow的问题,但我从来没有得到通过NAT获得所有方法的缺点和好处。 有多少路由器支持哪种方法? 大公司常用哪些方法? (BitTorrent,TeamViewer,...) 我列出的三种方法的缺点/好处有哪些?UDP/TCP打孔vs UPnP vs STUN vs?

回答

7

UPnP需要在您的路由器中提供软件支持。即使路由器拥有它,但由于安全问题,它有时会关闭。

STUN使用一个简单的公共服务器来检测NAT和真实IP地址的存在。这对于执行有用工作的其他更高级别的协议很有用。

打孔是一种连接两台计算机的简单技术。它需要第三台公用计算机在NAT后面的两台计算机之间进行通信。您可以使用自定义协议运行自己的服务器,我们可以使用STUN和现有的STUN服务器。 (只需要几个数据包进行设置,其余的是对等的)。

当然,一些NAT防火墙与上述不兼容,所以您可能需要自定义协议。 Bittorrent做到这一点:他们使用不同的技术,取决于哪些客户端在防火墙后面以及什么。

相关问题