DNS

RFC 1034

  • 无状态性:DNS设计之初为了考虑到传输的性能,采用UDP协议,带来高效性能的同时也因其缺乏验证机制,导致DNS服务器容易受到缓存中毒攻击。

  • 分区:DNS将域名空间划分为多个区域,每个区域由一个或多个DNS服务器负责管理,实现分布式管理。

  • 域名解析:DNS通过递归查询和迭代查询两种方式实现域名解析,其中递归查询由客户端发起,迭代查询由DNS服务器之间相互协作完成。

RFC 1035

  • TCP 回退:当响应包超过512字节时,DNS服务器会自动切换到TCP协议进行传输,以确保数据完整性和可靠性。

DNS 服务器分类

  • 递归域名解析服务器:用户首先接触到的DNS服务器,例如Google的8.8.8.8

  • 根域名服务器:互联网根服务器,负责管理顶级域名的DNS服务器

  • 顶级域名服务器:负责管理顶级域名的DNS服务器,例如.com、.org等。

  • 权威域名服务器:负责管理特定域名的DNS服务器,例如www.example.com的DNS服务器

DNS 报文结构

组成部分
描述

Header

固定12字节,包含报文标识、标志位及资源记录数量统计。

Question

可变长度,定义查询目标(域名、类型和类)。

Answer

资源记录(RR),直接回答查询问题的结果(如IP地址)。

Authority

资源记录,指向权威DNS服务器(如NS记录)。

Additional

资源记录,提供补充信息(如权威服务器的IP地址)。

字段名
长度
描述

ID

16位

随机生成的交易ID,用于匹配请求与响应。

QR

1位

报文类型:0表示查询,1表示响应。

OPCODE

4位

查询类型:0(标准查询)、1(反向查询)、2(服务器状态请求)等。

AA

1位

仅响应有效,表示响应来自权威服务器。

TC

1位

截断标志:若为1,表示报文因超长被截断,需改用TCP传输。

RD

1位

递归请求:若为1,要求服务器递归解析。

RA

1位

递归可用:响应中指示服务器是否支持递归。

Z

3位

保留位,必须置0。

RCODE

4位

响应码:0(无错误)、1(格式错误)、2(服务器故障)等。

QDCOUNT

16位

问题部分的问题数量(通常为1)。

ANCOUNT

16位

回答部分的资源记录数。

NSCOUNT

16位

权威部分的资源记录数。

ARCOUNT

16位

附加部分的资源记录数。

名词解释

  • TLD:顶级域名(Top-Level Domain)

最后更新于