どのようなプロセスを経た最後のページに、URLを表示するには、ブラウザから受け取りましたか?何の合意にそれを使うのだろうか?
オリジナルの接続:https://blog.csdn.net/ZHLittleRed/article/details/82947330#1_DNS_3
1は、ブラウザのアドレスバーにURLを入力します。
2、DNS DNSは、IPアドレスに対応するドメイン名を取得します。
DNS(ドメインネームシステム)は、「ドメインネームシステム」の略語で、TCP / IPネットワークのため、それが提供するサービスは、ホスト名のあるドメインに組織のコンピュータシステムやネットワークサービスの命名階層であり、作業のIPアドレスにドメイン名を入力します。DNSは、その基本的な原理は以下の図を表すために使用することができ、そのようなA「翻訳者」であります
私たちは、ブラウザでwww.baidu.comとして入力した場合、実際には、これらのウェブサイトの名前はマイクログラムという名前の人々の記憶を簡素化され、実際には、コンピュータがこのようなものを知りません。ブラウザその後、その後、システムキャッシュIPアドレスに要求を送信し、そうでない場合は場合にのみ、ドメイン名のアドレスを入力するときに、ブラウザは、対応するドメイン名がブラウザのキャッシュからがある最初のかどうかだろうIPの対応関係、IPアドレスを知っています - キャッシュのルックアップルーティング、ない場合は、IPを見つけるために、DNSサーバーにアクセスしてください。
3、ブラウザがサーバへのTCP接続を開始し、ブラウザでTCP 3ウェイハンドシェイクを確立します
4、ブラウザがサーバにHTTPリクエストを送信し、要求パケット
サーバーとの接続を確立した後は、サーバーへの要求を開始することができます。HTTPリクエスト・プロセスはHTTP要求メッセージを構築し、指定されたTCPポートプロトコル(HTTPプロトコル8080分の80、HTTPSプロトコル443)を介してサーバに送信することです。要求ライン、要求ヘッダーとリクエストボディ:HTTPリクエストは、3つの部分から構成されています。
5、サーバは、受信した要求を処理します
サーバーは、アパッチ、Ngnix、IISなどのWebサーバ(HTTPサーバが正確でなければならない)要求を処理することによって、要求を受信した後。Webサーバーがユーザー要求を解決し、あなたはリソースファイルをスケジュールして、ユーザの要求と、これらのファイルの対応するパラメータ、およびコール・データベース情報を処理したいものを知って、最終的な結果は、Webサーバーを経由してブラウザクライアントに戻ります。
図6に示すように、ブラウザに対応する結果を返します
ステータスコード、応答ヘッダと応答パケット:HTTPレスポンスメッセージは、3つの部分から構成されています。
ステータスコードは3桁、最初の数字は応答のカテゴリを定義し、5つの可能な値が存在しています。
・1XX:要求が受け入れられたことを示す指示情報、処理が継続されます。
・2XX:成功、要求が成功し、受信理解、受理されたことを示します。
・3XX:リダイレクション、要求を満たすためには、さらなるステップを行かなければなりません。
・4XX:クライアントのエラー、構文エラーや要求を達成することができません。
・5XX:サーバー側のエラーは、サーバーが正当な要求を達成するために失敗しました。
一般的なステータスコードは次のとおりです。200,204,301,302,304,400,401,404,500
7、TCP接続を閉じます
何の要求または応答転送がない場合に、サーバとクライアントのリソース消費と損失の両方を回避するために、両方の、いずれかの当事者は、シャットダウン要求を開始することができます。
8、ブラウザのパースは、ページのレンダリング
お使いのブラウザのHTML、CSS、JSファイルを受信すると、それがレンダリングする必要があります。
ブラウザは、側縁レンダリング解像度処理です。まず、ブラウザはレンダリングツリーが構築された後、ブラウザのレイアウトがツリーのレンダリングを開始し、画面上に描画するまでレンダリングツリー、待ち時間を構築するためにDOMツリーを構築するためのHTMLファイル、およびその後の解析CSSファイルを解析します。リフロー(リフロー)とrepain(再描画):このプロセスは、二つの概念を含む、複雑です。DOMノードの各要素はその位置と大きさを計算するためにブラウザを必要とするボックスモデル、の形態であり、このプロセスは、リフローと呼ばれ、ボックスモデル、サイズ、およびそのような色のような他の属性の位置は、フォントを決定した場合にダウンした後、ブラウザがコンテンツを描画を開始します、このプロセスはrepainと呼ばれています。ページが最初にロードされ、経験リフローrepainにバインドされている場合。そして、repainリフロー工程は、特にモバイルデバイス上で、非常に消費性能である、それは時々ページカトンの結果として、ユーザーエクスペリエンスを破壊します。だから我々は、リフローを減らし、できるだけrepain必要があります。
完成エンジンを解析し、ブラウザのJSでの解析JS。
あなたは、このようなので、上の画像、JSやなどの要求外部リソースを、発生した場合、ブラウザの解決プロセス、。リソースプロセスをダウンロードするブラウザは、1-6を繰り返します。要求プロセスは、非同期であり、かつ負荷にHTMLドキュメントには影響しませんが、ドキュメントに遭遇したJSファイル、HTMLドキュメントは、レンダリングプロセスをハングロードされるときに、ドキュメントがロードされるまでは、だけでなく、JSファイルには、構文解析が終了するのを待つ必要はありHTMLのレンダリング処理が続行されます。JSの実行が完了する前に、リソースのすべての後続のダウンロードJSは、ダウンロードにリソースを塞ぐ原因ルートである必要がないことを意味するJS DOM構造を変更することが可能であるためです。ロードCSSファイルがロードJSファイルには影響しませんが、それは、JSファイルの実行に影響します。ブラウザがCSSファイルがダウンロードされ、ロードされていることを確認する必要があります前に、JSのコードが実行されます。
PS:2つの特定のプロセスの手順は次のとおりです。
- ブラウザのキャッシュ:いくつかの時間のためのブラウザDNSレコード、したがって、解決DNS要求への唯一の最初の場所。
- システムキャッシュを操作する:あなたは、ブラウザのキャッシュにこのレコードが含まれていない場合は、オペレーティングシステム(DNSが最近のクエリーキャッシュを保証)のレコードを取得するためにシステムを使用するオペレーティングシステムを呼び出します。
- ルータのキャッシュ:上記の二つのステップは、DNSレコードを成功していない場合は、ルータのキャッシュを探し続け、
- ISPキャッシュ:上記が失敗した場合は、ISPを検索し続けます。