4. サーバー応答の送信元アドレス選択
DNS クライアントのすべてではないにしても大半は、応答を受け取るアドレスが、その応答を引き出したクエリの送信先アドレスと同じであることを期待する。これは、再帰的クエリ解決のためにクライアントとして動作するサーバーにも、単純なリゾルバクライアントにも当てはまる。そのアドレスは、応答内の識別子 (ID) とともに、応答の曖昧さを排除し、偽の応答をフィルタリングするために使用される。これが DNS の設計時に意図されたものであったかどうかは定かではないが、今や紛れもない現実である。
DNS サーバーを実行している一部のマルチホームホストは、クライアントの要求パケットの宛先アドレスとは異なる送信元アドレスを使用して応答を生成する。そのような応答は、応答の送信元アドレスがクライアントが元の要求を送信したホストのアドレスと一致しないため、クライアントによって破棄される。つまり、それは求められていない応答であるように見えるのである。
4.1. UDP 送信元アドレスの選択
これらの問題を回避するため、サーバーは UDP を使用してクエリに応答する際、応答を引き起こしたクエリを含むパケットの IP ヘッダの宛先アドレスフィールドにあったアドレスを、IP ヘッダの送信元アドレスフィールドに設定して応答を送信しなければならない。これにより、この目的では許可されていない IP アドレスから応答が送信されることになる場合、応答はサーバーに割り当てられた任意の正当な IP アドレスから送信してもよい。そのアドレスは、クライアントが以降のクエリにそれを使用できる可能性を最大化するように選択すべきである。すべてのアドレスがすべての潜在的クライアントから等しく到達可能であるとは限らないように構成されたサーバーは、エニーキャスト、マルチキャスト、または同様のアドレスに送信されたクエリに応答する際に特に注意を払う必要がある。
4.2. ポート番号の選択
すべてのクエリへの応答は、それが送信されたポートに送られなければならない。クエリが TCP 経由で受信される場合、これはトランスポートプロトコルの本質的な一部である。UDP で受信したクエリについては、サーバーは送信元ポートに注意し、それを応答の宛先ポートとして使用しなければならない。応答は常に、それが向けられたポートから送信されるべきである。特別な状況を除き、これは DNS クエリに割り当てられた周知のポート [RFC1700] である。