为 webRTC 使用特定端口

2024-03-04

当使用 webRTC 创建点对点音频连接时,如果用户位于路由器后面,我们使用的 STUN 服务器将返回公共 IP。现在在 ICE 对象中,我可以看到 rport 始终介于 50000 及以上。

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


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

我认为你有一个误解。 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 数据包)。第一对消息可能被路由器/防火墙阻止。但由于一侧向远程地址发起了出站数据包,因此来自该地址的后续数据包将被允许返回。这称为“打洞步骤”。因此,端口是动态打开的,无需路由器进行任何特定配置。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 webRTC 使用特定端口 的相关文章

随机推荐

  • 所有特征必须在 [0, 9] 或 [-10, 0] 范围内

    我有以下代码 df load data pd set option display max columns None df dtypes intBillID object chBillChargeCode object chBillNo o
  • 如何管理非托管 Eclipse 格式化配置文件?

    我们的项目有一个 非托管配置文件 和节省时间的自动格式化 我希望能够修改此非托管配置文件的设置 并能够将它们重新签入版本控制 Eclipse 的帮助文档非常没有帮助 您不允许更改这样的配置文件 只有配置文件的创建者 管理员 可以更改它 我不
  • 在 Erlang 中编写和编译自定义行为

    我试图在 Erlang 中编写并编译自定义行为 我找不到任何关于如何编译此行为的明确文档 module bla export start link 0 behaviour info 1 behaviour info callbacks gt
  • 如何调试grpc调用?

    我试图找出为什么我的grpc http grpc iocall 不起作用 但我不知道如何打开调试 因此我可以看到通过 grpc 连接发送和接收的数据 如何打开 grpc 调用的调试 您可以设置GRPC TRACE环境变量为all让 grpc
  • 带有阻塞代码的 setTimeout 行为

    这是我的测试代码 小提琴here http jsfiddle net Xvh55 console log Before wait setTimeout function console log Yo 1000 var start Date
  • JavaScript 和多语言最佳实践

    使用 DOM 操作 javascript 的多语言网站的最佳实践是什么 我使用 JavaScript 构建了网站的一些动态部分 我的第一个想法是使用一个包含文本字符串和语言代码的数组作为索引 这是一个好主意吗 当我之前构建多语言网站时 不是
  • 访问令牌没有 openid 范围

    我正在做 sso 示例 travelocity com 示例 当我尝试使用此命令通过 oauth 访问令牌访问用户信息时 卷曲 k H 授权 承载b68ba941c9da3d2644d8a63154d28 https localhost 9
  • Java日期排序方法?

    我有一个日期字符串数组 格式为 2010 05 04 11 26 46 0530 如何检查数组中的特定日期是否 gt 今天 thanks DateFormat df new SimpleDateFormat yyyy MM dd HH mm
  • 如何重定向消息以在 Django 模板中显示它们?

    我有一个验证并保存表单的视图 保存表单后 我想重定向回 l ist object 视图 并显示成功消息 客户 xyz 的表单已成功更新 HttpResponseRedirect 似乎不起作用 因为它只有一个 url 参数 无法传递字典 我尝
  • 忽略对角线的 Numpy 数组的最小值

    我必须找到忽略对角线元素的 numpy 数组的最大值 np amax 提供了忽略特定轴来查找它的方法 我怎样才能实现相同的忽略所有对角线元素 你可以使用面膜 mask np ones a shape dtype bool np fill d
  • 在 MAC 上使用 Xamarin Studio 运行 Selenium 测试

    我正在尝试运行我创建的测试Visual Studio 2010 using Selenium WebDriver 在使用 Xamarin Studio 的 MAC 中 我有chromedriver exe作为 EmbeddedResourc
  • 它不是将数据插入数据库

    我想将数据插入到Image Question桌子 但它不会执行插入操作Image Question Table 我收到两个错误 注意 未定义的偏移量 0 in 第 305 行 注意 未定义的偏移量 第 305 行上的 3 in 这是您可以使
  • 如何解决“无法解析某些模块 oracledb”?

    我已经设置了一个流星项目并导入了oracledb节点包 https github com oracle node oracledb 但是在通过启动项目后meteor run我收到控制台构建错误 说明Unable to resolve som
  • 将任何数据类型序列化为向量 - 使用reinterpret_cast?

    我在搜索中没有找到任何直接相关的内容 所以如果这是重复的 请原谅 我想要做的是通过网络连接序列化数据 我的方法是将我需要传输的所有内容转换为std vector lt uint8 t gt 并在接收端将数据解包到适当的变量中 我的方法如下
  • 方法可以变成静态的,但是应该吗?

    ReSharper 喜欢指出每个 ASP NET 页面的多个可以静态化的函数 如果我将它们设为静态会对我有帮助吗 我应该将它们设为静态并将它们移至实用程序类吗 在我看来 性能 命名空间污染等都是次要的 问问自己什么是合乎逻辑的 该方法在逻辑
  • xsl:如何选择节点中的前x个字符?

    我在 XML 文档中有以下节点
  • Android,我可以使用 putExtra 传递多个值吗

    我想将两个值传递给另一个活动 我可以用 putExtra 来做到这一点 还是必须以更复杂的方式来做到这一点 从我的阅读看来 例如 这样的东西可以工作吗 public final static String ID EXTRA com fnes
  • 删除 Firefox 中的默认选择框箭头

    我必须删除 Firefox 中的默认选择框箭头 我使用了下面的代码 webkit appearance none moz appearance none background rgba 0 0 0 0 它在 Chrome 中运行良好 但它在
  • 保存照片并立即使用

    我有以下用于拍照并将其保存到相机胶卷的代码 我需要能够在保存后使用它 而不必返回图库并选择它 我还没有找到任何关于如何执行此操作的示例 IBOutlet weak var imagePicked UIImageView IBAction f
  • 为 webRTC 使用特定端口

    当使用 webRTC 创建点对点音频连接时 如果用户位于路由器后面 我们使用的 STUN 服务器将返回公共 IP 现在在 ICE 对象中 我可以看到 rport 始终介于 50000 及以上 有没有办法使用特定端口 以便用户不必打开所有这些