網(wǎng)絡優(yōu)化之HttpDNS域名解析

我們正在研究的下一代智能媒體網(wǎng)絡課題中德澈,網(wǎng)絡傳輸環(huán)節(jié)有一個問題需要解決,即終端如何能夠就近接入分布在全球各地的媒體節(jié)點,這用到了HTTP DNS這項技術(shù)蕴侣。恰好在阿里云棲社區(qū)上柑晒,讀到一篇關(guān)于DNS域名解析優(yōu)化的文章锄弱,對此講解的挺清楚。寫一篇學習筆記辱志,一些文字或圖片引自該問斬個虐急。原文鏈接:《移動互聯(lián)網(wǎng)時代箱残,如何優(yōu)化你的網(wǎng)絡 —— 域名解析篇》

域名(Domain Name)是由一串用點分隔的名字組成的某臺計算機或某組計算機的標識,域名通過DNS(Domain Name System)服務轉(zhuǎn)化為服務器的IP地址戏仓,以便應用通過IP進行尋址和通信疚宇,這個過程稱之為域名解析

作為互聯(lián)網(wǎng)絡通信的最前端環(huán)節(jié),域名解析非常重要赏殃。在基于傳統(tǒng)瀏覽器的B/S場景下敷待,域名解析由瀏覽器內(nèi)核實現(xiàn),應用不用關(guān)心域名解析的細節(jié)仁热。也正因為這種透明性榜揖,一旦域名解析系統(tǒng)出現(xiàn)問題,甚至遭到黑客的劫持抗蠢,應用開發(fā)者幾乎無計可施

而進入移動互聯(lián)網(wǎng)時代(包括基于瀏覽器的富客戶端應用)举哟,實際上是一種C/S架構(gòu),這賦予了應用開發(fā)者較大的定制空間迅矛。開發(fā)者甚至可以滲透到應用底層網(wǎng)絡實現(xiàn)當中妨猩,對域名解析環(huán)節(jié)的優(yōu)化變?yōu)榱丝赡?/p>

一些DNS中的關(guān)鍵概念

樹狀域名結(jié)構(gòu)

DNS系統(tǒng)采用樹狀管理結(jié)構(gòu),以blog.csdn.net為例秽褒,.net是頂級域名壶硅,csdn為二級域名,blog為三級域名销斟,以此類推

樹狀域名結(jié)構(gòu)
權(quán)威DNS

權(quán)威DNS是最終決定解析結(jié)果的服務器庐椒,是解析結(jié)果的權(quán)威,可以在權(quán)威DNS上配置蚂踊、更改约谈、刪除具體域名的解析結(jié)果。比如阿里云解析就是權(quán)威DNS服務提供商

遞歸DNS

遞歸DNS又稱為Local DNS犁钟,它沒有域名解析的決定權(quán)棱诱,但能夠代理用戶向權(quán)威DNS進行域名解析的請求。遞歸DNS上有緩存模塊特纤,當緩存中包含解析目標并且TTL未過期時(TTL是域名的有效生存時間军俊,若緩存時間超過TTL,遞歸DNS需要重新向權(quán)威DNS獲取解析結(jié)果)捧存,遞歸DNS會返回緩存結(jié)果粪躬,否則遞歸DNS會逐級查詢各個層級域名的權(quán)威DNS担败,直至獲取最終完整域名的解析結(jié)果

公共DNS

公共DNS是遞歸DNS的一種特例,它是一種向全網(wǎng)開放的遞歸DNS服務镰官,而傳統(tǒng)的遞歸DNS信息一般由運營商分發(fā)給用戶(還記得曾經(jīng)手工在IP配置中指定DNS地址么)提前。一個比較典型的公共DNS是Google提供的的8.8.8.8(看來老外也喜歡吉利的數(shù)字),可以通過在操作系統(tǒng)配置文件中用公共DNS來代替Local DNS完成域名解析流程

注:在實際的使用過程中泳唠,我們通常不需要手工指定Local DNS地址狈网。運營商會通過DHCP協(xié)議將Local DNS地址分配給我們的計算機

