從瀏覽器輸入一個地址到渲染出網頁這個過程發生了什嗎???

來源:互聯網
上載者:User

標籤:封裝   手冊   路由   配置   pos   dns服務   dns伺服器   網路   標識符   


1. 瞭解URL:
    
其中:登入資訊  查詢字串 伺服器連接埠號碼 檔案路徑 片段標識符可選, 如果沒有的就是預設配置。
2.DNS解析服務
      電腦需要將網域名稱理解為IP地址, 這個時候就需要DNS解析服務來提供協助,主要遵循如下尋找過程:
      瀏覽器緩衝-瀏覽器會儲存DNS記錄,每個
      系統緩衝-如果再瀏覽器緩衝裡面沒有找到記錄,則在系統緩衝中擷取。
      路由器緩衝
      DNS伺服器 遞迴搜尋

3. 建立TCP串連
  由DNS服務解析的IP地址之後,通過IP地址建立TCP串連,這裡會有一個TCP三向交握的過程:
       


4. 產生HTTP報文
  建立串連時,會產生HTTP報文, HTTP報文結構如下:
 
下面分別解釋一下各個組成部分:
    請求行:由 要求方法  請求URI 和 請求HTTP版本構成 形如:
             PUT  example.html  HTTP1.1
   要求方法包括:   GET 擷取資源, POST傳輸實體主體,PUT 傳輸檔案等等
         URI和HTTP版本沒什麼好說的

    請求首部欄位:(傳遞額外資訊用,以下列舉一些首部欄位)
            Accept:用於通知伺服器,使用者代理程式能夠處理的媒體類型及媒體類型的相對優先順序,

    形如:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 意思就是, 優先返回 text/html,application/xhtml+xml,application/xml  類型的檔案q 表示權重,預設且最大值為1。
            Accept-Charset :用來通知伺服器使用者代理程式支援的字元集及字元集的相對優先順序。
    Accept-Encoding :首部欄位用來告知伺服器使用者代理程式支援的內容編碼及內容編碼的優先順序順序。
    通用首部欄位和實體首部欄位都有各自的定義, 這裡不再展開。

    產生報文時,其中有一個概念是cookie:
         HTTP是無狀態協議,不對之前的請求和響應狀態進行管理,也就是說,HTTP不儲存個人登陸資訊,那麼這裡就需要cookie來協助http協議來解決。

   Cookie整個工作過程如下:
           第一次http請求:
            服務端會在響應中添加cookies來提示用戶端儲存cookie:Server: Apache <Set-Cookie: sid=1342077140226724; path=/; expires=10-Oct-12 07:12:20 GMT>
        第二次http請求:
            用戶端在第二次請求時就會在報文中加入cookie:
        Cookie: sid=1342077140226724

5.產生HTTP報文之後經過如下的過程:
  一個HTTP報文經過各個層級的處理最後才被傳輸給服務端,下面描述一下各個層級的工作:
      傳輸層:這裡會加上TCP首部,主要包含連接埠號碼, 以及TCP的各種資訊。同時, 他會將HTTP的報文請求分為多個報文段。
      網路層:待發送的資料送到網路層,網路層再進行封裝,這裡麵包含源目的地的ip地址。
      鏈路層:將mac地址、鏈路層資訊加到資料包裡,形成乙太網路首部,在鏈路協議下完成節點間的資料轉送。
  
6.伺服器接收到HTTP請求
    伺服器接收到資料之後,會經過鏈路層,網路層,傳輸層逐層將該層對應的首部資訊去掉,整個過程如所示:
 

 


7. 伺服器根據收到的HTTP資料,產生對應的響應報文,結構如下:
        

 


下面逐一介紹:
    狀態行:由HTTP 版本 狀態代碼 原因短語構成
    響應首部欄位 通用首部欄位 實體首部欄位 都可以查手冊得知其具體內容以及含義這裡不再展開
  
8. 用戶端接收到了響應報文之後,我們以一個html檔案來講述瀏覽器是如何渲染文檔的
    先介紹一些背景知識:    
    瀏覽器通常的主要組件分為以下幾部分:
      1.使用者介面:如地址欄 書籤菜單等等
      2.瀏覽器引擎:在使用者介面和呈現引擎之間傳送之類
      3.呈現引擎:負責顯示請求的內容。例如HTMLhe CSS
      4.JAVAScript解譯器:用於解釋和執行JavaScript 代碼
      5.資料存放區


渲染文檔主要使用呈現引擎。
過程如下:
    1.呈現引擎從網路層擷取請求文檔的內容HTML檔案,內容大小一般在8000個塊以內。
    2.引擎解析HTML文檔 將各個標記轉化為內容樹上的DOM 節點 ,同時解析CSS檔案 樣式資料
    3.樣式資訊和 內容樹共同構建成為 呈現樹
    4.呈現樹構建完畢以後,進入布局階段, 為每一個節點分配一個應該出現在螢幕上的確切座標
    5.呈現引擎遍曆呈現樹 由使用者介面後端層將每個節點繪製出來。

從瀏覽器輸入一個地址到渲染出網頁這個過程發生了什嗎???

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.