ネットワークの教科書NETWORK

第5章 アプリケーション層5-4コース全体 19回中19本目

入門読了 約10分

Webページが表示されるまで(総合)

ブラウザにURLを入力してからページが表示されるまでを1本の線でたどり、これまで学んだ18回がそれぞれどこで効いているかを確認する、コース最終回です。

結論

新しい知識は、ここではもう出てきません

https://example.com/ のようなURLをブラウザに入力してからページが表示されるまでには、 DNS・ARP・カプセル化・ルーティング・NAT・TCP・TLS・HTTPという、これまでの回で1つずつ学んだ仕組みが、 決まった順番で1回ずつ働いています。

この記事の役目この記事は総合回なので、新しい仕組みは足しません。すでに学んだ18回が、どの段階でどう効いているかをつなげて確認するだけです。 各段階には該当する回へのリンクを置いたので、あいまいな部分があれば戻って読み返してください。

例として、自分のPC(192.168.10.25/24)からhttps://example.com/ を開く場面を、最初から最後まで追いかけます。

①〜②

宛先を決めるまで

  1. 1

    URLをスキーム・ホスト名・パスに分解する第7層

    https://example.com/https がスキーム(使う約束事)、example.com がホスト名、/ がパスです。 通信の最終的な宛先を示すURL/ドメイン名は、第7層(アプリケーション層)の宛先にあたります。

  2. 2

    DNSでホスト名をIPアドレスに変える第7層

    ホスト名 example.com のままでは通信できません。DNSがキャッシュDNSサーバ→ルート→TLD→権威の順に問い合わせ、 IPアドレス(ここでは 203.0.113.50 とします)を返します。

実はこのDNSの問い合わせ自体も、これから見る③〜⑧の手順(宛先判定・ゲートウェイ・ARP・カプセル化・ルーティング・NAT)を経て届いています。 DNSサーバへの通信もHTTPサーバへの通信も、仕組みは同じです。話を追いやすくするため、ここではDNSで名前解決が終わった後の話として進めます。
③〜⑧

送り出すまで

宛先IPアドレスが分かったところで、PCはまず1つの判定をします。宛先は自分と同じネットワークか、外かです。

  1. 3

    宛先が同一ネットワークか判定する第3層

    自分のIPアドレスサブネットマスクで ネットワークアドレスを求め、宛先にも同じマスクを当てて比較します。192.168.10.25/24203.0.113.50 は一致しないので、外です。

  2. 4

    デフォルトゲートウェイに預ける第3層

    外向けの通信は自分では届けられないので、デフォルトゲートウェイ192.168.10.1)に中継を任せます。

  3. 5

    ARPで次に渡す相手のMACを調べる第2層

    ARPで尋ねるのは、最終的な宛先(サーバ)のMACではなく、同じネットワーク内にいるゲートウェイのMACです。

DNSで宛先IPが分かった後宛先は同一ネットワーク?はい(経由しない)いいえデフォルトゲートウェイへ預けるMACを照会ARP:宛先そのものARP:ゲートウェイのMAC解決解決宛先へ直接送信ゲートウェイへ送信
自分のIPアドレスとサブネットマスクで宛先のネットワークアドレスを比べ、同一ネットワークなら宛先そのもののMACをARPで調べて直接送信する。別ネットワークなら、まずデフォルトゲートウェイに預けることを決め、ARPで尋ねる相手もゲートウェイのMACに変わる。同一ネットワークの側にはゲートウェイの箱がなく、その分だけ手順が短い。
  1. 6

    カプセル化してフレームを組み立てる第4〜2層

    ステップ5で分かった宛先MACを使い、TCPヘッダ→IPヘッダ→Ethernetヘッダの順に包んでいきます。 このときTCPヘッダには送信元ポート番号も書き込まれます。

  2. 7

    ルータが経路を選んで転送する第3・2層

    各ルータはルーティングテーブルを見て次のルータへ転送します。 宛先IPは最後まで203.0.113.50のままですが、宛先MACアドレスはホップごとに書き換わります

  3. 8

    NATでグローバルIPに変換される第3層

    プライベート網とインターネットの境目(家庭では自宅ルータ)で、送信元IPアドレスがグローバルIPアドレスに変換されます。 家庭用ルータで使われるNAPTなら、送信元ポート番号もあわせて変換されます。

