日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpDNS介绍

發(fā)布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpDNS介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、什么HttpDNS:

HttpDNS是使用HTTP協(xié)議向DNS服務器的80端口進行請求,代替?zhèn)鹘y(tǒng)的DNS協(xié)議向DNS服務器的53端口進行請求。也就是使用Http協(xié)議去進行dns解析請求,將服務器返回的解析結果(域名對應的服務器IP),直接向該IP發(fā)起對應的API服務請求,代替使用域名。

?

二、為什么要用HttpDNS:

那么為什么要使用HttpDNS呢?主要原因有四點:

1、LocalDNS劫持;

由于HttpDNS是通過 IP直接請求http獲取服務器A記錄地址,不存在向本地運營商詢問Domain解析過程,所以從根本避免了劫持問題。

2、平均訪問延遲下降:

由于是IP直接訪問省掉了一次Domain解析過程,(即使系統(tǒng)有緩存速度也會稍快一些“毫秒級”)通過智能算法排序后找到最快節(jié)點進行訪問。

3、用戶連接失敗率下降:

通過算法降低以往失敗率過高的服務器排序,通過時間近期訪問過的數(shù)據(jù)提高服務器排序,通過歷史訪問成功記錄提高服務器排序。如果ip(a)訪問錯誤,在下一次返回ip(b)或者ip(c) 排序后的記錄。(LocalDNS很可能在一個ttl時間內(或多個ttl)都是返回記錄)。

4、域名解析異常及用戶訪問跨網(wǎng)的問題:

見第三部分:

?

三、HttpDNS如何解決域名解析異常及用戶訪問跨網(wǎng)的問題:

該部分轉自:【鵝廠網(wǎng)事】全局精確流量調度新思路-HttpDNS服務詳解

1、問題根源:

國內運營商LocalDNS造成的用戶訪問異常可以歸為下三類:

(1)域名緩存:

域名緩存很好理解,比如LocalDNS緩存了騰訊的域名的解析結果,不向騰訊權威DNS發(fā)起遞歸,示意圖如下:

為何LocalDNS要把域名解析結果進行緩存呢?原因有以下幾個:

①保證用戶訪問流量在本網(wǎng)內消化:國內的各互聯(lián)網(wǎng)接入運營商的帶寬資源、網(wǎng)間結算費用、IDC機房分布、網(wǎng)內ICP資源分布等存在較大差異。為了保證網(wǎng)內用戶的訪問質量,同時減少跨網(wǎng)結算,運營商在網(wǎng)內搭建了內容緩存服務器,通過把域名強行指向內容緩存服務器的IP地址,就實現(xiàn)了把本地本網(wǎng)流量完全留在了本地的目的。

②推送廣告:有部分LocalDNS會把部分域名解析結果的所指向的內容緩存,并替換成第三方廣告聯(lián)盟的廣告。

這種類型的行為就是我們常說的域名緩存,域名緩存會導致用戶產(chǎn)生以下的訪問異常:

A、僅對80端口的http服務做了緩存,如果域名是通過https協(xié)議或其它端口提供服務的,用戶訪問就會出現(xiàn)失敗。比如支付服務、游戲通過指定端口連接connect server服務等。

B、緩存服務器的運維水平參差不齊,時有出現(xiàn)緩存服務器故障導致用戶訪問異常的問題。

(2)解析轉發(fā):

除了域名緩存以外,運營商的LocalDNS還存在解析轉發(fā)的現(xiàn)象。解析轉發(fā)是指運營商自身不進行域名遞歸解析,而是把域名解析請求轉發(fā)到其它運營商的遞歸DNS上的行為。正常的LocalDNS遞歸解析過程是這樣的:

而部分小運營商為了節(jié)省資源,就直接將解析請求轉發(fā)到了其它運營的遞歸LocalDNS上去了:

這樣的直接后果就是騰訊權威DNS收到的域名解析請求的來源IP就成了其它運營商的IP,最終導致用戶流量被導向了錯誤的IDC,用戶訪問變慢。

(3)LocalDNS遞歸出口NAT:

LocalDNS遞歸出口NAT指的是運營商的LocalDNS按照標準的DNS協(xié)議進行遞歸,但是因為在網(wǎng)絡上存在多出口且配置了目標路由NAT,結果導致LocalDNS最終進行遞歸解析的時候的出口IP就有概率不為本網(wǎng)的IP地址:

?

這樣的直接后果就是GSLB DNS收到的域名解析請求的來源IP還是成了其它運營商的IP,最終導致用戶流量被導向了錯誤的IDC,用戶訪問變慢。

2、現(xiàn)有的解決方案及存在的問題:

運營商的LocalDNS解析域名異常,給對用戶訪問騰訊業(yè)務的體驗造成了非常大的損害。那么我們是如何處理這些域名解析異常的問題的呢?

(1)繞過自動分配DNS,使用114dns或Google public DNS:

這個方案看上去很美好,114dns是國內最大的中立緩存DNS,而Google又是秉承不作惡理念的互聯(lián)網(wǎng)工程帝國巨鱷,而且騰訊的權威DNS又支持edns-client-subnet功能,能直接識別使用Google publicDNS解析騰訊域名的用戶的IP地址,不會出現(xiàn)流量調度失效。但是問題來了:

