ネットワークの階層モデル——TCP/IP と DNS の仕組み
通信を層に分けて考えると複雑なインターネットが整理できる。IP・TCP・DNS それぞれの役割分担と、ページ表示までの流れを追う。
- TCP/IP 4層モデルの各層の役割と、カプセリングを説明できる
- TCP のコネクション確立(3-way ハンドシェイク)と信頼性確保の仕組みを述べられる
- DNS による名前解決の流れ(再帰・反復照会)を説明できる
なぜ階層に分けるのか
インターネットの通信は「ケーブルに電気信号を流す」「経路を選ぶ」「データの抜けや順番を保証する」「アプリケーションの形式を扱う」というまったく違う関心事の積み重ねです。これを層(レイヤ)に分割すると、各層は上下の層が提供する機能だけを仮定して作れるので、独立に改良できます。TCP/IP モデルは4層、教科書的には OSI 参照モデルの7層で語られます。
| TCP/IP 層 | 役割 | 代表プロトコル | 住所の単位 |
|---|---|---|---|
| アプリケーション層 | サービスの中身 | HTTP, DNS, SMTP | URL/ドメイン名 |
| トランスポート層 | 端末内のプロセス間の伝送・信頼性 | TCP, UDP | ポート番号 |
| インターネット層 | ネットワーク間の経路選択 | IP, ICMP | IP アドレス |
| ネットワークインターフェース層 | 同一セグメント内の伝送 | Ethernet, Wi-Fi | MAC アドレス |
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)と、責任範囲(ゾーン)が木構造に分かれています。
🔍 名前解決の所要ステップ——キャッシュと再帰照会
- Step 1: スタブリゾルバが再帰照会を出す
OS のリゾルバはまず自分のキャッシュを見て、なければフルリゾルバに「答えを最後まで取ってきて」と依頼します(再帰照会)。
- Step 2: フルリゾルバがルートへ反復照会
フルリゾルバはルートサーバに聞き、「com の担当はここ」という参照( referral )を受け取り、次の権威サーバへ……とたどります(反復照会)。
- Step 3: 権威サーバが最終回答
ドメインの権威サーバが A レコード(IPv4 アドレス)を返します。
- Step 4: TTL 付きでキャッシュする
求めるレコードがキャッシュ内にあり、有効期限内なら再利用できます。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 の機能も組み込まれている。
TCP と UDP、どちらを使うべきか。ライブ配信(多少の欠落より遅延が問題)の場合を考えよ。
ヒント
再送で待つと遅延が増えることを考える。
解答・解説
この条件なら **UDP を基盤にした方式が候補**。古いデータの再送待ちより最新のデータを優先できる。ただし混雑への配慮や必要な誤り訂正などは上位で設計する。ライブ配信全般が UDP とは限らず、バッファを使う HTTP 配信では TCP や QUIC も用いられる。
ポート番号は何を識別するためのものか。
解答・解説
TCP / UDP がデータを振り分ける**通信の端点**を識別する。IP アドレス・プロトコル・ポート番号などの組によってアプリケーションへ届ける。ポート番号は OS のプロセスIDではなく、TCP と UDP で同じ番号を別々に使える。
フルリゾルバがキャッシュを持たない状態で www.example.com を引くとき、問い合わせる順序として正しいものは?
ヒント
DNS の名前空間は「ルート → TLD → ドメイン」の木構造。
解答・解説
**ルート → com(TLD)→ example.com の権威サーバ** の順に参照をたどる(反復照会)
TCP の 3-way ハンドシェイクで、最初にクライアントから送られるセグメントの名前を答えよ。
ヒント
接続要求の合図。
解答・解説
**SYN**。クライアントが SYN、サーバが SYN-ACK、クライアントが ACK を返す**3つのメッセージ**で確立する。3往復ではない。
DNS キャッシュの TTL(Time To Live)が切れた後に名前解決をすると何が起こるか。
解答・解説
通常は期限切れのレコードをそのまま再利用せず、必要な情報を再問い合わせする。委譲先の NS レコードなどがまだ有効なら途中の権威サーバから照会できるため、毎回ルートからたどるとは限らない。TTL はレコードごとに管理される。
TTL が 300 秒の A レコードを取得してから 120 秒経過した。残りの有効時間はいくらか。その後 A レコードの期限が切れても委譲先情報は有効なら、必ずルートから照会するか。
解答・解説
残りは 300 − 120 = **180 秒**。期限切れ後も有効な委譲先情報を使って権威サーバへ照会できるので、必ずルートからとは限らない。
問1. TCP のもっとも重要な役割はどれか。
問2. 3-way ハンドシェイクで最初にクライアントが送るセグメントはどれか。
問3. DNS のフルリゾルバが権威サーバへ行う照会方式はどれか。