1. 程式人生 > >DNS 劫持及解決方案之 HTTPDNS

DNS 劫持及解決方案之 HTTPDNS

1. 為什麼會有 DNS

DNS 即域名系統(Domain Name Server),其主要用於將域名解析為對應的 IP 地址。
那麼為什麼會有域名到 IP 地址的解析這一需要呢?就需要從人的角度和計算機的角度去分析了。

  • 人的角度:網路上的主機一般是通過 IP 地址唯一確定,但 IP 不便於人們記憶,如果每個人都需要通過 IP 來訪問其他主機,那記憶量太大了,因此才借用域名來間接地標識一臺主機。比如常見的域名有: www.baidu.com, 其 IP 地址為 202.108.22.5。
  • 計算機的角度:人是方便記憶了,但是計算機的網路通訊層(IP 層)只認 IP 地址。人想要訪問其他主機必須通過計算機實現,因此光有域名還無法達到目的,於是計算機需要多幹一件事,那就是根據人提供的域名去獲得相應的 IP。

2. 為什麼會有 DNS 劫持(域名劫持)

DNS 的來源上面已經解釋了,DNS 劫持是指在劫持的網路範圍內(類似於白名單)攔截域名解析的請求,分析請求的域名,把審查範圍以外(類似於黑名單)的請求放行,否則返回假的IP地址或者什麼都不做使請求失去響應,其效果就是對特定的網路不能訪問或訪問的是假網址。TCP 管發管到,UDP 管發不管到。因此,在安全性方面來說,TCP/IP更具有優越性,DNS 的域名解析基於 UDP 協議實現,極易發生 DNS 劫持。

傳統 DNS 解析過程

3. 如何解決 DNS 劫持

傳統 DNS 解析域名的最大弊端就是易被劫持,直接降低網際網路使用者的使用體驗。比如你想訪問 www.baidu.com,結果發生 DNS 劫持,得到了一個詐騙網站的 IP 或者空的地址,使你無法使用正常的服務(比如百度是搜尋服務)。
HTTPDNS 利用 HTTP 協議與 DNS 伺服器互動,代替了傳統的基於 UDP 協議的 DNS 互動,繞開了運營商的 Local DNS(本地 DNS 伺服器),有效防止了域名劫持,提高域名解析效率。另外,由於 DNS 伺服器端獲取的是真實客戶端 IP 而非 Local DNS 的 IP,能夠精確定位客戶端地理位置、運營商資訊,從而有效改進排程精確性。

4. 疑問記錄

  • 為什麼要用 UDP 協議進行 DNS 域名解析?
    UDP 協議通訊速度更快。
  • 為什麼不直接用 TCP 協議,而要用 HTTP 協議?
    HTTP協議基於 TCP 協議
  • 為什麼 HTTPDNS 能解決 DNS 劫持問題?

參考連結: