為什麼網域名稱訪問比IP慢?

2021-08-03 12:53:25 字數 997 閱讀 3150

如今網際網路的基礎協議是 ip 協議,在ip之上是 tcp/udp,再往上是 http等應用協議。

ip的傳輸的基礎是ip位址,路由器都是只認ip位址,不認網域名稱的。

網域名稱是為了方便理解而存在的,也解決了ip位址和網路服務裝置的關係不固定的問題。

在使用網域名稱訪問網路的時候先要把 網域名稱解析成ip位址,這個解析服務就是dns。

訪問dns一般來說是很快的,就是乙個udp包來回,但是總要花點時間,所以用網域名稱注定比用ip慢一點。

但是dns不總是很快的,有時會非常慢,甚至根本就無法使用,這就造成了用網域名稱訪問網路會遇到各種不穩定問題。

每台網際網路終端裝置,比如 pc 手機,都會有乙個預設dns,你在pc上輸入

ipconfig /all

就可以看到預設dns的ip位址。

所謂網域名稱解析服務就是通過查表把 網域名稱換算成ip的過程,訪問網路的時候把網域名稱傳送到dns伺服器,然後從dns獲取解析後的ip位址,如果dns伺服器上有網域名稱到ip的對照表,那麼這個解析就很快,如果沒有,dns服務需要向它的上層服務去詢問,這樣一層一層問上去,直到找到這個對照表為止,這個過程時間就很不可控了,有時幾百毫秒,慢起來10秒鐘都可能。

所以上規模的網際網路服務商都會自建dns,就是防止網路服務商的網域名稱解析服務不靠譜的問題。

有時候dns解析失敗也不是網路服務商的責任,有可能是中間某個路由的問題把dns包搞丟了,遮蔽了,或者匯入到流量黑洞去了。因為udp包並不可控。

有的廠商實現了http dns,這個http請求是基於ip位址的本身不需要再解析一次網域名稱,基於http協議就很少被攔截,如果http都被攔截就是斷網了。

dns服務不僅僅解決網域名稱和ip的對應問題,還會解決就近接入和負載均衡問題。你會發現用同乙個網域名稱在不同地方,不同上網方式下得到的ip位址都不一樣,比如用電信寬頻和移動4g上網會得到不同的ip,你在北京和上海訪問同乙個**ip也不一樣,甚至同乙個地點同乙個網路不同時間得到的ip也不一樣。這就是dns服務根據需要給你選擇了最佳接入的idc,並且根據伺服器負載選擇了最佳伺服器。這個決策過程也是需要時間的。

rustup 慢 rust為什麼跑得比js慢

問題描述 實現乙個計算斐波那契數列的遞迴函式,rust 和js 在我的電腦上耗時都是11秒,js甚至比rust快一點 問題出現的環境背景 本人剛接觸rust,聽說它的效能可以和c 媲美,所以就想比較一下到底比js快多少,可是程式跑出來的結果和想象中的不太一樣,順帶一提,在我同事的電腦上用c 跑耗時7...

(深度學習)為什麼GPU比CPU慢?

gpu由於擅長矩陣運算,在深度學習尤其是計算機視覺方面得到了廣泛的應用。前幾天在我廢了好大勁在我的的電腦上安裝了tensorflow 2.0 gpu,然後就迫不及待地去體驗一下gpu的速度。我去tensorflow官網上直接複製了一段 就是最簡單的神經網路識別mnist手寫數字資料集。然後分別用gp...

什麼是IP,網域名稱

比如ip格式就是 本機ip 127.0.0.1 ip位址是ip協議提供的一種統一的位址格式,它為網際網路上的每乙個網路和每一台主機分配乙個邏輯位址,以此來遮蔽實體地址的差異。網域名稱是為了便於記憶使用的,我們在訪問乙個 的時候沒有誰能記住這麼多ip位址所以使用網域名稱我們購買了乙個網域名稱可以通過設...