跳到主要内容

8. TCP 报文长度字段

DNS 客户端和服务器 SHOULD 同时将两八位组长度字段 (two-octet length field), 以及该长度字段所描述的报文, 传递给 TCP 层 (例如, 通过一次 "write" 系统调用), 以提高所有数据在单个 TCP 段中传输的可能性. 这样做既出于效率考虑, 也是为了避免某些 DNS 服务器实现在从 TCP 层读取数据时表现异常所导致的问题 (这是因为以前的文档在这一点上不够清晰). 例如, 如果第一次从 TCP 层执行的 "read" 不同时包含长度字段和完整报文, 某些 DNS 服务器实现可能会中止 TCP 会话.

为明确起见, DNS 服务器 MUST NOT 仅仅因为第一次从 TCP 层执行的 "read" 不包含完整 DNS 报文就关闭连接, 并且服务器 SHOULD 按 Section 6.2.3 中的规定应用连接超时.