DNS详解

DNS是Domain Name System(域名系统)的简称。有人认为DNS就只是把域名转换为IP地址,其实DNS还包括对域名的管理。

DNS有两大部分,是服务端和客户端。服务端称为Name Server(名字服务器),客户端称为Resolver(解析器)。

Name Server采用树状层次结构组织。比如www.baidu.com,com是根域,baidu.com是com的子域,而且是顶极域名。同样地,www.baidu.com是baidu.com的子域。如果该域名和IP地址绑定在一起,就是一个授权的名字服务器。

客户端Resolver是把域名解析为IP地址的功能,所以其实我们的PC一般都是直接连的是Resolver,而不会是Name Server。Resolver获得Name Server上的地址分为两个步骤,首先要确定哪一台Name Server有需要的映射,其次就是请求IP地址。第二步是很简单的,但是第一步就不是很容易。如果不考虑缓存的话,有两种方法。第一种是“iterative”(迭代),需要Resolver自己一层一层去获得。第二种方法是“Recursive”(递归),就是由上游的Name Server帮忙查。通常第二种方法不会出现在根域,因为这样对服务器消耗太大了。但是很可能出现在某一级的Name Server上,也就是说两种方法是可以一起用的。

那么我们的电脑到底是怎么连的呢,我们的电脑通常要设置DNS服务器,实际上设置的是Local Name Server(通常是ISP的),实际上它既是DNS服务器,但如果它自己没有该条目,也充当Resolver,我们自己的电脑也是Resolver,所以一般就是两层Resolver的结构。ISP的Local Name Server是一个中间的角色,通常没有下一层的Resolver了。

最后看一个例子。

  1. 比如查询www.baidu.com,首先检查本机Cache。
  2. 没有的话查询设置的DNS服务器,比如电信的DNS服务器,也是检查Cache。
  3. 假设还是没有,电信的DNS服务器就要用iterative或者recursive方法查询Name Server。
  4. 获得IP地址后,先加入缓存,并且返回结果。
  5. 最后本机获得IP地址,当然也会缓存。
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s