「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > &#google.com&# を入力するとどうなりますか?

&#google.com&# を入力するとどうなりますか?

2024 年 11 月 4 日に公開
ブラウズ:551

What Happens When You Enter

ブラウザに「google.com」と入力してから見慣れた検索ページが表示されるまでの数秒の間に起こる一連の複雑なイベントについて疑問に思ったことはありますか?この詳細な調査では、Web テクノロジー、ネットワーキング プロトコル、オンライン エクスペリエンスを可能にするデータの複雑なダンスの魅力的な世界を明らかにします。

1. 旅の始まり: ブラウザとオペレーティング システム

1.1 ブラウザの最初のステップ

「google.com」と入力して Enter キーを押すと、ブラウザが動作します:

  1. URL 解析: ブラウザはまず、入力された URL を分析します。これは、プロトコル (この場合、暗黙の「http://」または「https://」)、ドメイン名 (「google.com」)、および追加のパスまたはクエリ パラメーター (この単純な例では何もありません) を識別します。 .

  2. HSTS チェック: Google などのセキュリティを重視した Web サイトの場合、ブラウザは HTTP Strict Transport Security (HSTS) リストをチェックします。 google.com がこのリストに含まれている場合 (そのとおりです)、ブラウザはリクエストを自動的に HTTPS にアップグレードします。

  3. キャッシュ チェック: ネットワークに接続する前に、ブラウザはローカル キャッシュをチェックします。このキャッシュには、以前の訪問からの情報が保存されます。次の情報が含まれます:

    • DNS キャッシュ: google.com に関連付けられた IP アドレス
    • リソース キャッシュ: Google ホームページの HTML、CSS、JavaScript ファイル、画像

これらのいずれかが見つかり、まだ有効である (有効期限が切れていない) 場合、ブラウザは次の手順の一部をスキップできます。

1.2 オペレーティングシステムの役割

ブラウザはキャッシュ内に必要な情報が見つからない場合、オペレーティング システム (OS) に助けを求めます:

  1. Hosts ファイル チェック: OS は最初にローカルの「hosts」ファイルを調べます。このファイルはドメイン名を IP アドレスにマップし、DNS ルックアップをバイパスする可能性があります。ただし、ほとんどのユーザーにとって、google.com はこのファイルには含まれません。

  2. DNS クライアント キャッシュ: OS は、ブラウザーとは別に独自の DNS キャッシュを維持します。次にここをチェックします。

  3. リゾルバー構成: IP がローカル キャッシュにない場合、OS は DNS サーバーに問い合わせる準備をします。ネットワーク構成を読み取り、クエリする DNS サーバーを見つけます (通常はインターネット サービス プロバイダーによって提供されるか、手動で設定されます)。

2. DNS 解決: Google のアドレスを見つける

google.com の IP アドレスがキャッシュされていない場合は、人間が読める「google.com」をマシンが使用できる IP アドレスに変換するようにドメイン ネーム システム (DNS) に依頼する必要があります。

2.1 DNS 階層

DNS は階層構造で構成されています:

  1. ルート サーバー: 階層の最上位。彼らは、.com、.org、.net などのトップレベル ドメイン (TLD) の権威サーバーの場所を知っています。

  2. TLD サーバー: これらのサーバーは、TLD に登録されているすべてのドメインについて知っています。 .com TLD サーバーは google.com.

  3. について認識しています。
  4. 権威ネーム サーバー: これらは、IP アドレスを含む特定のドメインに関するすべてを知る責任があります。

2.2 DNS クエリのプロセス

  1. 再帰リゾルバ: ISP の DNS サーバー (または別の設定されたリゾルバ) が google.com のクエリを受信します。回答がキャッシュされていない場合は、再帰的なプロセスが開始されます:
  • ルートサーバーに .com について問い合わせます
  • ルート サーバーは .com TLD サーバーを参照します
  • .com TLD サーバーに google.com について問い合わせます
  • .com サーバーは、Google の権威ネーム サーバーを参照します
  • Google のネーム サーバーに google.com の IP を要求します
  • Google のネーム サーバーは IP アドレスで応答します
  1. キャッシュ: このプロセスの各ステップにはキャッシュが含まれる場合があるため、すべての行程が必ずしも必要というわけではありません。リゾルバーは、通常、Google によって指定された期間 (Time To Live、つまり TTL)、最終結果をキャッシュします。

  2. 負荷分散: Google のような大規模なサービスは、複数の IP アドレスを返すことがよくあります。これにより、負荷分散が可能になり、信頼性が向上します。

2.3 DNS ルックアップの例

DNS ルックアップが次の (単純化された) 結果を返したとします:

google.com.     300    IN    A     172.217.167.78

これはつまり:

  • ドメインは google.com です
  • レコードには 300 秒 (5 分) の TTL があります
  • これはインターネット (IN) レコードです
  • アドレス (A) レコード タイプです
  • IPアドレスは172.217.167.78です

3. 接続の確立: TCP/IP

Google の IP アドレスがわかったので、接続を確立します。

3.1 TCP/IP スタック

  1. アプリケーション層: ブラウザはここで動作し、HTTP(S) を使用して通信します。

  2. トランスポート層: ここでは、信頼性の高い順序付けられたデータ配信を保証するために TCP が使用されます。

  3. インターネット層: IP はネットワーク間のパケットのルーティングに使用されます。

  4. リンク層: イーサネット、Wi-Fi、携帯電話ネットワークなどを介したデータの物理的な送信を処理します。

3.2 TCP ハンドシェイク

接続を確立するには、3 ウェイ ハンドシェイクが発生します:

  1. SYN: コンピュータは SYN (同期) パケットを Google のサーバーに送信します。
  2. SYN-ACK: Google のサーバーは SYN-ACK パケットで応答します。
  3. ACK: コンピュータは ACK (確認応答) パケットを送り返します。

このプロセスにより、会話のシーケンス番号が確立され、パケットが適切に順序付けされ、失われたパケットが検出されて再送信されることが保証されます。

3.3 TLS ハンドシェイク

HTTPS 接続 (Google が使用する) の場合、追加の TLS (Transport Layer Security) ハンドシェイクが発生します:

  1. Client Hello: ブラウザは、サポートされている SSL/TLS バージョン、暗号スイート、および乱数を送信します。
  2. Server Hello: サーバーは SSL/TLS バージョンと暗号スイートを選択し、証明書と別の乱数を送信します。
  3. 認証: ブラウザは、信頼できる認証局を使用してサーバーの証明書を検証します。
  4. 鍵交換: セッションを暗号化するために安全な対称鍵が確立されます。

4. HTTP リクエスト: ページを要求する

安全な接続が確立されると、ブラウザは Google ホームページに HTTP GET リクエストを送信します。

4.1 HTTP リクエストの例

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

このリクエストには以下が含まれます:

  • リクエストしているメソッド (GET) とパス (/)
  • HTTP バージョン (HTTP/2)*
  • ブラウザとその機能に関する情報を提供するさまざまなヘッダー *注意: HTTP/2 は、http 接続ではなく、HTTPS のみを指します。このリクエストは、ヘッダーに HTTPS が明示的に記載されていない場合でも、すでに確立されている HTTPS 接続を介して送信されます。

5. サーバー処理: Google が応答する

Google のサーバーはこのリクエストを受信して​​処理します。これには以下が含まれる可能性があります:

  1. 負荷分散: リクエストを多数のサーバーに分散します。
  2. アプリケーション サーバー: 応答を生成するコードを実行します。
  3. データベース クエリ: パーソナライズされたデータまたは検索候補を取得します。
  4. キャッシュ: 可能な場合は、事前に生成されたコンテンツを取得します。

6. HTTP レスポンス: ページの送信

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 ...]



  
    
    Google
    [... rest of the HTML ...]
  
  
    [... body content ...]
  

