本地DNS服務(wù)器的作用

轉(zhuǎn)自:http://blog.chinaunix.net/uid-401789-id-2407919.html

什么是Dns本地化?Dns本地化是指在個人計算機上建立小型的dns服務(wù)器,以供該個人計算機使用。

那么本地化Dns的意義何在?

我們先來說說互聯(lián)網(wǎng)上Dns所處的地位。

我們都知道現(xiàn)在的互聯(lián)網(wǎng)上,域名是重要的組成部分之一。個人用戶上網(wǎng)需要對于大量域名的訪問。對于域名的服務(wù)一般由各地的ISP服務(wù)商提供2-4個Dns域名服務(wù)器,供本地的上網(wǎng)者使用。

這就形成了這樣一個局面:上網(wǎng)的人很多,而實際服務(wù)的Dns服務(wù)器很少。

這種局面的形成與多方面有關(guān)。

一方面:Dns服務(wù)器的負載壓力比較小(Dns查詢采用UDP協(xié)議,每個Dns包的大小都比較小),所以單臺Dns服務(wù)器在正常情況下可以給相當多的用戶提供服務(wù)。

另一方面:Dns服務(wù)器本身只是提供一種單純的服務(wù),這個服務(wù)對于各個ISP服務(wù)商來說基本沒有盈利的能力。配置很多臺Dns服務(wù)器也沒有意義。

所以,在國內(nèi),實際可以使用的Dns服務(wù)器就相當少(相對于上網(wǎng)用戶數(shù)來說)。

在幾個月之前,國內(nèi)發(fā)生了兩次斷網(wǎng)事件,都是由于Dns服務(wù)器被大流量訪問壓垮的原因。Dns服務(wù)器是互聯(lián)網(wǎng)的一大弱點,在很早以前大家就都認識到了,可是這個架構(gòu)已經(jīng)形成,很難對這個架構(gòu)進行改革。

那么現(xiàn)在,我們將Dns服務(wù)本地化。也就是說,當用戶訪問一個域名時,他最先訪問的是自己機器上的Dns服務(wù)器,由本地提供該域名的解析,這樣就將原來的缺少Dns服務(wù)器的局面完全改變。甚至于可以入手對域名體系結(jié)構(gòu)進行改革。

由于本地化的Dns服務(wù)器是新編寫的,這就可以實現(xiàn)許多新的功能,從而產(chǎn)生商業(yè)價值。

那現(xiàn)在說一下Dns本地化的具體實現(xiàn)。

我們的本地Dns服務(wù)都要實現(xiàn)哪些功能:

1.本地Dns查詢發(fā)送到本地Dns服務(wù)器,然后本服務(wù)器先查找本地緩存,查找不到相應(yīng)數(shù)據(jù)的話再去特定的dns服務(wù)器上取回相應(yīng)的結(jié)果,然后發(fā)送給本地請求端。

2.dns緩存功能。當取回一條dns記錄后,本地緩存。本地的Dns查詢都從本地直接取得。

3.從新構(gòu)造Dns數(shù)據(jù)包,將原來復雜的Dns數(shù)據(jù)包(例如:當查詢www.google.com時,返回的數(shù)據(jù)包包含一個CNAME記錄,多個A記錄,還有很多其他部分,而實際我們使用的一般就是第一個A記錄,所以本地Dns服務(wù)器返回給本地客戶端時將其他記錄都去掉,只保留一個A記錄,減少本地客戶端的解析工作)。

4.定時更新dns數(shù)據(jù)的功能。每3分鐘檢查一次,所有超過1個小時以上的Dns數(shù)據(jù)再自動更新,更新成功后去掉原來的數(shù)據(jù),更新不成功則繼續(xù)保留原來的數(shù)據(jù)。

5.dns查詢統(tǒng)計功能。統(tǒng)計每個域名被查詢的次數(shù)。

6.本地返回A記錄時,從本地緩存數(shù)組中隨機選取一個,這樣實現(xiàn)Dns的動態(tài)負載平衡。

7.dns數(shù)據(jù)定時記錄到本地,當下次該軟件啟動時,可以直接取回Dns數(shù)據(jù)。

Ok,這就完成了一個基本的本地化Dns服務(wù)器的功能。上述功能,在我的Dns_server程序第二版中都已經(jīng)實現(xiàn)。

讓我們看看實際應(yīng)用以后的表現(xiàn)。

測試環(huán)境:操作系統(tǒng):winxp 硬件:AMD雙核 2G內(nèi)存 網(wǎng)速:3M adsl

我們的官方Dns服務(wù)器地址:202.102.152.3

通過抓包獲取到:

1.當測試機器的帶寬充足的時候:

到202.102.152.3,每個Dns查詢的時間平均為:0.0250秒

到127.0.0.1,每個Dns查詢時間平均為:0.0016秒

2.當測試機器的帶寬不充足的時候(有大量的下載占用了80%的帶寬):

到202.102.152.3,每個Dns查詢的時間平均為:0.1482秒

到127.0.0.1,每個Dns查詢時間平均為:0.0016秒

也就是說,本地化Dns比原先的速度快了最少是15倍,而當網(wǎng)絡(luò)繁忙時快了約90倍。

那每次訪問網(wǎng)站,拿網(wǎng)易,搜狐與新浪三個網(wǎng)站來說(瀏覽器為ie 7.0 ,firefox 3.0):

新浪網(wǎng)每次訪問主頁需做:30次Dns查詢 30*0.0250=0.75秒(使用官方的服務(wù)器,帶寬足) 30*0.1482=4.4秒(使用官方的服務(wù)器,帶寬不足) 30*0.0016=0.048秒(使用本地化Dns服務(wù)器)

網(wǎng)易每次訪問主頁需做:20次Dns查詢

搜狐每次訪問主頁需做:28次Dns查詢

結(jié)論:

這樣可以看出,使用本地化Dns服務(wù)器后,對于客戶端的上網(wǎng)來說,可以提高0.7-4秒的時間,而一次這些門戶網(wǎng)站的訪問時間總共也就20多秒,所以本地化Dns最高可以提高20%的上網(wǎng)速度,越是網(wǎng)絡(luò)帶寬不足或者質(zhì)量差,就越能體現(xiàn)本地化Dns服務(wù)器的作用。更為關(guān)鍵的是,本地化Dns服務(wù)器可以保證整個上網(wǎng)過程的平穩(wěn)與無故障。這些特點對于用戶來說是有實際意義的。Google的Chrome瀏覽器通過預先進行Dns查詢來提高瀏覽器的性能,本地化Dns服務(wù)以后,對于所有瀏覽器,大家都是平等的,都可以獲得更快的網(wǎng)絡(luò)瀏覽速度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,665評論 19 139
  • 目錄: 一些基本概念主機名DNS名稱解析DNS 解析的后端存儲名稱解析總結(jié) 大規(guī)模域名解析的體系架構(gòu)DNS 解析需...
    C86guli閱讀 12,769評論 3 34
  • DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能...
    一直在努力hard閱讀 4,812評論 3 19
  • 最近,終于要把《WEB請求處理系列》提上日程了,一直答應(yīng)小伙伴們給分享一套完整的WEB請求處理流程:從瀏覽器、Ng...
    七寸知架構(gòu)閱讀 32,535評論 27 253
  • 14.1 引言 域名系統(tǒng)(DNS)是一種用于TCP/IP應(yīng)用程序的分布式數(shù)據(jù)庫,它提供主機名字和IP地址之間的轉(zhuǎn)換...
    張芳濤閱讀 2,038評論 0 8

友情鏈接更多精彩內(nèi)容