19. 自 RFC 3489 以来的变化 (Changes since RFC 3489)
本规范废止 RFC 3489 [RFC3489]. 本规范与 RFC 3489 的差异如下:
-
移除了 STUN 是完整 NAT 穿越解决方案的概念. STUN 现在是作为完整 NAT 穿越解决方案一部分使用的工具. 因此, 协议名称已改为 Session Traversal Utilities for NAT.
-
引入了 STUN 用法的概念, 并描述 STUN 用法必须记录哪些内容.
-
移除了 STUN 用于 NAT 类型检测和绑定生命周期发现的用法. 自 RFC 3489 发布以来, 部署中出现了范围广泛的 NAT 差异, 这些技术被证明过于脆弱. RESPONSE-ADDRESS, CHANGED-ADDRESS, CHANGE-REQUEST, SOURCE-ADDRESS 和 REFLECTED-FROM 属性已被移除.
-
添加了固定的 32-bit magic cookie, 并将 transaction ID 的长度减少 32 bit. magic cookie 从与原始 transaction ID 相同的偏移处开始.
-
添加了 XOR-MAPPED-ADDRESS 属性, 如果请求中存在 magic cookie, Binding 响应会包含该属性. 否则, 保留 RFC 3489 行为 (即 Binding 响应包含 MAPPED-ADDRESS). 有关此变化的讨论见 XOR-MAPPED-ADDRESS.
-
在消息类型头部字段中引入了正式结构, 明确使用一对 bit 来表示请求, 响应, 错误响应或指示. 因此, 消息类型字段被划分为 class (前四者之一) 和 method.
-
明确规定 STUN 的最高有效 2 bit 为 0b00, 以便在与 ICE 一起使用时轻松区分 RTP 包.
-
添加了 FINGERPRINT 属性, 在 STUN 与另一协议复用时提供一种显式区分方式.
-
添加了对 IPv6 的支持. 明确说明 IPv4 客户端可以获得 v6 映射地址, 反之亦然.
-
添加了基于长期凭据的认证.
-
添加了 SOFTWARE, REALM, NONCE 和 ALTERNATE-SERVER 属性.
-
移除了 SharedSecret 方法, 因而也移除了 PASSWORD 属性. 此方法从未实现, 且当前用法不需要它.
-
移除了继续监听 STUN 响应 10 秒以尝试识别攻击的建议.
-
更改了事务定时器, 使其对 TCP 更友好.
-
移除了围绕控制平面和媒体平面分离的 STUN 示例. 取而代之的是提供更多关于将 STUN 与协议一起使用的信息.
-
定义了通用填充机制, 改变了 length 属性的解释. 理论上, 这会破坏向后兼容性. 但是, RFC 3489 中的机制从未适用于少数未自然对齐到 32-bit 边界的属性.
-
REALM, SERVER, reason phrases 和 NONCE 限制为 127 字符. USERNAME 限制为 513 字节.
-
更改了 TCP 和 TLS 的 DNS SRV 过程. UDP 保持不变.