この応答には次の内容が含まれます:

  • ステータスコード (200 OK)
  • 応答に関するメタデータを提供するさまざまなヘッダー
  • ページの HTML コンテンツ

7. レンダリング: ページに命を吹き込む

ブラウザに HTML コンテンツが追加され、ページのレンダリングが開始されます:

  1. HTML の解析: ブラウザは HTML を解析し、ドキュメント オブジェクト モデル (DOM) を作成します。

  2. 追加リソースのリクエスト: CSS、JavaScript、画像などへのリンクを検出すると、これらのリソースに対して追加の HTTP リクエストを送信します。

  3. CSS の解析: ブラウザーは CSS を解析し、スタイルを DOM 要素に適用して、CSS オブジェクト モデル (CSSOM) を作成します。

  4. JavaScript の実行: ブラウザは JavaScript を実行します。これにより、DOM と CSSOM を変更できます。

  5. レンダリング: ブラウザは最終的な DOM と CSSOM を使用して、画面上にページをレンダリングします。

結論

「google.com」と入力して Enter キーを押すという単純なアクションのように見えますが、実際には、DNS ルックアップやネットワーク プロトコルからサーバー側の処理やクライアント側のレンダリングに至るまで、一連の複雑な手順が必要です。この複雑なダンスはわずか数ミリ秒で起こり、私たちのオンライン体験を強化する驚異的なエンジニアリングを示しています。

これらのプロセスを理解することは、私たちの好奇心を満たすだけでなく、Web 開発者や IT プロフェッショナルが Web サイトを最適化し、問題をトラブルシューティングし、より効率的で安全な Web アプリケーションを構築するのにも役立ちます。次回 Web サイトにアクセスするときは、Web を画面に表示するために舞台裏で働いている驚異的な技術を少しだけ味わってください。


このブログの画像はAIが生成したものです。

こちらもお読みください HTTP と HTTPS の違いは何ですか

リリースステートメント この記事は次の場所に転載されています: https://dev.to/yashrajxdev/what-happens-when-you-enter-googlecom-a-deep-dive-into-the-internets-inner-workings-1aoi?1侵害がある場合は、削除するには[email protected]までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3