⑨〜⑪

つながるまで

フレームがサーバに届いても、まだデータのやり取りは始まりません。3つの段階を順番に済ませる必要があります。

  1. 9

    TCPの3ウェイハンドシェイクで接続を確立する第4層

    SYN→SYN+ACK→ACKの3回のやり取りで、お互いの開始番号を確認し合います。

  2. 10

    TLSハンドシェイクで暗号化を確立する第6層

    証明書を確認し、共通鍵のもとになる情報を交換します。 TCPの接続が確立していなければ、この段階は始まりません。

  3. 11

    HTTPでリクエストとレスポンスをやり取りする第7層

    暗号化された通信路の中で、GETリクエストを送り、HTMLを含むレスポンスを受け取ります

↓ 時系列(上から順に)クライアントサーバー① TCP(第4層)接続を確立② TLS(第6層)暗号化を確立③ HTTP(第7層)ページを取得
クライアントとサーバーは、TCPの3ウェイハンドシェイク(第4層)で接続を確立し、その上でTLSハンドシェイク(第6層)が証明書の確認と鍵交換を済ませ、最後にHTTP(第7層)でリクエストとレスポンスをやり取りする。この順序は入れ替わらない。TCPの接続がなければTLSは始められず、TLSの暗号化が済むまでHTTPの中身は送れない。

表示するまで

HTMLが届くと、ブラウザはその中身を解釈し、<img><link>で指定された 画像・CSS・JavaScriptがあれば、その数だけ追加のリクエストを送ります。追加のリクエストも、宛先が新しいホスト名であれば②のDNSから、 同じホストであれば⑨〜⑪のTCP・TLS・HTTPから、それぞれやり直しになります。1つのページを表示するために、 この往復がリソースの数だけ繰り返されています。すべてのリソースが届き、ブラウザが画面を組み立て終えた時点で、ようやくページが表示されます。

全体像

全12段階の早見表

段階やること主な層関連する回
① URLを読むスキーム・ホスト名・パスに分解する第7層1-2
② DNSホスト名からIPアドレスを引く第7層5-1
③ 宛先判定自分のIPとマスクで、宛先が同一ネットワークか比べる第3層2-22-3
④ ゲートウェイへ別ネットワーク宛はデフォルトゲートウェイに預ける第3層3-1
⑤ ARP次に渡す相手(宛先かゲートウェイ)のMACを調べる第2層3-2
⑥ カプセル化TCP→IP→Ethernetの順にヘッダを足して1枚のフレームにする第4〜2層1-4
⑦ ルーティングルータが経路表を見て転送する。宛先MACは毎ホップ書き換わる第3・2層3-32-1
⑧ NATプライベートIPをグローバルIPに変換する第3層2-4
⑨ TCP3ウェイハンドシェイクで接続を確立する第4層4-2
⑩ TLSハンドシェイクで暗号化を確立する第6層5-3
⑪ HTTPリクエストを送り、レスポンスを受け取る第7層5-3
⑫ 描画HTMLを解釈し、画像やCSSを追加で取りに行く第7層②・⑨〜⑪の繰り返し
練習

練習問題(総合・全5問)

1つの回だけでは答えられない、複数の回にまたがる問題です。選んでから「採点する」を押すと、解説つきで答え合わせができます。

Q1次のうち、正しい順序はどれか?
Q2自分のPCが192.168.10.25/24、宛先が203.0.113.50(別ネットワーク)のとき、「ARPで尋ねる相手」と「送り出すフレームの宛先IPアドレス」の組み合わせとして正しいものは?
Q3ルータを2台経由してサーバへ届くときの説明として正しいものは?
Q4家庭内の2台のPCが同時に同じWebサイト(宛先443番)へアクセスしても混線しない。これを支えている2つの要素の組み合わせとして正しいものは?
Q5この教科書の分類で、TLSハンドシェイクが担当するのは第何層の仕事か?
おわりに

これで全19回が終わりです

第1章の「なぜ階層に分けるのか」から始まり、OSI参照モデル、アドレスのしくみ、データが届くしくみ、通信の制御、 アプリケーション層と積み上げてきた知識が、今回の1本の線ですべてつながりました。お疲れさまでした。

次の回

コースを読み進める

コース最終回お疲れさまでした。これで全19回です。
ROADMAPコース全体の一覧を見る