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