第14章 DNS:域名系统

14.1 引言

DNS提供主机名和IP地址之间的转换。

  • 分布式数据库
  • 解析器(resolver)处理查询
  • BIND是最常用实现

14.2 DNS基础

域名结构

  • 根(root)
  • 顶级域(.com、.edu、.org等)
  • 二级域(noao.edu)
  • 子域(tuc.noao.edu)

顶级域

域用途
.com商业
.edu教育
.gov政府
.mil军事
.org组织
.net网络
.int国际

授权区域(Zone)

  • 独立管理的DNS子树
  • 主名字服务器 + 辅助名字服务器

14.3 DNS的报文格式

首部(12字节)

字段说明
标识匹配请求和响应
标志QR、opcode、AA、TC、RD、RA、rcode
问题数通常为1
回答数-
授权数-
附加数-

标志字段

  • QR:0=查询,1=响应
  • RD:期望递归
  • RA:可用递归
  • AA:授权回答

问题部分

  • 查询名(QNAME):可变长度,以0结尾
  • 查询类型(QTYPE)
  • 查询类(QCLASS)

资源记录(RR)

  • 域名
  • 类型(A、NS、CNAME、PTR、MX等)
  • 类(IN=Internet)
  • 生存时间(TTL)
  • 资源数据长度
  • 资源数据

14.4 一个简单的例子

1 0.0 client > server: 1+ A? gemini.tuc.noao.edu. 2 0.29 server > client: 1* 2/0/0 A 140.252.1.11

text

  • 1+:标识符1,RD标志
  • A?:查询类型A
  • 1*:授权回答

14.5 指针查询

  • 给定IP地址返回域名
  • 使用 in-addr.arpa 域
  • 示例:34.13.252.140.in-addr.arpa

主机名检查

  • 收到查询后,解析器自动验证
  • gethostbyaddr 返回前验证地址

14.6 资源记录

类型说明
AIP地址
PTR指针记录
CNAME规范名字(别名)
HINFO主机信息
MX邮件交换记录
NS名字服务器

MX记录示例

foo.com MX 10 relay1.uu.net foo.com MX 20 relay2.uu.net

text 优先值越小越优先

14.7 高速缓存

  • 名字服务器维护高速缓存
  • 减少DNS通信量
  • 生存时间(TTL)控制缓存时间

14.8 用UDP还是用TCP

  • 默认使用UDP(端口53)
  • 响应超过512字节时使用TCP
  • 区域传送使用TCP

14.9 另一个例子

Rlogin连接时的DNS查询序列:

  1. A查询(客户→根服务器)
  2. 授权NS记录(根→客户)
  3. A查询(客户→授权服务器)
  4. A应答(授权服务器→客户)
  5. TCP连接建立
  6. PTR查询(服务器→根)
  7. PTR授权(根→服务器)
  8. PTR查询(服务器→客户NS)
  9. PTR应答
  10. A查询(验证主机名)
  11. A应答

14.10 小结

DNS提供主机名↔IP地址转换。使用层次结构和分布式数据库,支持高速缓存和多种资源记录类型。