瀏覽器輸入URL到返回頁面的整個過程

自己總結分析。

 

1.根據域名,進行DNS域名解析,獲得IP地址。

2.根據IP地址,建立TCP連接

3.建立TCP連接後,向IP地址發送http請求

4服務端處理請求

5服務端返回響應結果

6 關閉TCP連接

7瀏覽器解析HTML

8瀏覽器渲染數據展示

 

Q1:現代瀏覽器在與服務器建立了一個 TCP 連接後是否會在一個 HTTP 請求完成後斷開?什麼情況下會斷開?

這個問題實則實在問HTTP/1.0 與HTTP/1.1的區別。再http/1.0中,服務器再發送玩一個HTTP響應後,會斷開TCP連接,但是

這樣每次請求都會重新建立和斷開TCP連接,代價過大。某些服務器對 Connection: keep-alive 的 Header 進行了支持。就是完成一個http請求後,不斷開tcp連接,這樣之後發送請求的就不需要重新建立連接,以及如果維持連接,ssl的開銷也會避免。HTTP/1.1就把connection頭寫進標準,並默認開啓持久連接,keep-live,除非請求中寫明connection:close。

Q2:一個 TCP 連接可以對應幾個 HTTP 請求?

在第一個問題的基礎上,如果維持連接的狀態下,可以處理多個請求。

Q3:一個 TCP 連接中 HTTP 請求發送可以一起發送麼(比如一起發三個請求,再三個響應一起接收)?

HTTP/1.1存在pipelining技術可以完成這個多個請求同時發送,但是由於瀏覽器默認關閉,所以可以認爲這是不可以的。

在 HTTP2 中由於 Multiplexing 特點的存在,多個 HTTP 請求可以在同一個 TCP 連接中並行進行。

 

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