Nat 穿越:UPnP/IGD 与 NAT-PMP

Jul*_*éon 6 p2p network-programming upnp nat portforwarding

我正在编写一个 P2P 应用程序,希望避免用户手动设置端口转发。

我有点困惑,因为似乎有两种不同的协议来配置 NAT,UPnP/IGD 和 NAT-PMP。我应该使用哪一个?所有 NAT 都支持它们吗?或者我应该同时支持两者以确保 NAT 至少支持其中之一?

T0x*_*ode 5

NAT-PMP(现在的 PCP)是一项 ietf 草案,因此应该是您实施的草案。但是,为了兼容性,您应该允许您的应用程序静默回退到 UPnP/IGD,因为并非所有 NAT 设备都支持 PCP/NAT-PMP,并且许多旧设备仅支持 UPnP/IGD。


jam*_*att 0

考虑使用STUN而不是 NAT-PMP 或 UPnP-IGD。它通常可以在任何地方工作,并且几乎肯定可以通过大型服务提供商 NAT 和 NAT64 工作。