RFC 7065 - 3. turn 与 turns URI 定义
3. "turn" 与 "turns" URI 的定义 (Definitions of the turn and turns URI)
3.1. URI 方案语法 (URI Scheme Syntax)
"turn" 与 "turns" URI 具有以下形式化 ABNF 语法 [RFC5234]:
turnURI = scheme ":" host [ ":" port ]
[ "?transport=" transport ]
scheme = "turn" / "turns"
transport = "udp" / "tcp" / transport-ext
transport-ext = 1*unreserved
<host> 与 <port> 在 [RFC3986] 中规定。尽管这两项 ABNF 产生式在 [RFC3986] 中作为通用分层 URI 的组成部分定义, 这并不表示 "turn" 与 "turns" 方案是分层 URI。开发者不得使用通用分层 URI 解析器来解析 "turn" 或 "turns" URI。
<host>、<port> 与 <transport> 组成部分不经修改地传递给 [RFC5928] 算法。若 <scheme> 等于 "turn", 则将 <secure> 设为 false; 若 <scheme> 等于 "turns", 则将 <secure> 设为 true, 并与其他组成部分一并传递给 [RFC5928] 算法。
3.2. URI 方案语义 (URI Scheme Semantics)
"turn" 与 "turns" URI 方案用于标识可通过 TURN 协议访问的互联网主机上的 TURN 服务器 (中继)。TURN 协议支持通过 UDP、TCP 或基于 TCP 的 TLS (TLS-over-TCP) 发送消息。当 TURN 运行于基于 TCP 的 TLS 之上 (或将来运行于基于 UDP 的 DTLS, DTLS-over-UDP) 时, 必须使用 "turns" URI 方案; 否则必须使用 "turn" 方案。
"turn" URI 中必需的 <host> 部分表示 TURN 服务器主机。
如 [RFC5766] 与 [RFC5928] 所述, 若存在 <port> 部分, 则表示 TURN 服务器等待连接请求的端口。若省略端口, 则 UDP 与 TCP 的默认端口均为 3478。基于 TLS 的 TURN 的默认端口为 5349。