①如何在用戶側構造域名請求:對于PC端的客戶端來說,構造一個標準的DNS請求包并不算什么難事。但在移動端要向一個指定的LocalDNS上發(fā)送標準的DNS請求包,而且要兼容各種iOS和android的版本的話,技術上是可行的,只是兼容的成本會很高。

②推動用戶修改配置極高:如果要推動用戶手動修改PC的DNS配置的話,在PC端和手機客戶端的WiFI下面還算勉強可行。但是要用戶修改在移動互聯(lián)網(wǎng)環(huán)境下的DNS配置,其難度不言而喻。

(2)完全拋棄域名,自建connectcenter進行流量調度:

如果要采用這種這種方案的話,首先你就得要拿到一份準確的IP地址庫來判斷用戶的歸屬,然后再制定個協(xié)議搭個connect center來做調度,然后再對接入層做調度改造。這種方案和2種方案一樣,不是不能做,只是成本會比較高,尤其對于騰訊這種業(yè)務規(guī)模如此龐大的公司而言。

3、利用HttpDNS解決用戶域名解析異常:

既然上面的方案都存在那么多的問題,那有沒有一種調度精準、成本低廉、配置方便的基于域名的流量調度系統(tǒng)呢?答案是肯定的。騰訊公司的GSLB 團隊推出了一種全新的域名解析調度系統(tǒng):HttpDNS。HttpDNS是為移動客戶端量身定做的基于Http協(xié)議和域名解析的流量調度解決方案,專治LocalDNS解析異常以及流量調度不準。詳細介紹如下:

(1)HttpDNS基本原理:

HttpDNS的原理非常簡單,主要有兩步:

A、客戶端直接訪問HttpDNS接口,獲取業(yè)務在域名配置管理系統(tǒng)上配置的訪問延遲最優(yōu)的IP。(基于容災考慮,還是保留次選使用運營商LocalDNS解析域名的方式)

B、客戶端向獲取到的IP后就向直接往此IP發(fā)送業(yè)務協(xié)議請求。以Http請求為例,通過在header中指定host字段,向HttpDNS返回的IP發(fā)送標準的Http請求即可。

(2)HttpDNS優(yōu)勢:

從原理上來講,HttpDNS只是將域名解析的協(xié)議由DNS協(xié)議換成了Http協(xié)議,并不復雜。但是這一微小的轉換,卻帶來了無數(shù)的收益:

①根治域名解析異常:由于繞過了運營商的LocalDNS,用戶解析域名的請求通過Http協(xié)議直接透傳到了騰訊的HttpDNS服務器IP上,用戶在客戶端的域名解析請求將不會遭受到域名解析異常的困擾。

②調度精準:HttpDNS能直接獲取到用戶IP,通過結合騰訊自有專利技術生成的IP地址庫以及測速系統(tǒng),可以保證將用戶引導的訪問最快的IDC節(jié)點上。

③實現(xiàn)成本低廉:接入HttpDNS的業(yè)務僅需要對客戶端接入層做少量改造,無需用戶手機進行root或越獄;而且由于Http協(xié)議請求構造非常簡單,兼容各版本的移動操作系統(tǒng)更不成問題;另外HttpDNS的后端配置完全復用現(xiàn)有權威DNS配置,管理成本也非常低。總而言之,就是以最小的改造成本,解決了業(yè)務遭受域名解析異常的問題,并滿足業(yè)務精確流量調度的需求。

④擴展性強:HttpDNS提供可靠的域名解析服務,業(yè)務可將自有調度邏輯與HttpDNS返回結果結合,實現(xiàn)更精細化的流量調度。比如指定版本的客戶端連接請求的IP地址,指定網(wǎng)絡類型的用戶連接指定的IP地址等。

?

四、客戶端實現(xiàn)HttpDNS:

目前國內有一部分廠商已經(jīng)提供了這個解析服務,我們可以使用它們的服務,也可以使用自建服務器進行中轉,至于自建服務器上如何實現(xiàn),是調第三方呢還是自己去解析呢屬于服務器的事,對于客戶端來說是完全透明的。這篇文章主要是為了學習,為了方便起見,我們直接使用第三方服務。目前,提供httpdns解析服務的有:阿里云HttpDNS、DNSPod D+

無論是哪個api,都是直接調用它們暴露的RestFul?api獲得解析結果,阿里云的HttpDNS服務的api比較標準,直接發(fā)一個Get請求,帶上請求參數(shù),返回結果以json返回。比如:

http://203.107.1.1/d?host=www.taobao.com&ip=42.120.74.196

請求成功時,返回結果如下:

{"host": "www.taobao.com","ips": ["115.238.23.241","115.238.23.251"],"ttl": 57 }

而DNSPod的API基本上和阿里云的沒什么差別,只不過返回結果不是以json返回,而是直接返回ip地址。舉個例子:

http://119.29.29.29/d?dn=www.dnspod.cn&ip=1.1.1.1&ttl=1

請求成功則返回ip地址,但不是json格式,如果存在ttl=1,則以逗號分隔

59.37.116.101,60

?

總結

以上是生活随笔為你收集整理的HttpDNS介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。