0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Webブラウザで検索ボタンをクリックしてから、検索結果が表示されるまで

Last updated at Posted at 2025-01-25

以下では、「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/プロバイダー)→(インターネット)→ サーバ

  1. ユーザーが検索ボタンを押す
  2. LAN内のハブ/スイッチを通過
  3. ルーター(ホームゲートウェイ)でNATなどが行われる
  4. プロバイダー網やインターネット上のファイアウォール/ルーターを経由
  5. CDNやキャッシュサーバー等を挟む場合もあり
  6. 最終的にサーバーに到達
  7. サーバーからのレスポンスが同様の経路を逆向きに通ってユーザーに返ってくる

これらはTCP/IPの各層(物理層・データリンク層・ネットワーク層・トランスポート層など)で行われる処理を順番に踏んでいます。

以下、順を追って詳しく見ていきます。

1. 検索ボタンをクリック → リクエスト準備

  1. 検索キーワード入力 & ボタンクリック
    • ユーザーがPCのブラウザで検索ワードを入力し、「検索」ボタンをクリック。
    • ブラウザはクリックイベントをフックして、フォーム送信やAjaxなどでHTTPリクエスト(GET/POST)を生成します。
  2. DNS問い合わせ
    • 「www.example.com」などのドメインに対応する IPアドレス が不明なら、ブラウザやOSがDNSサーバーに問い合わせを行います。
    • キャッシュにIPが残っている場合は省略されます。

2. LAN内 (ハブ/スイッチ, ルーター) → プロバイダー網

  1. ハブ/スイッチを経由(同一LAN内)
    • ユーザーPCがイーサネット(有線)やWi-Fi(無線LAN)を通じてルーターに通信を送ります。
    • 家庭やオフィスLANでは、ハブやスイッチが複数のデバイスをつなぎ、PCからのデータフレーム(イーサネットフレーム)をルーターのMACアドレスへ転送。
  2. ルーター(ホームゲートウェイ)でNAT処理
    • ルーター(ブロードバンドルーター, ホームゲートウェイ)は、PCのプライベートIPアドレスを、ISP(インターネット接続サービスを提供する事業者)と接続するグローバルIPアドレスに変換(NAT)して、外部ネットワークへ送出。
    • ルーターは自宅・オフィス内の複数端末の通信をポート番号などで区別し、外部との通信を仲介します。
  3. プロバイダー網(ISP)を経由
    • ルーターから出たIPパケットはプロバイダー(ISP)の回線を通り、プロバイダーのルーター/スイッチを順次経由しインターネットへ向かいます。
    • 特に携帯網(4G/5G)は除外すると、通常の光回線やCATVなどの固定回線を通ると考えてよいでしょう。
    • ISP側でもファイアウォールやトラフィック制御が行われている場合があります。

3. ファイアウォール, キャッシュサーバーを経由(インターネット側)

  1. 中継ルーター/ファイアウォール
    • インターネット上には多くのルーターがあり、BGP等のルーティングプロトコルで経路が決定されます。
    • 途中でファイアウォールやACL(アクセス制御リスト)があり、不正パケットを遮断することもあります。
  2. CDN/キャッシュサーバー
    • Webコンテンツや画像などを高速に配信するため、CDN(Content Delivery Network)などのキャッシュサーバーが間に入ることがあります。
    • ただし検索結果のように動的に生成されるページでは、キャッシュが効かずサーバーまで到達する可能性が高いです。
  3. サーバーのファイアウォール/ロードバランサ
    • サーバー側のネットワークにもファイアウォールやロードバランサ(LB)が存在し、パケットを振り分ける・制限することがあります。

4. TCPハンドシェイク(3ウェイハンドシェイク)

上記のルーターやファイアウォールを経由し、最終的にサーバー(グローバルIP:443など)との通信を開始します。HTTPSの場合でもまずはTCPによるコネクションが必要です。これが3ウェイハンドシェイクです。

  1. クライアント → サーバ: SYN
    • ブラウザ(PC)がサーバーのIP:443に対し、「接続開始」を示すSYNフラグ付きパケットを送る。
    • このパケットは途中のすべてのルーター、ファイアウォールを通過し、最終的にサーバーまで届く。
  2. サーバ → クライアント: SYN + ACK
    • サーバはSYNを受け取り、許可するならSYN+ACKを返す。
    • 途中のネットワーク機器がTCPステートフルインスペクションをしている場合も、このSYN+ACKを許可すれば、クライアントに到達する。
  3. クライアント → サーバ: ACK
    • クライアントがACKを返し、TCPコネクションが確立。
    • この間、各機器はIPアドレスやポート番号を見て、パケットの行き先を判断します。NATやファイアウォールが正しく設定されていれば通信が通ります。

