使用特定端口进行webRTC

时间:2015-04-10 14:19:23

标签: port webrtc stun

使用webRTC创建对等音频连接时,如果用户位于路由器后面,我们使用的STUN服务器将返回公共IP。现在在ICE对象中,我可以看到rport总是介于50000和更高之间。

有没有办法使用特定端口,以便用户不必打开所有这些端口?

2 个答案:

答案 0 :(得分:10)

  

有没有办法使用特定端口,以便用户不必打开所有这些端口?

我认为你有一个误解。 STUN和ICE(包括其WebRTC衍生物)的重点在于避免任何人必须在其NAT上打开端口。而是,STUN和ICE动态打开端口。

以下是它的工作原理(简要说明)。

  1. 客户端在随机端口(例如50001)上打开套接字

  2. 联系STUN服务器使用该套接字发现此套接字的外部IP:端口映射。 (例如192.168.1.2:50001映射到1.2.3.4:50001)。端口不一定必须在内部和外部地址之间进行匹配,但它们通常都是匹配的,因此我将继续使用此示例。

  3. 通过外部机制(SIP,XMPP,Jingle,带字符串的杯子),交换两个节点的候选地址列表。这包括收集的所有已知内部和外部地址(例如192.168.1.2:50001和1.2.3.4:50001)。

  4. 使用在步骤1中打开的相同套接字,双方直接在彼此之间发送(STUN)消息(UDP数据包)。第一对消息可能被路由器/防火墙阻止。但是因为一方向远程地址发起了一个出站数据包,所以允许来自该地址的后续数据包重新进入。这称为“打孔步骤”#34;。因此,端口是动态打开的,路由器不需要任何特定配置。

  5. 希望这有帮助。

答案 1 :(得分:1)

除非您在自己的应用程序中使用webrtc API,否则无法以编程方式进行编程。浏览器将从本地范围内选择特定的本地端口;然后它会在SDP和ICE候选人信息中通知您。

STUN服务器只能帮助发现客户端是否在NAT /防火墙后面;然后ICE使用此信息建立点对点连接。

我听说过可能有办法通过Chrome政策模板控制该端口范围(企业用来限制Chrome设置) - http://www.chromium.org/administrators/policy-templates。值得研究......