Skip to content

参考

基于 HTTP 现代标准 · 核于 2026-06

速查

  • DNS = 域名 → IP 分布式数据库;分层 根 → TLD → 二级 → 子域
  • 四类服务器:根 / TLD / 权威 + 递归解析器
  • 解析:浏览器→OS→递归解析器→根→TLD→权威;递归(对客户端)vs 迭代(对上游)
  • 传输:默认 UDP 53;大响应(>512B)或区域传送用 TCP 53
  • 记录:A/AAAA/CNAME/MX/TXT/NS/SOA/PTR/CAA/SRV
  • CNAME 限制:不指 IP、同名不共存、根域禁用、MX/NS 不指向 CNAME
  • 多级缓存 + TTL(权威下发秒数);迁移前先降 TTL
  • 负缓存:NXDOMAIN 由 SOA minimum 控制;hosts 优先级高于 DNS
  • 前端:dns-prefetch(只 DNS)/ preconnect(DNS+TCP+TLS,2~4 关键源)
  • preconnect 坑:字体等漏 crossorigin 等于白连;别合并 rel(Safari bug)
  • 安全:DoT(853) / DoH(443,RFC8484) 加密;DNSSEC 验真非加密

常见 DNS 记录

类型作用示例值
A域名 → IPv493.184.216.34
AAAA域名 → IPv62606:2800:220:1::
CNAME别名 → 另一域名www → example.com
MX邮件服务器(带优先级)10 mail.example.com
TXT任意文本(SPF/DKIM/验证)v=spf1 ...
NS指定权威域名服务器ns1.example.com
SOA起始授权(区域元信息,唯一)含 Serial/Refresh/Minimum
PTR反向解析 IP → 域名in-addr.arpa
CAA限定可签发证书的 CA0 issue "letsencrypt.org"
SRV服务定位(优先级/权重/端口)_sip._tcp...

CNAME 四限制:① 不能指 IP ② 同名不能与其他记录共存 ③ 根域(apex)不能用 CNAME ④ MX/NS 不能指向 CNAME。根域需「类 CNAME」用 ALIAS/ANAME(厂商私有,底层即 CNAME flattening)。

解析流程与查询类型

阶段谁问谁查询类型
客户端 → 递归解析器「给我最终 IP」递归查询
递归解析器 → 根 / TLD / 权威「下一步问谁」迭代查询
命中缓存直接返回非递归

报文五段:Header / Question / Answer / Authority / Additional;UDP 53 默认,TC=1 截断或 >512B 转 TCP 53,区域传送(AXFR)走 TCP。

缓存与 TTL

缓存层位置
浏览器 DNS 缓存chrome://net-internals/#dns
操作系统 stub resolveripconfig /flushdns(Win)/ dscacheutil -flushcache(mac)
路由器 / 递归解析器受 TTL 控制

TTL 权衡:长 TTL(3600~86400s)省查询、生效慢;短 TTL(30~300s)更新快、查询多。迁移/换 IP 前 1~2 天调低 TTL,传播时间 ≈ 旧 TTL 最大值。

前端优化:dns-prefetch vs preconnect

dns-prefetchpreconnect
做的事仅 DNS 解析DNS + TCP + TLS
代价极轻占真实连接,~10s 回收
用于可能用到 / 域名多时广撒确定马上要用的关键源(2~4 个)
crossorigin不需要字体等 CORS 资源必须加
html
<link rel="dns-prefetch" href="//cdn.example.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />

资源提示由轻到重:dns-prefetch(只解析)< preconnect(热连接)< preload/prefetch(下载字节)。HTTP/2 后域名分片是反模式,应做域名收敛。

DNS 安全对比

方案端口作用
传统 DNSUDP 53明文,易窃听/劫持/投毒
DoTTLS 853加密查询,端口专一(网管可见)
DoHHTTPS 443加密且混入 HTTPS 流量,难识别封锁
DNSSEC数字签名验真(防篡改),不加密内容

加密只挡链路旁观者,所选解析器仍知道你查什么(隐私 = 选信任对象)。

权威链接

相关页