EXERCISE 90分

ストーリー

先輩
ついに最終演習だね。ブラウザでWebページを開くとき、裏側では何が起きているか追跡してみよう
あなた
DNS、IP、HTTP…これまで学んだことを全部使うんですね
先輩
そう。1つのWebページを表示するまでの流れを、コマンドで追いかけるんだ
あなた
やってみます!

ミッション概要

ブラウザでWebページを開くときに裏側で何が起きているか、5つのパートに分けて追跡します。

対象サイト

今回は www.example.com を使います。

達成条件

  • Part 1〜5 すべてを完了した
  • 各パートで正しい出力が得られた
  • 全体フローをドキュメントにまとめた

Part 1: DNS調査 - ドメイン名からIPアドレスへ

ブラウザがWebサイトにアクセスする最初のステップは、ドメイン名をIPアドレスに変換することです。

ミッション1-1: nslookupで名前解決

www.example.com のIPアドレスを調べてください。

nslookup www.example.com

以下の情報を記録しましょう:

  • 解決されたIPアドレス
  • 使用されたDNSサーバー
解答例
nslookup www.example.com

出力例:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   www.example.com
Address: 93.184.216.34

記録:

  • IPアドレス: 93.184.216.34
  • DNSサーバー: 192.168.1.1

ミッション1-2: dig で詳細情報を確認

dig コマンドでより詳細な情報を確認してください。

dig www.example.com

以下の情報を記録しましょう:

  • レコードタイプ(A / AAAA / CNAME など)
  • TTL(キャッシュ有効時間)
解答例
dig www.example.com

出力例(ANSWER SECTION):

;; ANSWER SECTION:
www.example.com.    86400   IN  A   93.184.216.34

記録:

  • レコードタイプ: A(IPv4アドレス)
  • TTL: 86400秒(24時間)

Part 2: IP確認 - ネットワーク接続テスト

IPアドレスが分かったら、そのサーバーに接続できるか確認します。

ミッション2-1: pingで接続確認

先ほど調べたIPアドレス(または www.example.com)に ping を送ってください。

ping -c 4 www.example.com

以下の情報を記録しましょう:

  • 応答があったか(packet loss)
  • RTT(往復時間)の平均値
  • TTL値
解答例
ping -c 4 www.example.com

出力例:

PING www.example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=85.4 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=84.9 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=85.1 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=56 time=85.2 ms

--- www.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 84.900/85.150/85.400/0.180 ms

記録:

  • packet loss: 0%(すべて到達)
  • RTT平均: 85.15 ms
  • TTL: 56

ミッション2-2: 自分のIPアドレスを確認

ついでに自分のローカルIPアドレスも確認しておきましょう。

# Linux / Mac
ip addr show | grep inet

# または
hostname -I
解答例
hostname -I

出力例:

192.168.1.100

これが自分のローカルIPアドレスです。


Part 3: HTTP通信 - リクエストとレスポンス

サーバーに接続できることが確認できたら、HTTPでWebページを取得します。

ミッション3-1: curl -v で詳細なHTTP通信を確認

-v(verbose)オプションを使って、HTTP通信の詳細を確認してください。

curl -v https://www.example.com 2>&1 | head -30

以下の情報を記録しましょう:

  • 接続先のIPアドレスとポート
  • HTTPバージョン
  • ステータスコード
  • Content-Type
解答例
curl -v https://www.example.com 2>&1 | head -30

出力例(重要部分):

*   Trying 93.184.216.34:443...
* Connected to www.example.com (93.184.216.34) port 443
...
> GET / HTTP/2
> Host: www.example.com
...
< HTTP/2 200
< content-type: text/html; charset=UTF-8
< content-length: 1256

記録:

  • 接続先: 93.184.216.34
    (HTTPS)
  • HTTPバージョン: HTTP/2
  • ステータスコード: 200(成功)
  • Content-Type: text/html; charset=UTF-8

ミッション3-2: HTTPヘッダーの確認

-I(ヘッダーのみ取得)オプションでレスポンスヘッダーを確認してください。

curl -I https://www.example.com
解答例
curl -I https://www.example.com

出力例:

HTTP/2 200
accept-ranges: bytes
age: 526025
cache-control: max-age=604800
content-type: text/html; charset=UTF-8
date: Mon, 06 Feb 2026 12:00:00 GMT
etag: "3147526947"
expires: Mon, 13 Feb 2026 12:00:00 GMT
last-modified: Thu, 17 Oct 2019 07:18:26 GMT
server: ECS (dcb/7F83)
content-length: 1256

ヘッダーから分かること:

  • サーバー: ECS(Akamai CDN)
  • キャッシュ: max-age=604800(7日間)
  • 最終更新: 2019年10月

Part 4: 経路追跡 - パケットの旅路

パケットがどのようなルートを通ってサーバーに到達するかを追跡します。

ミッション4-1: traceroute で経路を追跡

www.example.com への経路を traceroute で追跡してください。

traceroute -m 20 www.example.com

以下の情報を記録しましょう:

  • 合計ホップ数
  • 最も遅いホップ(RTTが大きい)
  • 応答がないホップ(* * *)があるか
解答例
traceroute -m 20 www.example.com

出力例:

