HTTPDNS 快速入門
時(shí)間:2023-02-03 12:12:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-03 12:12:01 來(lái)源:建站知識(shí)
作者:林子
對(duì)于互聯(lián)網(wǎng),域名解析是訪問(wèn)的第一步,而這一步很多時(shí)候會(huì)導(dǎo)致訪問(wèn)速度慢、失敗,甚至無(wú)法訪問(wèn)等,那么怎么解決這些問(wèn)題呢?本文將帶你快速入門 HTTPDNS,怎么解決 LocalDNS 異常導(dǎo)致用戶訪問(wèn)您的業(yè)務(wù)出現(xiàn)異常的情況。
一、什么是 DNS
在講解 HTTPDNS 之前,從 HTTPDNS 名詞可以看出它跟 DNS 有必然的聯(lián)系,所以,我們先來(lái)介紹一下 DNS。
DNS(
Domain
Name
System,域名系統(tǒng))是互聯(lián)網(wǎng)的一項(xiàng)服務(wù)。它是域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使人更方便地訪問(wèn)互聯(lián)網(wǎng)。DNS 使用 UDP 端口53,對(duì)于每一級(jí)域名長(zhǎng)度的限制是63個(gè)字符,域名總長(zhǎng)度則不能超過(guò)253個(gè)字符。
舉例來(lái)說(shuō),當(dāng)一臺(tái)設(shè)備要訪問(wèn)網(wǎng)絡(luò)上另外一臺(tái)設(shè)備時(shí),必須首先獲知其地址,而這個(gè)地址是 TCP/IP 中的 IP 地址,是由四段以“.”分開(kāi)的數(shù)字組成(以 IPv4 的地址為例),但是由于 IP 地址難以記憶,用戶難以記憶,因此采用了域名系統(tǒng)來(lái)管理名字和 IP 的對(duì)應(yīng)關(guān)系。
所以,
域名只是一個(gè)方便記憶的名字,實(shí)際上對(duì)網(wǎng)絡(luò)資源的訪問(wèn)還是得通過(guò)IP地址去訪問(wèn),DNS 解析的作用就是將域名解析成 IP 地址。
二、DNS 是如何工作的
既然域名是方便用戶來(lái)訪問(wèn)網(wǎng)絡(luò)上的資源的,那么好記、有代表性的域名就肯定是大家都想要使用的域名,如何在龐大的網(wǎng)絡(luò)資源中分配域名和進(jìn)行解析呢?
2.1. 域名的分配和管理
域名由 ICANN(Internet Corporation for Assigned Names and Numbers,因特網(wǎng)域名與地址管理機(jī)構(gòu))管理,它負(fù)責(zé)域名系統(tǒng)管理、IP地址分配、協(xié)議參數(shù)配置,以及主服務(wù)器系統(tǒng)管理等職能而設(shè)立的非盈利機(jī)構(gòu)。
ICANN 為
不同的國(guó)家或地區(qū)設(shè)置了相應(yīng)的頂級(jí)域名,這些域名通常都由兩個(gè)英文字母組成。例如:
.uk
代表英國(guó)、
.fr
代表法國(guó)、
.jp
代表日本。中國(guó)的頂級(jí)域名是
.cn
,而
.cn
下的域名由CNNIC(China Internet Network Information Center,中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心) 進(jìn)行管理。
除了代表各個(gè)國(guó)家頂級(jí)域名之外,
ICANN 最初還定義了7個(gè)頂級(jí)類別域名,它們分別是
.com
、
.top
、
.edu
、
.gov
、
.mil
、
.net
、
.org
。
- .edu 用于教育機(jī)構(gòu)
- .gov 用于政府機(jī)構(gòu)
- .mil 用于軍事部門
- .net 用于互聯(lián)網(wǎng)絡(luò)及信息中心等
- .org 用于非盈利性組織
隨著因特網(wǎng)的發(fā)展,ICANN 又增加了兩大類共7個(gè)頂級(jí)類別域名。,分別是.aero、.biz、coop、.info、.museum、.name、.pro。其中,.aero、.coop、.museum 是3個(gè)面向特定行業(yè)或群體的頂級(jí)域名,.biz、.info、.name、.pro是4個(gè)面向通用的頂級(jí)域名。
- .aero 代表航空運(yùn)輸業(yè)
- .coop 代表協(xié)作組織
- .museum 代表博物館
- .biz 表示商務(wù)
- .name 表示個(gè)人
- .pro 表示會(huì)計(jì)師、律師、醫(yī)師等
- .info 沒(méi)有特定指向
然而,現(xiàn)在的商業(yè)公司一般都會(huì)默認(rèn)會(huì)使用
.com
作為官網(wǎng)。同時(shí),避免被惡意注冊(cè),通常也會(huì)注冊(cè)其它的頂級(jí)類別域名。
2.2. 域名的組成
域名由一個(gè)或多個(gè)部分組成,從右往左依次是頂級(jí)域名,二級(jí)域名,三級(jí)域名……,不一定有這么多級(jí)域名,但是也可能出現(xiàn)四級(jí)等,通常,子域是從屬于其父域的域。如
http://sos.state.oh.us2.3. 域名是如何解析的
DNS 詳細(xì)解析過(guò)程:- 終端設(shè)備發(fā)起查詢域名的 IP 地址的 DNS 請(qǐng)求。
- 請(qǐng)求先經(jīng)過(guò)本地的解析器。本地解析器首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結(jié)果。如果沒(méi)有,本地解析器向本地DNS服務(wù)器(Local DNS Server)進(jìn)行查詢。
- 本地 DNS 服務(wù)器首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結(jié)果。如果沒(méi)有,本地 DNS 服務(wù)器向根域名服務(wù)器進(jìn)行查詢。
- 根服務(wù)器經(jīng)過(guò)查詢,會(huì)返回可以解析該域名的頂級(jí)域名服務(wù)器IP地址。
- 本地 DNS 服務(wù)器向 返回的頂級(jí)域名服務(wù)器發(fā)送 DNS 請(qǐng)求。
- 頂級(jí)域名服務(wù)器收到請(qǐng)求后,不會(huì)直接返回域名和 IP 地址的對(duì)應(yīng)關(guān)系,而是返回可以解析該域名的權(quán)威域名服務(wù)器地址
- 本地 DNS 服務(wù)器向權(quán)威域名服務(wù)器發(fā)送 DNS 請(qǐng)求,請(qǐng)求域名的 IP 地址。
- 權(quán)威域名服務(wù)器收到請(qǐng)求后,在自己的緩存表中發(fā)現(xiàn)了該域名和 IP 地址的對(duì)應(yīng)關(guān)系,并將 IP 地址返回給本地 DNS 服務(wù)器。
- 本地 DNS 服務(wù)器將獲取到與域名對(duì)應(yīng)的 IP 地址返回給本地解析器,并且將域名和 IP 地址的對(duì)應(yīng)關(guān)系保存在緩存中,以備下次別的用戶查詢時(shí)使用。
- 本地 DNS 解析器將獲取到與域名對(duì)應(yīng)的 IP 地址返回給終端設(shè)備,并且將域名和 IP 地址的對(duì)應(yīng)關(guān)系保存在緩存中,以備下次查詢時(shí)使用。
2.4. DNS 的缺點(diǎn)
從 DNS 解析過(guò)程,我們知道 DNS 的不足:
- 域名緩存:上次進(jìn)行的緩存,路由不一定最短
- 域名轉(zhuǎn)發(fā):域名查詢可能會(huì)跨運(yùn)營(yíng)商
- 解析耗時(shí):DNS 的查詢過(guò)程需要遞歸遍歷多個(gè) DNS 服務(wù)器,才能獲得最終結(jié)果。可能會(huì)帶來(lái)一定的延時(shí)。
- 域名劫持:本地運(yùn)營(yíng)商可能對(duì)某些域名進(jìn)行劫持、屏蔽。
怎么解決 DNS 以上的缺點(diǎn)呢?HTTPDNS 就是解決這些問(wèn)題的一種方案。
三、什么是 HTTPDNS
默認(rèn)情況下的網(wǎng)絡(luò)請(qǐng)求,系統(tǒng)會(huì)通過(guò) DNS 服務(wù)器將域名解析成 IP 地址,然后通過(guò)這個(gè) IP 地址發(fā)送請(qǐng)求。這個(gè) DNS 解析的過(guò)程對(duì)于 App 來(lái)說(shuō)是黑盒子,通常不用開(kāi)發(fā)者關(guān)注,但正因如此導(dǎo)致這個(gè)黑盒子的 DNS 系統(tǒng)存在了非常多的缺點(diǎn)。怎么解決這些問(wèn)題?是否可以不用這個(gè)系統(tǒng),或者把這個(gè) DNS 系統(tǒng)做的更加智能化呢?
簡(jiǎn)而言之,HTTPDNS 就是使用 HTTP 協(xié)議向 DNS 服務(wù)器進(jìn)行請(qǐng)求,從而獲取 IP 地址,簡(jiǎn)化了請(qǐng)求的復(fù)雜性。在請(qǐng)求 DNS 服務(wù)器的時(shí)候,使用 IP 直接訪問(wèn)。跳過(guò)使用系統(tǒng)解析的過(guò)程,自己來(lái)做 DNS 解析系統(tǒng)。
HTTPDNS 的優(yōu)點(diǎn):- 跳過(guò) LocalDNS,防止本地DNS劫持
- 直接通過(guò) IP 訪問(wèn),平均訪問(wèn)延遲下降
- 服務(wù)器算法篩選最佳節(jié)點(diǎn) IP,提升請(qǐng)求成功率
- 快速更換 IP(不受TTL的限制)
四、 HTTPDNS的業(yè)務(wù)場(chǎng)景
HTTPDNS 的適用場(chǎng)景:
- App 防止惡意劫持
- 對(duì)訪問(wèn)速度要求高的應(yīng)用
- 應(yīng)用、視頻加速服務(wù),配合CDN,通過(guò)DNS服務(wù)器返回最佳節(jié)點(diǎn),提高訪問(wèn)效率
- 提供更靈活的流量調(diào)度能力
主要應(yīng)用在以下幾類移動(dòng) App 開(kāi)發(fā)中:
- 資訊、游戲類 App: 希望降低訪問(wèn)延遲、減少跨網(wǎng)訪問(wèn),注重快速響應(yīng)體驗(yàn)。
- 電商類 App: 希望降低連接失敗率,提高業(yè)務(wù)工作率,注重訪問(wèn)請(qǐng)求穩(wěn)定性。
- 社交類 App: 域名屢次被劫持,希望用戶訪問(wèn)順暢無(wú)阻。
- 音視頻類 App: 對(duì)流暢度要求高,提升音樂(lè)、視頻播放的連接成功率。
五、總結(jié)
HTTPDNS 基于 HTTP 協(xié)議向自己的 DNS 服務(wù)器發(fā)送域名解析請(qǐng)求,替代基于 DNS 協(xié)議向運(yùn)營(yíng)商 Local DNS 發(fā)起解析請(qǐng)求的傳統(tǒng)方式,可以避免 Local DNS 造成的域名劫持和跨網(wǎng)訪問(wèn)問(wèn)題,解決移動(dòng)互聯(lián)網(wǎng)服務(wù)中域名解析異常帶來(lái)的困擾。
當(dāng)然,HTTPDNS 看似很簡(jiǎn)單,如果要自己實(shí)現(xiàn)一個(gè) HTTPDNS 服務(wù)器,還是需要考慮很多東西。完善的架構(gòu)如下圖:
圖片來(lái)源:騰訊云HTTPDNS
HTTPDNS 的出現(xiàn)無(wú)法考查,但從鵝廠文章 全局精確流量調(diào)度新思路-HttpDNS服務(wù)詳解 可以看到 QQ 當(dāng)年也臨時(shí)同樣的 DNS 干擾問(wèn)題。對(duì)于大多數(shù)開(kāi)發(fā)者來(lái)說(shuō),自己實(shí)現(xiàn) HTTPDNS 未嘗不可,但如果想快速迭代,現(xiàn)在各大云服務(wù)也有提供 HTTPDNS 服務(wù),如 HTTPDNS - 阿里云、HttpDNS - 騰訊云、移動(dòng)域名解析服務(wù) - 百度云 等等。
從原理上來(lái)講,HTTPDNS 只是將域名解析的協(xié)議由 DNS 協(xié)議換成了 HTTP 協(xié)議,并不復(fù)雜。但是這一微小的轉(zhuǎn)換,卻帶來(lái)了巨大的收益,其中 DNS 劫持(域名劫持)就是最為嚴(yán)重的一個(gè)問(wèn)題,通過(guò)某些方式篡改了用戶正常訪問(wèn)的 web 網(wǎng)頁(yè),插入廣告或者其他內(nèi)容,在頁(yè)游時(shí)代就經(jīng)常發(fā)生。而移動(dòng) App 主要導(dǎo)致無(wú)法訪問(wèn)、成功率下降等問(wèn)題。同時(shí),在今天移動(dòng)互聯(lián)網(wǎng)高度成熟環(huán)境下,用戶體驗(yàn)越發(fā)重要,智能解析,就近接入,提升連接成功率,快速響應(yīng),確保用戶訪問(wèn)順暢,這些都是 HTTPDNS 的優(yōu)勢(shì)。移動(dòng)互聯(lián)網(wǎng)的下半場(chǎng),是對(duì)用戶體驗(yàn)的極致追求,也是對(duì)技術(shù)的融合創(chuàng)新的極致追求!
歡迎大家一起在評(píng)論區(qū)交流~
歡迎關(guān)注我們,了解更多 iOS 和行業(yè)技術(shù)的動(dòng)態(tài)~
六、參考鏈接
- 域名系統(tǒng) - 維基百科
- 超詳細(xì) DNS 協(xié)議解析 - 本站
- HttpDns 在 iOS 端的接入方案 - 掘金
- 全面理解DNS及HTTPDNS - 掘金
- 圖解 DNS & HTTPDNS 原理 - 掘金
- 深入理解Http請(qǐng)求、DNS劫持與解析。 - 掘金
- 【鵝廠網(wǎng)事】全局精確流量調(diào)度新思路-HttpDNS服務(wù)詳解
- HTTPDNS - 阿里云
- HttpDNS - 騰訊云
- 移動(dòng)域名解析服務(wù) - 百度云