瀏覽器中輸入www.jd.com之後都發生了什麼?

最近碰到了以上的問題,記錄一波。

  當瀏覽器中輸入www.jd.com之後,瀏覽器經歷如下步驟:

1 瀏覽器查找該域名的 IP 地址

瀏覽器緩存 首先是查找瀏覽器緩存,瀏覽器會緩存DNS記錄一段時間,不同瀏覽器保存的時常不等(2分鐘到30分鐘不等)。

系統緩存 如果在瀏覽器緩存裏沒有找到需要的記錄,瀏覽器會做一個系統調用來查找這個網址的對應DNS信息。

路由器緩存 如果在系統緩存裏沒有找到找到對應的IP,請求會發向路由器,它一般會有自己的DNS緩存。

ISP DNS服務器 如果在路由器緩存裏還是沒有對應的IP,請求會被髮送到ISP。

根域名服務器 如果還是沒有,請求將發向根域名服務器進行搜索。找不到就說明此域名不存在。

2 瀏覽器根據解析得到的IP地址向web服務器發送一個HTTP請求

   請求需要進行編碼,生成一個HTTP數據包,依次打上TCP、IP、以太網協議的頭部。其中TCP頭部主要信息是本機端口和目標端口號等信息,用於標識同一個主機的不同進程,對於HTTP協議,服務器端的默認端口號是80,本機瀏覽器的話生成一個1024到65535之間的端口號。IP頭部主要包含本地IP和目標IP等信息。以太網協議頭部主要是雙方的MAC地址,目標MAC可以由第一條所訴方法得到。以太網數據包的數據部分,最大長度爲1500字節,所以如果IP包太大的話還要拆包,比如IP包5000字節,要分爲4包,每一包都包含一個IP頭部。

3 服務器收到請求並進行處理

  負載均衡 網站可能會有負載均衡設備來平均分配所有用戶的請求。負載均衡,即對工作任務進行平衡,分攤到多個操作單元上執行,如圖片服務器,應用服務器。可分爲鏈路負載均衡,集羣負載均衡,操作系統負載均衡 。集羣負載均衡又分爲硬件負載均衡和軟件負載均衡。
  CDN 請求的數據可能存儲在分佈式緩存、靜態文件或者數據庫中。如果請求的數據是靜態文件,如果在CDN上,那麼CDN服務器又會處理這個用戶的請求。如果在數據庫中需要向數據庫發起查詢請求。

4 服務器返回一個響應

  過程 服務器返回一個 HTTP 響應,如果返回狀態碼304,瀏覽器可以直接使用之前緩存的資源。對於內容響應,瀏覽器需要進行響應解碼,渲染顯示。

5 瀏覽器對該響應進行解碼,渲染顯示

  在瀏覽器沒有完整接受全部HTML文檔時,它就已經開始顯示這個頁面了,如果是個靜態的頁面,拿到此就基本結束了。如果是是動態的,那麼在瀏覽器顯示HTML時,會獲取嵌入在HTML中的對象,瀏覽器會發送獲取請求來重新獲得這些文件。這些請求都要經歷一個和HTML讀取類似的過程。
  對於靜態的頁面內容,瀏覽器通常會進行緩存,而對於動態的內容,瀏覽器通常不會進行緩存。

6 頁面顯示完成後,瀏覽器發送異步請求

  頁面顯示完成後客戶端仍與服務器端保持着聯繫。它會持續與服務器保持聯繫來及時更新一些頁面信息。在瀏覽器中執行的 JavaScript代碼會給服務器發送異步請求。這個異步請求發送給特定的地址,它是一個按照程式構造的獲取或發送請求。

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