<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*從一個url地址到最終頁面渲染完成發生了什么?
* 1.DNS解析,將域名解析為ip地址
* --瀏覽器DNS解析
* --系統DNS解析
* --路由DNS解析
* --網絡運營商DNS解析
* --遞歸搜索,blog.baidu.com
2.TCP連接,TCP三次握手
-------第一次握手:由瀏覽器發起,告訴服務器我要發送請求了
-------第二次握手:由服務器發起,告訴瀏覽器我要准備接收了,你發吧
-------第三次握手:由瀏覽器發起,告訴服務器,我要發了,准備接收吧
3.發送請求
---請求報文,HTTP協議的通信內容
4.接收響應
----響應報文
5.渲染頁面
-----遇見HTML標記,瀏覽器調用HTML解析器解析成Token並創建成dom樹;
-----遇見style/link標記,瀏覽器會調用css解析器,處理css標記並創建css樹;
-----遇見script標記,調用javascript解析器,處理script代碼(綁定事件,修改dom樹/css樹);
-----將dom樹和css樹合並成一個渲染樹
-----根據渲染書來計算布局,計算每個節點的幾何信息;
-----將各個節點顏色繪制到屏幕上(渲染)
注意:
這五個步驟不一定是順序執行的,如果dom樹或css樹被修改了,可能會執行多次布局和渲染。
往往實際頁面中,這些步驟會執行多次;
6.斷開連接,TCP四次揮手
第一次揮手:有瀏覽器發起的,發送給服務器,我東西發送完了(請求報文),你准備關閉吧;
第一次揮手:有服務器發起的,發送給瀏覽器,我東西接收完了(請求報文),我准備關閉吧,你也准備吧;
第一次揮手:有服務器發起的,發送給瀏覽器,我東西發送完了(響應報文),你准備關閉吧;
第一次揮手:有瀏覽器發起的,發送給服務器,我東西發送完了(響應報文),我准備關閉吧,你也准備吧;
*
* */
</script>
</head>
<body>
</body>
</html>