YOKOHEI.COM

YOKOHEI.COM

›DNS Basics

DNS Basics

  • DNS 基礎
  • DNS と OS
  • TCP フォールバック
  • resolv.conf

DNS Misc

  • ゾーン転送
  • クラスレス逆引き
  • trace option
  • Ranking data (RFC 2181)

TCP フォールバック

TCP フォールバック時の動作

まずは以下の図を。

クライアントが行うべきこととしては、左部の I. -> II. -> III. -> IV. の流れ。
詳細については、丸文字の 1. ~ 6. となる。

1. Initiation by UDP

クライアントがリゾルバにクエリを投げる。

2. Recursive Queries

リゾルバは名前解決を行う。
このとき、応答が UDP データグラムのサイズを超えると、フラグメントされて処理される。
ここでは TCP に切り替えない。 ( unbound-1.8.1 で検証したのでほかは分からないが…)

3. Answer with TC bit

リゾルバはクライアントに応答を返す。
TC, RD, RA bit が立ち、 Answer Section や Authority Section に値は入らない。
(これは実装依存かも。1.1.1.1 は値を入れてくるし、8.8.8.8 は入れてこないように見える。)
TC bit がにより、クライアントに対して TCP が必要な旨を伝える。

4. 3 way handshake

クライアントからリゾルバに TCP 3 way handshake が initiate される。

5. TCP Retry

クライアントは 1. と同じクエリを TCP で投げる。
このときの Transaction ID は、 1. のものとは異なる。
(矢印は書いてないが、クエリに対する ACK をリゾルバは返す)
リゾルバは、キャッシュでデータを持ってるのでそのデータを返す。

6. TCP FIN

クライアントから FIN を initiate する。
TCP が close となり、完了。

← DNS と OSresolv.conf →
▼ Codes ▼
LeetCodeGitHub
▼ Profile ▼
LinkedInFlickr
▼ Logo made with DesignEvo ▼
DesignEvo
Copyright © 2020 Kohei Yoshida