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