跳到主要内容

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 不能直接用于数据报传输, 原因如下四点:

  1. TLS 依赖于记录的隐式序列号.如果未收到记录, 则接收方在尝试从后续记录中移除记录保护时将使用错误的序列号.DTLS 通过向记录添加序列号来解决此问题.

  2. TLS 握手是一个锁步加密协议.消息必须按定义的顺序发送和接收; 任何其他顺序都是错误.DTLS 握手包括消息序列号, 以便在数据报丢失或重排序时能够进行分段消息重组和有序交付.

  3. 握手消息可能大于单个数据报所能容纳的大小.DTLS 向握手消息添加字段以支持分段和重组.

  4. 数据报传输协议容易受到滥用行为的影响, 从而对非参与者造成拒绝服务 (DoS) 攻击.DTLS 添加了返回可达性检查, 并且 DTLS 1.3 使用 TLS 1.3 HelloRetryRequest 消息 (详见第 5.1 节).