我尝试制作P2P程序,并需要帮助来完成客户端的NAT。 我在stackoverflow上已经阅读了很多问题,但我从来没有得到通过NAT的所有方法的缺点和好处。 有多少路由器支持哪些方法? 大公司常用哪种方法? (BitTorrent,TeamViewer,......) 我列出的三种方法有哪些缺点/好处,哪些还存在?
答案 0 :(得分:9)
UPnP需要路由器中的软件支持。即使路由器拥有它,由于安全问题,它有时也会被关闭。
STUN使用简单的公共服务器来检测NAT和真实IP地址的存在。这对于执行有用工作的其他更高级别协议非常有用。
打孔是连接两台计算机的简单方法。它需要第三台公共计算机在NAT后面的两台计算机之间进行通信。您可以使用自定义协议运行自己的服务器,我们可以使用STUN和现有的STUN服务器。 (设置只需要几个数据包,其余的是点对点)。
当然,有些NAT防火墙与上述防火墙不兼容,因此您可能需要自定义协议。 Bittorrent这样做:他们使用不同的技术,具体取决于防火墙后面的客户端等等。