移動端為什麼需要HTTPDNS

2021-09-11 11:48:38 字數 2281 閱讀 8611

dns的工作模式:

1.在一台pc上輸入 ** www.taobao.com. 此時這台電腦會發出乙個dns請求,注意這個dns請求是被發給本地dns伺服器的。

基本上本地dns伺服器如果不經過特殊設定的話,我們可以理解為你的網路提供商比如中國電信在你附近設定的乙個本地dns伺服器

2.這台中國電信的本地dns伺服器接收到這條請求以後,就會檢視自己的快取表,如果發現taobao.com這個在快取表裡有,那麼就 直接返回ip,如果沒有 就只能去根dns伺服器查詢。這裡要注意啊,根網域名稱伺服器全球就只有13臺,不負責解析dns請求,也就說 這13臺伺服器不會直接告訴你這個網域名稱的ip位址但是會告訴你去**找,類似於你找**辦事,**不會親自幫你做事,但是會 找下面的小弟來幫你解決

3.根dns伺服器收到請求以後會告訴你 去 頂級網域名稱伺服器找,然後頂級網域名稱伺服器就告訴你 你去 負責taobao.com的 權威dns 伺服器找ip吧。所謂權威dns伺服器一般都是大的頂級**自家會放乙個,所以叫權威dns伺服器,畢竟自己解析自己當然權威了, 所以最終 權威dns伺服器就會把ip 告訴你家附近的本地dns伺服器,然後本地dns伺服器就返回乙個ip位址 告訴你的電腦這個網域名稱 對應的ip是多少。

可能對於多數客戶端開發來說,對dns的理解就僅僅是通過網域名稱找ip的作用了。但其實dns的作用遠遠不止於此。dns甚至可以 做負載均衡。 還記得我們的權威dns伺服器嗎?這個地方就可以做乙個負載均衡的功能,最簡單的,收到dns請求以後, 均衡的分配不同的ip位址。甚至是返回乙個最優的ip給本地dns。所謂最優的ip當然就是 給你乙個離你家最近的ip了。

1.快取失效問題。 比方說我在南京南站吃過一次肯德基, 如果我到了南京站的這個位置還想吃肯德基,我當然會選擇南京站附近的肯德基, 沒人會選擇再跑去南京南站吃kfc吧。 本地dns伺服器就會有這個問題。

他的快取不會及時更新,就會出現上述情況。有的時候甚至他還會故意配置乙個錯的ip,用來做運營商劫持。

2.運營商偷懶**dns請求。 這個對於移動端來說也是常見的問題,比方說中國移動的基站發現這個時候壓力太大了,他就會偷懶,把這個dns請求 **給中國聯通,然後中國聯通一番操作以後查詢到你的權威dns伺服器,你的權威dns伺服器以為你是聯通的使用者 就給你乙個聯通的ip位址,但其實你是移動的使用者。你後續的訪問都會因為涉及到 運營商跨域的問題而降低介面響應速度。

3.對於在家連wifi的使用者來說還有更坑的情況。 大家都知道我們在家上網的位址都是所謂內網位址,我們與外界的訪問都是通過運營商提供的nat服務來進行的, 也就說我們在家上網的時候每次請求都會由運營商把我們的內網位址轉換成與外網連線的外網位址。這個過程叫nat. 這個nat轉換就坑爹了,他轉換過的位址不是固定的,這會導致我們的權威dns伺服器認錯,比如你明明是中國移動的寬頻使用者, nat以後,權威dns就認為這個是聯通的使用者,又返回了乙個聯通的ip節點。。。。這裡不得不吐槽長城寬頻,nat出來的位址全國飄。

4.無法做容災處理。 比方說,我現在有台伺服器ip為1.2.3.4的 server掛了,我現在權威dns伺服器發現這個問題以後我更新這個ip為1.3.5.7, 這樣新的dns請求就不會訪問這個1.2.3.4了,問題是老的使用者呢?誰也不知道運營商本地dns伺服器的更新頻率, 那這個伺服器的災備容災還咋做?沒辦法做

5.dns解析時間過長 在一些訊號差的地方,對移動使用者影響是致命的,如果本地dns查詢不到這個網域名稱的ip,他就會走一段很長的路查詢這個對應的ip, 如果訊號不穩定的話,這個遞迴遍歷查ip的過程很可能會超時甚至掛掉。

對httpdns還陌生的人,可以先去阿里雲上玩一玩這個httpdns,都有現成的android或者ios的demo。這裡不再重複說了。 大概講一下httpdns的工作原理。

1.客戶端的sdk在收到dns請求以後,會去httpdns伺服器上查詢ip。查詢到了就會把這個網域名稱和ip的對映關係儲存在本地。

這個地方可以看出來,這個快取是由sdk自己控制的跟 運營商無關了。既然是自己控制也就不存在網域名稱劫持,快取 更新不及時等問題。

2.因為查詢dns的過程是 發乙個http請求到 httpdns伺服器上,全過程可控,所以我們的httpdns伺服器當然知道 你手機的情況,你在哪,你是哪個運營商 都可以拿到你的資訊 自然可以返回你最合適的ip。

避免出現老的dns那種返回不恰當的ip的現象。這個負載均衡就基本完美。

3.老式的dns解析,如果快取沒命中要遞迴查詢太久了,我們這裡乙個http請求就完事。速度也快

至於sdk的dns本地快取策略就是你們自己和伺服器商量的事了。精準可控,選擇一套最適合你們的快取策略吧。

最後,就算使用httpdns也要做降級方案,萬一httpdns掛了我們還可以走老的dns,慢一點總比全站癱瘓強

為什麼需要使用Git客戶端?

git 是 linux torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。正如所提供的文件中說的一樣,git 是乙個快速 可擴充套件的分布式版本控制系統,它具有極為豐富的命令集,對內部系統提供了高階操作和完全訪問。git 是一款免費的 開源的 分布式的版本控制...

為什麼Web端登入需要驗證碼?

很多朋友們對於登入必然遇到的驗證碼這個事情很不理解,增加使用者操作的冗餘性,直接登入很方便,為什麼web端登入要新增個驗證碼?直到上週,一家做業務安全的公司給出我們現在web 的安全報告,我才意識到 驗證碼的本質屬性安全性,除了防止惡意破解密碼 刷票 羊毛黨 論壇灌水 爬蟲等行為外,還是使用者與 資...

為什麼需要PKI

為什麼需要pki 隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要pki,pki...