誰かが尋ねる前に:DNSクエリがUDPではなくTCPを使用するのはいつですか?それは私の質問に答えません。
私が聞き続けるのは、「答えが長すぎる場合、DNSはTCPを使用します」です。しかし、これはそれがどのように起こるかを説明しません。
状況は次のとおりです。DNSクライアントはUDPを使用してレコードの解決を要求します。レコードはUDPには長すぎます:
- サーバーが特定のオペコードで応答し、クライアントをTCPに切り替えます
- サーバーはまったく応答せず、クライアントはTCPで再試行します
- サーバーはクライアントへのTCP接続を開きます(NATをカウントする場合は愚かですが、誰が知っていますか?)
- クライアントは何らかの形で(?)与えられたクエリがTCP上で実行されるべきであることを「知っている」ので、そもそもUDPに煩わされません
- DNS pixiesは必要に応じてUDPをTCPに魔法のように変換します
私は答えをインターネットで探していましたが、多くのノイズがあり(上記を参照)、そのための適切なGoogleクエリを書くことはできません(RFCで情報を見つけることもできません) 。
1.
そして、4.
の両方(状況に依存して両者のある)概ね正しいです。