HttpDNS与传统DNS的区别
一、DNS
1、什么是DNS
DNS(Domain Name System,域名系統),DNS 服務用于在網絡請求時,將域名轉為 IP 地址。能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的 IP 數串。
傳統的基于 UDP 協議的公共 DNS 服務極易發生 DNS 劫持,從而造成安全問題。
2、DNS 域名系統結構
Root 域名:DNS 域名使用時,規定由尾部句號來指定名稱位于根或更高級別的域層次結構
Top Level 頂級域名:用來指示某個國家、地區或組織使用的名稱的類型名稱。如 .com
Second Level 域名:個人或組織在 Internet 上使用的注冊名稱。如 taobao.com
Third Level 域名:已注冊的二級域名派生的域名。如 www.taobao.com
3、DNS解析過程
當一個用戶在地址欄輸入www.taobao.com時,DNS解析有大致十個過程,如下:
瀏覽器查緩存:瀏覽器先檢查自身緩存中有沒有被解析過的這個域名對應的ip地址,如果有,解析結束。同時域名被緩存的時間也可通過TTL屬性來設置。
操作系統緩存:如果瀏覽器緩存中沒有,瀏覽器會檢查操作系統緩存中有沒有對應的已解析過的結果。而操作系統也有一個域名解析的過程。
# 查看 windows 本地緩存DNS 解析記錄的命令C:\Users\Admin>ipconfig /displaydns --->> 查看命令# 清除 windows 客戶端本地緩存的DNS 解析記錄的命令C:\Users\Admin>ipconfig /flushdns# windows 系統下的hosts 域名解析記錄的位置C:\Windows\System32\drivers\etc\hosts?
請求本地域名服務器(LDNS):如果至此還沒有命中域名,才會真正的請求本地域名服務器(LDNS)來解析這個域名,這臺服務器一般在你的城市的某個角落,距離你不會很遠,并且這臺服務器的性能都很好,一般都會緩存域名解析結果,大約80%的域名解析到這里就完成了。
Root Server 域名服務器:如果LDNS仍然沒有命中,就直接跳到Root Server 域名服務器請求解析
根域名服務器返回給LDNS一個所查詢域的主域名服務器(gTLD Server,國際頂尖域名服務器,如.com .cn .org等)地址
此時LDNS再發送請求給上一步返回的gTLD
接受請求的gTLD查找并返回這個域名對應的Name Server的地址,這個Name Server就是網站注冊的域名服務器
Name Server根據映射關系表找到目標ip,返回給LDNS
LDNS緩存這個域名和對應的ip
LDNS把解析的結果返回給用戶,用戶根據TTL值緩存到本地系統緩存中,域名解析過程至此結束
)LocalDNS服務器
如果 hosts 與本地解析器緩存都沒有相應的網址映射關系,則本地解析器會向 TCP/IP 參數中設置的首選 DNS 服務器(我們叫它 Local DNS 服務器,本地DNS服務器)發起一個遞歸的查詢請求。
Local DNS 服務器,這臺服務器一般在你的城市的某個角落,距離你不會很遠,并且這臺服務器的性能都很好,一般都會緩存域名解析結果,大約80%的域名解析到這里就完成了。
2)域名劫持
瀏覽器中輸入 www.taobao.com,發出解析請求。本機的域名解析器 resolver 程序查詢本地緩存和 host 文件中是否為域名的映射關系,如果有則調用這個 IP 地址映射,完成解析。
這種操作系統級別的域名解析規則也被很多黑客利用,通過修改你的hosts文件里的內容把特定的域名解析到他指定的ip地址上,造成所謂的域名劫持。所以在windows7中將hosts文件設置成了readonly,防止被惡意篡改。
如何解決?
“域名劫持”的根源在于:域名服務器上的記錄被人給改了。最直接的辦法就是不要使用這種 ISP 提供的Local DNS 域名服務器,TCP/IP 參數中設置的首選 DNS 服務器,改用國外那些比較靠譜的。
目前口碑最好的,大概是 Google 提供的兩個域名服務器,IP地址 分別是 8.8.8.8 和 8.8.4.4 ——這倆不光是地址好記,更重要的是,不會耍流氓。
?
二、HttpDNS
HTTPDNS 利用 HTTP 協議與 DNS 服務器交互,代替了傳統的基于 UDP 協議的 DNS 交互,繞開了運營商的 Local DNS,能夠有效避開 DNS 層面的攔截和故障,比如域名污染,域名遞歸服務器緩存不刷新,運營商域名劫持等問題,提高域名解析效率。
另外,由于 DNS 服務器端獲取的是真實客戶端 IP 而非 Local DNS 的 IP,能夠精確定位客戶端地理位置、運營商信息,從而有效改進調度精確性,提高分發精準度,解決用戶 DNS 設置錯誤造成的訪問時延加大,響應過慢的問題。
1、HTTPDNS原理
- 常規域名解析是通過 DNS 協議進行解析的,其最終結果就是獲取域名對應的真實服務器地址,無法繞開 DNS 攔截和故障問題。
- 而 HTTPDNS 則是以 HTTP 的方式代替傳統 DNS 協議傳遞解析結果,能夠有效避開 DNS 層面的攔截和故障。
- 客戶端直接訪問 HTTPDNS 接口(直接通過ip訪問,而不是通過域名訪問),根據客戶端源IP地址,查詢 CDN 內部調度策略,通過響應請求的方式,獲取域名的最優節點 IP,緩存到本地。(基于容災考慮,建議保留使用運營商 LocalDNS 解析域名的方式作為備選。)
- 客戶端獲取到業務 IP 后,就向直接往此 IP 發送業務協議請求。以 HTTP 請求為例,通過在 header 中指定 host 字段,向 HTTPDNS 返回的 IP 發送標準的 HTTP 請求即可。
- 請求方式如:
HTTPDNS解決的問題
1. 運營商域名劫持
運營商為了減少跨網結算成本,會在本地運營商網內搭建內容緩存服務器。本地本網用戶訪問時,運營商把域名強行指向內容緩存服務器的 IP 地址,從而把本地本網流量完全留在了本地,減少了跨網訪問。
為了獲取更多利益,部分運營商們還會將對應解析內容替換成第三方廣告聯盟的廣告或是釣魚網站等。
2. 轉發解析請求
運營商的 LocalDNS 會存在解析轉發的情況,解析轉發是指運營商自身不進行域名遞歸解析,而是把域名解析請求轉發到其它運營商的遞歸 DNS 上。
客戶使用 CDN 加速服務后,當解析被運營商轉發, DNS服務端收到的域名解析請求的來源 IP 就成了其它運營商或其他地區的 IP (DNS 服務端會根據來源 IP 進行解析調度),那么用戶流量就被導向了錯誤的節點,造成跨域、跨省、跨運營商訪問后果:網站訪問緩慢甚至無法訪問。
3. DNS 多出口
DNS 多出口,是指運營商的 LocalDNS 按照標準 DNS 協議進行遞歸查詢時,由于存在網絡多出口且配置了目標路由 NAT 的情況,最終導致 LocalDNS進行遞歸解析的出口 IP 非本網 IP 地址。DNS 多出口的情況會造成調度系統收到的域名解析請求來源 IP 變成其它運營商的 IP ,最終引發域名解析錯誤、流量跨網。
4. DNS 攻擊
當前網絡攻擊越來越激烈,從歷史來看,每次攻擊的影響范圍都很大,主要攻擊類型:
① 針對公網 dns 服務的攻擊,這個攻擊影響的是所有解析用戶。一旦受攻擊,意味著所有用戶的域名解析都會出問題,大家上網都會出現故障。
② 針對特定 dns 服務的攻擊,通常為 ddos 攻擊,網宿平臺可應對,其余類型攻擊則影響網宿平臺該 DNS 服務的所有用戶。
由于 CDN 加速是通過 CNAME 的方式別名到網宿入口,無論是公網 DNS 受到攻擊還是網宿 DNS 受到攻擊,都將對客戶的服務造成嚴重影響,甚者直接導致區域服務中斷。
總結
以上是生活随笔為你收集整理的HttpDNS与传统DNS的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中的 // 与 / 的区别
- 下一篇: 如何高效维持网络长连接