在上篇文章中([計算機網路] dns 協議),介紹了 dns 協議,它主要做兩個功能:根據名稱查到具體的位址;針對多個位址做負載均衡,而且可以在多個位址中選擇乙個距離我最近的地方,讓我訪問.
看起來這種方式無懈可擊,但其實也有些問題.
傳統 dns 存在的問題
1 ,網域名稱快取問題:
客戶端想要訪問乙個**的時候,其實它首先是去看本地的快取裡面有沒有這個位址,如果有就直接訪問,如果沒有才會去詢問上級領導.
但是這個時候就會有個問題:比如在你上高中的時候,你知道學校旁邊有個超好吃的店,後來你再想吃的時候,想都沒想,直接去了那家店,結果發現人家關門了,你會不會非常失望?本地快取也會出現這個問題,有的時候那個位址已經換掉了,但是因為本地快取中有原來的位址,所以不會向上一級詢問,將你導向原來的位址,結果就是訪問不到介面,由此帶來的使用者體驗不是很好.
還有個問題:假設我在北京海淀區,**的應用因為某種原因沒有在海淀區設定資料中心,然後我訪問的時候,一直都是將我的訪問請求傳送到朝陽區.後來呢,**在海淀區增加了資料中心,但是當我訪問的時候,本地快取依舊會將我的請求,導向到朝陽區那邊,這樣造成的結果就是: 1 ,對於客戶來說,讓他繞遠路了.明明乙個區域就可以解決的事情,偏偏要跨區域.就像明明在這裡可以買到東西,偏偏讓你跑到另外的地方去買,你開心嘛? 2 ,對於商家來說,也就是**,我設定了新的資料中心,結果呢,客戶的請求沒能到這裡,那我還費錢費力的去做這件事幹嘛?又沒有提高使用者的體驗,對不對.
2 ,出口 nat 問題:
在閘道器那裡,很多機房都會在出口配置 nat ( network address translation ),即:網路位址轉換.
也就是說,從這個閘道器出去的包,都會換成新的 ip 位址,當請求返回的時候,在閘道器這裡,再將 ip 位址轉換回去,這樣造成的結果就是,權威的 dns 伺服器,沒辦法通過這個位址,來判斷使用者到底是來自哪個運營商,而且極有可能因為誤判運營商,導致跨運營商訪問,從而導致網速極慢.
3 ,解析延遲問題:
dns 的查詢過程,需要遞迴遍歷多個 dns 伺服器,才能得到最終的解析結果,這會帶來一定的時延,甚至是解析超時.
httpdns 的工作模式
dns 解析有很多問題,那怎麼辦呢?再回到最初的起點:直接 ip 位址?顯然不合適啊.
這就引出了 httpdns .說白了就是,它不走傳統的 dns 解析,而是走自己搭建基於 http 協議的 dns 伺服器集群.這些集群分布在多個地點,當客戶端需要 dns 解析的時候,直接通過 http 協議進行請求這個伺服器集群,就可以得到最近的位址.
這樣做就相當於每個客戶端都是基於 http 協議的,自己實現自己的網域名稱解析,自己做乙個自己專屬的位址簿,而不是使用統一的位址簿.但是預設的網域名稱解析都是走 dns ,所以如果想要使用 httpdns 的話,就需要繞過預設的 dns 路徑,這樣就不能使用預設的客戶端.
使用 httpdns 的,一般都是手機應用,所以只需要在手機端嵌入支援 httpdns 的客戶端 sdk 就 ok 了.這樣就可以通過自己的 httpdns 伺服器和相關的 sdk ,實現了從依賴別人,到自己上網查詢,自己想去哪兒去哪兒,想幹什麼幹什麼,豈不是快哉~
httpdns 工作模式具體可以描述如下:當手機要訪問乙個位址的時候,我會先看本地快取裡面有沒有,如果有就直接訪問,這個快取是手機應用自己做的,至於如何更新,何時更新,那是手機應用的客戶端的事情;如果沒有的話呢,就需要請求 httpdns 伺服器,在本地 httpdns 伺服器的 ip 列表中,選擇乙個發出 http 的請求,會返回乙個要訪問的**的 ip 列表.因為是直接的 http 通訊,所以 httpdns 伺服器能夠準確知道這些資訊,所以可以做到精準的全域性負載均衡.
寫到這裡,這篇文章想要表達的是兩點:
1 ,傳統的 dns 有很多問題:比如網域名稱快取問題,出口 nat 問題,解析延遲問題
2 ,為了解決上述問題, httpdns 通過客戶端 sdk 和服務端,通過 http 的形式,直接呼叫解析 dns 的方式,繞過了傳統的 dns 的這些缺點,從而實現了智慧型的排程.
計算機網路 協議
網路檔案服務 在nfs的應用中,本地nfs的客戶端應用可以透明地讀寫位於遠端nfs伺服器上的檔案,就像訪問本地檔案一樣。snmp network management protocol 簡單網路管理協議 能夠使網路管理員提高網路管理效能,及時發現並解決網路問題以及規劃網路的增長 smtp mail ...
計算機網路 計算機網路7層協議
人與人交流需要協議,例如使用同一語言,或者對方能明白的其他肢體語言 人與機器交流也需要協議,例如需要通過滑鼠或者鍵盤輸入,機器給予特定的輸出,例如列印執行某個程式 機器與機器交流更需要協議,計算機網路是由一系列的協議構成的,osi open system interconection 是開放型系統互...
計算機網路 網路協議
網路體系結構的產生 osi是什麼?osi的七層體系結構是怎樣的?presentation,to tanslate encrypt and compress 壓縮 data.第六層表示層,提供格式化的表示和轉換資料服務,解決上一層使用者資訊的語法表示問題,對資料進行壓縮 格式轉換 加密和解密等工作,並...