(四)從輸入URL到頁面加載發生了什麽
阿新 • • 發佈:2018-11-06
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到頁面加載發生了什麽