3. DTLS Design Rationale and Overview (DTLS 设计原理与概述)
3. DTLS Design Rationale and Overview (DTLS 设计原理与概述)
DTLS 的基本设计理念是构建"基于数据报传输的 TLS"。数据报传输既不要求也不提供可靠或有序的数据交付。DTLS 协议为应用数据保留了这一特性。媒体流、互联网电话和在线游戏等应用使用数据报传输进行通信, 这是由于传输数据的延迟敏感性。当使用 DTLS 协议保护通信时, 这些应用的行为保持不变, 因为 DTLS 协议不会补偿丢失或重排序的数据流量。请注意, 虽然低延迟流媒体和游戏使用 DTLS 保护数据 (例如, 用于保护 WebRTC 数据通道), 但电话使用 DTLS 进行密钥建立, 并使用 Secure Real-time Transport Protocol (安全实时传输协议, SRTP) 保护数据 [RFC5763]。
TLS 不能直接用于数据报传输, 原因如下四点:
-
TLS 依赖于记录的隐式序列号。如果未收到记录, 则接收方在尝试从后续记录中移除记录保护时将使用错误的序列号。DTLS 通过向记录添加序列号来解决此问题。
-
TLS 握手是一个锁步加密协议。消息必须按定义的顺序发送和接收; 任何其他顺序都是错误。DTLS 握手包括消息序列号, 以便在数据报丢失或重排序时能够进行分段消息重组和有序交付。
-
握手消息可能大于单个数据报所能容纳的大小。DTLS 向握手消息添加字段以支持分段和重组。
-
数据报传输协议容易受到滥用行为的影响, 从而对非参与者造成拒绝服务 (DoS) 攻击。DTLS 添加了返回可达性检查, 并且 DTLS 1.3 使用 TLS 1.3 HelloRetryRequest 消息 (详见第 5.1 节)。