4. 服务器回复源地址选择 (Server Reply Source Address Selection)
大多数 (如果不是全部) DNS 客户端期望接收响应的地址与发送引发该响应的查询的地址相同。这适用于作为客户端进行递归查询解析的服务器和简单的解析器客户端。地址与响应中的标识符 (ID) 一起用于消除响应的歧义并过滤虚假响应。
运行 DNS 服务器的某些多宿主主机使用与客户端请求数据包目的地址不同的源地址生成响应。此类响应会被客户端丢弃, 因为响应的源地址与客户端发送原始请求的主机的源地址不匹配。
4.1. UDP 源地址选择 (UDP Source Address Selection)
为了避免这些问题, 服务器在使用 UDP 响应查询时, 必须 (must) 将 IP 头部的源地址字段设置为包含引发响应的查询的数据包的 IP 头部目的地址字段中的地址来发送响应。如果该地址不是允许从中发送响应的 IP 地址, 则服务器可以 (may) 从分配给服务器的任何合法 IP 地址发送响应。该地址应该 (should) 被选择为最大化客户端将其用于进一步查询的可能性。
4.2. 端口号选择 (Port Number Selection)
对所有查询的响应必须 (must) 定向到发送查询的端口。如果查询通过 TCP 接收, 这是传输协议的固有部分。对于通过 UDP 接收的查询, 服务器必须 (must) 注意源端口并将其用作响应的目的端口。响应应该 (should) 始终从它们所定向的端口发送。除特殊情况外, 这将是分配给 DNS 查询的众所周知的端口 [RFC1700]。