回 4-4 道 4 ネットワークと暗号
DNS は、
読み終えたらURL を
この頁の流れ
名前を
URL を 開いてから 画面が 出るまで、 何が 起きているのか
URL を開くと、ブラウザは名前を IP アドレスに引き (DNS)、
https://www.example.com/news?id=7 を
手が
- URL を
部品に 分け、 名前と ポート (つなぐ先の 番号) を取り出す - DNS で
名前を IP アドレスに引く - その
IP アドレスへ TCP でつなぐ - HTTP の
要求を 送り、 応答を受け取る - 返ってきた
HTML を 画面に描く
DNS と HTTP は どう 組み合わさっているのか
DNS は
URL を 部品に分ける
URL は
| 部品 | 例 | 使い道 |
|---|---|---|
| scheme | https | 話し方の決まり |
| ホスト名 | www.example.com | DNS で引く名前 |
| ポート | 省略 (443) | つなぐ先の番号 |
| path と | /news と | サーバーに頼む中身 |
| fragment | top | 頁の中の位置 |
ポートを
DNS で 名前を IP アドレスに引く
名前解決は、
- ブラウザと OS が、
手元に 覚えている 答えを探す - 無ければ、
プロバイダなどの リゾルバーに頼む - リゾルバーは
ルートサーバーに 聞き、 .com の 担当の 住所を教わる - .com の
担当に 聞き、 example.com の 権威サーバーの 住所を教わる - 権威サーバーに聞き、IP アドレスの答えをもらう
- リゾルバーは
答えを ブラウザに 返し、 決められた 秒数だけ覚える
上の
リゾルバーと 権威サーバー、 再帰と反復
DNS の
| 役 | すること |
|---|---|
| リゾルバー (キャッシュ DNS サーバー) | 上から |
| ルートサーバー | .com や |
| TLD の担当 | その下の |
| 権威サーバー | 名前の |
RFC 1034 は、
キャッシュと TTL
引いた
レコードの種類
DNS の答えはレコードという
| 型 | 番号 | 中身 |
|---|---|---|
| A | 1 | IPv4 アドレス |
| NS | 2 | 権威サーバーの名前 |
| CNAME | 5 | 別名の元の名前 |
| PTR | 12 | 番号から |
| MX | 15 | メールを |
| TXT | 16 | 自由な文字列 |
| AAAA | 28 | IPv6 アドレス |
CNAME は
TCP で つなぎ、 HTTP で頼む
IP アドレスが
HTTP/1.1 の
https では、
動かして確かめる
通信は
動かす URL を部品に分ける
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
scheme https
hostname www.example.com
port None
path /news
query id=7
fragment top
先 www.example.com 443ポートは
次に、
動かす DNS の問い合わせを組む
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
頭 12
12 34 01 00 00 01
00 00 00 00 00 00
問い 21
b'\x03www' b'\x07example'
全部 3312 34 は> は
続けて、
動かす DNS の答えを読む
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
ID 0x1234
答え? 1
RD 1 RA 1
RCODE 0
問い www.example.com
名前の印 0xc00c
型 1 TTL 300 秒
IP 203.0.113.20ID が
最後に、HTTP の
動かす HTTP の要求と応答を分ける
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
69 バイト
GET | /news?id=7 | HTTP/1.1
HTTP/1.1 200 OK
Content-Type = text/html
Content-Length = 13
13 <h1>News</h1>要求に
どこで崩れるか
DNS のキャッシュは、
引っ越した 後も、 TTL の 間は 古い 番号が返る
リゾルバーの
動かす TTL のキャッシュを模す
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
0 203.0.113.20 問い合わせ
10 203.0.113.20 手元
120 203.0.113.20 手元
200 203.0.113.20 手元
299 203.0.113.20 手元
300 198.51.100.7 問い合わせ
問い合わせ 2 回6 回引いて、
名前の 長さには 上限がある
RFC 1035 は、
動かす 名前の長さの上限
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
OK 68
NG ラベル 64
NG 名前 30664 字のラベルは組めず、60 字を 5 つつなぐと
崩れる
- IP アドレスにつながれば
サイトが 出る、という 前提。 RFC 9112 は Host の 行の 無い 要求に 400 を 返すと 定めている - 引いた
答えは 本物だ、という 前提。 偽の 答えが キャッシュに 入ると、 TTL の 間は 偽の 番号へ 案内される (下の実例)
仕事で どう 確かめるか
仕事では、
1 つ目はdig www.example.com A を+trace をchrome://net-internals/#dns で
2 つ目は HTTP のcurl -v に URL を
3 つ目は
関わる実例
DNS が
DNS の キャッシュに 偽の 答えを 入れる 穴 VU#800113 (2008 年 7 月 8 日)
米国の
Meta の DNS に 外から 届かなくなった 障害 (2021 年 10 月)
Meta の
よくある問い
DNS の 役割は何ですか
DNS の
DNS の 設定は どう すれば いいですか
自分の
1.1.1.1 の DNS とは何ですか
1.1.1.1 は、
DNS は 安全ですか
もとの
確認クイズ
答えだと
1 問目
キャッシュに何も
2 問目
この
名前を長さ付きで並べたバイト数
name = "www.example.com"
labs = name.split(".")
n = sum(map(len, labs))
print(n + len(labs) + 1)3 問目
DNS の
4 問目
HTTP の
説明課題
ブラウザに https://www.example.com/news を
自分の
この回の 先の一歩
Web の
もっと深く
この
一次資料
どれも 2026年10月27日に開いて、
- RFC 1034 Domain Names, Concepts and Facilities (IETF、英語)。再帰と反復の聞き方、
CNAME を 置いた 名前に 他の データを 置かないこと - RFC 1035 Domain Names, Implementation and Specification (IETF、英語)。頭の
12 バイト、 ラベル、 長さの 上限、 TTL、 型の 番号、圧縮、53 番 - RFC 3596 DNS Extensions to Support IP Version 6 (IETF、英語)。AAAA の
型の 番号が 28 であること - RFC 3986 Uniform Resource Identifier, Generic Syntax (IETF、英語)。URL の
部品と、 fragment がブラウザの側でだけ 使われること - RFC 9110 HTTP Semantics (IETF、英語)。メソッドの
意味、 状態の番号の 5 つの組、80 番と 443 番の既定 - RFC 9112 HTTP/1.1 (IETF、英語)。要求と応答の 1 行目の
形、 CR と LF、 Host の 行が 欠けたら 400 - RFC 9293 Transmission Control Protocol (IETF、英語)。three-way handshake
- urllib.parse (Python 公式文書、英語)。
urlsplitがURL を 5 つの部品に 分けること - DNS とは
何ですか 。4 種のサーバー、キャッシュの場所、? DNS の 仕組み (Cloudflare、日本語) Chrome で キャッシュを見る所 - 1.1.1.1 (Cloudflare の
文書、英語) 。1.1.1.1 がCloudflare の 公開の リゾルバーであること - VU#800113 Multiple DNS implementations vulnerable to cache poisoning (CERT/CC、英語)。2008 年 7 月 8 日の公表、
16 ビットの ID と 固定の ポートの 弱さ、 Dan Kaminsky の 名、 対策と DNSSEC - Outage details (Meta の
技術ブログ、2021年10月5日、英語) 。基幹の網が切れ、DNS の 権威サーバーが BGP の 広告を 取り下げて 外から 届かなくなったこと
次へ
道 4 ネットワークと暗号の回
- 4-1層に
分けて考えるOSI、 TCP/IP、パケット頁で読む - 4-2IP と
サブネットIP アドレス、 CIDR、 ルーティング頁で読む - 4-3TCP と UDP再送、
輻輳制御、ポート頁で読む - 4-4HTTP と DNSHTTPS、
HTTP/3、名前解決この回 - 4-5TLS と
暗号の基礎共通鍵、 公開鍵、 ハッシュ、署名頁で読む
