7. 応答の並べ替え (Response Reordering)
RFC 1035 は、TCP 応答を並べ替えてもよいかどうかという質問に対して曖昧です。関連する唯一のテキストはセクション 4.2.1 にあり、これは UDP に関連しています:
クエリまたはその応答は、ネットワークによって、またはネームサーバーでの処理によって並べ替えられる可能性があるため、リゾルバはそれらが順番に返されることに依存すべきではありません。
将来の疑義を避けるために、この要件は明確化されています。権威サーバーおよび再帰リゾルバは、使用中のトランスポートプロトコルに関係なく、応答を並行して準備し、それらを順序外で送信することをサポートすることが推奨されます (RECOMMENDED)。スタブリゾルバおよび再帰リゾルバは、使用中のトランスポートプロトコルに関係なく、要求が送信された順序とは異なる順序で到着する応答を処理できなければなりません (MUST)。
UDP と同等のパフォーマンスを実現するために、再帰リゾルバは TCP クエリを並行して処理し、個々の応答が利用可能になり次第(場合によっては順序外で)返すべきである (SHOULD)。
パイプライン化された応答は順序外で到着する可能性があるため、クライアントはメッセージ ID を使用して、同じ TCP 接続上の未解決のクエリに応答を一致させなければなりません (MUST)。応答に質問セクションが含まれている場合、クライアントは QNAME、QCLASS、および QTYPE フィールドを一致させなければなりません (MUST)。クライアントが応答を未解決のクエリに適切に一致させられないと、相互運用性に深刻な結果をもたらす可能性があります。