NAT穿透:UPnP/IGD vs NAT-PMP

6

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

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


2
你必须同时支持两者。然而,有些路由器两者都没有支持。 - J-16 SDiZ
3个回答

5

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


1

考虑使用STUN代替NAT-PMP或UPnP-IGD。它通常在任何地方都能正常工作,并且几乎肯定可以通过大规模服务提供商的NAT和NAT64。


1
需要设置STUN服务器吗?RFC第六页的图表建议这样做。您能否确认STUN适用于纯点对点网络? - Brent

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接