HttpDns 原理是什么
| 張松然?作者 張松然,京東商城 POP平臺系統(tǒng)架構(gòu)師。對構(gòu)建高性能,高可用的大規(guī)模分布系統(tǒng)有豐富的開發(fā)經(jīng)驗,有多年NIO領(lǐng)域的設(shè)計、開發(fā)經(jīng)驗,對HTTP、TCP長連接技術(shù)有深入研究與領(lǐng)悟。 | ||||
| 什么是 DNS DNS(Domain Name System,域名系統(tǒng)),DNS 服務(wù)用于在網(wǎng)絡(luò)請求時,將域名轉(zhuǎn)為 IP 地址。能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機器直接讀取的 IP 數(shù)串。 傳統(tǒng)的基于 UDP 協(xié)議的公共 DNS 服務(wù)極易發(fā)生 DNS 劫持,從而造成安全問題。 DNS?域名系統(tǒng)結(jié)構(gòu) Root 域名:DNS 域名使用時,規(guī)定由尾部句號來指定名稱位于根或更高級別的域?qū)哟谓Y(jié)構(gòu) Top Level 頂級域名:用來指示某個國家、地區(qū)或組織使用的名稱的類型名稱。如 .com Second Level 域名:個人或組織在 Internet 上使用的注冊名稱。如 linkedkeeper.com Third Level 域名:已注冊的二級域名派生的域名。如 misc.linkedkeeper.com DNS 解析過程 1. 瀏覽器中輸入 www.linkedkeeper.com,發(fā)出解析請求。 2. 本機的域名解析器 resolver 程序查詢本地緩存和 host 文件中是否為域名的映射關(guān)系,如果有則調(diào)用這個 IP 地址映射,完成解析。 3. 如果 hosts 與本地解析器緩存都沒有相應(yīng)的網(wǎng)址映射關(guān)系,則本地解析器會向 TCP/IP 參數(shù)中設(shè)置的首選 DNS 服務(wù)器(我們叫它 Local DNS 服務(wù)器)發(fā)起一個遞歸的查詢請求。 4. 服務(wù)器收到查詢時,如果要查詢的域名由本機負責解析,則返回解析結(jié)果給客戶機,完成域名解析,此解析具有權(quán)威性。如果要查詢的域名,不由 Local DNS 服務(wù)器解析,但該服務(wù)器已緩存了此網(wǎng)址映射關(guān)系,則調(diào)用這個 IP 地址映射,完成域名解析,此解析不具有權(quán)威性。 5. 如果 Local DNS 服務(wù)器本地區(qū)域文件與緩存解析都失效,則根據(jù) Local DNS 服務(wù)器的設(shè)置(是否遞歸)進行查詢,如果未用開啟模式,Local DNS 就把請求發(fā)至13臺 Root DNS。如果用的是遞歸模式,此 DNS 服務(wù)器就會把請求轉(zhuǎn)發(fā)至上一級 DNS 服務(wù)器,由上一級服務(wù)器進行解析,上一級服務(wù)器如果不能解析,或找根 DNS 或把轉(zhuǎn)請求轉(zhuǎn)至上上級,以此循環(huán)。 6. Root DNS 服務(wù)器收到請求后會判斷這個域名是誰來授權(quán)管理,并會返回一個負責該頂級域名服務(wù)器的一個 IP。 7. Local DNS 服務(wù)器收到 IP 信息后,將會聯(lián)系負責 .com 域的這臺服務(wù)器。 8. 負責 .com 域的服務(wù)器收到請求后,如果自己無法解析,它就會找一個管理 .com 域的下一級 DNS 服務(wù)器地址給本地 DNS 服務(wù)器。 9. 當 Local DNS 服務(wù)器收到這個地址后,就會找 linkedkeeper.com 域服務(wù)器,10、11重復上面的動作,進行查詢。 10. 最后 www.linkedkeeper.com 返回需要解析的域名的 IP 地址給 Local DNS 服務(wù)器。 11. Local DNS 服務(wù)器緩存這個解析結(jié)果(同時也會緩存,6、8、10返回的結(jié)果)。 12. Local DNS 服務(wù)器同時將結(jié)果返回給本機域名解析器。 13. 本機緩存解析結(jié)果。 14. 本機解析器將結(jié)果返回給瀏覽器。 15. 瀏覽器通過返回的 IP 地址發(fā)起請求。 遞歸查詢和迭代查詢
由此可見,客戶端到 Local DNS 服務(wù)器,Local DNS 與上級 DNS 服務(wù)器之間屬于遞歸查詢;DNS 服務(wù)器與根 DNS 服務(wù)器之前屬于迭代查詢。 實際環(huán)境中,因為采用遞歸模式會導致 DNS 服務(wù)器流量很大,所以現(xiàn)在大多數(shù)的 DNS 都是迭代模式。 結(jié)合 Wireshark 分析 DNS 協(xié)議 HttpDns 是什么 HTTPDNS 利用 HTTP 協(xié)議與 DNS 服務(wù)器交互,代替了傳統(tǒng)的基于 UDP 協(xié)議的 DNS 交互,繞開了運營商的 Local DNS,有效防止了域名劫持,提高域名解析效率。另外,由于 DNS 服務(wù)器端獲取的是真實客戶端 IP 而非 Local DNS 的 IP,能夠精確定位客戶端地理位置、運營商信息,從而有效改進調(diào)度精確性。 HttpDns 主要解決的問題
如何進行改造支持 HttpDns 目前,國內(nèi)有一部分廠商已經(jīng)提供了這個解析服務(wù),可以直接使用第三方服務(wù)。目前,提供 HttpDns 解析服務(wù)的有:阿里云HttpDNS 阿里云的 HttpDNS 服務(wù)的 API 比較標準,直接發(fā)一個 Get 請求,帶上請求參數(shù),返回結(jié)果以 json 返回。
請求成功時,返回結(jié)果如下:
在移動端,將由 HttpDns 獲得的 IP 地址在原有 URL 的基礎(chǔ)上,將域名替換為 IP,然后用新的 URL 發(fā)起 HTTP 請求。 ?轉(zhuǎn)載請并標注: “本文轉(zhuǎn)載自 linkedkeeper.com (文/張松然)” |
總結(jié)
以上是生活随笔為你收集整理的HttpDns 原理是什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HttpDNS功能说明及实现
- 下一篇: 入门启发:音视频的简单理解