HTTP請求的整個過程

這是這兩天面試的時候的一道面試題,當時答得不好,現在總結了一下。

一次完整的 http 請求包括一下幾個步驟【這僅是個人的理解】

DNS解析--->TCP 連接--->瀏覽器發送http請求--->服務器響應請求--->瀏覽器解析html文件--->瀏覽器佈局渲染

1.DNS域名解析

     (1) 首先會在瀏覽器DNS緩存中搜索是否有對應的IP映射(並且是有效的),如果找到的話,就調用該映射並且停止解析;如果沒找到的話就執行第二步;

    (2)在操作系統DNS緩存中查找是否有對應的IP,如果有的就停止解析,否則就執行第三步;

    (3)查找本地系統 hosts 文件,在hosts文件中查找是否有對應的IP,如果有的話就停止解析,否則就向本地配置首選的DNS服務器發起域名解析的請求。

2.TCP連接。

       TCP通過三次握手創建連接【保證數據傳輸的可靠性】,具體說一下三次握手的過程(此處就不細說了)。

3.客戶端的瀏覽器向服務器發起http請求。【請求報文包括請求行、請求報頭、空行、正文】在此不再詳述

4.服務器對瀏覽器發過來的請求作以響應。【報文中 包括狀態行、響應頭部、空行、響應正文】在此也不詳述(在這裏常見的狀態碼要記住)

5.瀏覽器對HTML進行解析

       客戶端的瀏覽器收到服務器的響應之後就按照順序一個一個地對HTML文件進行解析,構建DOM樹,當解析到外部資源文件CSS或JS文件時,會對服務器發送請求,下載資源文件,如果下載的是CSS文件,瀏覽器會一邊下載CSS文件,一邊對後面的html文件進行解析,並且構建DOM樹,如果下載的是JS文件,那麼瀏覽器就停止對後面html文件的解析,此時就會出現JS頁面阻塞的問題。

6.瀏覽器佈局進行佈局和渲染。

參考:

HTTP請求報文和響應報文的格式:https://blog.csdn.net/Atalanta1/article/details/89715037

TCP三次握手的過程詳述:https://blog.csdn.net/Atalanta1/article/details/89351281

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章