以瀏覽www.google.com為例,瀏覽器需先找到www.google.com對應的ip地址,才能得到網頁資料,顯示在瀏覽器中。
那要如何才能找到ip呢? 這邊就要提到DNS(Domain Name System),他是一個資料庫,裡面紀錄了域名跟IP的對應,瀏覽器透過DNS可以找到IP。
查找ip地址的動作則稱為域名解析,查找步驟如下:
1. 查找瀏覽器緩存
瀏覽器曾經到訪過的網站,會緩存DNS記錄一段時間。
若有找到則結束,沒找到則進行下一步查找。
2. 查找作業系統緩存
從作業系統中的 hosts 檔案查找有沒有紀錄對應的ip。
若有找到則結束,沒找到則進行下一步查找。
windows 10 在這個位置:
裡面內容類似這樣:
3. 查找路由器緩存
路由器也會緩存DNS記錄。
若有找到則結束,沒找到則進行下一步查找。
4. 查找 ISP DNS 緩存
向網際網路服務供應商 (Internet Service Provider, ISP),如中華電信, 查找有沒有DNS記錄。
若有找到則結束,沒找到則進行下一步查找。
5. 查找根域名伺服器(root name server)
ISP DNS會向根域名伺服器進行查詢。
(1) ISP DNS向根域名伺服器詢問.com域名的IP。
(2) ISP DNS向.com域名伺服器詢問.google域名的IP。
(3) ISP DNS向.google域名伺服器詢問www域名的IP。
(4) ISP DNS將最終查到的www.google.com對應IP記錄在緩存中。
(5) 告訴瀏覽器www.google.com ip位址。
查到ip地址後,瀏覽器會向伺服器發送連線請求:
(1) TCP 三次握手,建立連線。
(2) 開始發送http request。
(3) 伺服器處理請求,並返回http response。
(4) 瀏覽器解析並呈現網頁。
(5) TCP 四次揮手,斷開連線。