1. 程式人生 > >輸入一條url後,發生了什麽??

輸入一條url後,發生了什麽??

line 客戶 完成 get hosts 信息 mac urn 響應狀態

(1)瀏覽器解析

(2)查詢緩存

(3)DNS查詢

順序如下,若其中一步成功直接進去建立連接部分:

-- 瀏覽器自身DNS

-- 操作系統DNS

-- 本地hosts文件

-- 像域名服務器發送請求

(4)建立連接

-- TCP三次握手(three-way handshaking)

-- 發送方: SYN(synchonize)

-- 接受方: SYN/ACK(acknowledgement), 確認信息傳達

-- 發送方: ACK - 確認接受方再線可收消息,握手結束

Accept

-- 1, 發送端: 標有SYN的數據包發給你了

-- 2, 接收端: 明白了! 我收到你給我發的數據包了! (並發送標有SYN/ACK的數據包了)

-- 3, 明白! (發送標有ACK的數據包)

TCP三次握手的好處在於,發送方可以確認接受方仍然在線,不會因為白發送而浪費資源.

(5) 發送HTTP請求

-- 報文首部(GET/index.html HTTP/1.1)

-- 方法

-- URL

-- HTTP版本

-- 空行

-- 報文主體

註意: 1,HTTP是無連接, 無狀態的,即HTTP再傳輸完成後就會斷開,並且下一次登陸時不會記錄上次的登陸狀態

2,關於CR(Carriage Return, 回車)和LF(Line Feed, 換行)

Dos和Windows采用的CR/LF表示下一行
UNIX/Linux采用LF表示下一行
MAC OS系統采用CR表示下一行

(6)服務器發送響應

-- 報文首部(HTTP/1.1 200 ok)

-- HTTP版本

-- 響應狀態碼

-- 狀態碼信息

-- 空行(CR+LF)

-- 報文主體

(7)客戶端收到頁面

(8)解析HTML

-- 構建DOM樹

-- 下載資源

-- CSS - 構建CSSSOM樹

-- js - 等下載並執行後解析

(9)構建渲染樹

根據DOM和CSSSOM樹渲染,不可見元素不被會渲染

(10)瀏覽器布局渲染

-- 布局- 根據渲染書布局

-- 繪制 - 在屏幕上繪制每個點

輸入一條url後,發生了什麽??