5. Forwarding Behavior (转发行为)
5. 转发行为 (Forwarding Behavior)
本节描述 forwarding server 的行为, 即将 UPDATE 请求转发到 primary master 的 slave name server 的行为.
5.1. 当 slave server 收到其具有权威性的 zone 的 UPDATE 请求时, 它应将请求转发到该 zone 的 primary master. primary master 的地址应从该 zone 的 SOA MNAME 字段或服务器配置中获取.
5.2. slave server 在转发请求时应保留原始请求者的地址和其他请求参数. 这允许 primary master 应用安全策略, 并将响应直接发送给原始请求者.
5.3. 如果 slave server 使用 UDP 转发请求, 它应准备好在 UDP 请求超时或在响应中收到 TC (truncation) bit 时使用 TCP 重试.
5.4. 如果 slave server 通过 TCP 收到 UPDATE 请求, 它 MUST 使用 TCP 将请求转发到 primary master. 这确保需要准确响应代码的请求者 (这正是它们一开始使用 TCP 的原因) 能收到这些响应代码.
5.5. slave server 可以实现转发超时机制. 如果转发的请求在此超时期间内没有收到来自 primary master 的响应, slave 可以向原始请求者返回 SERVFAIL 响应, 并关闭连接 (如果使用了 TCP).
5.6. 如果 slave server 无法转发请求 (例如, 因为它无法连接到 primary master), 它应向请求者返回 SERVFAIL 响应.
5.7. slave server 可以实现一条转发链, 其中更新在到达 primary master 之前经过多个 slave server 转发. 但是, 不建议使用此类配置, 因为它们会引入额外故障点和延迟. 如果使用此类配置, 链中的每台 forwarding server 都应遵循本节描述的规则.
5.8. forwarding server 不应修改 UPDATE 消息, 除非 DNS 消息转发所必需 (例如, 按其配置适当地设置 recursion desired bit).
5.9. forwarding server 可以缓存 primary master 的地址, 以避免重复进行 SOA MNAME 查找. 但是, 如果转发尝试失败, 它应准备刷新此缓存, 因为 primary master 可能已经迁移.
5.10. 如果检测到转发循环 (例如, slave server 收到自己转发出去的请求), 服务器应返回 SERVFAIL, 以避免无限转发循环.