題意分析
當(dāng)我們在web瀏覽器的地址欄中輸入 www.baidu.com 具體發(fā)生了什么?
- 對
www.baidu.com這個網(wǎng)址進行DNS域名解析,得到對應(yīng)的IP地址 - 根據(jù)這個IP,找到對應(yīng)的服務(wù)器,發(fā)起TCP的三次握手
- 建立TCP連接后發(fā)起HTTP請求
- 服務(wù)器響應(yīng)HTTP請求,瀏覽器得到html代碼
- 瀏覽器解析html代碼,并請求html代碼中的資源(如js、css、圖片等)
- 瀏覽器對頁面進行渲染呈現(xiàn)給用戶
- 服務(wù)器關(guān)閉TCP連接
注意:
DNS怎么找到域名的?
DNS域名解析采用的是遞歸查詢的方式,過程是,先去找DNS緩存,緩存找不到就去找根域名服務(wù)器,根域名服務(wù)器又去找下一級,這樣遞歸查找之后,直到找到然后給我們的web瀏覽器為什么HTTP協(xié)議要基于TCP來實現(xiàn)?
TPC是一個端到端的可靠的面向連接的協(xié)議,HTTP基于傳輸層TCP協(xié)議不用擔(dān)心數(shù)據(jù)傳輸過程出錯,出錯后會重傳瀏覽器是如何對頁面進行渲染的?
a、解析html文件構(gòu)成DOM樹
b、解析CSS文件構(gòu)成渲染樹
c、邊解析邊渲染
各個步驟具體細(xì)節(jié)
DNS解析
- 首先會搜索瀏覽器自身的DNS緩存(緩存時間比較短,大概只有1分鐘,且只能容納1000條緩存)
- 如果瀏覽器自身的緩存里沒有找到,那么瀏覽器會搜索系統(tǒng)自身的DNS緩存
- 如果還是沒有找到,那么嘗試從hosts文件里面去找
- 前面三個過程都沒有獲取到的情況下,就遞歸去域名服務(wù)器查找