在瀏覽器中輸入URL后發生的全部過程。(一次完整的http請求過程)


整體流程:

  1. DNS域名解析

  2. 建立TCP連接

  3. 發送HTTP請求

  4. 服務器處理請求

  5. 返回響應結果

  6. 關閉TCP連接

  7. 瀏覽器解析HTML

  8. 瀏覽器布局渲染

使用的協議:

  DNS、TCP、IP、OSPF(IP數據包在路由器中,路由選擇協議)、ARP、HTTP

詳細:

  1. DNS域名解析

    在瀏覽器輸入網址,其實就是要向服務器請求我們想要的頁面內容,所以瀏覽器首先要確認的是域名所對應的服務器在哪里。

    將域名解析成對應的服務器IP地址這項工作,是由DNS服務器來完成的。

    客戶端收到域名地址后,首先去找本地的hosts文件,檢查在該文件中是否有相應的域名、IP對應關系,如果有,則向其IP地址發送請求,如果沒有,再去找DNS服務器。

  2. 建立TCP連接

    三次握手:請求連接(SYN數據包),確認信息(SYN/ACK數據包),握手結束(ACK數據包)

  3. 發起http請求

    與服務器建立了連接后,就可以向服務器發起請求了。

  4. 服務器處理請求

    服務器端收到請求后的由web服務器(准確說應該是http服務器)處理請求。

    web服務器解析用戶請求,知道了需要調度哪些資源文件,再通過相應的這些資源文件處理用戶請求和參數,並調用數據庫信息,最后將結果通過web服務器返回給瀏覽器客戶端。

  5. 返回響應結果

    在http里,有請求就會有響應,哪怕是錯誤信息。

    在響應結果中都會有個一個http狀態碼,如200、301、404、500等。通過這個狀態碼可以知道服務器端的處理是否正常,並能了解具體的錯誤。

  6. 關閉TCP連接

    為了避免服務器與客戶端雙方的資源占用和損耗,當雙方沒有請求或響應傳遞時,任意一方都可以發起關閉請求。四次揮手。

  7. 瀏覽器解析HTML

    瀏覽器需要加載解析的不僅僅是HTML,還包括CSS、JS。以及還要加載圖片、視頻等其他媒體資源。

    瀏覽器通過解析HTML,生成DOM樹,解析CSS,生成CSS規則樹,然后通過DOM樹和CSS規則樹生成渲染樹。

    渲染樹與DOM樹不同,渲染樹中並沒有head、display為none等不必顯示的節點。

  8. 瀏覽器布局渲染

    根據渲染樹布局,計算CSS樣式,即每個節點在頁面中的大小和位置等幾何信息。

    HTML默認是流式布局的,CSS和js會打破這種布局,改變DOM的外觀樣式以及大小和位置。

參考:

  https://segmentfault.com/a/1190000012092552

  https://blog.csdn.net/qq_21993785/article/details/81188253


免責聲明!

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



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