ブラウザに「google.com」と入力してから見慣れた検索ページが表示されるまでの数秒の間に起こる一連の複雑なイベントについて疑問に思ったことはありますか?この詳細な調査では、Web テクノロジー、ネットワーキング プロトコル、オンライン エクスペリエンスを可能にするデータの複雑なダンスの魅力的な世界を明らかにします。
「google.com」と入力して Enter キーを押すと、ブラウザが動作します:
URL 解析: ブラウザはまず、入力された URL を分析します。これは、プロトコル (この場合、暗黙の「http://」または「https://」)、ドメイン名 (「google.com」)、および追加のパスまたはクエリ パラメーター (この単純な例では何もありません) を識別します。 .
HSTS チェック: Google などのセキュリティを重視した Web サイトの場合、ブラウザは HTTP Strict Transport Security (HSTS) リストをチェックします。 google.com がこのリストに含まれている場合 (そのとおりです)、ブラウザはリクエストを自動的に HTTPS にアップグレードします。
キャッシュ チェック: ネットワークに接続する前に、ブラウザはローカル キャッシュをチェックします。このキャッシュには、以前の訪問からの情報が保存されます。次の情報が含まれます:
これらのいずれかが見つかり、まだ有効である (有効期限が切れていない) 場合、ブラウザは次の手順の一部をスキップできます。
ブラウザはキャッシュ内に必要な情報が見つからない場合、オペレーティング システム (OS) に助けを求めます:
Hosts ファイル チェック: OS は最初にローカルの「hosts」ファイルを調べます。このファイルはドメイン名を IP アドレスにマップし、DNS ルックアップをバイパスする可能性があります。ただし、ほとんどのユーザーにとって、google.com はこのファイルには含まれません。
DNS クライアント キャッシュ: OS は、ブラウザーとは別に独自の DNS キャッシュを維持します。次にここをチェックします。
リゾルバー構成: IP がローカル キャッシュにない場合、OS は DNS サーバーに問い合わせる準備をします。ネットワーク構成を読み取り、クエリする DNS サーバーを見つけます (通常はインターネット サービス プロバイダーによって提供されるか、手動で設定されます)。
google.com の IP アドレスがキャッシュされていない場合は、人間が読める「google.com」をマシンが使用できる IP アドレスに変換するようにドメイン ネーム システム (DNS) に依頼する必要があります。
DNS は階層構造で構成されています:
ルート サーバー: 階層の最上位。彼らは、.com、.org、.net などのトップレベル ドメイン (TLD) の権威サーバーの場所を知っています。
TLD サーバー: これらのサーバーは、TLD に登録されているすべてのドメインについて知っています。 .com TLD サーバーは google.com.
権威ネーム サーバー: これらは、IP アドレスを含む特定のドメインに関するすべてを知る責任があります。
キャッシュ: このプロセスの各ステップにはキャッシュが含まれる場合があるため、すべての行程が必ずしも必要というわけではありません。リゾルバーは、通常、Google によって指定された期間 (Time To Live、つまり TTL)、最終結果をキャッシュします。
負荷分散: Google のような大規模なサービスは、複数の IP アドレスを返すことがよくあります。これにより、負荷分散が可能になり、信頼性が向上します。
DNS ルックアップが次の (単純化された) 結果を返したとします:
google.com. 300 IN A 172.217.167.78
これはつまり:
Google の IP アドレスがわかったので、接続を確立します。
アプリケーション層: ブラウザはここで動作し、HTTP(S) を使用して通信します。
トランスポート層: ここでは、信頼性の高い順序付けられたデータ配信を保証するために TCP が使用されます。
インターネット層: IP はネットワーク間のパケットのルーティングに使用されます。
リンク層: イーサネット、Wi-Fi、携帯電話ネットワークなどを介したデータの物理的な送信を処理します。
接続を確立するには、3 ウェイ ハンドシェイクが発生します:
このプロセスにより、会話のシーケンス番号が確立され、パケットが適切に順序付けされ、失われたパケットが検出されて再送信されることが保証されます。
HTTPS 接続 (Google が使用する) の場合、追加の TLS (Transport Layer Security) ハンドシェイクが発生します:
安全な接続が確立されると、ブラウザは Google ホームページに HTTP GET リクエストを送信します。
GET / HTTP/2 Host: www.google.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0 Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Connection: keep-alive Upgrade-Insecure-Requests: 1
このリクエストには以下が含まれます:
Google のサーバーはこのリクエストを受信して処理します。これには以下が含まれる可能性があります:
Google のサーバーは次のような HTTP 応答を送り返します:
HTTP/2 200 OK Content-Type: text/html; charset=UTF-8 Date: Sat, 21 Sep 2024 12:00:00 GMT Expires: Sat, 21 Sep 2024 12:00:00 GMT Cache-Control: private, max-age=0 Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN [... other headers ...]
この応答には次の内容が含まれます:
ブラウザに HTML コンテンツが追加され、ページのレンダリングが開始されます:
HTML の解析: ブラウザは HTML を解析し、ドキュメント オブジェクト モデル (DOM) を作成します。
追加リソースのリクエスト: CSS、JavaScript、画像などへのリンクを検出すると、これらのリソースに対して追加の HTTP リクエストを送信します。
CSS の解析: ブラウザーは CSS を解析し、スタイルを DOM 要素に適用して、CSS オブジェクト モデル (CSSOM) を作成します。
JavaScript の実行: ブラウザは JavaScript を実行します。これにより、DOM と CSSOM を変更できます。
レンダリング: ブラウザは最終的な DOM と CSSOM を使用して、画面上にページをレンダリングします。
「google.com」と入力して Enter キーを押すという単純なアクションのように見えますが、実際には、DNS ルックアップやネットワーク プロトコルからサーバー側の処理やクライアント側のレンダリングに至るまで、一連の複雑な手順が必要です。この複雑なダンスはわずか数ミリ秒で起こり、私たちのオンライン体験を強化する驚異的なエンジニアリングを示しています。
これらのプロセスを理解することは、私たちの好奇心を満たすだけでなく、Web 開発者や IT プロフェッショナルが Web サイトを最適化し、問題をトラブルシューティングし、より効率的で安全な Web アプリケーションを構築するのにも役立ちます。次回 Web サイトにアクセスするときは、Web を画面に表示するために舞台裏で働いている驚異的な技術を少しだけ味わってください。
このブログの画像はAIが生成したものです。
こちらもお読みください HTTP と HTTPS の違いは何ですか
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3