Skip to content

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地址)。
字段名长度描述
ID16位随机生成的交易ID,用于匹配请求与响应。
QR1位报文类型:0表示查询,1表示响应。
OPCODE4位查询类型:0(标准查询)、1(反向查询)、2(服务器状态请求)等。
AA1位仅响应有效,表示响应来自权威服务器。
TC1位截断标志:若为1,表示报文因超长被截断,需改用TCP传输。
RD1位递归请求:若为1,要求服务器递归解析。
RA1位递归可用:响应中指示服务器是否支持递归。
Z3位保留位,必须置0。
RCODE4位响应码:0(无错误)、1(格式错误)、2(服务器故障)等。
QDCOUNT16位问题部分的问题数量(通常为1)。
ANCOUNT16位回答部分的资源记录数。
NSCOUNT16位权威部分的资源记录数。
ARCOUNT16位附加部分的资源记录数。

名词解释

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