DNS概述
- DNS:域名系统,记录了各种主机域名与IP地址的对应关系。
- 端口:UDP 53端口,某些情况下也可以切换到TCP 53端口
域:
- 域是一个逻辑上的概念,Internet组织将计算机划分为了若干个大类,如com,gov,net,org,edu,cn,us等
- 每一个大类称之为一个域
- 每个大类里划分出较小一点的,成为子域,域是可以嵌套的,大域包含小域,小域包含更小的域
域名:
- 在每个域里面都有很多主机,每个主机都有一个主机名,在主机名后门冠上主机所在域的名称成为该主机在Internet网络上的域名
域名结构:
- 域名是一个树状层次结果,最高的根域名服务器维护顶级域名服务器记录,后者维护下一级域名服务器的记录

域名服务器的四种类型:
(1)根域名服务器
(2)顶级域名服务器
(3)权威域名服务器
(4)本地域名服务器
DNS工作原理
DNS有两种解析模式:
- 递归解析:DNS服务器收到一个域名解析请求时,若在本地查询不到要解析的资源记录,则向自己的上一级服务器交互,一直到获得解析结果,并将其返回给客户端。
- 迭代解析:DNS服务器收到一个域名解析请求时,若递归解析到本地服务器时还没有查询到结果,则本地服务器开始进行迭代解析:向客户端提供另外一个别的DNS服务器的地址,客户端重新发送解析请求到新的DNS服务器地址
工作原理
1、当在浏览器输入URL时,浏览器会先查询自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信;
2、若浏览器没有缓存,则操作系统检查本地hosts文件是否有域名IP映射关系,有则使用IP进行通信;
3、若hosts文件没有该域名的映射,则查找本地DNS解析器缓存是否有映射关系,有则直接返回映射关系完成域名解析;
4、若还未找到映射关系,则向本地DNS服务器进行查询映射关系,如果服务器已缓存了映射关系,则向客户端返回映射关系
5、若本地DNS服务器还未完成解析,开始进行递归解析;
6、本地DNS服务器向根域名服务器发起解析请求,根域名服务器返回该域名的顶级域名服务器的位置,本地DNS服务器再次向顶级域名服务器发起解析请求;
7、顶级域名服务器返回解析结果或返回下一级域名服务器的位置,一直到完成解析
DNS常见的记录及作用
DNS记录类型
域名和IP之间的对应关系,称为“记录”。常见的DNS记录类型如下:
- SOA:Stat Of Authority,起始授权记录:一个区域解析库只能有一个SOA记录,且必须为解析库的第一条记录;
- A:Address,地址记录,域名和IP的映射关系
- NS:Name Server,域名服务器记录,返回下一级域名进行解析的服务器地址(例如迭代解析返回的服务器地址)
- MX:Mail eXchange,邮件记录,返回接收电子邮件的服务器地址
- CNAME:Canonical Name,规范名称记录,返回另一个域名,是当前查询域名的一个别名
- PTR:Pointer Record,逆向查询记录,从IP地址查询域名
资源记录定义的格式:
资源记录:记录一条域名信息映射关系
TTL:生存周期,是递归服务器会在缓存中保存该资源记录的时长,即客户端得到解析结果的缓存时长,可全局继承
网络/协议类型:它的代表标识是IN,就是Internet,目前DNS主要支持的协议是IN
type:资源记录类型,一般的网站都是A记录
rdata:资源记录数据,就是域名关联的信息
—SOA记录
name:当前区域的名字,例如“baidu.com”
value:由多部分组成:
(1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
(2)当前区域管理员的邮箱地址,但地址中不能使用@符合,一般用.替换,例如:admin.baidu.com
(3)主从服务协调属性的定义以及否定的答案的统一的TTL
例如:
baidu.com. 86400 IN SOA ns.baidu.com. nsadmin.baidu.com.(2020032201;序列号 2H;刷新时间 10M;重试时间 1W;过期时间 1D;否定答案的TTL值)
—A记录
name:某主机的FQDN,例如www.baidu.com
value:主机名对应的IP地址
例如:
www.baidu.com. IN 12.1.1.2
mx1.baidu.com. IN 12.1.1.3
mx2.baidu.com. IN 12.1.1.4
注意:
*.baidu.com. IN 12.1.1.5
Baidu.com IN 12.1.1.6
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至特定地址
—NS记录
name:当前区域的名字
value:当前区域的某DNS服务器的名字,例如ns.baidu.com
注意:一个区域可以有多个NS记录
例如:
baidu.com. IN NS ns1.baidu.com
baidu.com. IN NS ns2.baidu.com
注意:
(1)相邻的两个资源记录的name相同时,后续的可省略
(2)对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录
—MX记录
name:当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个,但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级,越小优先级越高
例如:
baidu.com. IN MX 10 mx1.baidu.com
IN MX 20 mx2.baidu.com
注意:
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
—CNAME记录
name:别名的FQDN
value:真正名字的FQDN
例如:
web.baidu.com. IN CNAME www.baidu.com
—PTR记录
name:IP,有特定格式,把IP地址反过来写,如12.1.1.2,要写作2.1.1.12;而有特定后缀:in-addr.arpa.,所以完整写法:2.1.1.12. in-addr.arpa.
value:FQDN
例如:
2.1.1.12. in-addr.arpa. IN PTR www.baidu.com
简写成:
2 IN PTR www.baidu.com
注意:
网络地址及后缀可省略,主机地址依然要反着写