以下では、「Webブラウザで検索ボタンをクリックしてから、検索結果が表示されるまで」の全体的な流れをまとめながら、ユーザー側 → ハブ/スイッチ → ルーター → プロバイダー網 → ファイアウォール → キャッシュサーバー → サーバー側 のルートを通るパケットのイメージも含めて、TCP 3ウェイハンドシェイク や TLS(HTTPS)ハンドシェイク の詳細を交えて説明します。
┌───────────────────┐
│ [User's PC] │
│ (Webブラウザ) │
└───────────┬───────┘
│
(LAN内の通信: イーサネット or Wi-Fi)
│
┌───────────┴─────────┐
│ [Hub/Switch] (LAN) │
└───────────┬─────────┘
│
┌───────────┴─────────┐
│ [Router] NAT機能 │
│ (ホームゲートウェイ) │
└───────────┬─────────┘
│
(プロバイダーとの回線: 光, CATV等)
│
┌───────────┴─────────┐
│ [ISP/プロバイダ] │
│ 各種ルータ・設備 │
└───────────┬─────────┘
│
(インターネットの各ルータを通過)
│
┌───────────┴─────────┐
│ [Firewall/CDN/LB] │
│ (サーバ側 or 中継) │ ← TCPハンドシェイク, TLSハンドシェイクを中継
└───────────┬─────────┘
│
┌───────────┴───────┐
│ [Webサーバ] │ ← TCP & TLSの終点
│ (検索処理を実施) │
└───────────────────┘
全体像:ユーザーPC →(LAN機器)→(ISP/プロバイダー)→(インターネット)→ サーバ
- ユーザーが検索ボタンを押す
- LAN内のハブ/スイッチを通過
- ルーター(ホームゲートウェイ)でNATなどが行われる
- プロバイダー網やインターネット上のファイアウォール/ルーターを経由
- CDNやキャッシュサーバー等を挟む場合もあり
- 最終的にサーバーに到達
- サーバーからのレスポンスが同様の経路を逆向きに通ってユーザーに返ってくる
これらはTCP/IPの各層(物理層・データリンク層・ネットワーク層・トランスポート層など)で行われる処理を順番に踏んでいます。
以下、順を追って詳しく見ていきます。
1. 検索ボタンをクリック → リクエスト準備
-
検索キーワード入力 & ボタンクリック
- ユーザーがPCのブラウザで検索ワードを入力し、「検索」ボタンをクリック。
- ブラウザはクリックイベントをフックして、フォーム送信やAjaxなどでHTTPリクエスト(GET/POST)を生成します。
-
DNS問い合わせ
- 「www.example.com」などのドメインに対応する IPアドレス が不明なら、ブラウザやOSがDNSサーバーに問い合わせを行います。
- キャッシュにIPが残っている場合は省略されます。
2. LAN内 (ハブ/スイッチ, ルーター) → プロバイダー網
-
ハブ/スイッチを経由(同一LAN内)
- ユーザーPCがイーサネット(有線)やWi-Fi(無線LAN)を通じてルーターに通信を送ります。
- 家庭やオフィスLANでは、ハブやスイッチが複数のデバイスをつなぎ、PCからのデータフレーム(イーサネットフレーム)をルーターのMACアドレスへ転送。
-
ルーター(ホームゲートウェイ)でNAT処理
- ルーター(ブロードバンドルーター, ホームゲートウェイ)は、PCのプライベートIPアドレスを、ISP(インターネット接続サービスを提供する事業者)と接続するグローバルIPアドレスに変換(NAT)して、外部ネットワークへ送出。
- ルーターは自宅・オフィス内の複数端末の通信をポート番号などで区別し、外部との通信を仲介します。
-
プロバイダー網(ISP)を経由
- ルーターから出たIPパケットはプロバイダー(ISP)の回線を通り、プロバイダーのルーター/スイッチを順次経由しインターネットへ向かいます。
- 特に携帯網(4G/5G)は除外すると、通常の光回線やCATVなどの固定回線を通ると考えてよいでしょう。
- ISP側でもファイアウォールやトラフィック制御が行われている場合があります。
3. ファイアウォール, キャッシュサーバーを経由(インターネット側)
-
中継ルーター/ファイアウォール
- インターネット上には多くのルーターがあり、BGP等のルーティングプロトコルで経路が決定されます。
- 途中でファイアウォールやACL(アクセス制御リスト)があり、不正パケットを遮断することもあります。
-
CDN/キャッシュサーバー
- Webコンテンツや画像などを高速に配信するため、CDN(Content Delivery Network)などのキャッシュサーバーが間に入ることがあります。
- ただし検索結果のように動的に生成されるページでは、キャッシュが効かずサーバーまで到達する可能性が高いです。
-
サーバーのファイアウォール/ロードバランサ
- サーバー側のネットワークにもファイアウォールやロードバランサ(LB)が存在し、パケットを振り分ける・制限することがあります。
4. TCPハンドシェイク(3ウェイハンドシェイク)
上記のルーターやファイアウォールを経由し、最終的にサーバー(グローバルIP:443など)との通信を開始します。HTTPSの場合でもまずはTCPによるコネクションが必要です。これが3ウェイハンドシェイクです。
-
クライアント → サーバ: SYN
- ブラウザ(PC)がサーバーのIP:443に対し、「接続開始」を示すSYNフラグ付きパケットを送る。
- このパケットは途中のすべてのルーター、ファイアウォールを通過し、最終的にサーバーまで届く。
-
サーバ → クライアント: SYN + ACK
- サーバはSYNを受け取り、許可するならSYN+ACKを返す。
- 途中のネットワーク機器がTCPステートフルインスペクションをしている場合も、このSYN+ACKを許可すれば、クライアントに到達する。
-
クライアント → サーバ: ACK
- クライアントがACKを返し、TCPコネクションが確立。
- この間、各機器はIPアドレスやポート番号を見て、パケットの行き先を判断します。NATやファイアウォールが正しく設定されていれば通信が通ります。
5. TLS(HTTPS)ハンドシェイク
TCPコネクション確立後、ポート443などでTLSハンドシェイクが行われます。ここでは一般的な TLS 1.2 のフローを簡単に解説します。(TLS 1.3だと少し往復が減り高速化します)
-
Client Hello
- クライアントはTLSバージョン、暗号スイート一覧、ランダムデータなどを送り、暗号化の準備を要求。
- これもすべて中継ルーターやファイアウォール、LB を通過し、サーバーに到達。
-
Server Hello
- サーバーは対応可能な暗号スイートを決定し、同じくランダム値を返す。また、証明書(サーバ証明書)を送る。
- クライアントは受け取った証明書を検証(認証局の信頼チェーンやCN/ドメイン名確認)。
-
鍵交換・共通鍵生成
- RSA/ECDHE等で鍵交換をし、お互いが同じセッション鍵を共有。
-
Finishedメッセージ
- 双方が握手完了を確認し、以降はTLSで暗号化された通信になる。
- ファイアウォールがHTTPSの中身を復号しない場合、TLSハンドシェイクのパケットは通りますが、暗号化の詳細を検査はできない(いわゆるSSLインスペクションがない限り)。
6. HTTPリクエスト → サーバ処理 → レスポンス (続き)
-
サーバ側で検索処理
- Webサーバーやアプリケーションサーバがリクエストを受け取り、DB検索や検索エンジンを呼び出す。
-
レスポンス返却
- 処理結果をHTMLなどに整形してHTTPSで返送。
- 途中でCDNやキャッシュサーバーが利用される場合もあるが、動的検索結果なのでキャッシュされないか、もしくは短期間だけキャッシュされる設定の可能性。
7. ブラウザで検索結果が表示
-
HTML/CSS/JSの受信 & レンダリング
- ブラウザがHTMLを解析して画面を組み立て、必要に応じてCSSやJS、画像などを追加取得する(これらのリクエストも同じルートでHTTPSを利用)。
-
ユーザーが結果を閲覧
- 検索ボタンを押してから数秒以内に結果が表示されますが、この間にTCPハンドシェイク + TLSハンドシェイク + HTTPリクエスト/レスポンスという多段階の処理が行われています。
まとめ
-
LAN内部(ハブ/スイッチ → ルーター)
- ユーザーPCのリクエストがイーサネット/Wi-Fiを通り、ルーターでNAT処理されて外部へ出ていく。
-
プロバイダー網 → インターネット
- ISPの設備を経由し、インターネット中継ルーターやファイアウォールを通過、必要に応じてCDN/キャッシュサーバーも経由。
-
TCP 3ウェイハンドシェイク
- クライアントが SYN → サーバが SYN+ACK → クライアントが ACK、でTCPコネクション確立。
-
TLSハンドシェイク(HTTPS)
- Client Hello / Server Hello / 鍵交換 / Finished 等のやり取りで暗号化チャネルを確立。
- サーバ証明書の検証や共通鍵生成。
-
HTTPリクエスト/レスポンス
- 暗号化された通信路(HTTPS)で検索クエリなどを送信。
- サーバで処理された結果がレスポンスとして戻る。
-
ブラウザで検索結果レンダリング
- HTML/CSS/JSを処理し、画面表示を更新。
ユーザーから見れば「検索ボタンをクリック → 数秒で結果表示」ですが、実際にはルーターやファイアウォール、キャッシュサーバーなどのネットワーク機器を経由し、TCP 3ウェイハンドシェイク + TLSハンドシェイクを行い、最終的に暗号化されたHTTP通信でやり取りしているのです。これらの手順が高速に処理されることで、快適なWeb閲覧が可能になっています。