DNS和DNS服务器

风行水上 @ 2011-11-02 23:05:20
标签:

    DNS是用来将域名解析为IP地址的服务。

    DNS的分层查询

    DNS查询采用分层次的查询结构。以本站域名"noyesno.net"为例,一个基本的DNS查询过程如下:

    1. 本机:
      1. 查询本机的DNS缓存
      2. 查询本机所指定的DNS服务器
    2. DNS服务器:
      1. 查询本机缓存
      2. 查询根域名服务器以获得".net"域名的顶级域名DNS服务器
      3. 查询"noyesno.net"域名的name server
      4. 查询name server获得相应的域名或子域名
      5. 如果要查询的域名是别名(CNAME)的话(即返回的是另一个域名而不是IP地址),重复以上步骤

    为了提高查询效率,各个查询环节广泛使用了各种缓存技术。

    上面提到的服务器从最顶层往下依次是:

    1. 根域名服务器
    2. 顶级域名服务器
    3. name server
    4. DNS服务器
      • DHCP服务器
    5. 本机
      • host文件

    TODO: host文件

    各个层次上域名服务器的商业价值

    根域名服务器显然是带有“基础公益”性质的。

    顶级域名服务器主要是出售域名。比如".com"域名多由商业公司拥有,这是一个不小的生意;".cn"这样管制重重的域名是不大受欢迎的;".tk"这样小众的域名则买家寥寥。

    Name Server是一个提供了不少可能性的地方。

    根域名服务器

    目前全球共有13台根域名服务器,名字分别为“A”至“M”。

    网络上的一个段子怎样摧毁互联网说的主要意思就是破坏这些根域名服务器。

    顶级域名服务器

    比如".com"和".net"域名的服务器是[a-m].gtld-servers.net,共13个。

    DNS服务器的指定

    本机可以手工指定想用的DNS服务器。但很多时候,本机的IP地址,包括DNS服务器都是通过DHCP服务自动获得的。

    自动获得的DNS服务器理论上应该是离本机最近的——速度最快。但实际上则可能有下面的问题:

    • 访问速度并不是最快的
    • 网络服务提供商不靠谱,所提供的DNS服务器会发生DNS劫持

    这时,就有需要手工指定相对靠谱的DNS服务器。

    免费的DNS服务器

    • Google Public DNS (国外)
      • 8.8.8.8
      • 8.8.4.4
    • OpenDNS (国外)
      • 208.67.222.222
      • 208.67.220.220
    • 114DNS (国内)
      • 114.114.114.114
      • 114.114.115.115
    • 上海联通
      • 210.22.70.3
      • 210.22.84.3

    可是太多选择即无选择,到底该用哪一个好呢。

    从速度角度讲,可以用ping命令简单测试网络延迟。

    一个开源工具namebench可以用于DNS服务器速度测试。

    国内的使用方案,综合来看,比较好的应该是:

    • 首选DNS服务器使用114.114.114.114
    • 备用DNS服务器使用服务商提供的,比如上面提到的上海联通的

    更多国内DNS服务器可以参考 http://www.114dns.com/DNS_List.html

    DNS查询的网络速度

    DNS查询的网络延时在100ms左右。慢的话,也可能达到200ms左右。

    家庭DNS设置方案推荐

    现在家庭里通常都是通过无线路由器上网,可以在无线路由器里设置DHCP服务器的DNS服务器。

    DNS服务器的选择可以参考上面的"免费的DNS服务器"

    自己装一个DNS服务器

    • dnsmasq - a DNS server software on Linux
    • Bind9 - Windows上的DNS 服务器
    标签:

      分享到:
      comments powered by Disqus

      29/37ms