コンピュータ ネットワーク (パート 7) --- ブラウザに URL リンクを入力した後、何が起こりましたか?

ブラウザに URL を入力して Enter キーを押すと、ブラウザはまずここのドメイン名に基づいて対応する IP アドレスを照会します。

  • まずブラウザ自体のキャッシュを確認します。
  • hosts ファイルをクエリします。
  • DNSサーバーに問い合わせます。

ブラウザは HTTP リクエストを作成します。このリクエストにはドメイン名情報が含まれます

ブラウザはオペレーティング システムの Socket API を呼び出し、HTTP データを TCP に渡して処理しますが、このとき TCP プロトコルは TCP データグラムを構築する必要があります。

  • TCP データグラムを送信する前に、接続を確立するための 3 ウェイ ハンドシェイクを実行する必要がありますが、この 3 ウェイ ハンドシェイクには SYN、ACK が含まれ、ネットワーク層、データリンク層、物理層を順に通過し、カプセル化され、エンド サーバーに到達した後に配布されます。
  • データ送信の場合、送信者はさらに、別のカプセル化のために TCP データを IP プロトコルに渡します。

ネットワーク層は、TCP データグラムを 1 つ以上の IP データグラムにカプセル化し、さらにカプセル化し、データをデータリンク層に渡します。


データリンク層は、このデータをイーサネットデータフレームに再パッケージします。フレームヘッダーを構築する際、IP に従って MAC アドレスにマッピングする必要があり、この構築プロセスは ARP プロトコルに依存します。その後、データは物理層に渡されます。

物理層はデータを電気信号に変換して送信し続けます


電気信号はネットワークケーブルまたは光ファイバーを介して次のルーターに到達し、ルーターは受信したデータを分割します。

  • 物理層はデータをデータリンク層に渡し、データリンク層はフレームヘッダーとフレーム末尾の解析と除去を開始し、ネットワーク層のデータグラムを取得してネットワーク層に渡します。
  • このとき、ルーターはネットワーク層のIPデータグラムを取得し、その中の宛先IPを取り出してルーティングテーブルに問い合わせ、次の送信先を見つけ、さらに次の送信先のMACアドレスを見つけます。
  • 再カプセル化、つまり、ソース MAC と宛先 MAC が変更されたデータをデータ リンク層と物理層に再度渡します。

データは受信者、つまりサーバーに到着し、そこでレイヤーごとに分割され分析されます。

  • 物理層は光電信号をイーサネット データ フレームに変換し、データ リンク層に送信します。
  • データ リンク層は IP データグラムを解析してネットワーク層に送信します。ここには CRC チェックが含まれることに注意してください。チェックサムが正しくないことが判明した場合、チェックサムは直接破棄されます。
  • IP プロトコルが再度分析され、TCP データグラムが解析され、IP ヘッダーにプロトコル タイプが含まれます。
  • TCPデータグラムのポート番号から該当するプロセスを見つけ、該当するSocketの受信バッファにデータを入れます。

アプリケーションは、対応するソケット API を呼び出して、TCP 受信バッファからデータを読み取ります。

  • アプリケーションは HTTP プロトコルに従ってデータを解析し、URL を取得します。
  • URL で指定されたパスに従ってルート パスを取得します。

サーバーはこのパスを構成し、特定の HTML にマップします。サーバーはこのファイルを読み取り、このファイルの内容を HTTP 応答データに構築し、Socket API を呼び出して送信します。


上記手順 4 ~ 6 のカプセル化処理を繰り返すと、サーバから送信された応答データも層ごとにカプセル化され、最終的に物理層で送信される光電信号となり、この光電信号が次のルータに送信されます。


ルータが光電信号を受信した後も、ルータは上記のステップ 7 ~ 8 のプロセスを繰り返し、IP 層に解決し、IP を取り出し、ルーティング テーブルに再度クエリを実行し、次のデバイスがどこにあるかを見つけて、データをカプセル化します。


⓭上記のプロセスを繰り返し、順番に転送し、最終的にユーザーのホストに到達します。


ユーザホストは上記の共有処理を繰り返し、データを一つずつ取り出してアプリケーションプログラムに引き渡します。


ブラウザは HTTP 応答メッセージを取得して解析し、HTML コンテンツを取得してレンダリングします。もちろん、HTML には多くのタグが含まれている可能性があり、これらのタグがこの時点で 2 番目のリクエストをトリガーし、ブラウザはこれらのタグ情報に基づいて HTTP リクエストを構築し、上記のプロセスを繰り返します。

おすすめ

転載: blog.csdn.net/Onion_521257/article/details/129624160