瀏覽器加載解析渲染(瀏覽器的工作原理)


瀏覽器的主要功能:將用戶選擇的web資源呈現出來。而這,它需要從服務器請求資源,並將其顯示在瀏覽器窗口中。資源的格式通常是html,也包括PDF,image等其他格式。用戶用URL(Uniform Resource Identifier統一資源標識符)來指定所請求資源的位置,通過DNS(域名系統(英文:DomainNameSystem,縮寫:DNS))查詢,將網址轉換為IP地址。整個瀏覽器的工作流程如下:

1.輸入URL

2.瀏覽器查找域名的IP地址

3.瀏覽器給web服務器發送一個http請求

4.網站服務的永久重定向響應

5.瀏覽器跟蹤重定向地址,現在,瀏覽器知道了要訪問的正確地址,所以它會發送另一個獲取請求

6.服務器“處理”請求,服務器接收到獲取請求,然后處理並返回一個響應

7.服務器發回一個html響應

8.瀏覽器開始顯示html

9.瀏覽器發送請求,以獲取嵌入在html中的對象。在瀏覽器顯示HTML時,它會注意到需要獲取其他地址內容的標簽。這時,瀏覽器會發送一個獲取請求來重新獲得這些文件。這些文件就包括CSS/JS/圖片等資源,這些資源的地址都要經歷一個和HTML讀取類似的過程。所以瀏覽器會在DNS中查找這些域名,發送請求,重定向等等…

例如:你發現快過年了,於是想給你的女朋友買一件毛衣,你打開了 www.taobao.com,這時你的瀏覽器首先查詢DNS服務器,將 www.taobao.com轉換成IP地址。但是,你首先會發現,在不同的地區或者不同的網絡下,轉換后的IP地址很可能是不一樣的,這首先涉及負載均衡的第一步,通過DNS解析域名時,將你的訪問分配的不同的入口,同時盡可能的保證你所訪問的入口時所有入口中較快的一個。 你通過這個入口成功的訪問了www.taobao.com實際的入口IP地址,……經過一系列的復雜的邏輯運算和數據處理,用於給你看的淘寶首頁HTML內容便生成了,瀏覽器下一步會加載頁面中用到的CSS /JS/圖片等樣式、腳本和資源文件。

(一)輸入網址(輸入URL)

(二)瀏覽器查找域名的IP地址(DNS解析)

1.DNS的定義:

 域名系統(DomainNameSystem)是互聯網的一項服務。它作為將域名和ip地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。

2.域名的定義:

域名:(英語:Domain Name)是由一串用點分割的名字組成的nternet上某一台計算機或計算機組的名稱,用於在數據傳輸表示計算機的電子方位(有時也指地理位置)。

 

3.IP地址

IP地址是Internet主機的作為路由尋址用的數字體標識,人不容易記憶。因而產生了域名這一種字符型標識。

例如,www.wikipedia.org是一個域名,和IP地址208.80.152.2相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打wikipedia的名字來代替電話號碼(IP地址)。我們直接調用網站的名字以后,DNS就會將便於人類使用的名字(如www.wikipedia.org)轉化成便於機器識別的IP地址(如208.80.152.2)

 4.DNS的解析過程

       ①本機向local dns請求www.baidu.com

         ②local dns向根域請求www.baidu.com,根域返回com.域的服務器IP

         ③向com.域請求www.baidu.com,com.域返回baidu.com域的服務器IP

         ④向baidu.com請求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服務器IP

         ⑤向root域請求www.a.shifen.com

         ⑥向com.域請求www.a.shife.com

         ⑦向shifen.com請求

         ⑧向a.shifen.com域請求

         ⑨拿到www.a.shifen.com的IP

         ⑩localdns返回本機www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP

      (1)在瀏覽器中輸入www.google.cn域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
      (2)如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
      (3)如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
      (4)如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
      (5)如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13台根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這台服務器。這台負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(google.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找google.com域服務器,重復上面的動作,進行查詢,直至找到www.google.com主機。
     (6)如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

(三)瀏覽器給web服務器發送一個HTTP請求

 

那么,一個頁面,究竟是如何從我們輸入一個網址到最后完整的呈現在我們面前的呢?還需要了解一下瀏覽器是如何渲染的:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM