Nat遍历:UPnP / IGD与NAT-PMP

时间:2011-01-05 08:00:36

标签: network-programming p2p nat upnp portforwarding

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

考虑使用STUN而不是NAT-PMP或UPnP-IGD。它通常适用于所有地方,并且几乎肯定会通过大规模服务提供商NAT和NAT64。

答案 2 :(得分:0)

坚持UDP打孔。它适用于几乎所有路由器,除非两个客户端都支持4G LTE网络(这些网络通常具有随机端口分配)和阻止所有UDP流量的路由器。如果需要可靠地发送数据,可以使用可靠的UDP。