ブラウザでURLを入力するとどうなるか[終了]


293

ブラウザでURLを入力してから、ブラウザでページを表示するまでの間に、何が起こっているのかを誰かに教えてもらえますか?プロセスの詳細な説明は非常に役立ちます。


2
これはプログラミング関連(最終的には)である可能性がありますが、これに答えることができる詳細のレベルは、ボリュームを満たします(そして満たしました)。プログラミングクエリとして言い換えてください。
KevinDTimm

28
O'ReillyのDNS and Bindブックを入手してください。わずか624ページです。
Wim Hollebrandse、2010年

7
edusagar.com/articles/view/70/… これが最善の答えです!
Shivendra 2014

1
後世のために、インターネットの仕組みの詳細なバージョンを以下に示します-goo.gl/eEHmpZ
Ashwin Krishnamurthy 2014年

4
できるだけ多くの詳細などでこれを答えるための共同の努力は今あります:github.com/alex/what-happens-when/blob/master/README.rst
Piskvorは、建物の左側の

回答:


587

注意:これは非常にラフで 単純化されたスケッチです。可能な限り単純なHTTPリクエスト(HTTPSなし、HTTP2なし、追加なし)、できるだけ単純なDNS、プロキシなし、シングルスタックIPv4、1つのHTTPリクエストのみ、単純なHTTPサーバーもう一方の端で、どのステップでも問題はありません。これは、ほとんどの現代の意図と目的にとって、非現実的なシナリオです。これらのすべては実際の使用でははるかに複雑であり、技術スタックはこれが書かれて以来、桁違いに複雑になっています。これを念頭に置いて、次のタイムラインはまだいくらか有効です。

  1. ブラウザはキャッシュをチェックします。要求されたオブジェクトがキャッシュにあり、新しい場合は、#9にスキップします
  2. ブラウザがOSにサーバーのIPアドレスを要求する
  3. OSはDNSルックアップを行い、ブラウザにIPアドレスを返信します
  4. ブラウザがサーバーへのTCP接続を開きます(この手順はHTTPSの場合ははるかに複雑です)
  5. ブラウザはTCP接続を介してHTTPリクエストを送信します
  6. ブラウザはHTTP応答を受信し、TCP接続を閉じるか、別の要求に再利用します
  7. ブラウザは、応答がリダイレクトまたは条件付き応答(3xx結果ステータスコード)、認証要求(401)、エラー(4xxおよび5xx)などであるかどうかを確認します。これらは通常の応答とは異なる方法で処理されます(2xx)
  8. キャッシュ可能な場合、応答はキャッシュに保存されます
  9. ブラウザが応答をデコードする(例:gzipされている場合)
  10. ブラウザーは応答をどうするかを決定します(例:HTMLページ、画像、サウンドクリップなど)。
  11. ブラウザは応答をレンダリングするか、認識されないタイプのダウンロードダイアログを提供します

繰り返しになりますが、これらの各ポイントについての議論は無数のページを埋めました。これは、明確にするために要約したものにすぎません。また、これと並行して他にも多くのことが行われます(入力されたアドレスの処理、投機的なプリフェッチ、ブラウザーの履歴へのページの追加、ユーザーへの進行状況の表示、プラグインと拡張機能への通知、ダウンロード中のページのレンダリング、パイプライン、接続の追跡キープアライブ、Cookie管理、悪意のあるコンテンツのチェックなど)-そして、操作全体がHTTPS(証明書と暗号化とピン留め、オーマイ!)でさらに複雑になります。


手順4でのhttpsリクエストの場合はどうなりますか、もう少し説明できますか?
Mohammad Raheem

2
それはこの回答の範囲をはるかに超えています。しかし、上記のGHページを確認してください。github.com
alex

41

最初に、コンピューターは宛先ホストを検索します。ローカルDNSキャッシュに存在する場合は、その情報を使用します。それ以外の場合は、IPアドレスが見つかるまでDNSクエリが実行されます。

次に、ブラウザーは宛先ホストへのTCP接続を開き、HTTP 1.1に従って要求を送信します(またはHTTP 1.0を使用する可能性がありますが、通常のブラウザーはこれを行いません)。

サーバーは必要なリソース(存在する場合)を検索し、HTTPプロトコルを使用して応答し、クライアント(=ブラウザー)にデータを送信します

次に、ブラウザーはHTMLパーサーを使用して、後で画面に表示されるドキュメント構造を再作成します。画像、CSSファイル、JavaScriptファイルなどの外部リソースへの参照が見つかった場合、これらはHTMLドキュメント自体と同じ方法で配信されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.