DNS 作用
将主机名解析成 IP 地址,因为 IP 地址由一串数字组成,可以通俗的讲就是有些反人类不好记忆,所以使用 DNS 来将这一串数字解析为对应的域名,这样当用户访问时可以很方便的记住并且访问网页。但是计算机是不可能理解这种由拼音或者是英文组成的域名的,所以就可以利用 DNS 将名称解析成 IP 地址这样用户就可以通过域名来直接访问网络中的设备了。
DNS 介绍
域名系统,应用层协议,是互联网的一项服务,将域名和 IP 地址互相映射的一个分布式数据库,能够使人更方便地访问互联网,基于 C/S 架构。
DNS 查询类型(递归、迭代)
- 递归查询:只会向根目录发起请求,如果根不知道权威服务器的位置,会根据客户端访问的域名一级一级的寻找,直到找到该域名的权威服务器返回给客户端
- 迭代查询:客户端向根服务器发起请求,根返回给客户端自己的下一级(子域)的 DNS 服务器,客户端再次查询,直到一直请求找到权威服务器
DNS 缓存
局域网内每次通过 DNS 解析的域名都会在局域网的 DNS 服务器缓存下来解析记录,当用户再次访问时就不需要递归查询或者是迭代查询,直接通过本地的 DNS 缓存来查找目标主机的位置。但是缓存是有时间的。
DNS 的端口号
53/udp 同步和解析的作用
53/tcp 同步主从之间的文件作用
953/tcp rndc 这个管理软件是使用的 953 作为它的管理端口
FQDN 完整名称的组成

在互联网中,所有的 dns 解析都是通过顶级的根域来解析所有的解析请求。全世界共有 13 台 DNS 的根域。
不同等级域的作用
根域:最高等级的目录
一级域名(顶级域)
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域 com, edu, mil, gov, net, org, int,arpa
二级域名:taobao.com
最多可达到 127 级域名
不同网页后缀代表的含义
域名的后缀大部分会体现网页的作用及用途,但是有个别的网站还是会显示用途不同。
- com:商业用途
- net:网络用途
- edu:教育用途
- gov
- org:开源社区的类型
- cn:国家域
- io:新兴域名
DNS 服务器类型
- 主 DNS 服务器
- 从 DNS 服务器
- 缓存 DNS 服务器(转发器)
主 DNS 服务器
管理和维护所负责解析的域内解析库的服务器
从 DNS 服务器
从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
<!--hexoPostRenderEscape:<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">0 ; serial</span><br><span class="line">1D ; refresh</span><br><span class="line">1H ; retry</span><br><span class="line">1W ; expire</span><br><span class="line">3H ) ; minimum</span><br></pre></td></tr></table></figure>:hexoPostRenderEscape-->
区域传输
- 完全传输:传送整个解析库,第一次同步时应该会完整传输
- 增量传输:传递解析库变化的那部分内容,后面的解析都会是增量传输
解析形式
- 正向解析:FQDN 将域名解析成 IP 地址
- 反向解析:IP —> 将 IP 地址解析成域名
负责本地域名的正向和反向解析库
- 正向区域
- 反向区域
解析答案
- 肯定答案:存在对应的查询结果
- 否定答案:请求的条目不存在等原因导致无法返回结果
- 权威答案:直接由存在此查询结果的 DNS 服务器(权威服务器)
- 非权威答案:由其他非权威服务器返回的查询答案,一般是由代理答复
资源记录
区域解析库:众多资源记录 RR 组成
记录类型: A AAAA PTR SOA NS CNAME MX
- SOA:起始授权记录,一个区域解析库有且只能有一条 SOA 记录,必须位于解析库的第一条记录
- A:Internet Address,作用,FQDN—>IP(正向解析记录)
- AAAA:FQDN—->IPv6
- PTR:PoinTeR,IP—–>FQDN(反向解析记录)
- NS:Name Server,用于标明当前区域的 DNS 服务器
- CNAME:Canonical Name,别名记录
- MX:Mail eXchanger,邮件交换器
- TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此选项,如:SPF(反垃圾邮件记录),https 验证等
| 记录记录名称 | 名称 | 作用 |
|---|---|---|
| SOA | 权威记录的起始 | 指定有关 DNS 区域的权威性信息,包含主要名称服务器、域名管理员的电邮地址、域名的流水式编号、和有关几个刷新区域的定时器 |
| A | IPv4地址记录 | 传回一个 32 位的 IPv4 地址,,常用于映射主机名到 IP 地址 |
| AAAA | IPv6地址记录 | 传回一个 128 位的 IPv6 地址,常用于映射主机名称到 IP 地址 |
| MX | 电邮交互记录 | 引导域名到该域名的邮件传输代理列表 |
| NS | 名称服务器记录 | 委托 DNS 区域使用已提供的权威域名服务器 |
| PTR | 指针记录 | 引导一个规范名称,与 CNAME 记录不同,DNS 不会进程进程,只会传回名称,常用于反向 DNS 查找 |
| TXT | 文本记录 | 最初是为任意可读的文本 DNS 记录,自 1990 年起,记录更经常的带有机读取数据,已经不被推荐使用 |
| CNAME | 规范名称记录(别名) | 一个主机名字的别名:域名系统将会继续尝试查找新的域名服务器 |
资源记录定义
bash
name [TTL] IN rr_type value
- TTL 可从全局继承
- 使用 @ 符号可用于引用当前区域的名字
- 同一个名字可以通过多条记录定义多个不同的值;此时 DNS 服务器会以轮询的方式响应
- 同一个值也可能有多个不同的定义名字;通过不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到一个主机
面试题
bash
1. 我的网站域名需要更改,如何使其更快的生效?
刷新 dns 缓存
2. 更改TTL值为多少比较合适呢?是如何生效的?
DNS 解析查询过程
bash
Client --> hosts 文件 ---> Client DNS Service Local Cache ---> DNS Server(recursion递归)---> DNS Server Cache ---> DNS iteration(迭代)---> 根 ---> 顶级域名 DNS ---> 二级域名 DNS
DNS 文件
hosts 文件
txt
优先级最高