查询域名对应的ip地址经常使用两种方式:文件和dns服务器缓存
除了上面两种方式外,还有不经常使用的方式,实际上能够控制ip地址的查询顺序,在/etx/nsswitch.conf文件中,默认是以下配置;服务器
hosts: files mdns4_minimal [NOTFOUND=return] dns
有两种常见的命令查看DNS查询过程:dig和host。使用这两个命令时会自动跳过hosts文件。负载均衡
host www.baidu.com dig www.baidu.com
如今,将域名进行分解,以www.baidu.com
为例:3d
实际上后面还有一个'.'+根DNS服务器,默认不写,查询时从后往前查询。
使用'+trace'参数显示完整查询路径。
查询的方式有两种:迭代查询和递归查询。指针
在迭代查询中,首先发起请求的主机会请求本地DNS服务器,当没法解析域名是,本地DNS服务器请求根服务器。当根服务器也没法解析是,根服务器会把其它能够解析此域名的DNS服务器的ip地址返回给本地DNS服务器。本地DNS服务器再请求刚才返回的服务器,若是仍是没法解析,则请求的服务器也会返回其它的服务器ip地址。当有服务器将解析的结果返回给本地DNS服务器,本地DNS服务器再将结果返回给发起请求的主机。code
与迭代查询不一样的地方在于递归查询在DNS服务器没法解析域名时不会返回其它服务器的ip地址,而是本身向其它服务器发起请求。直到有主机能够解析该域名,而后逐级返回。server
在DNS服务器上,DNS信息经过一个叫做资源记录的格式进行保存。
经常使用的属性有:blog
NAME | CLASS | TYPE | DATA |
---|---|---|---|
www | IN | A | 192.168.1.1 |
IN | A | 192.168.1.2 | |
serverl | IN | CNAME | www |
serverl | IN | MX | mail.qq.com |
其中,CLASS主要是IN,表示Internet。
资源记录类型TYPE有多种类型,以下:递归
资源记录类型 | 表示内容 |
---|---|
A | IPv4地址 |
AAAA | IPv6地址 |
MX | 邮件记录 |
CNAME | 别名 |
PTR | 指针(逆向解析) |
SRV | 服务资源 |
一个域经过一个zone文件保存该域的相关信息。
经常使用以下几个命令获取相关信息:dns
// 查询对应的邮件服务器 dig -t MX mail.qq.com // 逆向解析 dig -x mail.qq.com // 获取soa信息 dig -t soa mail.qq.com