5. Allocations (分配)
所有 TURN 操作都围绕分配进行,所有 TURN 消息都与分配相关联。分配在概念上由以下状态数据组成:
-
中继传输地址。
-
5 元组:(客户端的 IP 地址、客户端的端口、服务器 IP 地址、服务器端口、传输协议)。
-
身份验证信息。
-
过期时间 (Time-to-Expiry)。
-
权限列表。
-
通道到对等方绑定的列表。
中继传输地址是服务器分配用于与对等方通信的传输地址,而 5 元组描述客户端和服务器之间的通信路径。在客户端,5 元组使用客户端的主机传输地址;在服务器,5 元组使用客户端的服务器反射传输地址。
中继传输地址和 5 元组在所有分配中都必须 (MUST) 是唯一的,因此任何一个都可以用于唯一标识分配。
身份验证信息(例如,用户名、密码、领域和随机数)用于验证后续请求和计算响应的消息完整性。用户名、领域和随机数值最初是在创建分配的已认证 Allocate 请求中使用的值,尽管服务器可以在分配的生存期内使用 438(陈旧随机数,Stale Nonce)回复更改随机数值。请注意,出于安全原因,与其显式存储密码,服务器可能希望存储密钥值,该值是对用户名、领域和密码的 MD5 哈希(参见 [RFC5389])。
过期时间是分配过期前剩余的秒数。每个 Allocate 或 Refresh 事务都会设置此计时器,然后计时器向 0 递减。默认情况下,每个 Allocate 或 Refresh 事务将此计时器重置为默认生存期值 600 秒(10 分钟),但客户端可以在 Allocate 和 Refresh 请求中请求不同的值。分配只能使用 Refresh 请求刷新,向对等方发送数据不会刷新分配。当分配过期时,可以释放与分配关联的状态数据。
权限列表在第 8 节中描述,通道列表在第 11 节中描述。