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地址)。
Header
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)
最后更新于