DNS协议一、什么是DNS协议二、特性三、DNS工作原理3.1、正向解析3.2、逆向解析四、DNS报文格式五、其他类型六、攻击手段七、用户八、记录一、什么是DNS协议DNSDomain Name System域名系统是互联网的核心基础设施之一本质是应用层协议其核心作用是将人类易记的 “域名”如www.baidu.com转换为计算机可识别的 “IP 地址”如 180.101.49.12相当于互联网的 “电话簿”。没有 DNS用户需手动输入 IP 地址访问网站极大降低互联网易用性。二、特性分布式存储解析记录分散在全球的权威 DNS 服务器而非集中存储避免单点故障和性能瓶颈。层级化查询从根 DNS→顶级域 DNS→权威 DNS形成清晰的查询链路确保解析的可扩展性支持全球数十亿域名。多级缓存机制浏览器、操作系统、本地 DNS、顶级域 DNS 均会缓存解析结果大幅减少重复查询降低网络负载缓存有效期由 TTL 控制可灵活配置。三、DNS工作原理3.1、正向解析DNS 解析遵循层级查询 缓存机制以 “访问www.baidu.com” 为例完整流程分为 8 步核心是 “本地缓存→本地 DNS→根 DNS→顶级域 DNS→权威 DNS” 的层级查询检查浏览器缓存浏览器会优先查询自身缓存如 Chrome、Edge 的本地缓存若之前访问过该域名缓存中会保留解析结果有效期由 TTL 控制此步骤最快毫秒级。edge://net-internals/?#dns检查操作系统 HOSTS 文件若浏览器缓存未命中系统会查询本地HOSTS文件Windows 路径C:\Windows\System32\drivers\etc\hostsLinux 路径/etc/hosts。该文件可手动配置 “域名→IP”若有记录则直接使用常用于测试或绕过 DNS。本地 DNS 查询自身缓存本地 DNS 先检查自身缓存若有该域名的解析记录如其他用户刚查询过直接返回 IP 给浏览器流程结束。请求本地 DNS 服务器若 HOSTS 无记录系统会向本地 DNS 服务器通常由 ISP 提供如电信、联通或手动设置如 8.8.8.8 谷歌、114.114.114.114 国内发送查询请求。此处为递归查询本地 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加载网页。3.2、逆向解析反向解析的完整工作原理本质上是一场“倒过来”的树状结构查询。它并非在某个中央数据库里做简单反查而是利用DNS本身的层级委托机制将IP地址“伪装”成一个特殊的域名进行迭代查询。DNS的树状结构只能从左向右从顶级域到子域查找无法直接通过IP反查。因此IETF国际互联网工程任务组 设计了两个专用的顶级域作为反向树的根IPv4in-addr.arpaIPv6ip6.arpa查询逻辑将IP地址完全反转并拼接上这个后缀。例如查询 IP 192.168.1.100 时解析器实际去DNS树上查找的域名是100.1.168.192.in-addr.arpa注之所以反转是因为IP地址的网段划分网络号在前、主机号在后与DNS域名层级顶级域在前、子域在后正好顺序相反。反转是为了让IP的“网络段如192.168”靠近DNS树的根部方便授权管理。根服务器本地DNS服务器首先询问全球13台根服务器之一“你知道 8.8.8.8.in-addr.arpa 的PTR记录吗”根服务器回应“我不知道具体记录但 .arpa 顶级域由 a.root-servers.net 等管理你去问它们返回 .arpa 的权威NS列表。”.arpa 顶级域服务器本地DNS服务器转而询问 .arpa 域的权威服务器“你有 8.8.8.8.in-addr.arpa 的记录吗”.arpa 服务器回应“IP段归 IANA互联网号码分配机构 管理而 8.in-addr.arpa即 8.x.x.x 网段已委托给 arin.ultradns.net北美地区注册机构你去问它们。”RIR/ISP 区域权威服务器本地DNS服务器继续向 8.in-addr.arpa 的权威服务器查询。该服务器回应“8.8.8.in-addr.arpa即 8.8.8.x 网段已委托给谷歌的权威DNS ns1.google.com。”最终权威服务器本地DNS服务器最后向 ns1.google.com 询问“请给我 8.8.8.8.in-addr.arpa 的PTR记录。”权威服务器在自身区域文件中找到该记录返回 dns.google这就是最终的反向解析结果。返回用户本地DNS服务器将 dns.google 缓存下来并返回给你的电脑。四、DNS报文格式DNS基于TCP和UDP协议且固定使用53端口两者分工不同协议端口适用场景特点UDP53常规域名解析查询/响应无连接、速度快适合数据量小的场景单个UDP数据包最大512字节TCP531. DNS区域传输Zone Transfer2. 解析响应超过512字节面向连接、可靠传输适合数据量大或需确保完整性的场景如主从DNS同步记录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 劫持DNS 污染DNS 放大攻击DNS 隧道七、用户DNS在Windows上使用DNS在Linux上使用DDNS八、记录DNS通过不同“记录类型”实现多样化功能以下是最常用的记录记录类型核心作用示例TTL300秒IN表示InternetA记录域名→IPv4地址最常用www.baidu.com. 300 IN A 180.101.49.12AAAA记录域名→IPv6地址www.baidu.com. 300 IN AAAA 2400:da00::6666CNAME记录别名记录域名指向另一个域名而非IPblog.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 vspf1 include:baidu.com ~allPTR记录IP→域名反向解析12.49.101.180.in-addr.arpa. 300 IN PTR www.baidu.com.