メインコンテンツまでスキップ

5. トランスポートプロトコルの選択 (Transport Protocol Selection)

[RFC1123] のセクション 6.1.3.2 が更新されました: すべての汎用 DNS 実装は、UDP と TCP の両方のトランスポートをサポートしなければなりません (MUST)。

  • 権威サーバーの実装は、単一の UDP パケットに収まるサイズに応答サイズを制限しないように、TCP をサポートしなければなりません (MUST)。

  • 再帰サーバー(またはフォワーダー)の実装は、TCP 対応サーバーからの大きな応答が TCP 対応クライアントに到達するのを妨げないように、TCP をサポートしなければなりません (MUST)。

  • スタブリゾルバの実装(たとえば、オペレーティングシステムの DNS 解決ライブラリ)は、そうしないと自身のクライアントと上流サーバー間の相互運用性が制限されるため、TCP をサポートしなければなりません (MUST)。

UDP または TCP をいつ使用するかという選択に関して、RFC 1123 のセクション 6.1.3.2 には次のようにも記載されています:

... 非ゾーン転送クエリを送信している DNS リゾルバまたはサーバーは、最初に UDP クエリを送信しなければなりません (MUST)。

この要件はこれによって緩和されます。スタブリゾルバおよび再帰リゾルバは、ローカルの運用上の理由に応じて、TCP または UDP クエリの送信を選択してもよい (MAY)。TCP は、UDP クエリを送信する前に使用してもよい (MAY)。リゾルバがすでにサーバーへのオープンな TCP 接続を持っている場合、この接続を再利用すべきである (SHOULD)。本質的に、TCP は単なる再試行オプションではなく、UDP の有効な代替トランスポートと見なされるべきです。

さらに、すべての再帰サーバーおよび権威サーバーは、クエリが到着したのと同じトランスポートを使用して応答を送信しなければならない (MUST) ことに注意してください。TCP の場合、これは同じ接続でなければなりません (MUST)。