以輸入www.baidu.com為例
一、瀏覽器查找域名并解析到對應的IP
1)檢索查找:
- 瀏覽器自己的DNS緩存。
- 操作系統的DNS緩存。
- 路由器緩存。
- ISP DNS 緩存。
2)遞歸搜索:
首先在本地域名服務器中查詢IP地址,如果沒有找到的情況下,本地域名服務器會向根域名服務器發送一個請求,如果根域名服務器也不存在該域名時,本地域名會向com頂級域名服務器發送一個請求,依次類推下去。直到最后本地域名服務器得到baidu的IP地址并把它緩存到本地,供下次查詢使用。
3)至此,瀏覽器已經得到了域名對應的 IP 地址。
二、建立TCP連接,三次握手:
1.主機向服務器發送一個建立連接的請求;
2.服務器接到請求后發送同意連接的信號;
3.主機接到同意連接的信號后,再次向服務器發送了確認信號,自此,主機與服務器兩者建立了連接。
三、瀏覽器給web服務器發送HTTP請求:
瀏覽器根據 URL 內容生成 HTTP 請求,請求中包含請求文件的位置、請求文件的方式等等;
四、服務器響應:
1)服務器接到請求后,會根據 HTTP 請求中的內容來決定如何獲取相應的 HTML 文件;
2)服務器將得到的 HTML 文件發送給瀏覽器;
五、瀏覽器對頁面進行渲染,呈現給用戶:
1)瀏覽器解析html源碼,然后創建DOM樹。
2)瀏覽器解析CSS代碼,計算出最終的樣式數據。
3)構建出DOM樹,并且計算出樣式數據后,進一步構建渲染樹(rendering tree)。
4)一旦渲染樹創建好了,瀏覽器就可以根據渲染樹直接把頁面繪制到屏幕上。