ネットワークの階層モデル——TCP/IP と DNS の仕組み

通信を層に分けて考えると複雑なインターネットが整理できる。IP・TCP・DNS それぞれの役割分担と、ページ表示までの流れを追う。

この単元の目標
  • TCP/IP 4層モデルの各層の役割と、カプセリングを説明できる
  • TCP のコネクション確立(3-way ハンドシェイク)と信頼性確保の仕組みを述べられる
  • DNS による名前解決の流れ(再帰・反復照会)を説明できる
📑 目次
  1. なぜ階層に分けるのか
  2. IP と TCP——届ける層と正しく渡す層
  3. DNS——インターネットの電話帳

なぜ階層に分けるのか

インターネットの通信は「ケーブルに電気信号を流す」「経路を選ぶ」「データの抜けや順番を保証する」「アプリケーションの形式を扱う」というまったく違う関心事の積み重ねです。これを層(レイヤ)に分割すると、各層は上下の層が提供する機能だけを仮定して作れるので、独立に改良できます。TCP/IP モデルは4層、教科書的には OSI 参照モデルの7層で語られます。

TCP/IP 層役割代表プロトコル住所の単位
アプリケーション層サービスの中身HTTP, DNS, SMTPURL/ドメイン名
トランスポート層端末内のプロセス間の伝送・信頼性TCP, UDPポート番号
インターネット層ネットワーク間の経路選択IP, ICMPIP アドレス
ネットワークインターフェース層同一セグメント内の伝送Ethernet, Wi-FiMAC アドレス
送信側では上の層のデータに下の層のヘッダなどを付けて包むカプセル化(カプセリング)、受信側では逆向きに取り外す非カプセル化(デカプセル化)が行われます。手紙を封筒に入れてさらに袋に入れる郵便処理に似ています。

IP と TCP——届ける層と正しく渡す層

IP は宛先 IP アドレスを目印にパケットを相手ホストまで運びますが、到達保証も順序保証もありません(ベストエフォート)。その穴を埋めるのが TCP です。TCP はシーケンス番号で順序を管理し、確認応答(ACK)と再送で欠落を補い、ウィンドウ制御で流量を調整します。接続開始時には 3-way ハンドシェイク(SYN → SYN-ACK → ACK)で双方の送受信能力を確認してからデータを流します。リアルタイム性を優先する音声通話などは、保証のない軽量な UDP を使います。

  • SYN: 接続したい(初期シーケンス番号を通知)
  • SYN-ACK: 受けた側の承諾+自分の初期シーケンス番号
  • ACK: 承諾への応答 —— ここでコネクション確立

DNS——インターネットの電話帳

人間が覚えるドメイン名(例:example.com)を機械が使う IP アドレスに変換するのが DNS(Domain Name System)です。鍵となるのは階層的な名前空間と、それに対応する委譲の仕組みです。ルート(.)→ TLD(com)→ ドメイン(example)→ ホスト(www)と、責任範囲(ゾーン)が木構造に分かれています。

🔍 名前解決の所要ステップ——キャッシュと再帰照会

  1. Step 1: スタブリゾルバが再帰照会を出す
    PC→full resolver (ISP etc.)\text{PC} \to \text{full resolver (ISP etc.)}

    OS のリゾルバはまず自分のキャッシュを見て、なければフルリゾルバに「答えを最後まで取ってきて」と依頼します(再帰照会)。

  2. Step 2: フルリゾルバがルートへ反復照会
    .→com→example.com. \to \text{com} \to \text{example.com}

    フルリゾルバはルートサーバに聞き、「com の担当はここ」という参照( referral )を受け取り、次の権威サーバへ……とたどります(反復照会)。

  3. Step 3: 権威サーバが最終回答
    www.example.com↦203.0.113.10\text{www.example.com} \mapsto 203.0.113.10

    ドメインの権威サーバが A レコード(IPv4 アドレス)を返します。

  4. Step 4: TTL 付きでキャッシュする
    remaining TTL=max⁡(0,initial TTL−elapsed time)\text{remaining TTL}=\max(0,\text{initial TTL}-\text{elapsed time})

    求めるレコードがキャッシュ内にあり、有効期限内なら再利用できます。TTL は保存できる最大期間の目安で、キャッシュが途中で削除される場合もあります。TTL > 0 だけではキャッシュヒットは保証されません。

例題

ブラウザで https://www.example.com/ を、既存接続を再利用せず HTTP/1.1 または HTTP/2 で開く。DNS・TCP・TLS・HTTP の処理を順に述べよ。

解答・解説

**①** DNS で IP アドレスを解決(有効なキャッシュがなければ必要な権威サーバをたどる)。**②** 通常はポート443へ TCP 接続を確立。**③** TLS で証明書の検証や暗号通信の準備を行う。HTTPS では TLS は省略しない。**④** 暗号化された通信路で HTTP リクエストを送り、応答を受けて描画する。なお HTTP/3 は TCP ではなく UDP 上の QUIC を利用し、TLS の機能も組み込まれている。

練習問題
  1. TCP と UDP、どちらを使うべきか。ライブ配信(多少の欠落より遅延が問題)の場合を考えよ。

    ヒント

    再送で待つと遅延が増えることを考える。

    解答・解説

    この条件なら **UDP を基盤にした方式が候補**。古いデータの再送待ちより最新のデータを優先できる。ただし混雑への配慮や必要な誤り訂正などは上位で設計する。ライブ配信全般が UDP とは限らず、バッファを使う HTTP 配信では TCP や QUIC も用いられる。

  2. ポート番号は何を識別するためのものか。

    解答・解説

    TCP / UDP がデータを振り分ける**通信の端点**を識別する。IP アドレス・プロトコル・ポート番号などの組によってアプリケーションへ届ける。ポート番号は OS のプロセスIDではなく、TCP と UDP で同じ番号を別々に使える。

  3. フルリゾルバがキャッシュを持たない状態で www.example.com を引くとき、問い合わせる順序として正しいものは?

    ヒント

    DNS の名前空間は「ルート → TLD → ドメイン」の木構造。

    解答・解説

    **ルート → com(TLD)→ example.com の権威サーバ** の順に参照をたどる(反復照会)

  4. TCP の 3-way ハンドシェイクで、最初にクライアントから送られるセグメントの名前を答えよ。

    ヒント

    接続要求の合図。

    解答・解説

    **SYN**。クライアントが SYN、サーバが SYN-ACK、クライアントが ACK を返す**3つのメッセージ**で確立する。3往復ではない。

  5. DNS キャッシュの TTL(Time To Live)が切れた後に名前解決をすると何が起こるか。

    解答・解説

    通常は期限切れのレコードをそのまま再利用せず、必要な情報を再問い合わせする。委譲先の NS レコードなどがまだ有効なら途中の権威サーバから照会できるため、毎回ルートからたどるとは限らない。TTL はレコードごとに管理される。

  6. TTL が 300 秒の A レコードを取得してから 120 秒経過した。残りの有効時間はいくらか。その後 A レコードの期限が切れても委譲先情報は有効なら、必ずルートから照会するか。

    解答・解説

    残りは 300 − 120 = **180 秒**。期限切れ後も有効な委譲先情報を使って権威サーバへ照会できるので、必ずルートからとは限らない。

確認クイズ(ネットワーク)

問1. TCP のもっとも重要な役割はどれか。

問2. 3-way ハンドシェイクで最初にクライアントが送るセグメントはどれか。

問3. DNS のフルリゾルバが権威サーバへ行う照会方式はどれか。

📝 メモこの端末のみに保存
メモ欄はページ読み込み後に使えるようになります。