5. Transport (传输)
5. Transport (传输)
其他 DNS 操作如 DNS Update [RFC2136] 可以使用 DNS over User Datagram Protocol (UDP) [RFC0768] 或 DNS over Transmission Control Protocol (TCP) [RFC0793] 作为传输协议, 前提是它们遵循历史先例, 即 DNS 查询必须首先使用 DNS over UDP 发送, 只有在需要时才切换到 DNS over TCP [RFC1123]。这种偏好 UDP 的要求后来已经放宽 [RFC7766]。
为了与最近的先例保持一致, DNS Push Notification 仅为 TCP 定义。DNS Push Notification 客户端必须使用通过 TLS over TCP [RFC7858] 运行的 DNS Stateful Operations [RFC8490]。
通过 TCP 建立连接可确保返回可达性, 并减轻服务器上状态过载的担忧, 这是无连接协议的潜在问题, 这些协议更容易被使用欺骗源地址的攻击者利用。通过 TCP 三次握手, 保证所有订阅者都可以被服务器访问到。任何协议都可能发生洪水攻击, TCP 的一个好处是已经有成熟的行业最佳实践来防范 SYN 洪水和类似攻击 [SYN] [RFC4953]。
使用 TCP 还允许 DNS Push Notifications 利用 TCP 的当前和未来发展, 例如 Multipath TCP (MPTCP) [RFC8684]、TCP Fast Open (TFO) [RFC7413]、TCP RACK 快速丢包检测算法 [TCPRACK] 等。
Transport Layer Security (TLS) [RFC8446] 是广为人知的, 并被许多运行在 TCP 上的应用层协议使用。TLS 旨在防止窃听、篡改和消息伪造。在此协议规范中, 客户端订阅者和服务器之间的每个连接都需要 TLS。还可以采用额外的安全措施, 例如在 TLS 协商期间进行客户端身份验证, 以增加客户端和服务器之间的信任关系。