瀏覽器解析Url
目錄
1.解析Url
- 瀏覽器解析Url,生成發送給Web服務器的請求訊息
- http:Url開頭表示訪問數據的協議
- //:後面的字符串表示服務器名稱
- /目錄名/..../文件名:表述數據源文件路徑名(Url實際上是請求服務器裡的文件資源)
- 生成http請求信息

至此瀏覽器已經解析Url並且生成HTTP消息
2.真實地址查詢-DNS
- 委託操作系統發送請求前,需要先通過DNS服務器1查詢服務器域名對應的IP地址,才能知道通信對象地址
- DNS域名:句點區隔,越右邊層級越高
- 最後一個.:根 DNS 服务器
- .com:顶级域 DNS 服务器
- server.com:权威 DNS 服务器
-
根域的 DNS 伺服器資訊儲存在所有 DNS 伺服器中,所以只要客戶端能連到任何一台 DNS 伺服器,就能一步步查詢到根域,再找到目標的下層 DNS 伺服器
-
域名解析流程 - 只指路不带路
- 瀏覽器先檢查自身緩存,或無則操作系統查詢hosts文件
- 客戶端發出 DNS 請求,詢問 www.server.com 的 IP,請求會送到本地 DNS 伺服器
- 如果本地 DNS 有緩存,就直接回傳 IP;沒有的話,它會去問根 DNS 如何查詢其 IP
- 根 DNS 回答這個 IP 屬於 .com,指路去找 .com 的頂級域名伺服器
- 本地 DNS 再問 .com 的伺服器是否知道 server.com 的 IP
- .com 的伺服器放回 server.com 的權威 DNS 地址
- 本地 DNS 再轉問權威 DNS www.server.com 的 IP 是什麼
- 權威 DNS 查詢後,回傳對應的 IP 給本地 DNS
- 本地 DNS 把 IP 傳回給客戶端,客戶端再去跟目標伺服器建立連線
協議棧
- 前一步已經通過DNS拿到IP,下一步即可把HTTP的傳輸工作交給操作系統的協議棧
- 整體分為:
- 應用程序(瀏覽器) - 調用socket庫
- 操作系統(協議棧)
- 上半部為TCP/UDP,會接受應用層的委託執行收發資料的操作
- 下半部是IP,在互聯網上傳資料時,資料會被切分成一塊區塊的網路包,而將網路包傳送給對方的操作就是由 IP 負責的
- ICMP:告知網絡包傳送過程中產生的錯誤以及各種控制信息
- ARP:根據IP地址查詢相應以太網的MAC地址
- 驅動程序
- 硬件
3.建立TCP連線(含TLS)
- 一旦拿到 IP:
- 若是 http,會用 TCP 建立連線(預設埠號 80)
- 若是 https,則會在 TCP 上建立 TLS(加密)連線(預設埠號 443)
- 三次握手,確保雙方連線成功。
4.送出HTTP請求
- 連線成功後,瀏覽器會送出一個 HTTP 請求
- 如果有 cookie、referer、user-agent 等資訊,也會一起送出
5.伺服器回應
- 伺服器收到請求後會回傳:
- 狀態碼(如 200、404)
- 回應頭(headers)
- 回應內容(HTML、JSON、圖片等)
6.瀏覽器解析回應
- 瀏覽器開始處理回應內容(通常是 HTML):
- 先建立 DOM 樹
- 同時載入 CSS(形成 CSSOM)
- 解析 JavaScript、執行
- 合成 render tree、計算 layout、開始繪製
7.頁面渲染
- 當瀏覽器把 HTML、CSS、JavaScript 都處理好,就會把畫面渲染到螢幕上
Footnotes
-
專門保存Web服務器域名與IP的對應關係 ↩