Skip to main content

8. Permissions (权限)

对于每个分配,服务器保留零个或多个权限的列表。每个权限由一个 IP 地址和关联的过期时间组成。当权限存在时,允许使用权限中的 IP 地址的所有对等方向客户端发送数据。过期时间是权限过期前的秒数。在分配的上下文中,权限由其关联的 IP 地址唯一标识。

通过发送 CreatePermission 请求或 ChannelBind 请求,客户端可以使服务器为给定的 IP 地址安装或刷新权限。这会导致发生以下两种情况之一:

  • 如果该 IP 地址不存在权限,则创建一个权限,其 IP 地址为给定的 IP 地址,过期时间等于权限生存期 (Permission Lifetime)。

  • 如果该 IP 地址已存在权限,则该权限的过期时间重置为权限生存期。

权限生存期必须 (MUST) 为 300 秒(= 5 分钟)。

每个权限的过期时间每秒递减一次,直到达到 0,此时权限过期并被删除。

CreatePermission 和 ChannelBind 请求可以在权限上自由混合使用。给定权限可以最初使用 CreatePermission 请求安装和/或刷新,然后稍后使用 ChannelBind 请求刷新,反之亦然。

当 UDP 数据报到达分配的中继传输地址时,服务器从 IP 头中提取源 IP 地址。然后,服务器将此地址与分配的权限列表中每个权限关联的 IP 地址进行比较。如果未找到匹配项,则不允许中继,服务器静默丢弃 UDP 数据报。如果找到完全匹配,则认为权限检查已成功,服务器继续按其他地方指定的方式处理 UDP 数据报(第 10.3 节)。请注意,仅比较地址,不考虑端口号。

一个分配的权限与不同分配的权限完全无关。如果分配过期,其所有权限也随之过期。

注意:尽管 TURN 权限在 5 分钟后过期,但在本文档发布时部署的许多 NAT 的 UDP 绑定过期速度要快得多。因此,使用 TURN 的应用程序可能希望以更快的速率发送某种保持活动的流量。使用 ICE 的应用程序应该遵循 ICE [RFC5245] 的保持活动准则,不使用 ICE 的应用程序建议执行类似的操作。