对于DNS简单总结中的图:
首先,比如说要访问www.linkingcloud.com,第一步是从DNS服务器解析该域名的IP地址,然后再进行访问。解析大致过程如上图所示。从客户端开始分析:
1. 解析器
解析器位于客户端中,一般有默认设置。一般允许用户设置:本地域名domain、搜索列表search、解析器查询的本地名字服务器地址nameserver,选择地址优先级sortlist。具体配置不详细介绍,一般来说默认即可?
2. 本地名字服务器
递归查询将大部分的解析负担置于一个名字服务器上。递归或递归解析(recursive resolution)指的是名字服务器在收到递归查询时所使用的解析过程。正如编程中的递归算法,名字服务器只重复一个简单的过程(向远程名字服务器提出查询,再遵照指示)直到收到结果。
处理递归查询的名字服务器可能需要发送好几个查询才能找到结果。缓存这些名字服务器是哪些区的权威,也知道这些服务器的地址。
因此本地服务器先查询是否对查询域名有直接的权威,比如说,本地服务器就是区linkingcloud.com.的名字服务器,则直接返回结果。否则查询本地名字服务器是否有缓存,存储有www.linkingcloud.com则直接返回,或者存储有查询过linkingcloud.com域的缓存,则直接查询linkingcloud.com.的名字服务器,或者存储有com.的缓存也同理。
若没有其他信息,则依次查询根目录。
3. 各级名字服务器
对于同一个区的名字服务器来说首先分为主名字服务器和辅名字服务器,主名字服务器是从文件信息中获取信息,可以进行修改,辅名字服务器从主名字服务器获取信息。
(如对于根目录来说,全球有13个根目录名字服务器)
以com域为例,首先存在若干名字服务器,假设名字为ns1.com、ns2.com…每一个名字服务器都是该区的权威。
每个服务器上首先包含一个配置文件:named.conf。一般包含option、zone。内容大致如下:
options{
directory"/home/liuxiaokai/cloudin/bind/bind";
forwarders {
8.8.8.8;
};
listen-on port 53 { any ; } ;
};
zone"." in{
type hint;
file "db.root";
};
zone"0.0.127.in-addr.arpa" in{
type master;
file "db.0.0.127";
};
…
其中每个zone中对应的是一个区数据文件夹的路径。(可以是相对路径也可以是绝对路径)
区数据文件分为两种,一种是从域名到IP的解析,一种是从IP到域名的解析。区文件配置如下:
$TTL 604800 ;TTL纪录
com. IN SOA ns1.com. admin.com. ( ;SOA纪录
2006081401
28800
3600
604800
38400
)
com. IN NS ns1.com.
com. IN NS ns2.com. ;NS纪录
localhost.com. IN A 127.0.0.1 ;从域名到IP的解析
first.com. IN A 192.168.199.1
ns1.com IN A 192……
ns2.com IN A 192……
baidu.com. IN A 192.168.199.5
second.com. IN A 192.168.199.12
linkingcloud.com. IN A 168.199.1.5
ns1.linkingcloud.com. IN A ……..
third.com. IN A 192.168.199.4
IN A168.199.1.2
one.com. IN CNAME first.com.
two.com. IN CNAME second.com. ;别名
具体的缩写在这儿不进行详细描述。
对于每一项纪录不进行具体描述。
重点总结NS纪录、MX纪录。
如果访问linkingcloud.com,则直接返回其IP地址。但是若访问www.linkingcloud.com,则没有直接纪录,需要访问域linkingcloud.com. 的名字服务器,即ns1. linkingcloud.com.然后再进行查询。
NS纪录纪录每个区的权威名字服务器的信息。
服务器纪录的是区信息而不是域信息,即对于已授权出去的域,只保留一个指向该域名的指针如:ns1.linkingcloud.com.。对于区来说有多个名字服务器,一般访问最近的那个名字服务器。
MX纪录纪录邮件的访问信息。
4. 对于邮件的查询
对于邮件IP的查询,将@变为.,其后是其域名信息。也是通过DNS这套系统,只不过邮件查询的是MX信息,域名查询的是A信息。其他类似。
如区linkingcloud.com中,会用几台专用的服务器来解析邮件,假如mail. linkingcloud.com. 。则本地名字服务通过查询MX信息查询到linkingcloud.com域的名字服务器,然后该服务器将查询导向mail. linkingcloud.com.即可,过程类似。
MX纪录中有优先级。使用MX算法。
邮件收发器在决定向哪儿发送消息之前将放弃某些MX纪录。先将MX纪录按照优先级进行排序,然后查找自己所在主机的规范域名,若本地主机本身就是一个邮件交换器,则删除代表本身的那个MX纪录,以及优先级值更大的那些记录,这样保证不会向他自己或者远离目的地的方向发送。