HttpDNS功能說明及實現

2021-08-28 22:03:12 字數 2988 閱讀 9990

httpdns使用http協議進行網域名稱解析,代替現有基於udp的dns協議,網域名稱解析請求直接傳送到阿里雲的httpdns伺服器,從而繞過運營商的local dns,能夠避免local dns造成的網域名稱劫持問題和排程不精準問題。

功能說明

防劫持繞過運營商local dns,避免網域名稱劫持,讓每一次訪問都暢通無阻。

精準排程

基於訪問的**ip,獲得最精準的解析結果,讓客戶端就近接入業務節點。

0ms解析延遲

通過熱點網域名稱預解析、快取dns解析結果、解析結果懶更新策略等方式實現0解析延遲

快速生效

避免local dns不遵循權威ttl,解析結果長時間無法更新的問題

降低解析失敗率

有效降低無線場景下解析失敗的比率

防劫持httpdns代替了傳統的localdns完成遞迴解析的功能,基於http協議的設計可以適用於幾乎所有的網路環境,同時保留了鑑權、https等更高安全性的擴充套件能力,避免惡意攻擊劫持行為。

精準排程

傳統網域名稱解析的排程精準性問題,本質根源在於local dns的部署和分配機制上。由於碎片化的管理方式,這些環節的服務質量同樣很難得到保障。httpdns在遞迴解析實現上優化了與權威dns的互動,通過edns-client-subnet協議將終端使用者的ip資訊直接交付給權威dns,這樣權威dns就可以忽略local dns ip資訊,根據終端使用者的ip資訊進行精準排程,避免local dns的座標干擾

dns解析0延遲:

請求方式:http get

url引數說明:

名稱是否必須

描述host

必須要解析的網域名稱

ip可選

使用者的**ip,如果沒指定這個引數,預設使用請求連線的源ip

請求示例:

考慮到服務ip防攻擊之類的安全風險,為保障服務可用性,httpdns同時提供多個服務ip,當某個服務ip在異常情況下不可用時,可以使用其它服務ip進行重試。

請求成功時,http響應的狀態碼為200,響應結果用json格式表示,示例如下:

請求失敗的響應示例:

錯誤碼列表如下:

錯誤碼http狀態碼

描述missingargument

400缺少必要引數

invalidhost

400網域名稱格式不合法

methodnotallowed

405不支援的http方法

internalerror

500服務端內部錯誤

錯誤處理

異常下的出錯相容邏輯,主要包括非同步請求,重試,降級

非同步請求

訪問httpdns服務時,應該使用非同步請求的策略,避免解析延遲太大而對業務造成影響,特別是在網路環境異常或httpdns服務ip異常不可

用時,如果用同步訪問,需要等待網路超時後才會返回解析失敗,這個超時時間較大,可能對業務的使用體驗造成很大影響。

非同步請求策略:解析網域名稱時,如果當前快取中有ttl未過期的ip,可直接使用;如果沒有,則立刻讓此次請求降級走原生localdns解析,同

時另起執行緒非同步地發起httpdns請求進行解析,更新快取,這樣後續解析網域名稱時就能命中快取。

重試

訪問httpdns服務解析網域名稱時,如果請求httpdns服務端失敗,即http請求沒有返回,可以進行重試。

大部分情況下,這種訪問失敗是由於網路原因引起的,重試可以解決。

降級

不管是因為什麼原因,當通過httpdns服務無法獲得網域名稱對應的ip時,都必須降級:使用標準的dns解析,通過local dns去解析網域名稱。
okhttp預設使用系統dns服務inetaddress進行網域名稱解析,但同時也暴露了自定義dns服務的介面,通過該介面我們可以優雅地使用httpdns。

okhttp暴露了乙個dns介面,通過實現該介面,我們可以自定義dns服務:

//如果返回null,走系統dns服務解析網域名稱

return dns.system.lookup(hostname);

}}建立okhttpclient物件,傳入okhttpdns物件代替預設dns服務:

}相比於通用方案,okhttp+httpdns有以下兩個主要優勢:

實現簡單,只需通過實現dns介面即可接入httpdns服務

通用性強,該方案在https,sni以及設定cookie等場景均適用。規避了證書校驗,網域名稱檢查等環節

基於nsurlprotocol可攔截ios系統上基於上層網路庫nsurlconnection/nsurlsession發出的網路請求;

通過以下介面註冊自定義nsurlprotocol,用於攔截上層網路請求,並建立新的網路請求接管資料傳送、接收、重定向等處理邏輯,將結果反饋給原始請求。

[nsurlprotocol registerclass:[customprotocol class]];
自定義nsurlprotocol處理過程概述:

Wireshark功能說明

1.深入檢查數百種協議,並且不斷新增更多協議 2.實時捕獲和離線分析 3.標準三窗格包瀏覽器 4.多平台 在windows,linux,macos,solaris,freebsd,netbsd和其他許多平台上執行 5.可以通過gui或通過tty模式tshark實用程式瀏覽捕獲的網路資料 6.業界最強...

ORACLE功能GREATEST功能說明具體例項

1語法 greatest expr 1,expr 2,expr n 2說明greatest expr 1,expr 2,expr n 函式從表示式 列 常量 計算值 expr 1,expr 2,expr n 等中找出最大的數返回。在比較時。oracie 會自己主動按表示式的資料型別進行比較,以 ex...

Asterisk功能說明及基本呼叫流程

asterisk功能說明及基本呼叫流程 1.asterisk內部核心 共分為6個部分 a.pbx核心交換模組 b.排程和io管理模組 c.應用呼叫模組 d.編碼轉換模組 e.動態模組載入器模組 f.cdr生成模組 即時呼叫詳細記錄報告 2.asterisk基本呼叫流程 1 通過asterisk的乙個...