当使用 webRTC 创建点对点音频连接时,如果用户位于路由器后面,我们使用的 STUN 服务器将返回公共 IP。现在在 ICE 对象中,我可以看到 rport 始终介于 50000 及以上。
有没有办法使用特定端口,以便用户不必打开所有这些端口?
有没有办法使用特定端口,以便用户不必打开所有这些端口?
我认为你有一个误解。 STUN 和 ICE(包括其 WebRTC 衍生产品)的全部目的是避免任何人必须在其 NAT 上打开端口。相反,STUN 和 ICE 动态打开端口。
这是它的工作原理(非常简短的描述)。
客户端在随机端口上打开套接字(例如 50001)
使用该套接字联系 STUN 服务器以发现该套接字的外部 IP:端口映射。 (例如 192.168.1.2:50001 映射到 1.2.3.4:50001)。内部地址和外部地址之间的端口不一定必须匹配,但通常需要匹配,因此在本示例中我将保留这一点。
通过外部机制(SIP、XMPP、Jingle、带字符串的杯子),交换两个节点的候选地址列表。这包括收集的所有已知内部和外部地址(例如 192.168.1.2:50001 和 1.2.3.4:50001)。
使用步骤 1 中打开的同一个套接字,双方直接在彼此之间发送 (STUN) 消息(UDP 数据包)。第一对消息可能被路由器/防火墙阻止。但由于一侧向远程地址发起了出站数据包,因此来自该地址的后续数据包将被允许返回。这称为“打洞步骤”。因此,端口是动态打开的,无需路由器进行任何特定配置。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)