为了让两个不同 NAT 后面的两个主机能够建立 P2P 连接,它们必须都具有彼此的公共端点(地址/端口)。为了让每个主机知道它自己的公共端点,它可以与一个已知的公共服务器通信,该服务器将它的公共端点返回给主机,如服务器所见。参见 STUN (RFC5389)。
为了使此机制起作用,NAT 必须始终将相同的私有端点转换为相同的公共端点,而不管目标端点如何。
实现一个依赖于这种特定 NAT 行为的 P2P 应用程序是否是一个好主意(即它是否足够普遍)?Skype 和/或其他流行的 P2P 应用程序是否有其他回退机制?
编辑:它看起来像一个 NAT,其中每个目标选择不同的端口被称为“对称 NAT”。此外,一些对称 NAT 会增加端口号,从而可以猜测正确的端口。
现在我想问题是:大约有多少百分比的 NAT 是对称 NAT,其中有多少百分比使用随机端口分配与递增之类的东西?