瀏覽器輸入URL後發生了什麼

參考Java Guide 計算機網絡

1 涉及的網絡知識

1.1 IP地址

IP地址就是給因特網上的每一個主機(或路由器)的每一個接口分配一個在全世界範圍內唯一的32位的標識符

1.2 DNS

DNS 的全稱是 Domain Name System(域名系統,或者常稱爲域名解析系統)。DNS功能是將域名(www.abc.com) 轉化爲IP地址(192.168.1.1)

1.3 TCP

參考自《計算機網絡》謝希仁
傳輸控制協議TCP(Transmission Control Protocol)

  • TCP是面向連接的運輸層協議。就是說,引用在使用TCP協議之前,必須先建立TCP連接
  • 每一條TCP連接只能有兩個端點,每一條TCP只能是點對點的
  • TCP提供可靠交付的服務。通過TCP連接傳送的數據,無差錯、不丟失、不重複、並且按序到達
  • TCP提供全雙工通信。允許通信雙方的引用進程在任何時候都發送數據。
  • 面向字節流。

1.4 APR

將IP地址轉化爲MAC地址(物理地址)

1.5 HTTP

超文本傳輸協議(Hyper Text Transfer Protocol)
HTTP 是一個無狀態的協議。是指客戶端和服務器之間不需要建立持久的連接,這意味着當一個客戶端向服務器端發出請求,然後服務器返回響應(response),連接就隨之被關閉了。

2 執行步驟

執行步驟參考下圖。圖源:JavaGuide
在這裏插入圖片描述

2.1 DNS解析

  • 此時用到DNS協議
  • DNS查找過程:瀏覽器緩存→路由器緩存→DNS緩存

2.2 建立TCP連接

  • 三次握手建立連接(圖源:JavaGuide)

在這裏插入圖片描述

2.3 服務器處理請求(以SpringMVC爲例)

  1. 前端發送請求
  2. DispatcherServlet在HandlerMapping中查找對應的Handler
  3. 返回對應Handler
  4. 向HandlerAdapter發送請求
  5. 執行對應Handler
  6. 返回視圖(ModelAndView)到HandlerAdapter
  7. 返回視圖(ModelAndView)到DispatcherServlet
  8. DispatcherServlet請求視圖解析器去進行視圖解析 (根據邏輯視圖名解析成真正的視圖),通過這種策略很容易更換其他視圖技術,只需要更改視圖解析器即可
  9. ViewResovler向前端控制器返回View
  10. DispatcherServlet進行視圖渲染 (視圖渲染將模型數據(在ModelAndView對象中)填充到request域)
  11. DispatcherServlet向用戶響應結果

在這裏插入圖片描述