以訪問“www.csdn.net”為例,一次域名的遞歸查詢解析的具體過程如下:

Local DNS遞歸查詢

1)終端向Local DNS發(fā)起“www.csdn.net”的訪問請求
2)Local DNS收到請求后笨腥,從Root Hints獲取根域名服務器地址拓哺,并向“Root DNS Server”發(fā)起解析請求,Root DNS Server返回“net”頂級域名服務器IP地址
3)Local DNS向“Net DNS Server”發(fā)起域名解析請求脖母,Net DNS Server返回“csdn.net”二級域名服務器IP地址
4)Local DNS向“CSDN DNS Server”發(fā)起域名解析請求士鸥,CSDN DNS Server返回最終的“www.csdn.net”的IP地址
5)Local DNS將遞歸查詢獲取的IP地址返回給終端

注:Local DNS服務器包含緩存模塊,在實際域名解析過程中Local DNS服務器會首先查詢緩存谆级,緩存命中且解析結(jié)果TTL未過期的情況下直接返回烤礁,否則才啟動遞歸查詢的流程

傳統(tǒng)域名解析(Local DNS)可能存在的問題

第一、域名劫持:本來域名A應該返回的DNS解析結(jié)果的IP1被惡意替換為了IP2肥照,導致對A的訪問失敗或訪問了一個不安全的站點脚仔。有兩種可能的劫持方式:

1)攻擊Local DNS周邊:一方面,黑客侵入了寬帶路由器并將終端用戶指定的Local DNS篡改為黑客自己偽造的Local DNS舆绎;另一方面鲤脏,由于DNS解析主要是基于UDP協(xié)議,攻擊者可以監(jiān)聽終端用戶的域名解析請求吕朵,并在Local DNS返回正確結(jié)果之前將偽造的DNS解析響應傳遞給終端用戶凑兰,進而控制終端用戶的域名訪問行為

2)攻擊Local DNS緩存:最常碰到的域名劫持現(xiàn)象是緩存污染。由于Local DNS在接收到域名解析請求時首先會查找緩存边锁,如果命中就會直接返回緩存結(jié)果,不再進行遞歸DNS查詢波岛。如果黑客將緩存結(jié)果指向第三方的廣告頁茅坛,就會導致用戶的訪問請求被引導到這些廣告頁地址上

第二種針對Local DNS緩存的污染往往能帶來更明顯的群體傷害,比如某個省份某個運營商的用戶群可能因為該地區(qū)Local DNS的緩存污染而導致群體性訪問服務異常则拷。而且這類緩存污染行為往往是間歇性贡蓖、局部性發(fā)生的,沒有明顯的規(guī)律煌茬,導致開發(fā)者很難對其進行量化斥铺、評估、預防

第二坛善、調(diào)度不精準:有這樣一種場景晾蜘,為了應用后續(xù)的訪問性能邻眷,用戶希望的初始的DNS解析結(jié)果帶有地域或運營商性質(zhì),比如CDN剔交。傳統(tǒng)的域名解析方式可能存在兩類問題:

1)部分Local DNS供應商為了降低運營成本肆饶,會將發(fā)給自己的域名解析請求轉(zhuǎn)發(fā)給其他供應商的Local DNS節(jié)點,如下圖所示岖常,用戶請求解析的是cdn.aliyun.com驯镊,分配給用戶的是Local DNS A,該DNS節(jié)點為了節(jié)省成本竭鞍,把該次請求轉(zhuǎn)發(fā)給了另一運營商的Local DNS B板惑。而最終的權(quán)威DNS在進行域名解析時可能會根據(jù)Local DNS的IP信息進行智能調(diào)度(比如采用地理位置就近接入的調(diào)度策略),分配與Local DNS B 78.29.29.1相同運營商并且地理位置最近的CDN節(jié)點78.29.29.2偎快,然而這個CDN節(jié)點對于終端135.35.35.1并不是最優(yōu)的CDN節(jié)點冯乘,他們分屬不同的運營商,并且地理位置上可能相隔很遠滨砍。這類解析轉(zhuǎn)發(fā)行為會嚴重影響域名解析的精準性并對用戶業(yè)務訪問延遲帶來影響

