過程概述瀏覽器
瀏覽器查找域名對應的 IP 地址;緩存
瀏覽器根據 IP 地址與服務器創建 socket 鏈接;服務器
瀏覽器與服務器通訊: 瀏覽器請求,服務器處理請求;socket
瀏覽器與服務器斷開鏈接。tcp
訪問服務器須要先知道服務器的ip地址,因此第一步是經過 DNS 把域名解析成一個 IP 地址, DNS 具體的查找過程:(瀏覽器緩存->系統緩存->路由器緩存)佈局
主機向服務器發送一個創建鏈接的請求;操作系統
服務器接到請求後發送贊成鏈接的信號;圖片
主機接到贊成鏈接的信號後,再次向服務器發送了確認信號 ;ip
⚠️注意:這裏的三次握手中主機兩次向服務器發送確認,第二次是爲了防止已失效的鏈接請求報文段傳至服務器致使錯誤。路由
瀏覽器根據 URL 內容生成 HTTP 請求,請求中包含請求文件的位置、請求文件的方式等等;
服務器接到請求後,會根據 HTTP 請求中的內容來決定如何獲取相應的 HTML 文件;
服務器將獲得的 HTML 文件發送給瀏覽器;
在瀏覽器尚未徹底接收 HTML 文件時便開始渲染、顯示網頁;
在執行 HTML 中代碼時,根據須要,瀏覽器會繼續請求圖片、CSS、JavsScript等文件,過程同請求 HTML ;
HTML代碼轉化爲DOM(DOM Tree)
CSS代碼轉化成CSSOM(CSS Object Model)
結合DOM和CSSOM,生成一棵渲染樹(包含每一個節點的視覺信息)(Render Tree)
生成佈局(layout),即將全部渲染樹的全部節點進行平面合成
佈局繪製(paint)在屏幕上
主機向服務器發送一個斷開鏈接的請求;
服務器接到請求後發送確認收到請求的信號;(此時服務器可能還有數據要發送至主機)
服務器向主機發送斷開通知;(此時服務器確認沒有要向主機發送的數據)
主機接到斷開通知後斷開鏈接並反饋一個確認信號,服務器收到確認信號後斷開鏈接;