1. 程式人生 > >(四)從輸入URL到頁面加載發生了什麽

(四)從輸入URL到頁面加載發生了什麽

ima tcp連接 ajax請求 java 遞歸 路徑 local 準備 頁面加載

一、從輸入URL到頁面加載發生了什麽

1、在瀏覽器中輸入URL

如:https://www.cnblogs.com/loveapple/

URL分成協議、地址、路徑三部分

  • 協議:http、https、ftp
  • 地址:www.cnblogs.com、localhost:4000
  • 路徑:/loveapple/

2、通過DNS解析獲得對應的IP地址

DNS作用:將域名轉化成IP,域名是方面我們記憶的,但是網絡上的資源最終是要通過ip取獲得的。

DNS查找過程:

  • 瀏覽器緩存——瀏覽器會緩存DNS記錄一段時間(2分鐘到30分鐘),你可以在chrome瀏覽器輸入chrome://net-internals/#dns.可看到目前瀏覽器緩存了哪些ip
  • 系統緩存——如何瀏覽器緩存中沒有,瀏覽器會做一個系統系統調用,查找系統緩存中的記錄,常見的hosts文件
  • 路由緩存——如果系統緩存也沒有需要的記錄,會向本地路由器發送一條DNS查詢請求,一般會有自己的dns緩存
  • ISP DNS緩存——如果本地路由器沒有再查看本地網絡提供商(移動啦、電信啦)的DNS服務器,一般都能找到相應的緩存記錄
  • 遞歸查找——DNS服務器從根域名開始進行遞歸查找,從.com頂級域名服務器到facebook的域名服務器

3、瀏覽器向服務器發送一個HTTP請求

  • 首先通過三次握手建立TCP連接,
  • 瀏覽器通過TCP連接向服務器發送一個http請求

4、服務器發出重定向響應

  • facebook.com→www.facebook.com
  • 目的是提高搜索引擎www.facebook.com的權重,使www.facebook.com排名靠前

5、跟隨重定向

  • 瀏覽器發起新的請求——www.facebook.com

6、服務器開始處理請求並返回響應

  • 響應:html、json、gzip

7、服務器返回HTML響應

  • gzip常表現為亂碼,經過瀏覽器解壓後可看到正常的html

8、瀏覽器開始渲染HTML

9、瀏覽器發送請求去獲取HTML中的一些內嵌對象

  • 內嵌對象,頁面資源中可見
  • 帶src的如js文件,img文件
  • 不帶src的如css文件

10、瀏覽器發送異步的ajax請求

  • 局部刷新

二、擴展知識

1、靜態頁面和動態頁面的區別

技術分享圖片

2、簡述TCP三次握手建立連接的過程

第一次握手:客戶端對服務器說:“服務器哥哥,我想跟你說說話!(SYN聯機請求)”

第二次握手:服務器對客戶端說:“我知道了(ACK確認),我這邊已經準備好了,你準備好了嗎?(SYN聯機請求)”

第三次握手:客戶端對服務器說:“好的(ACK確認),咱們開始說話吧”

3、簡述TCP四次揮手斷開連接的過程

第一次揮手:客戶端對服務器說:“我說完了(FIN結束請求)”

第二次揮手:服務器說:“我知道你說完了(ACK確認),我再給你說兩句,&*……%¥”。

第三次揮手:服務器說完了,告訴客戶端:“我說完了,咱們斷了吧(FIN結束請求)”

第四次揮手:客戶端說:“好的(ACK確認)”並禮貌地等服務端掛斷電話後才掛電話(確保自己最後說的話服務器聽到了)

4、AJAX

AJAX=異步JavaScript和xml

通過在後臺與服務器進行少量數據交互,是網頁實現異步更新。

(四)從輸入URL到頁面加載發生了什麽