在一个典型的案例中,我有两个端点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标准,上述哪一项是正确的。
答案 0 :(得分:1)
A将从先前在TURN服务器上分配中继候选者时使用的随机本地udp端口发送到192.168.1.100:3478。这通常是包含ICE绑定请求并指定Bs主机候选者作为目的地的发送指示。转弯服务器将其从端口7890发送到B
的候选主机答案 1 :(得分:0)
在您的情况下,ICE可能不会成功。 A将从主机传输地址发送到服务器192.168.1.100:3478然后服务器将尝试通过端口7890转发数据包作为原始数据(不是TURN封装)但是对等体具有NAT主机,因此不会到达B. B也会尝试向A的中继候选者发送数据包,但是服务器不允许该数据包作为B的192.168.1.151的A设置权限,但是服务器不会看到这个地址,而是B的公共地址。没有许可通过。