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

时间:2013-01-25 21:22:09

标签: networking udp p2p firewall nat

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

为了使此机制起作用,NAT必须始终将同一个专用端点转换为同一个公共端点,而不管目标端点如何。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

根据谷歌Gtalk的统计数据,这些机制解决了P2P连接,而不会在92%的情况下转发流量。 https://developers.google.com/talk/libjingle/important_concepts

答案 1 :(得分:-1)

STUN只能处理85%的案件! TURN可以100%处理,但使用起来非常昂贵。那么用什么?两者都没有。

使用ICE。它是STUN服务器和TURN服务器的直接组合!这样,您将获得100%的可靠性,但您只能在服务器上传输15%的流量。