瀏覽器從輸入URL到展示頁面,經(jīng)歷了哪些過程?
瀏覽器根據(jù)輸入的URL通過HTTP或者HTTPS協(xié)議發(fā)起對遠(yuǎn)端Web服務(wù)器的請求,Web服務(wù)器返回對應(yīng)請求的數(shù)據(jù)給瀏覽器,然后瀏覽器將數(shù)據(jù)解釋渲染并最終展示給用戶。整個過程涉及到網(wǎng)絡(luò)中各種協(xié)議的交互以及各種設(shè)備對報文的轉(zhuǎn)發(fā),主要流程有:
圖片
1、瀏覽器進(jìn)行URL解析和生成HTTP請求
瀏覽器首先對URL進(jìn)行解析,確定要訪問的Web服務(wù)器和文件名,然后生成要發(fā)送給Web服務(wù)器的請求信息。當(dāng)然,在生成HTTP請求之前,瀏覽器還會查看本地緩存是否已經(jīng)緩存有要請求的資源,如果有,就直接返回緩存資源顯示出來。如果沒有,才會繼續(xù)進(jìn)行后面的請求流程。
圖片
圖片
圖片
圖片
圖片
2、生成TCP報文段,準(zhǔn)備發(fā)起TCP連接
HTTP是基于TCP 協(xié)議傳輸?shù)模谧鐾陸?yīng)用層HTTP請求的準(zhǔn)備后,客戶端主機(jī)開始進(jìn)行TCP報文段頭部的封裝。
圖片
圖片
3、DNS解析域名得到服務(wù)器的IP地址
傳輸層TCP報文段組裝好后,開始進(jìn)入網(wǎng)絡(luò)層進(jìn)行IP數(shù)據(jù)報的組裝,但是URL中請求服務(wù)器資源使用的是域名,而網(wǎng)絡(luò)中標(biāo)識服務(wù)器位置使用的是IP地址,所以先要通過DNS域名解析協(xié)議進(jìn)行域名解析,先獲取到服務(wù)器域名對應(yīng)的IP地址。
圖片
DNS進(jìn)行域名解析的過程是,先查瀏覽器DNS緩存,再查hosts主機(jī)文件,最后查DNS服務(wù)器,由于DNS服務(wù)器采用的是層級結(jié)構(gòu),所以DNS查詢采用的是遞歸迭代查詢。
圖片
圖片
圖片
4、IP路由尋址和生成IP數(shù)據(jù)報
傳輸層TCP處理完后,開始進(jìn)行網(wǎng)絡(luò)層IP數(shù)據(jù)報的處理。特別是對于多網(wǎng)卡客戶端主機(jī),訪問服務(wù)器的IP數(shù)據(jù)報需要確定從哪個網(wǎng)卡發(fā)出去,所以需要進(jìn)行路由尋址查找路由表確定報文發(fā)出去的網(wǎng)口,從而確定IP數(shù)據(jù)報的源IP地址。
圖片
圖片
圖片
5、ARP請求下一跳網(wǎng)關(guān)MAC地址
IP數(shù)據(jù)報組裝完成之后,需要進(jìn)行以太網(wǎng)幀的封裝,以太網(wǎng)幀頭的源MAC就是報文發(fā)出網(wǎng)卡的MAC,而目的MAC就是路由表中指定的下一跳網(wǎng)關(guān)IP對應(yīng)的MAC,這時候需要通過ARP地址解析協(xié)議來請求獲取下一跳網(wǎng)關(guān)的MAC的地址,從而確定以太網(wǎng)幀頭的目的MAC。
圖片
圖片
圖片
6、報文經(jīng)過網(wǎng)絡(luò)發(fā)往WEB服務(wù)器
經(jīng)過前面的各種處理,請求報文已經(jīng)組裝完成,現(xiàn)在可以從客戶端主機(jī)網(wǎng)卡發(fā)送出去了,整個網(wǎng)絡(luò)是經(jīng)過大量的交換機(jī)和路由器互聯(lián)的,報文會經(jīng)過這些設(shè)備的轉(zhuǎn)發(fā)最終到達(dá)Web服務(wù)器。
圖片
圖片
圖片
7、服務(wù)器返回響應(yīng)報文
服務(wù)器收到請求報文后,首先檢查報文的目的MAC是否是自己網(wǎng)卡的MAC,目的IP是否是自己網(wǎng)卡的IP,然后查看傳輸層TCP協(xié)議的端口,確認(rèn)是Web服務(wù)進(jìn)程監(jiān)聽的端口,所以將請求報文交給Web服務(wù)進(jìn)程進(jìn)行處理。Web服務(wù)進(jìn)程將請求的網(wǎng)頁內(nèi)容封裝成響應(yīng)報文,然后通過網(wǎng)卡發(fā)出去,響應(yīng)報文經(jīng)過網(wǎng)絡(luò)中的交換機(jī)和路由器轉(zhuǎn)發(fā)到達(dá)客戶端主機(jī),并最終通過客戶端主機(jī)的瀏覽器將響應(yīng)報文中的網(wǎng)頁內(nèi)容渲染展示出來。
圖片
圖片
整體上看,瀏覽器輸入URL到展示網(wǎng)頁內(nèi)容,需要經(jīng)過瀏覽器解析URL、DNS解析域名IP地址、查找路由表確定出口網(wǎng)卡和源IP地址、ARP地址解析獲取主機(jī)網(wǎng)關(guān)下一跳的MAC地址、TCP連接建立以及交換機(jī)路由器等網(wǎng)絡(luò)中間設(shè)備對報文的轉(zhuǎn)發(fā)這些過程。
圖片
圖片
編程十萬問,每天一問。關(guān)注我,每天學(xué)習(xí)一個編程小知識。





























