ブラウザがurlを入力してから何が起こったの?

2983 ワード

1つのウェブサイトを入力することから、どのサービスが呼び出され、どのようなステップを経て、深い解析が行われます.www.googleと入力します.comを例に挙げます.
1.Client側
一般的に、ここでClientとは、ユーザ、すなわちbrowserブラウザを指す.ここではgoogleを入力します.comを例に挙げます.
1.1入力プロンプト
ブラウザでは、履歴アクセス、ブックマークなどの情報に基づいて入力アドバイスが表示されます.
また、デフォルトの検索エンジンの検索レコードに基づいて、最近の検索レコードに一致します.
1.2 url解析
不正なアドレスの場合は、デフォルトの検索エンジンに転送されます.たとえば、chromeを使用している場合は、url入力ボックスに検索したい内容を入力し、検索エンジンはキーワードに基づいて検索します.
HSTSリストセキュリティポリシーメカニズム、httpsの強行使用
1.3 DNS解析
ドメイン名はDNSを通じてipアドレスに変換され、この変換は主にヒューマンマシンインタラクションの友好型のためである.サイトにアクセスするために数字を覚えるのが好きな人はいません.DNSがやったことはあなたを入力したwww.googleです.comはコンピュータが理解できるIPアドレスに翻訳され、192.188.1.1に似ている.
1.3.1クエリー・プロシージャ
解析の過程で、ブラウザは近くから遠くまでキャッシュ情報があるかどうかを探します.すなわち、ドメイン名からアドレスへのマッピングが保存されていないかどうかを探します.クエリーの過程全体は以下のステップに分かれています.クエリーが到着すると、すぐに戻ってきて、これ以上実行しないことに注意してください.
  • ブラウザの内部キャッシュを表示する
  • ブラウザには、しばらくアクセスしたサイトのドメイン名アドレスのマッピングが保存されます.
  • システムキャッシュ
  • OSのキャッシュ.ブラウザはsystem callを発行し、オペレーティングシステムに対応するマッピングが保存されているかどうかを尋ねます.
  • ルータキャッシュ、ISPキャッシュ
  • ルータのキャッシュを問い合わせる.ルータキャッシュにマッピングが見つからない場合は、ISP(Internet Service Provider)で探します
  • ローカルDNSサーバ
  • ドメイン名サーバルートドメインサーバ->トップドメイン名サーバ
  • 探し方はツリー構造に似ており、最下層の子葉から上へ遍歴し、より高度なドメイン名サーバに要求を続けています.このプロセスでは、リクエストとIPアドレスを携帯したパケットが送信され続け、clientとserverの間の複数のネットワークデバイスが正しいDNSサーバに到達するまで通過します.
    2ネットワーク
    正しいIPアドレスが見つかったら、接続の確立を開始します.接続の確立過程は一般的にTCPプロトコルを使用し、3回の握手で接続を確立します.
    2.1 TCP接続
    TCPで接続を確立します.ClientとServerの間でパケットを転送します.
    2.1.1 IPパッケージsocket
    2.1.2 TCP三回握手
  • Clientは、接続の確立を要求する.パケットはSYNを持っています.
  • サーバーにオープンポートがあれば、接続を受け入れて確立できます.serverはSYN+ACKを返し、Clientにあなたの要求を受け入れることができると伝えます.
  • Clientは、サーバからの応答を受信し、ACKをサーバに送信します.接続が確立されました.

  • 1つの知乎に接続して、どうして3回握手して、2回あるいは4回ではありませんか?とても面白い例です.
    2.1.3 TCP四回手を振る
  • Clientは割り込み要求を開始し、FINをserver
  • に送信する.
  • サーバは要求を受信し、データがまだ送信されていない可能性があります.このときsocketを閉じるのではなく、ACKに返信し、Clientに
  • を知っていることを伝えます.
  • ClientはFin_Wait状態に入り、サーバ側のFINメッセージを待ち続けます.サーバ側の送信が完了すると、ClientにFIN
  • が送信されます.
  • Client受信後、ACKに返信し、接続
  • を閉じる.
    3 Server
    ここでは主にTCP接続の確立と切断の間に発生するいくつかのことを説明する.
    TCP/IPはプロトコルグループであり、ネットワーク層と伝送層のプロトコルである.Clientはまず、サーバとのTCP接続(上記の3回の握手)を確立する.その後ClientはHTTPリクエストを送信し,ここではページを取得するためにGETリクエストをサーバに送信する.要求には、ブラウザID、ユーザデータヘッダ、接続ヘッダ(TCP接続を維持する必要があるかどうかなどの追加情報を含む)、クッキーから取得したデータなどが含まれる.
    ServerはClientのRequestを受け取り、リクエストをRequest Handlerに渡し、リクエストを処理します(データベースからデータを検索し、データを処理し、Responseを構築します).構築が完了するとResponseが返されます.このResponseには状態情報が含まれていることに注意してください.
  • 1 xx informational message only-情報
  • を含む
  • 2 xx success of some kind-成功情報
  • 3 xx redirects the client to another URL-Clientを別のURL
  • に移動
  • 4 xx indicates an error on the client's part-Clientエンドエラー
  • 5 xx indicates an error on the server's part-Serverエンドエラー
  • 4ページレンダリング
    ブラウザはResonseに従ってデータを返し、DOMツリーをレンダリングし、返されたデータをページに表示します.
    Reference
    https://github.com/sunyongjian/blog/issues/34