接下來(lái)封裝包會(huì)從本地計(jì)算機(jī)出發(fā),經(jīng)過(guò)本地網(wǎng)絡(luò),再通過(guò)調(diào)制解調(diào)器把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。在傳輸線(xiàn)路的另一端,另一個(gè)調(diào)制解調(diào)器把模擬信號(hào)轉(zhuǎn)換回?cái)?shù)字信號(hào),交由下一網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行處理,最終封包會(huì)到達(dá)目標(biāo)服務(wù)器。
接下來(lái)封裝包會(huì)從本地計(jì)算機(jī)出發(fā),經(jīng)過(guò)本地網(wǎng)絡(luò),再通過(guò)調(diào)制解調(diào)器把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。在傳輸線(xiàn)路的另一端,另一個(gè)調(diào)制解調(diào)器把模擬信號(hào)轉(zhuǎn)換回?cái)?shù)字信號(hào),交由下一網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行處理,最終封包會(huì)到達(dá)目標(biāo)服務(wù)器。
發(fā)送和接收的過(guò)程在TCP連接期間會(huì)發(fā)送很多次(三次握手):客戶(hù)端將封包發(fā)送給服務(wù)端,并建立連接設(shè)置初始的序列號(hào);服務(wù)端收到封包后做相應(yīng)處理,并且向客戶(hù)端表明自己接受到了第一個(gè)封包;客戶(hù)端再次發(fā)送一個(gè)封包來(lái)確認(rèn)這次連接。這就是建立連接三次握手的過(guò)程。
TLS握手
客戶(hù)端發(fā)送相應(yīng)消息給服務(wù)端,表明可用的加密算法以及壓縮算法。
服務(wù)端返回給客戶(hù)端一個(gè)消息,包含了TLS版本,以及自己使用的加密算法和壓縮算法等。
客戶(hù)端驗(yàn)證服務(wù)端發(fā)送的信息是否可用,如果可用,就生成一段加密的隨機(jī)數(shù)返給服務(wù)端。
服務(wù)端對(duì)這段密文進(jìn)行解密,并生成自己的主密鑰。
接下來(lái)整個(gè)會(huì)話(huà)會(huì)進(jìn)行加密,傳輸
http的內(nèi)容。
HTTP協(xié)議
瀏覽器向服務(wù)器發(fā)送請(qǐng)求頭,請(qǐng)求頭內(nèi)容包括:請(qǐng)求數(shù)據(jù)方式,http版本號(hào),
域名等頭部信息。接下來(lái),服務(wù)器端返回一個(gè)響應(yīng)碼,表明這次請(qǐng)求的狀態(tài)。瀏覽器會(huì)從自己的緩存中取出想要的內(nèi)容,在解析完 HTML 之后,瀏覽器會(huì)重復(fù)上面的過(guò)程,直到HTML頁(yè)面引入的所有資源(圖片,CSS,JS等等)全部都獲取完畢。
瀏覽器
當(dāng)服務(wù)器提供了資源之后(HTML,CSS,JS,圖片等),瀏覽器會(huì)執(zhí)行下面的操作:
HTML解析。HTML解析器的主要工作是對(duì)HTML文檔進(jìn)行解析,解析出HTML的內(nèi)容。
CSS解析。分析CSS文件內(nèi)容以及屬性值,將每個(gè)CSS文件都被解析成一個(gè)樣式表對(duì)象。
頁(yè)面渲染。通過(guò)一些列計(jì)算并呈現(xiàn)DOM樹(shù),過(guò)程就是測(cè)量-排版-繪制頁(yè)面。在渲染過(guò)程中,對(duì)圖形的渲染處理會(huì)使用圖形處理器GPU。
后期渲染
渲染結(jié)束后,瀏覽器根據(jù)時(shí)間機(jī)制運(yùn)行JavaScript代碼(比如動(dòng)畫(huà))或與用戶(hù)交互。類(lèi)似Flash和Java的插件也會(huì)運(yùn)行,這些
腳本也可能改變網(wǎng)頁(yè)的內(nèi)容和布局,并產(chǎn)生又一輪渲染與繪制。
以上就是
網(wǎng)站頁(yè)面從輸入 URL 到頁(yè)面加載的全部過(guò)程。