參考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連接
2.3 服務器處理請求(以SpringMVC爲例)
- 前端發送請求
- DispatcherServlet在HandlerMapping中查找對應的Handler
- 返回對應Handler
- 向HandlerAdapter發送請求
- 執行對應Handler
- 返回視圖(ModelAndView)到HandlerAdapter
- 返回視圖(ModelAndView)到DispatcherServlet
- DispatcherServlet請求視圖解析器去進行視圖解析 (根據邏輯視圖名解析成真正的視圖),通過這種策略很容易更換其他視圖技術,只需要更改視圖解析器即可
- ViewResovler向前端控制器返回View
- DispatcherServlet進行視圖渲染 (視圖渲染將模型數據(在ModelAndView對象中)填充到request域)
- DispatcherServlet向用戶響應結果