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