traceroute to www.example.com (93.184.216.34), 20 hops max, 60 byte packets
 1  gateway (192.168.1.1)              1.234 ms  1.112 ms  1.089 ms
 2  10.0.0.1                           5.432 ms  5.321 ms  5.234 ms
 3  isp-gw.example.net                 8.765 ms  8.654 ms  8.543 ms
 4  * * *
 5  ae-1.r20.tokyjp05.jp.bb.gin.ntt    25.432 ms 25.321 ms 25.234 ms
 6  ...
12  93.184.216.34                      85.123 ms 85.234 ms 85.345 ms

記録:

  • 合計ホップ数: 12(環境により異なる)
  • 最も遅いホップ: 12番目(85ms)- 目的地への最終経路
  • 応答なしホップ: 4番目(セキュリティでブロック)

Part 5: 全体フローのドキュメント化

これまでの調査結果をまとめて、Webページ表示の流れをドキュメント化しましょう。

ミッション5-1: 調査結果シートの作成

以下のテンプレートを埋めてください:

# www.example.com 接続調査レポート

## 1. DNS情報

- ドメイン: www.example.com
- IPアドレス: ****\_\_****
- レコードタイプ: ****\_\_****
- TTL: ****\_\_****
- 使用DNSサーバー: ****\_\_****

## 2. 接続性

- ping応答: あり / なし
- packet loss: ****\_\_****
- RTT平均: ****\_\_****
- TTL: ****\_\_****

## 3. HTTP通信

- プロトコル: HTTP / HTTPS
- ポート: ****\_\_****
- HTTPバージョン: ****\_\_****
- ステータスコード: ****\_\_****
- Content-Type: ****\_\_****

## 4. 経路情報

- 合計ホップ数: ****\_\_****
- 通過したネットワーク:
  1. ****\_\_****(ホップ1-2: ローカル)
  2. ****\_\_****(ホップ3-5: ISP)
  3. ****\_\_****(ホップ6以降: インターネット)

## 5. 結論

- 接続状態: 正常 / 異常
- 特記事項: ****\_\_****
記入例
# www.example.com 接続調査レポート

## 1. DNS情報

- ドメイン: www.example.com
- IPアドレス: 93.184.216.34
- レコードタイプ: A
- TTL: 86400秒(24時間)
- 使用DNSサーバー: 192.168.1.1

## 2. 接続性

- ping応答: あり
- packet loss: 0%
- RTT平均: 85.15 ms
- TTL: 56

## 3. HTTP通信

- プロトコル: HTTPS
- ポート: 443
- HTTPバージョン: HTTP/2
- ステータスコード: 200
- Content-Type: text/html; charset=UTF-8

## 4. 経路情報

- 合計ホップ数: 12
- 通過したネットワーク:
  1. gateway (192.168.1.1)(ホップ1: ローカルルーター)
  2. isp-gw.example.net(ホップ2-4: ISP)
  3. NTT backbone(ホップ5-10: インターネットバックボーン)
  4. 93.184.216.34(ホップ12: 目的地)

## 5. 結論

- 接続状態: 正常
- 特記事項:
  - RTTが約85msで海外サーバーへのアクセスとしては良好
  - HTTP/2 + HTTPS で高速・安全な通信
  - CDN(ECS/Akamai)を使用している

Webページ表示の全体フロー

今回の調査で確認した、Webページ表示の流れをまとめます。

graph TD
    S1["[1] ブラウザがURLを解析\nhttps://www.example.com"]
    S2["[2] DNS名前解決(nslookup)\nwww.example.com → 93.184.216.34"]
    S3["[3] TCPコネクション確立\nPC → ルーター → ISP → サーバー"]
    S4["[4] TLS/SSLハンドシェイク\nHTTPS暗号化通信を確立"]
    S5["[5] HTTPリクエスト送信(curl -v)\nGET / HTTP/2"]
    S6["[6] HTTPレスポンス受信\nHTTP/2 200 OK"]
    S7["[7] HTMLをパースして画面表示\n(画像やCSSがあれば追加リクエスト)"]
    S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7
    style S1 fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af
    style S2 fill:#d1fae5,stroke:#059669,stroke-width:2px,color:#065f46
    style S3 fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e
    style S4 fill:#fee2e2,stroke:#dc2626,stroke-width:2px,color:#991b1b
    style S5 fill:#f3e8ff,stroke:#7c3aed,stroke-width:2px,color:#5b21b6
    style S6 fill:#d1fae5,stroke:#059669,stroke-width:2px,color:#065f46
    style S7 fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af

ミッション完了チェック

達成チェックリスト

  • Part 1: DNS調査を完了した
  • Part 2: ping で接続確認を完了した
  • Part 3: curl で HTTP通信を確認した
  • Part 4: traceroute で経路追跡を完了した
  • Part 5: 調査結果をドキュメント化した
  • Webページ表示の全体フローを理解した

まとめ

ステップコマンド確認内容
DNS調査nslookup, digドメイン→IPアドレス変換
接続確認pingネットワーク到達性、RTT
HTTP通信curl -v, curl -Iリクエスト/レスポンス
経路追跡tracerouteパケットの経路

学んだこと

  • Webページ表示には多くのステップがある
  • DNS → IP → TCP → TLS → HTTP の順で処理される
  • 各ステップをコマンドで確認できる
  • 問題が発生した場合、どの層で起きているか特定できる

次のステップへ

総合演習、お疲れさまでした!

次は最終関門「卒業クイズ」です。今月学んだネットワークの知識を総動員して挑みましょう。80%以上の正解で「ネットワーク基礎 修了証明書」を獲得できます!


推定所要時間: 90分