一、DNS名词解释
域名,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。
DNS,全称Domain Name System,中文名为域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串。
以淘宝为例,www.taobao.com就是域名,但计算机并不能直接根据域名找到淘宝,必须转化成101.89.125.239(IPV4)或240e:e1:f300:1:3::3f9(IPV6)这样的IP地址才能准确读取,而且这边的ip地址可能会随着时间、网络、机器的变化而变化。
二、DNS解析过程
1、 本地解析
用户在本机浏览器输入www.taobao.com后,计算机会先在本地进行解析(图中为①),这里会分成三小步:
1)、先到浏览器的DNS缓存中查询是否有对应记录,如有则直接返回ip地址,完成解析,如果没有则下一步;
2)、接着查询操作系统的缓存,如有则直接返回ip地址,完成解析,如果没有则下一步;
3)、最后查看本地host文件,比如windows的host文件一般位于“C:\Windows\System32\drivers\etc”,如果这里也没有的话就需要到本地dns服务器上查找了。
2、 本地dns服务器(简称LDNS)
有2种,一种是公共DNS服务器,比如114 DNS(114.114.114.114)、Google DNS(8.8.8.8);另一种是本地运营商提供的DNS服务器,比如我们上海电信的DNS就是202.96.209.5、202.96.209.133、116.228.111.118和180.168.255.118,一般的用户都是使用运营商的本地域名服务器。
因为本地dns服务器一般架设在离用户不远的地方,而且性能都很好,所以一般都会缓存域名解析结果,大约80%的域名解析都会在这一步完成。
3、 根域名服务器
如果LDNS仍然没有匹配到,就会根据内置的根域名服务器ip地址,寻求根域名服务器的帮助:
1)、dns域名服务器一般分3种,分别是根域名服务器(.)、顶级域名服务器(.com)、权威域名服务器。
2)、全球一共有13组根域名服务器(注:这里并不是指13台服务器,是指13个ip地址,按字母a-m编号),根域名服务器不会直接解析域名,二十把不同的解析请求分配给下面的其它服务器来完成,下面是dns域名系统的树状结构图:
3)、以www.taobao.com为例,当根域名接收到本地dns的解析请求后,获知后缀是.com,于是就把负责.com的顶级域名服务器ip地址返回给本地dns(图中为②和③)。
4)、本地dns获得返回的ip地址,再取找对应的顶级域名服务器,顶级域名又把负责该域名的权威服务器ip返回给本地dns(图中为④和⑤)。
5)、最后,本地dns根据ip找到对应的权威服务器,权威服务器吧对应的主机ip返回给本地dns,至此完成了域名解析的全过程(图中为⑥和⑦)。
三、DNS资源记录类型
DNS的资源记录类型主要包括6种,如下表所示:
| 记录名 | 中文名 | 作用 |
|---|---|---|
| A、AAAA | 主机记录 | 说明一个域名对应的IP是多少,它是域名和IP地址的对应关系。Ipv4使用的是A记录,ipv6使用的是AAAA记录 |
| NS | 名称服务器记录 | 说明这个区域有哪些DNS服务器负责解析 |
| SOA | 起始授权记录 | 说明负责解析的DNS服务器中哪一个是主服务器 |
| MX | 邮件交换记录 | 主要用于邮件服务器DNS交互,帮助电子邮件正确到达邮件服务器 |
| Cname | 别名记录 | 用于为当前区域之外的资源提供别名 |
| SRV | 服务器资源记录 | 说明一个服务器能够提供什么样的服务 |
| PTR | 指针记录 | 是A记录的逆向记录,作用是把IP地址解析为域名 |
四、 DNS解析过程实例
通过一些命令,可以将DNS解析出来的ip地址和解析过程展现出来,方法包括windows下的nslookup和Linux下的dig。
1、 在Windows下使用nslookup命令:
说明:以www.github.com为例,因为测试环境为本地办公网络,所以使用的是公司自己的DNS本地服务器,DNS的ip地址为10.5.22.66,权威域名为github.com,实际的ip地址为13.250.177.223,别名为www.github.com。
2、 在Linux下使用dig命令(相比nslookup信息更佳全面):
可以看到,从发起申请,到信息返回,总共耗时34毫秒,这里因为使用虚拟机登录的Linux,所以DNS的ip地址为8.8.8.8。