根據客戶端IP地址,通過DNS解析合適的服務器IP

DNS基本概念:

DNS是屬於應用層的協議,因爲網絡通信是要採用IP地址來進行通信的,但人類對於這些IP地址不容易記住。於是乎就使用方便記住的域名來進行訪問網站。而DNS就是進行域名與IP地址轉換的。可以稱爲網絡世界的地址薄。

域名系統的概念:

域名系統(Domain Name System縮寫DNS,Domain Name被譯爲域名)是因特網的一項核心服務,它作爲可以將域名IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。

域名的分配和管理:

域名由因特網域名與地址管理機構(ICANN,Internet Corporation for Assigned Names and Numbers)管理,這是爲承擔域名系統管理、IP地址分配、協議參數配置,以及主服務器系統管理等職能而設立的非盈利機構。

頂級域名:

1  國家地區頂級域名:中國(cn) 日本(jp) 

國際頂級域名: 工商企業的 .com,表示網絡提供商的 .net,表示非盈利組織的 .org等

新頂級域名(New gTLD): 用的.xyz、代表“高端”的.top、代表“紅色”的.red、代表“人”的.men等一千多種

二級域名:域名的一條記錄,類似與www.alidiedie.com是頂級域名,*.alidiedie.com的域名全部稱作是alidiedie.com的二級域名

類推下去可以獲得三級域名,四級域名。。。。

DNS解析流程:

1 假設你從瀏覽器訪問www.baidu.com的網站,首先DNS會從本地的HOSTS文件看是否緩存裏該映射,如果有,則直接返回對應的IP地址。

2 如果第一步本地的HOSTS文件沒有緩存,則訪問本地DNS(全世界只有13臺根域名服務器好像是錯誤的)本地DNS服務器,如果你在網絡連接裏面設置了固定的DNS服務器(如google的8.8.8.8)則爲該設置的服務器地址,如果自動分配,則是ISP運營商分配的地址。如果設置了轉發模式則向上一級DNS服務器請求,如果沒有則繼續往下走

3 繼續從根域名服務器當中找到一臺請求,然後根域名服務器返回了負責管理該(這裏是.com)頂級域名的權威服務器.

4 請求權威服務器,該權威服務器返回對應域名的服務器IP(baidu.com)

5 請求(baidu.com)的服務器,返回對應域名的IP地址,但百度的有關cname,處理有點不同

6 向根域名服務器請求cname

7 向.com權威服務器請求cname

8 向shifen.com請求

9 向a.shifen.com域請求

10 拿到www.a.shifen.com的IP

11 localdns返回本機www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP

DNS存在的問題:

1 域名緩存問題:因爲有緩存,並不會每次都從權威服務器獲取IP地址,直接從本地返回了,那麼假設服務器換地址了,但是緩存沒更新,訪問就出錯了。運營商因爲節省成本會緩存靜態資源,那麼當你也沒更新的時候,很多老用戶因爲緩存的關係,還是繼續訪問的老的頁面。本地的緩存也可能會導致全局負載均衡失效,比如我先在深圳訪問了某個網站,但我跑到上海的時候,因爲本地緩存的問題,返回的可能還是廣東的服務器IP地址,就不能訪問離客戶最近的服務器地址。

2 域名轉發問題:假設我是A運營商的客戶,那麼訪問網站的時候,向訪問A運營商的DNS服務器發起請求,如果A去權威DNS查詢的話,權威服務器會返回離A運營商近的IP地址,那麼客戶訪問就快了。但是如果A運營商只是轉發,把請求轉發給你B,那麼權威服務器就會返回離B最近的服務器地址,客戶訪問就慢了。

3 出口NAT問題:很多機房會配置網絡地址轉換,對應訪問來說是沒有問題的,但是由於地址轉換了,權威服務器不能判斷是哪個運營商,誤判運營商,就會導致跨運營商的訪問。

4 域名更新問題:權威DNS服務器解析變更的時候,由於各個地區,各個運營商是獨立部署服務器的,解析結果在全網生效的時間非常長,但是比如 雙機房部署的時候,跨機房的負載均衡和容災多使用DNS來做,這就出問題了。

5 解析延遲問題:DNS查詢是遞歸查詢,可能需要遍歷多個DNS服務器,會造成很大的延遲問題。

傳統的DNS由於這些問題,所以出現了採用HTTP請求獲得IP地址的方式替換傳統的基於UDP和TCP的DNS查詢,一條HTTP請求就將IP地址請求下來。叫做HTTPDNS。

HTTPDNS的服務器一般採用集羣分佈式部署,因爲必須要做到高可用。在具體實現的時候因爲要加快訪問速度,要設計服務器和客戶端的緩存策略。因爲解析是全部掌握在自己的手上,可以根據自己的業務需求設計緩存策略(過期時間,更新時間)。同時,手機客戶端是知道手機現在是在哪個運營商,哪個地址的,所以我們可以根據客戶端的信息,在HTTPDNS服務器上通過採集到的信息,考慮錯誤率,請求時間,服務器壓力,網絡狀況等多個情況,綜合考慮選擇一個客戶訪問最快的節點返回給客戶端。客戶端得到該IP地址後就可以進行訪問了。當然傳統的DNS還是要保留的,當自己的HTTPDNS服務器出問題的時候,慢總比不能訪問強。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章