nat - UDP/TCP 打洞 vs UPnP vs STUN vs?

标签 nat upnp hole-punching stun

我尝试制作 P2P 程序,需要帮助才能通过客户端的 NAT。
我在这里阅读了很多关于 stackoverflow 的问题,但我从未了解所有通过 NAT 的方法的缺点和优点。
有多少路由器支持哪些方法?
大公司常用哪些方法? (BitTorrent、TeamViewer、...)
我列出的三种方法的缺点/优点是什么,还有哪些?

最佳答案

UPnP 需要路由器中的软件支持。即使路由器拥有它,有时也会出于安全考虑将其关闭。

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

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

当然,有些NAT防火墙与上述不兼容,因此您可能需要自定义协议(protocol)。 Bittorrent 这样做:他们使用不同的技术,具体取决于哪些客户端位于防火墙后面等等。

关于nat - UDP/TCP 打洞 vs UPnP vs STUN vs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939222/

相关文章:

java - 以编程方式从已知公共(public)服务器进行 NAT 遍历

amazon-ec2 - AWS 云信息 : Stack creation failed due to wait handle time out

c# - 如何通过c#代码查找网络上UPNP设备的IP地址(DHCP)

networking - 使用 STUN 在 NAT 下为服务器/客户端通信进行 UDP 打洞

java - udp打洞端口错误?

python - TCP Hole Punching(绕过监听套接字)

c# - 使用 Ozeki SDK 的 SIP 注册不起作用

Java Netty UDT 交会不起作用

ios - NetworkInterface.GetAllNetworkInterfaces() 返回 Xamarin.iOS 中 OperationalStatus 为 'Unknown' 的接口(interface)

C# > UPnP - COMException : The owner of the PerUser subscription is not logged on to the system specified (Exception from HRESULT: 0x80040210)