5. TLS(HTTPS)ハンドシェイク

TCPコネクション確立後、ポート443などでTLSハンドシェイクが行われます。ここでは一般的な TLS 1.2 のフローを簡単に解説します。(TLS 1.3だと少し往復が減り高速化します)

  1. Client Hello
    • クライアントはTLSバージョン、暗号スイート一覧、ランダムデータなどを送り、暗号化の準備を要求。
    • これもすべて中継ルーターやファイアウォール、LB を通過し、サーバーに到達。
  2. Server Hello
    • サーバーは対応可能な暗号スイートを決定し、同じくランダム値を返す。また、証明書(サーバ証明書)を送る。
    • クライアントは受け取った証明書を検証(認証局の信頼チェーンやCN/ドメイン名確認)。
  3. 鍵交換・共通鍵生成
    • RSA/ECDHE等で鍵交換をし、お互いが同じセッション鍵を共有。
  4. Finishedメッセージ
    • 双方が握手完了を確認し、以降はTLSで暗号化された通信になる。
    • ファイアウォールがHTTPSの中身を復号しない場合、TLSハンドシェイクのパケットは通りますが、暗号化の詳細を検査はできない(いわゆるSSLインスペクションがない限り)。

6. HTTPリクエスト → サーバ処理 → レスポンス (続き)

  1. サーバ側で検索処理
    • Webサーバーやアプリケーションサーバがリクエストを受け取り、DB検索や検索エンジンを呼び出す。
  2. レスポンス返却
    • 処理結果をHTMLなどに整形してHTTPSで返送。
    • 途中でCDNやキャッシュサーバーが利用される場合もあるが、動的検索結果なのでキャッシュされないか、もしくは短期間だけキャッシュされる設定の可能性。

7. ブラウザで検索結果が表示

  • HTML/CSS/JSの受信 & レンダリング
    • ブラウザがHTMLを解析して画面を組み立て、必要に応じてCSSやJS、画像などを追加取得する(これらのリクエストも同じルートでHTTPSを利用)。
  • ユーザーが結果を閲覧
    • 検索ボタンを押してから数秒以内に結果が表示されますが、この間にTCPハンドシェイク + TLSハンドシェイク + HTTPリクエスト/レスポンスという多段階の処理が行われています。

まとめ

  1. LAN内部(ハブ/スイッチ → ルーター)
    • ユーザーPCのリクエストがイーサネット/Wi-Fiを通り、ルーターでNAT処理されて外部へ出ていく。
  2. プロバイダー網 → インターネット
    • ISPの設備を経由し、インターネット中継ルーターやファイアウォールを通過、必要に応じてCDN/キャッシュサーバーも経由。
  3. TCP 3ウェイハンドシェイク
    • クライアントが SYN → サーバが SYN+ACK → クライアントが ACK、でTCPコネクション確立。
  4. TLSハンドシェイク(HTTPS)
    • Client Hello / Server Hello / 鍵交換 / Finished 等のやり取りで暗号化チャネルを確立。
    • サーバ証明書の検証や共通鍵生成。
  5. HTTPリクエスト/レスポンス
    • 暗号化された通信路(HTTPS)で検索クエリなどを送信。
    • サーバで処理された結果がレスポンスとして戻る。
  6. ブラウザで検索結果レンダリング
    • HTML/CSS/JSを処理し、画面表示を更新。

ユーザーから見れば「検索ボタンをクリック → 数秒で結果表示」ですが、実際にはルーターやファイアウォール、キャッシュサーバーなどのネットワーク機器を経由し、TCP 3ウェイハンドシェイク + TLSハンドシェイクを行い、最終的に暗号化されたHTTP通信でやり取りしているのです。これらの手順が高速に処理されることで、快適なWeb閲覧が可能になっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?