在本文中,我將簡(jiǎn)要介紹“從輸入U(xiǎn)RL到頁(yè)面加載完成”的整個(gè)過(guò)程。作為一名互聯(lián)網(wǎng)從業(yè)者,您應(yīng)該了解自己的立場(chǎng)。
操作過(guò)程非常簡(jiǎn)單:打開(kāi)瀏覽器,在地址欄中輸入www.baidu.com,按Enter鍵,瀏覽網(wǎng)頁(yè)…。
在www.baidu.com上輸入地址欄
當(dāng)您按下www.baidu.com并且瀏覽器收到此消息時(shí),它將觸發(fā)自動(dòng)完成機(jī)制。瀏覽器根據(jù)自己的算法識(shí)別您要訪問(wèn)的URL。
按Enter鍵
此時(shí),Enter鍵的電流環(huán)路被電容器間接關(guān)閉,導(dǎo)致少量電流進(jìn)入鍵盤的主邏輯電路。邏輯系統(tǒng)掃描每個(gè)按鈕的狀態(tài),解析按鈕開(kāi)關(guān)的潛在反彈變化,并將其轉(zhuǎn)換為鍵盤代碼值。鍵盤控制器將在獲得代碼值后進(jìn)行編碼。編碼后,密鑰代碼值將存儲(chǔ)在寄存器中。鍵盤的USB控制器將查詢?cè)撴I碼值,然后將鍵碼值轉(zhuǎn)換為數(shù)據(jù)包。然后,該數(shù)據(jù)包通過(guò)鍵盤傳遞給計(jì)算機(jī),鍵盤對(duì)數(shù)據(jù)包進(jìn)行解碼。最后,將解碼的密鑰代碼值發(fā)送到操作系統(tǒng)的硬件層。
解析URL
瀏覽器通過(guò)URL知道將使用HTTP協(xié)議,以及所請(qǐng)求資源的主頁(yè)。
瀏覽器會(huì)將在地址欄中輸入的文本傳遞給默認(rèn)搜索引擎。將文本傳遞給搜索引擎時(shí),URL將具有特定的字符串,告訴搜索引擎搜索來(lái)自瀏覽器。
Unicode(規(guī)范字符集)編碼轉(zhuǎn)換。如果存在非ASCII字符,請(qǐng)將它們轉(zhuǎn)換為Unicode編碼。
檢查HSTS列表
瀏覽器檢查“HSTS(HTTP嚴(yán)格傳輸安全性)”列表,其中包含指向僅使用HTTPS的網(wǎng)站的鏈接。
DNS查詢和解決方案
瀏覽器檢查域名是否在緩存中。
如果沒(méi)有緩存,請(qǐng)調(diào)用庫(kù)函數(shù)進(jìn)行查詢。庫(kù)函數(shù)在執(zhí)行DNS解析之前檢查域名是否在本地主機(jī)中。
如果域名不在緩存中和主機(jī)中,則庫(kù)函數(shù)將向DNS服務(wù)器發(fā)送DNS查詢請(qǐng)求。
查詢本地DNS服務(wù)器。
首先查詢地址解析協(xié)議(ARP)緩存。如果緩存命中,則返回結(jié)果:目標(biāo)IP=MAC地址。如果緩存未命中,請(qǐng)查看本地路由表中子網(wǎng)中的目標(biāo)IP地址,并使用相關(guān)接口。然后查詢所選網(wǎng)絡(luò)接口的MAC地址。
發(fā)送ARP請(qǐng)求時(shí),路由器或其他硬件將返回結(jié)果(結(jié)果包含默認(rèn)網(wǎng)關(guān)的IP地址)。
相應(yīng)的請(qǐng)求通過(guò)TCP/UDP協(xié)議發(fā)送到DNS服務(wù)器。如果本地DNS服務(wù)器找不到結(jié)果,它將逐層查詢,直到返回結(jié)果(目標(biāo)服務(wù)器的IP地址)。
使用套接字
瀏覽器獲取目標(biāo)服務(wù)器的IP地址,以及URL中給出的端口號(hào)(http默認(rèn)端口號(hào)為端口80),瀏覽器調(diào)用庫(kù)函數(shù)套接字。此請(qǐng)求將被封裝,目標(biāo)端口將添加到標(biāo)頭中。在網(wǎng)絡(luò)層,添加了一個(gè)IP頭,其中包含目標(biāo)服務(wù)器的IP地址和機(jī)器的IP地址。接下來(lái),繼續(xù)封裝,封裝本地內(nèi)置網(wǎng)卡的MAC地址和本地路由器的MAC地址。該包現(xiàn)已準(zhǔn)備就緒。
接下來(lái),包將從本地計(jì)算機(jī)啟動(dòng),通過(guò)本地網(wǎng)絡(luò),然后通過(guò)調(diào)制解調(diào)器將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)。在傳輸線的另一端,另一個(gè)調(diào)制解調(diào)器將模擬信號(hào)轉(zhuǎn)換回?cái)?shù)字信號(hào),以供下一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)處理。最終數(shù)據(jù)包將到達(dá)目標(biāo)服務(wù)器。
在TCP連接(三次握手)期間多次發(fā)送發(fā)送和接收過(guò)程:客戶端將數(shù)據(jù)包發(fā)送到服務(wù)器并建立連接設(shè)置的初始序列號(hào);服務(wù)器接收數(shù)據(jù)包然后相應(yīng)地處理它,并將數(shù)據(jù)包發(fā)送到客戶端。表示收到第一個(gè)數(shù)據(jù)包;客戶端再次發(fā)送數(shù)據(jù)包以確認(rèn)連接。這是建立三次握手的過(guò)程。
TLS握手
客戶端向服務(wù)器發(fā)送相應(yīng)的消息,指示可用的加密算法和壓縮算法。
服務(wù)器向客戶端返回消息,包括TLS版本,以及自身使用的加密算法和壓縮算法。
客戶端驗(yàn)證服務(wù)器發(fā)送的信息是否可用。如果可用,則生成加密的隨機(jī)數(shù)并將其返回給服務(wù)器。
服務(wù)器解密密文并生成自己的主密鑰。
然后加密整個(gè)會(huì)話并傳輸http的內(nèi)容。
HTTP協(xié)議
瀏覽器向服務(wù)器發(fā)送請(qǐng)求頭,請(qǐng)求頭包括:請(qǐng)求數(shù)據(jù)模式,http版本號(hào),域名和其他頭信息。接下來(lái),服務(wù)器返回指示請(qǐng)求狀態(tài)的響應(yīng)代碼。瀏覽器將從其自己的緩存中獲取所需內(nèi)容。在解析HTML之后,瀏覽器將重復(fù)上述過(guò)程,直到獲得HTML頁(yè)面引入的所有資源(圖像,CSS,JS等)。
瀏覽器
當(dāng)服務(wù)器提供資源(HTML,CSS,JS,圖像等)時(shí),瀏覽器將執(zhí)行以下操作:
HTML解析。 HTML解析器的主要工作是解析HTML文檔并解析HTML的內(nèi)容。
CSS解析。分析CSS文件內(nèi)容和屬性值,并將每個(gè)CSS文件解析為樣式表對(duì)象。
頁(yè)面渲染。 DOM樹(shù)是通過(guò)多個(gè)列計(jì)算和渲染的,并且該過(guò)程是測(cè)量排版繪圖頁(yè)面。在渲染過(guò)程中,圖形處理器的渲染過(guò)程使用圖形處理器GPU。
后期渲染
渲染后,瀏覽器運(yùn)行JavaScript代碼(例如動(dòng)畫)或基于時(shí)間機(jī)制與用戶交互。像Flash和Java這樣的插件也會(huì)運(yùn)行,這些腳本可能會(huì)改變頁(yè)面的內(nèi)容和布局,并產(chǎn)生另一輪渲染和渲染。
相關(guān)術(shù)語(yǔ):
Unicode格式。 Unicode是計(jì)算機(jī)科學(xué)領(lǐng)域的行業(yè)標(biāo)準(zhǔn),包括字符集和編碼方案。它為每種語(yǔ)言中的每個(gè)字符設(shè)置統(tǒng)一且唯一的二進(jìn)制編碼,以滿足跨語(yǔ)言和平臺(tái)的文本轉(zhuǎn)換和處理的要求。
HSTS。 HTTP嚴(yán)格傳輸安全,Internet工程組織IETF正在實(shí)施新的Web安全協(xié)議。它的作用是強(qiáng)制客戶端(例如瀏覽器)使用HTTPS來(lái)創(chuàng)建與服務(wù)器的連接。
DNS服務(wù)器。域名服務(wù)器,域名服務(wù)器。它是執(zhí)行域名轉(zhuǎn)換和相應(yīng)IP地址轉(zhuǎn)換的服務(wù)器。
主機(jī)。主機(jī)是沒(méi)有擴(kuò)展名的系統(tǒng)文件。它可以使用記事本等工具打開(kāi)。其功能是在一些常用的URL域名與其對(duì)應(yīng)的IP地址之間建立關(guān)系。 “數(shù)據(jù)庫(kù)”,當(dāng)用戶在瀏覽器中輸入需求時(shí)。登錄URL時(shí),系統(tǒng)將自動(dòng)從Hosts文件中找到相應(yīng)的IP地址。一旦找到,系統(tǒng)將立即打開(kāi)相應(yīng)的網(wǎng)頁(yè)。如果未找到,系統(tǒng)將提交URL到DNS域名解析服務(wù)器以進(jìn)行IP地址解析。
ARP。地址解析協(xié)議。它是一種TCP/IP協(xié)議,它根據(jù)IP地址獲取物理地址。
MAC地址。它被稱為物理地址和硬件地址,用于定義網(wǎng)絡(luò)設(shè)備的位置。
插座。源IP地址和目標(biāo)IP地址以及源端口號(hào)和目標(biāo)端口號(hào)的組合稱為套接字。用于標(biāo)識(shí)客戶端請(qǐng)求的服務(wù)器。通常使用套接字函數(shù)創(chuàng)建。
TLS。安全傳輸層協(xié)議,用于在兩個(gè)通信應(yīng)用程序之間提供機(jī)密性和數(shù)據(jù)完整性。
此時(shí),從輸入U(xiǎn)RL到頁(yè)面加載的完整過(guò)程已完成。你學(xué)會(huì)了嗎?
作者:轉(zhuǎn)瞬即逝,互聯(lián)網(wǎng)產(chǎn)品設(shè)計(jì)師,4年互聯(lián)網(wǎng)產(chǎn)品經(jīng)驗(yàn)。
本文最初由@流年發(fā)表。未經(jīng)許可,禁止復(fù)制。
該地圖由作者提供