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