輸入url到展現頁面的過程

2021-09-26 22:28:06 字數 1773 閱讀 6227

網域名稱解析 –> 發起tcp的3次握手 –> 建立tcp連線後發起http請求 –> 伺服器響應http請求,瀏覽器得到html** –> 瀏覽器解析html**,並請求html**中的資源(如js、css、等) –> 瀏覽器對頁面進行渲染呈現給使用者

在谷歌瀏覽器中,可以通過檢視 chrome://net-internals/#dns ,可以查詢現有的快取。

首先:chrome瀏覽器中會首先搜尋瀏覽器自身的dns快取(快取時間比較短,大概只有1分鐘,且只能容納1000條快取),看自身的快取中是否有www.baiducom 對應的條目,而且沒有過期,如果有且沒有過期則解析到此結束.

然後:如果瀏覽器自身的快取裡面沒有找到對應的條目,那麼chrome會搜尋作業系統自身的dns快取,如果找到且沒有過期則停止搜尋解析到此結束

然後:如果在windows系統的dns快取也沒有找到,那麼嘗試讀取hosts檔案(位於c:\windows\system32\drivers\etc),看看這裡面有沒有該網域名稱對應的ip位址,如果有則解析成功

然後:如果在hosts檔案中也沒有找到對應的條目,瀏覽器就會發起乙個dns的系統呼叫,就會向本地配置的首選dns伺服器(一般是電信運營商提供的,也可以使用像google提供的dns伺服器)發起網域名稱解析請求(通過的是udp協議向dns的53埠發起請求,這個請求是遞迴的請求,也就是運營商的dns伺服器必須得提供給我們該網域名稱的ip位址),運營商的dns伺服器首先查詢自身的快取,找到對應的條目,且沒有過期,則解析成功。

然後: 作業系統就會查詢netbios name cache(netbios名稱快取,就存在客戶端電腦中的),那這個快取有什麼東西呢?凡是最近一段時間內和我成功通訊的計算機的計算機名和ip位址,就都會存在這個快取裡面。什麼情況下該步能解析成功呢?就是該名稱正好是幾分鐘前和我成功通訊過,那麼這一步就可以成功解析。

然後:如果沒有查詢成功,那麼客戶端就要進行廣播查詢。

最後:如果 沒有成功,那麼客戶端就讀取lmhosts檔案(和hosts檔案同乙個目錄下,寫法也一樣)

如果以上都沒有解析成功,那麼就宣告這次解析失敗,那就無法跟目標計算機進行通訊。 

那麼每天都會有n次查詢dns,上億個甚至更多請求,那伺服器會卡死的。所以這裡也就出現了dns負載均衡。

網域名稱通過 dns 轉化成 ip 位址的過程。

1. 檢視瀏覽器內部快取

檢測網域名稱是否存在於瀏覽器快取中,如果有快取直接使用,沒有則下一步。開啟chrome://net-internals/#dns即可檢視本機瀏覽器的 dns 快取。

2. 系統快取

瀏覽器會呼叫乙個類似gethostbyname的庫函式,此函式會先去檢測本地 hosts 檔案,檢視是否有對應 ip。

ps: 這裡有乙個點,localhost 預設 ip 是 172.0.0.1,這是乙個回路段,也叫換回介面。也就是不會發往伺服器,是直接在本地開啟的。

3. 路由器快取、isp 快取

如果瀏覽器和系統快取都沒有,系統的 gethostname 函式就會像 dns 伺服器傳送請求。而網路服務一般都會先經過路由器以及網路服務商(電信),所以會先查詢路由器快取,然後再查詢 isp 的 dns 快取。

4. 本地 dns 伺服器

通常為自己計算機搭建的小型 dns 伺服器,自我使用,屬於 dns 優化的一部分。

5. 網域名稱伺服器

到此處的過程為:根域伺服器(.) -> 頂級網域名稱伺服器(eg: .com,.org)->

主網域名稱伺服器(eg: google.com)

如果網域名稱正常,應該就會返回 ip 位址,如果沒有瀏覽器就會提示找不到伺服器位址。

參考:

從輸入URL到獲取頁面的過程

1,網域名稱解析dns,找到ip位址 2,建立tcp連線 三次握手 3,http響應與請求 http請求報文四個部分 請求行,請求頭部,空行,請求資料 a.請求行包含 請求方法,資源位置,以及協議版本,例如 get index.html http 1.1 b.請求頭部 多個鍵值對組成 例如 acce...

從URL輸入到頁面展現發生了什麼

我們想要進入乙個指定的 通常需要輸入 一般來講我們所說的 指的就是url 統一資源定位符。乙個完整的url包括有協議 網域名稱 埠號 路徑和檔名,有時候會包括有引數。常用的協議有http https file ftp等。其中file協議用於定位本地資源,比如file f study index.ht...

從URL輸入到頁面展現到底發生什麼?

開啟瀏覽器從輸入 到網頁呈現在大家面前,背後到底發生了什麼?經歷怎麼樣的乙個過程?先給大家來張總體流程圖,具體步驟請看下文分解!本文首發位址為github部落格 總體來說分為以下幾個過程 url uniform resource locator 統一資源定位符,用於定位網際網路上資源,俗稱 比如,遵...