WebRTC一对一架构

在构建 WebRTC 一对一信令服务器之前,我们先从全局的角度来看一下 WebRTC 一对一架构是什么样子的,这样更有利于了解 WebRTC 信令服务器所处的位置。其架构图如图 4.1 所示。

WebRTC 由四部分组成,分别为两个 WebRTC 终端、一个信令服务器、一台中继服务器(STUN/TURN)和两个 NAT,这是最经典的一对一通信架构。其中,信令服务器与中继服务器都在 NAT 外,也就是属于外网。而两个 WebRTC 终端在 NAT 内,属于内网。

对于两个 WebRTC 终端而言,它们是如何进行通信的呢?首先两个终端在通信之前,都要先与信令服务器连接,即图 4.1 中的步骤。与服务端建立好连接后,通信的双方就可以通过信令服务器彼此交换必要的信息了,比如告诉对方自己的外网 IP 地址和端口是多少等。

不过在交换信息之前,WebRTC 终端还要与 STUN/TURN 服务器建立连接。这样做的目的是通过 STUN/TURN 服务器获得各自的外网 IP 地址和端口,即图 4.1 中的步骤。

image 2025 02 22 23 36 08 406
Figure 1. 图4.1 WebRTC 1:1架构图

WebRTC 终端拿到自己的外网 IP 地址和端口后,再通过信令服务器交换给对方。当彼此获得对方地址后,它们就可以尝试 NAT 穿越,进行 P2P 连接了,也就是图 4.1 中的步骤。

  • STUN:提供 NAT 穿透的辅助工具,帮助客户端发现其公网 IP 和端口,并检测 NAT 类型(如完全锥型、限制锥型、对称型等)

  • TURN:作为 STUN 的扩展,提供中继服务,在无法直连时通过服务器转发数据包,确保通信可靠性

  • ICE框架:整合 STUNTURN,动态选择最佳连接路径(直连 > STUN穿透 > TURN中继)