ICE 连通性检查

ICE connectivity check

在典型情况下,我有两个端点 A 和 B,并且有一个转弯服务器说 S。A 发起呼叫并在 SDP 中将主机和中继候选发送到 B。 B 应答呼叫并仅发送 SDP 中的主机候选。

假设A的候选人是
主机:192.168.1.150:5555
中继:192.168.1.100:7890

B的候选主持人是
主机:192.168.1.151:5690

说转服详情如下
192.168.1.100:3478

现在我要开始从 A 到 B 的 ICE 连接检查。

首先,我尝试了从 A 的候选主机到 B 的候选主机的连通性检查。超时了,没问题。

接下来我将尝试从 A 的中继候选者到 B 的主机候选者的 ICE 连接。这里我的疑问是,当 A 发送连接检查(这是 STUN BIND 请求)时,它将发送到哪个传输。

可能的情况是,
1) A 将从主机传输地址发送到转向服务器 192.168.1.100:3478

2) A将从主机传输地址发送到A的中继候选者192.168.1.100:7890

根据 ICE 标准,以上哪一项是正确的。

A 将从先前在 TURN 服务器上分配中继候选者时使用的随机本地 udp 端口​​发送到 192.168.1.100:3478。这通常是一个发送指示,包含 ICE 绑定请求并指定 Bs 主机候选作为目的地。 turn 服务器将从端口 7890 将此发送到 B

的主机候选者

在您的情况下,ICE 很可能不会成功。 A 将从主机传输地址发送到 Turn 服务器 192.168.1.100:3478,然后服务器将尝试通过端口 7890 将数据包作为原始数据(未封装 TURN)转发,但由于对等方具有 NAT 主机,因此不会到达 B。 B 也会尝试将数据包发送到 A 的中继候选者,但服务器不允许将此数据包作为 A 为 B 的 192.168.1.151 设置的权限,但服务器将看不到此地址,但 B 的 public 地址无权访问通过.