这是在 NAT 后面的两个主机之间建立 P2P 连接的合理技术吗?



为了使两个不同 NAT 后面的两个主机能够建立 P2P 连接,它们都必须具有彼此的公共端点(地址/端口)。为了使每个主机知道自己的公共终结点,它可以与已知的公共服务器通信,该服务器将其公共终结点返回到主机,如服务器所见。参见眩晕(RFC5389)。

为了使此机制正常工作,NAT 必须始终将同一专用终结点转换为同一公共终结点,而不考虑目标终结点。

实现依赖于此特定 NAT 行为的 P2P 应用程序(即它是否足够常见)是一个好主意吗?Skype和/或其他流行的P2P应用程序是否有其他回退机制?

编辑:它看起来像一个NAT,其中每个目的地选择不同的端口称为"对称NAT"。此外,一些对称 NAT 会增加端口号,从而可以猜测正确的端口。

现在我想问题是:大约有多少百分比的 NAT 是对称的 NAT,其中有多少百分比使用随机端口分配而不是递增之类的东西?

您可以使用IETF的标准STUN/TURN/ICE协议:http://rtcbits.blogspot.com/2012/10/what-is-ice-interactive-connectivity.html

根据Google Gtalk的统计数据,这些机制在92%的情况下解决了P2P连接,而无需中继流量。https://developers.google.com/talk/libjingle/important_concepts

STUN只能处理85%的情况!TURN可以处理100%,但使用起来真的很昂贵。那么用什么呢?两者都不是

使用冰。它是STUN服务器和TURN服务器的直接组合!这样,您将拥有100%的可靠性,但您只能在服务器上中继15%的流量。

最新更新