networking - 如果没有打开端口,WebRTC 对等点如何相互连接?

标签 networking webrtc p2p

我知道需要一个 STUN/ICE/TURN 服务器来查找参与 WebRTC 通信的对等方的 IP 地址。但是,即使在找到 IP 之后,对等方实际上如何在没有打开任何端口的情况下独立地相互通信?

如果您建立一个网站,您通常必须打开服务器上的端 Eloquent 能让其他人访问您的网站。 WebRTC 中发生的我不理解的魔法是什么?

最佳答案

有几种策略可以做到这一点:一种可能是客户端通过 UPnP 显式打开一个端口。 .我不确定当前是否有任何 WebRTC 客户端这样做,但在一般网络中,这是可能的。

否则,STUN 服务器会启动。有几个 hole punching它可以尝试的技术;阅读前面链接的文章了解血腥细节。简而言之,防火墙通常会为传出流量打开一个端口(因为它需要接收响应),因此通过建立与已知目标的传出连接,然后记下打开的端口,可以打开一个端口.

即便如此,TURN 服务器也是必要的。这个服务器可以从两个对等点公开访问,即使两个对等点都看不到对方。然后,TURN 服务器将充当两者之间的中继。这在某种程度上否定了 P2P 协议(protocol)的意义,但在一定比例的情况下是必要的(估计范围约为 10%-20%)。

关于networking - 如果没有打开端口,WebRTC 对等点如何相互连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794964/

相关文章:

javascript - 如何使用 HTML5 WebRTC 录制和保存视频

javascript - session 、WebRTC 的点对点返工

networking - 从 tcpdump 中提取信息

python - 将应用程序从主机移至 Docker 会使 HTTP 延迟增加 5 秒

c# - IPAddress.ToString 中的地址后面的百分号是什么?

javascript - WebRTC 视频限制不起作用

c++ - 将文件内容发送给客户端

javascript - 设备标签最后一部分的含义是什么(例如 - 413c :c00f) in deviceInfo from enumerateDevices?

C++ Winsock P2P

通过 Wifi 的 Android P2P 连接