DNS解析轉(zhuǎn)發(fā)導致查詢結(jié)果不是最優(yōu)

2)除了解析轉(zhuǎn)發(fā)對調(diào)度精準性帶來的影響外往湿,Local DNS的布署情況同樣影響著域名智能解析的精準性。受成本因素制約惋戏,部分運營商Local DNS部署分布并不均勻领追,比如在東部地區(qū)部署比較密集,在西部地區(qū)部署比較稀疏响逢。當一位西藏用戶準備訪問CDN節(jié)點時绒窑,我們預期他應該會被調(diào)度到西藏的CDN節(jié)點A上以實現(xiàn)就近接入和訪問加速。但由于Local DNS的資源有限舔亭,西部地區(qū)的終端用戶被統(tǒng)一調(diào)度到青海的Local DNS B上些膨,這時候權(quán)威DNS根據(jù)Local DNS B的IP進行CDN域名的智能解析,并將青海的CDN節(jié)點B返回給西藏用戶钦铺,導致西藏地區(qū)用戶的網(wǎng)絡訪問延遲上升订雾。另一種情況是Local DNS的分配甚至并非遵循就近原則,比如有實際案例顯示西藏用戶甚至被分配了北京的Local DNS節(jié)點C矛洞,導致西藏的用戶在進行CDN資源訪問時被調(diào)度到了北京的CDN節(jié)點C上洼哎,類似的由于調(diào)度精度的缺失帶來的訪問體驗的影響是非常嚴重的

Local DNS部署不平衡引起用戶體驗下降
第三、解析生效滯后:

Local DNS是由各個地區(qū)不同運營商獨立部署的沼本,服務質(zhì)量參差不齊噩峦。在對域名解析緩存的處理上,各個獨立節(jié)點的實現(xiàn)策略也有區(qū)別抽兆,比如部分節(jié)點為了節(jié)省開支忽略了域名解析結(jié)果的TTL時間限制识补,導致用戶在權(quán)威DNS進行解析變更,但解析結(jié)果在全網(wǎng)生效的周期非常漫長(最長生效時間甚至高達48小時)辫红。部分業(yè)務場景下開發(fā)者對域名解析結(jié)果變更的生效時間非常敏感凭涂,比如當業(yè)務服務器受到攻擊時祝辣,我們需要最快速地將業(yè)務IP切換到另一組集群上,如果全網(wǎng)解析生效不夠迅速导盅,可能直接導致用戶業(yè)務訪問的異常较幌,造成嚴重事故

Local DNS部署不平衡引起解析生效滯后問題
第四、延遲大:

DNS首次查詢或緩存過期后的查詢白翻,需要遞歸遍歷多個DNS服務器以獲取最終的解析結(jié)果乍炉,這增加了網(wǎng)絡請求的前置延時時間。特別是在移動互聯(lián)網(wǎng)場景下滤馍,移動網(wǎng)絡質(zhì)量參差不齊岛琼,弱網(wǎng)環(huán)境的RTT時間可能高達數(shù)百毫秒,對于一次普通的業(yè)務請求而言巢株,上述延時是非常沉重的負擔槐瑞。另一方面,弱網(wǎng)環(huán)境下的解析超時阁苞、解析失敗等現(xiàn)象屢見不鮮困檩,如何合理優(yōu)化DNS解析對于整體網(wǎng)絡訪問質(zhì)量的提升至關(guān)重要

域名解析的解決方案:HTTP DNS

