• local dns (local name server)是客户端网络设置的一部分,要么是手工配置,要么从DHCP得到。一般local dns 在从网络上靠近客户端。

  • 主要的域,比如.com .net .org 等,都由Internet管理方进行管理维护,负责这些域的服务器也叫"根服务器", 根服务器里面有 foo.com 之类的子域,每个子域有一个或者多个服务器,这就是子域的权威服务器(授权DNS服务器)。

  • 授权DNS服务器存储对于管理一个域名的重要信息,同时一个域名可以分为多个Zone,个Zone可以有各自的授权DNS,称为Zone of Authority(ZOA). 比如a.foo.com b.foo.com 可以有各自的ZOA

  • 可以有一个或者多个授权DNS服务器,但是只有一个 primary authoritative DNS 负责分发域名name space的信息。

迭代查询和递归查询:

迭代查询:服务器可以回答确切答案,或者告知查询者其他可能知道答案的服务器。

递归查询:服务器必须回答确切答案,假如自己不知道,就要通过查询其他服务器得到答案。

客户端的DNS解析器一般无法处理迭代的回答,所以查询localDNS一般使用递归方式。服务器DNS解析器可以回答迭代或者递归查询,也可以发出递归或者迭代查询。

典型DNS查询流程:

local dns_第1张图片

1. 客户端向local dns查询 www.foo.com,注意这是递归查询

2.3. local dns 向 root name servers  查询 .com 的name server. 这里采用迭代方式。

4.5. local dns 向 .com 的 name server 查询 foo.com 的授权dns

6.7. local dns 向 foo.com 的授权dns得到 www.foo.com 的ip list

8.    local dns 将 www.foo.com 的一个ip返回给客户端

9.    客户端访问 ip 指向的服务器


Local DNS Caching

DNS 信息有一个TTL消息, local dns 可以cache dns reply ,过期时间就是这个ttl时间。

假如dns cache信息过期,local dns 向授权dns服务器重新请求。

假如local dns 收到的dns查询响应有多个ip 地址,对于客户端的查询,将采用round-robin策略

客户端也可以cache dns 响应,但是部分客户端忽略ttl信息而采用自己的固定dns过期时间,比如微软的IE

 

Using Standard DNS for load balancing

DNS可以做load banlancing服务,对于一个域名可以配置多个ip地址,这些ip指向load balancer的VIP或者只是一台真实服务器。但是DNS无法知道某个ip是否能否服务或者负载情况如何(这个不是绝对的,参看下面GLSB部分),毕竟 DNS 并不是为 GLSB 设计的。


原文链接http://www.cnblogs.com/peon/archive/2007/12/30/1021219.html

其它:http://zhidao.baidu.com/link?url=uDbUSnQKyG6jClc_YgL_NDfC8vvTYGTfxTfPj6F4n0dv9c5G8C-Qnpxd14owS73asYOoFmTnDWsBy_wL4MO2Tq


DNS(Domain Name System),域名解析系统,是由美国伯克利大学开发。简单的说它的主要应用就是完成由域名到IP的解析。在互联网发展的早期,人们通过将IP写入/etc/hosts这个文件就可以完成相互之间的访问。但是后来互联网的快速发展使这种方式很快淘汰,因为谁都无法容忍把全世界的所有IP都写在一个文件并且放在自己的机器上所带来的后果。先来看看几个重要的概念吧!

  FQDN(Fully Qualified Name):完整域名,又叫完全合格域名,见名知意,比如“”,注意,末尾还有一个"."。

  域:域是域名空间的一个子树。域的名字就是这个子树顶部节点的域名。一个域又可以划分为很多个子域。

  区:一个服务器所负责的或者有权限的范围。当一个域没有子域的时候,域和区就是一样的了。

  正解:由域名查IP,一般情况下都是这种方式。

  反解:由IP查域名。

  

  DNS的原理:比如客户机A:

               服务器B:ev.ncku.edu.cn.

               服务器C:ncku.edu.cn. 

               服务器D:edu.cn.

               服务器E:.cn.

               根服务器:F:.

  从上到下,可以把下面的看作上面的域名服务器,且每个服务器只对自己区内的机器提供服务。比如edu.cn.为ncku.edu.cn.提供服务,也可能为xxx.edu.cn.提供服务,但是绝不会去管ev.ncku.edu.cn.,那是ncku.edu.cn.的事情了。

  当机器G(不和A在一个区内,若在那就太简单了。)要访问A时,它把A的名字提供给自己的域名服务器H,若这个服务器H的缓存中直接有A的IP地址(一般缓存会存放24小时),它直接就把A的IP地址返回给请求者G,若没有它就会去请求别的服务器。这个过程也就是递归解析,域名解析的两种方式之一。假设缓存中没有A的IP,在这个例子中,H就会去访问F这个根服务器。但是F中依然没有H需要的信息,可它会告诉H,你可以去E处试试,并且把E的地址给H同理,E处依然没有啊,于是又以类似的方式处理。直到H找到B,这时候B发现A在自己的区内,所以它把A的IP地址返回给H。这种解析方式就叫做迭代解析,DNS的第二种解析方式。最后H再把A的IP给G,并且存入自己的缓存。G按照这个IP就找到了A,当然这是正解的情况。

  在正解的情况下,DNS是分层的。但是每一层中的机器的IP可以是不同网段的。反解则不行,它每一层的IP必须是一个网段的。

  DNS的这种工作方式是非常完美的。因为假如主机A要修改自己的名字,它只需要合法的在B中修改自己IP和名字的对应就OK了,其他人依然可以顺利的找到它。这种工作方式很高效,安全。当然安全的前提是有一个slave服务器哦!