DNS概念
DNS 是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数串。
域名的分层结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,「域」(domain)是名字空间中一个可被管理的划分。从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域、主域名、子域名等。
DNS的分层结构
域名是分层结构,域名 DNS 服务器也是对应的层级结构。有了域名结构,还需要有域名 DNS 服务器去解析域名,且是需要由遍及全世界的域名 DNS 服务器去解析,域名 DNS 服务器实际上就是装有域名系统的主机。域名解析过程涉及 4 个 DNS 服务器,分别如下。
分类 | 作用 |
---|---|
根DNS服务器 | 英文:Root nameserver。本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址。 |
顶级域名服务器 | 英文:TLD (Top-level domains) nameserver。负责管理在该顶级域名服务器下注册的二级域名,例如 "example.com",.com 则是顶级域名服务器,在向它查询时,可以返回二级域名 "example.com" 所在的权威域名服务器地址。 |
权威域名服务器 | 英文:Authoritative nameserver。在特定区域内具有唯一性,负责维护该区域内的域名与 IP 地址之间的对应关系,例如云解析 DNS。 |
本地域名服务器 | 英文:DNS resolver 或 Local DNS。本地域名服务器是响应来自客户端的递归请求,并最终跟踪直到获取到解析结果的 DNS 服务器。例如用户本机自动分配的 DNS、运营商 ISP 分配的 DNS、谷歌8.8.8.8 / 114 公共 DNS 等。 |
- 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器。
- 每一级域名服务器都知道下级域名服务器的 IP 地址,以便于一级一级向下查询。
DNS解析过程
- 用户在 Web 浏览器中输入 "example.com",则由本地域名服务器开始进行递归查询。
- 本地域名服务器采用迭代查询的方法,向根域名服务器进行查询。
- 根域名服务器告诉本地域名服务器,下一步应该查询的顶级域名服务器 .com TLD 的 IP 地址。
- 本地域名服务器向顶级域名服务器 .com TLD 进行查询。
- .com TLD 服务器告诉本地域名服务器,下一步查询 example.com 权威域名服务器的 IP 地址。
- 本地域名服务器向 example.com 权威域名服务器发送查询。
- example.com 权威域名服务器告诉本地域名服务器所查询的主机 IP 地址。
- 本地域名服务器最后把查询的 IP 地址响应给 Web 浏览器。
一旦DNS查询的8个步骤返回了example.com的IP地址,浏览器就能够发出对网页的请求:
- 浏览器向IP地址发出HTTP请求。
- 该IP处的web服务器返回要在浏览器中呈现的网页。
DNS术语
递归查询
是指 DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。
迭代查询
是指 DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,这样依次反复,直到返回查询结果。
DNS 缓存
DNS 缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果。
TTL
英文全称 Time To Live ,这个值是告诉本地域名服务器,域名解析结果可缓存的最长时间,缓存时间到期后本地域名服务器则会删除该解析记录的数据,删除之后,如有用户请求域名,则会重新进行递归查询 / 迭代查询的过程。
DNS Query Flood Attack
指域名查询攻击,攻击方法是通过操纵大量傀儡机器,发送海量的域名查询请求,当每秒域名查询请求次数超过DNS服务器可承载的能力时,则会造成解析域名超时从而直接影响业务的可用性。
DNSSEC
域名系统安全扩展(DNS Security Extensions),简称 DNSSEC。它是通过数字签名来保证 DNS 应答报文的真实性和完整性,可有效防止 DNS 欺骗和缓存污染等攻击,能够保护用户不被重定向到非预期地址,从而提高用户对互联网的信任。