为啥 p2p 的 nat 打孔需要服务器

Posted

技术标签:

【中文标题】为啥 p2p 的 nat 打孔需要服务器【英文标题】:why does nat hole punching for p2p require server为什么 p2p 的 nat 打孔需要服务器 【发布时间】:2012-07-15 06:50:32 【问题描述】:

我需要实现一个 p2p 通信器并阅读有关 nat 打孔的信息。有几个问题我不太明白:

    如果我知道对等方的公共 IP 地址和目的地,我真的需要服务器吗? 在现实生活中,它真的有效吗?有哪些网络策略可能导致它失败 对于 Skype,如果理论上适用于任何端口,为什么它还可选地需要 443 和 80?

【问题讨论】:

错误的站点。在 serverfault.com 上询问此问题 【参考方案1】:

服务器的主要目的是帮助检测如何将私有地址转换为公共地址,而这仅在 LAN 外部可见。

    如果我知道对等方的公共 IP 地址和目的地,我真的需要服务器吗?

没有。

    在现实生活中,它真的有效吗?有哪些网络策略可能导致它失败

除非您尝试访问的端口被防火墙阻止,否则如果您知道对等方的公共地址应该没有问题。

    对于 Skype,如果理论上适用于任何端口,为什么它还可选地需要 443 和 80?

因为这些端口通常是开放的(即未被 NAT/防火墙阻止),而其他端口则不一定开放。

【讨论】:

为什么防火墙会出问题?我认为构建数据包的方式会使它们看起来像是对来自专用网络内的请求的响应?

以上是关于为啥 p2p 的 nat 打孔需要服务器的主要内容,如果未能解决你的问题,请参考以下文章

NAT 后面的 UDP P2P 连接

为啥这种方式的 TCP 打孔不起作用?

每个 NAT 下的 P2P 网络

使用 dht 可以代替 P2P 网络中使用信令服务器打孔吗?

无法使用 STUN 执行 TCP 打孔

Python3 NAT打孔