當在瀏覽器地址欄輸入網址,如:www.baidu.com後瀏覽器是怎麼把最終的頁面呈現出來的呢?這個過程可以大致分爲兩個部分:網絡通信和頁面渲染。
如果嚴謹一點則還有一層物理層進行字節流的傳遞。
1. 在瀏覽器中輸入url
用戶輸入url,例如http://www.baidu.com。其中http爲協議,www.baidu.com爲網絡地址,及指出需要的資源在那臺計算機上。一般網絡地址可以爲域名或IP地址,此處爲域名。使用域名是爲了方便記憶,但是爲了讓計算機理解這個地址還需要把它解析爲IP地址。
用戶輸入url,例如http://www.baidu.com。其中http爲協議,www.baidu.com爲網絡地址,及指出需要的資源在那臺計算機上。一般網絡地址可以爲域名或IP地址,此處爲域名。使用域名是爲了方便記憶,但是爲了讓計算機理解這個地址還需要把它解析爲IP地址
2.應用層DNS解析域名
客戶端先檢查本地瀏覽器緩存或者路由器緩存中是否有對應的IP地址,若找到則返回響應的IP地址。
若沒找到則請求DNS服務器獲取IP地址。
3.應用層客戶端發送HTTP請求
發送HTTP請求,將請求的數據信息發到對應IP的服務器中。
4.傳輸層TCP傳輸報文
通過TCP協議將傳輸的數據分成多個數據包,病通過三次握手建立客戶端和服務端的連接狀態進行傳輸數據。
5.網絡層IP協議查詢MAC地址
IP協議的作用是把TCP分割好的各種數據包傳送給接收方。而要保證確實能傳到接收方還需要接收方的MAC地址,也就是物理地址。IP地址和MAC地址是一一對應的關係,一個網絡設備的IP地址可以更換,但是MAC地址一般是固定不變的。ARP協議可以將IP地址解析成對應的MAC地址。當通信的雙方不在同一個局域網時,需要多次中轉才能到達最終的目標,在中轉的過程中需要通過下一個中轉站的MAC地址來搜索下一個中轉目標。(通過IP協議和ARP協議找到服務器IP對應的MAC物理地址)
6.數據到達數據鏈路層
在找到對方的MAC地址後,就將數據發送到數據鏈路層傳輸。
7.數據轉成字節流在物理層中傳輸到服務器的物理層。
數據鏈路層的數據通過物理層傳到服務器的物理層。
8.服務器接收數據
服務器的物理層接受到數據後,自下而上進行數據的傳遞,數據經過TCP的數據包重組成HTTP報文傳到服務器程序中。
9.服務器進行處理
服務器接受到HTTP請求後對其數據進行邏輯處理和存儲,並將需要返回的數據封裝在HTTP報文中通過同樣的網絡通信方式返回給客戶端。
10. 客戶端收到返回報文進行解析和顯示
客戶端收到了服務器發回的HTTP報文,對報文進行解析,將解析的結果渲染到客戶端的瀏覽器中。