DNS协议
一、什么是DNS协议
DNS(Domain Name System,域名系统)是互联网的核心基础设施之一,本质是应用层协议,其核心作用是将人类易记的 "域名"(如www.baidu.com)转换为计算机可识别的 "IP 地址"(如 180.101.49.12),相当于互联网的 "电话簿"。没有 DNS,用户需手动输入 IP 地址访问网站,极大降低互联网易用性。
二、特性
- 分布式存储:解析记录分散在全球的权威 DNS 服务器,而非集中存储,避免单点故障和性能瓶颈。
- 层级化查询:从根 DNS→顶级域 DNS→权威 DNS,形成清晰的查询链路,确保解析的可扩展性(支持全球数十亿域名)。
- 多级缓存机制:浏览器、操作系统、本地 DNS、顶级域 DNS 均会缓存解析结果,大幅减少重复查询,降低网络负载(缓存有效期由 TTL 控制,可灵活配置)。
三、DNS工作原理
以正向解析为例
DNS 解析遵循层级查询 + 缓存机制,以 "访问www.baidu.com" 为例,完整流程分为 8 步,核心是 "本地缓存→本地 DNS→根 DNS→顶级域 DNS→权威 DNS" 的层级查询:
- 检查浏览器缓存
浏览器会优先查询自身缓存(如 Chrome、Edge 的本地缓存),若之前访问过该域名,缓存中会保留解析结果(有效期由 TTL 控制),此步骤最快(毫秒级)。 - 检查操作系统 HOSTS 文件
若浏览器缓存未命中,系统会查询本地HOSTS文件(Windows 路径:C:\Windows\System32\drivers\etc\hosts;Linux 路径:/etc/hosts)。该文件可手动配置 "域名→IP",若有记录则直接使用(常用于测试或绕过 DNS)。 - 请求本地 DNS 服务器
若 HOSTS 无记录,系统会向本地 DNS 服务器(通常由 ISP 提供,如电信、联通;或手动设置如 8.8.8.8 谷歌、114.114.114.114 国内)发送查询请求。- 此处为递归查询:本地 DNS 承诺 "帮用户查到底",不返回中间结果,只返回最终 IP 或 "解析失败"。
- 本地 DNS 查询自身缓存
本地 DNS 先检查自身缓存,若有该域名的解析记录(如其他用户刚查询过),直接返回 IP 给浏览器,流程结束。 - 本地 DNS 请求根 DNS 服务器
若本地 DNS 缓存未命中,会向根 DNS 服务器(全球共 13 个根域,如.root-servers.net,并非 13 台物理机,而是遍布全球的镜像节点)发送查询请求。- 此处为迭代查询:根 DNS 不直接解析域名,只返回 "该域名所属顶级域的 DNS 服务器地址"(如www.baidu.com的顶级域是.com,根 DNS 返回.com顶级域服务器地址)。
- 本地 DNS 请求顶级域 DNS 服务器
本地 DNS 向根 DNS 返回的顶级域 DNS 服务器(如.com、.cn、.org对应的服务器)发送查询请求(仍为迭代查询)。- 顶级域 DNS 服务器返回 "该域名的权威 DNS 服务器地址"(如baidu.com的权威 DNS 是ns1.baidu.com)。
- 本地 DNS 请求权威 DNS 服务器
本地 DNS 向权威 DNS 服务器(域名所有者配置的 DNS,存储该域名的所有解析记录)发送查询请求(迭代查询)。- 权威 DNS 服务器返回www.baidu.com对应的 IP 地址(如 180.101.49.12),并附带 TTL(缓存有效期,如 300 秒)。
- 返回结果并缓存
本地 DNS 将 IP 地址返回给浏览器,同时缓存该解析记录(有效期为 TTL),供后续查询复用;浏览器使用 IP 地址与百度服务器建立 TCP 连接(HTTP/HTTPS),加载网页。
四、DNS报文格式
DNS基于TCP和UDP协议 ,且固定使用53端口,两者分工不同:
协议 | 端口 | 适用场景 | 特点 |
---|---|---|---|
UDP | 53 | 常规域名解析(查询/响应) | 无连接、速度快,适合数据量小的场景(单个UDP数据包最大512字节) |
TCP | 53 | 1. DNS区域传输(Zone Transfer) 2. 解析响应超过512字节 | 面向连接、可靠传输,适合数据量大或需确保完整性的场景(如主从DNS同步记录) |
五、其他类型
- 正向解析:核心功能,将域名映射到 IP 地址(IPv4 用 A 记录,IPv6 用 AAAA 记录)。
- 反向解析:将 IP 地址映射到域名(用 PTR 记录),常用于邮件反垃圾、服务器身份验证(如判断 IP 是否属于正规企业)。
- 负载均衡:通过多个 A 记录返回不同 IP(如www.baidu.com对应多个服务器 IP),实现流量分发,避免单点过载。
- 邮件路由:通过 MX 记录指定接收该域名邮件的服务器(如baidu.com的邮件由mail.baidu.com处理),确保邮件准确送达。
- 域名验证:通过 TXT 记录存储文本信息(如 SPF 反垃圾邮件规则、SSL 证书验证信息),保障服务合法性。
六、攻击手段
七、在终端使用
八、记录
DNS通过不同"记录类型"实现多样化功能,以下是最常用的记录:
记录类型 | 核心作用 | 示例(TTL=300秒,IN表示Internet) |
---|---|---|
A记录 | 域名→IPv4地址(最常用) | www.baidu.com. 300 IN A 180.101.49.12 |
AAAA记录 | 域名→IPv6地址 | www.baidu.com. 300 IN AAAA 2400:da00::6666 |
CNAME记录 | 别名记录,域名指向另一个域名(而非IP) | blog.baidu.com. 300 IN CNAME www.baidu.com. |
MX记录 | 邮件交换记录,指定接收该域名邮件的服务器 | baidu.com. 300 IN MX 10 mail.baidu.com. (10为优先级,数字越小越优先) |
NS记录 | 指定该域名的权威DNS服务器 | baidu.com. 300 IN NS ns1.baidu.com. |
TXT记录 | 存储文本信息(如SPF反垃圾、域名验证) | baidu.com. 300 IN TXT "v=spf1 include:baidu.com ~all" |
PTR记录 | IP→域名(反向解析) | 12.49.101.180.in-addr.arpa. 300 IN PTR www.baidu.com. |