HTTP DNS使用HTTP協(xié)議進行域名解析,代替現(xiàn)有Local DNS基于UDP的DNS協(xié)議那槽。域名解析請求直接發(fā)送到HTTP DNS服務端悼沿,繞過運營商的Local DNS∩Ь模基于HTTP協(xié)議的設計可以適用于幾乎所有的網(wǎng)絡環(huán)境糟趾,同時保留了鑒權(quán)、HTTPS等更高安全性的擴展能力甚牲,避免惡意攻擊劫持行為义郑。而商業(yè)化的HTTP DNS服務(比如阿里和騰訊的HTTP DNS)對緩存管理有嚴格的安全保障,避免了類似Local DNS的緩存污染的問題

HTTP DNS繞過了傳統(tǒng)的Local DNS
第一丈钙、精準調(diào)度問題的解決

傳統(tǒng)域名解析的調(diào)度精準性問題非驮,本質(zhì)根源在于Local DNS的部署和分配機制上。由于碎片化的管理方式雏赦,服務質(zhì)量難以得到保障院尔。而HTTP DNS與權(quán)威DNS的交互時,通過edns-client-subnet協(xié)議(https://datatracker.ietf.org/doc/rfc7871)將終端用戶的IP信息直接傳遞給權(quán)威DNS喉誊,權(quán)威DNS根據(jù)終端用戶的IP信息,而不是傳統(tǒng)的Local DNS IP信息進行精準調(diào)度纵顾,這樣避免看了Local DNS的坐標干擾

HTTP DNS能夠更加精準進行調(diào)度
第二伍茄、解析實時性問題的解決

和精準調(diào)度一樣,由于傳統(tǒng)Local DNS在不同區(qū)域的獨立提供和獨立維護施逾,服務質(zhì)量參差不齊敷矫,因此存在比較明顯的解析變更全網(wǎng)生效滯后問題例获,而商業(yè)化的HTTP DNS服務嚴格遵循DNS TTL限制進行緩存更新(一般都有專門的同步方案進行保證),能夠大大減少滯后性問題

結(jié)語:HTTP DNS本質(zhì)上是將原本分布在各地曹仗,由不同DNS供應商(主要就是運營商)提供的參差不齊的DNS服務質(zhì)量榨汤,利用協(xié)議,轉(zhuǎn)化為由統(tǒng)一DNS服務提供商提供的更短接怎茫、更有保障的DNS服務能力收壕。當然利用HTTP DNS,也要符合具體服務提供者的操作規(guī)范和編程規(guī)范轨蛤,這里面也有較多良好的實踐模式蜜宪,在后面的學習中再進行總結(jié)

晚安……

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祥山,隨后出現(xiàn)的幾起案子圃验,更是在濱河造成了極大的恐慌,老刑警劉巖缝呕,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澳窑,死亡現(xiàn)場離奇詭異,居然都是意外死亡供常,警方通過查閱死者的電腦和手機摊聋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來话侧,“玉大人栗精,你說我怎么就攤上這事≌芭簦” “怎么了悲立?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長新博。 經(jīng)常有香客問我薪夕,道長,這世上最難降的妖魔是什么赫悄? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任原献,我火速辦了婚禮,結(jié)果婚禮上埂淮,老公的妹妹穿的比我還像新娘姑隅。我一直安慰自己,他們只是感情好倔撞,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布讲仰。 她就那樣靜靜地躺著,像睡著了一般痪蝇。 火紅的嫁衣襯著肌膚如雪鄙陡。 梳的紋絲不亂的頭發(fā)上冕房,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音趁矾,去河邊找鬼耙册。 笑死,一個胖子當著我的面吹牛毫捣,可吹牛的內(nèi)容都是我干的详拙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼培漏,長吁一口氣:“原來是場噩夢啊……” “哼溪厘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牌柄,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤畸悬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后珊佣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋宦,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年咒锻,在試婚紗的時候發(fā)現(xiàn)自己被綠了冷冗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡惑艇,死狀恐怖蒿辙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滨巴,我是刑警寧澤思灌,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站恭取,受9級特大地震影響泰偿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜈垮,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一耗跛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧攒发,春花似錦调塌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春蜒茄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背餐屎。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工檀葛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腹缩。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓屿聋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親藏鹊。 傳聞我的和親對象是個殘疾皇子润讥,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容