当前位置: 首页 > news >正文

5.2.1 通信->TCP IP协议簇标准(IETF RFC 791 793):DNS(Domain Name System)

RFC 1035(Domain Names - Implementation and Specification,1987 年 11 月)是 IETF 定义 DNS 协议实现与报文规范的核心标准(STD 13),与RFC 1034(概念与架构)共同构成 DNS 协议基础IETF Datatracker。它取代了早期 RFC 882/883/973,定义了报文格式、资源记录、域名编码、传输规则等核心技术细节

基本定位与适用范围

  • 作者:Paul Mockapetris (ISI)

  • 地位:DNS**正式标准(Internet Standard)**IETF Datatracker

  • 核心作用

    • 规定 DNS 客户端 / 服务器间通信报文格式IETF Datatracker
    • 定义 ** 资源记录(RR)** 结构与标准类型
    • 规范域名压缩编码、查询 / 响应语义、错误码
    • 明确 UDP/TCP 传输、端口(53)、长度限制
  • 适用边界

    • 标准查询(QUERY)、响应、权威数据、Internet 类(IN)为必须实现IETF Datatracker
    • 反向查询(IQUERY)、状态查询(STATUS)多为可选 / 实验

DNS 消息(报文)整体结构

所有 DNS 查询 / 响应均采用统一格式,分 5 个区段:

+---------------------+ | Header | 头部(必选,固定12字节) +--------------------- | Question | 问题段(查询必选) +--------------------- | Answer | 回答段(响应含) +--------------------- | Authority | 授权段(响应含) +--------------------- | Additional | 附加段(响应含) +---------------------+

Header(头部)字段详解(12 字节)

16 位 × 6 = 96 位

字段长度含义 / 取值
ID16 位请求标识,响应原样返回,用于匹配请求 / 响应
QR1 位0 = 查询,1 = 响应
OPCODE4 位查询类型:

0 = 标准查询 (QUERY)

1 = 反向查询 (IQUERY)

2 = 服务器状态 (STATUS)

3–15 = 保留
AA1 位权威应答(Authoritative Answer):仅响应有效
TC1 位截断(Truncated):超 512 字节时 UDP 截断,应改用 TCP
RD1 位期望递归(Recursion Desired):客户端请求递归
RA1 位递归可用(Recursion Available):服务器支持递归
Z3 位保留,必须为 0
RCODE4 位响应码:

0 = 无错

1 = 格式错

2 = 服务器失败

3 = 域名不存在

4 = 不支持查询类型

5 = 拒绝
QDCOUNT16 位问题数(通常 1)
ANCOUNT16 位回答 RR 数
NSCOUNT16 位授权 RR 数
ARCOUNT16 位附加 RR 数

Question(问题段)

格式:QNAME + QTYPE + QCLASS

  • QNAME:域名(可变长,压缩编码)

    • 标签长度 + 内容序列表示,以0x00结束
    • 例:www.example.com3www7example3com0
  • QTYPE(16 位):查询类型

    • A(1):IPv4 地址
    • NS(2):权威服务器
    • CNAME(5):别名
    • SOA(6):起始授权
    • PTR(12):反向解析
    • MX(15):邮件交换
    • AAAA(28):IPv6(RFC 3596 扩展)
    • ANY(255):所有类型
  • QCLASS(16 位):类别

    • IN(1):Internet(几乎唯一使用)

资源记录 RR(Answer/Authority/Additional)

DNS 数据基本单元,格式:

NAME + TYPE + CLASS + TTL + RDLENGTH + RDATA

  • NAME:域名(可压缩)
  • TYPE(16 位):同 QTYPE
  • CLASS(16 位):同 QCLASS
  • TTL(32 位):缓存时间(秒)
  • RDLENGTH(16 位):RDATA 长度
  • RDATA:数据(格式由 TYPE 决定)

常用 RR 示例

  • A 记录:RDATA=4 字节 IPv4
  • CNAME:RDATA = 压缩域名
  • MX:RDATA = 优先级 (16 位)+ 交换器域名
  • NS:RDATA = 权威服务器域名

域名压缩(Message Compression)

节省带宽:重复后缀用指针(偏移)表示

  • 指针:高 2 位 =11,低 14 位 = 从报文头算起的偏移
  • 例:www.example.comftp.example.com共享example.com后缀

传输层规则

  • 端口:UDP/TCP 53

  • UDP

    • 用于常规查询,最大 512 字节
    • 超长度则TC=1截断,客户端应重试 TCP
  • TCP

    • 用于区域传输(Zone Transfer)、长响应、可靠传输
    • 报文前加2 字节长度字段(总长度)

查询与响应流程(标准模式)

  1. 客户端 → 本地服务器:递归查询(RD=1)

  2. 服务器:

    • 缓存命中 → 直接应答
    • 未命中 →迭代查询根→顶级→权威
  3. 响应:

    • AA=1:权威应答
    • AA=0:非权威(缓存 / 转发)
    • 含 Answer、Authority、Additional 三段

RCODE(响应码)核心值

  • 0(NoError):成功
  • 1(FormErr):报文格式错误
  • 2(ServFail):服务器内部错误
  • 3(NXDomain):域名不存在(权威应答)
  • 4(NotImp):不支持该 OPCODE
  • 5(Refused):策略拒绝

历史与扩展

  • RFC 1035奠定基础,但有局限(512 字节、无扩展)IETF

  • 主要扩展:

    • EDNS0(RFC 2671):突破 512 字节,支持 OPT RRIETF
    • DNSSEC(RFC 4033+):安全认证
    • RFC 3596:AAAA(IPv6)
    • RFC 2136:动态更新

总结

RFC 1035 是 DNS 的**“wire protocol 圣经”**:

  • 精确定义报文结构、字段语义、压缩、传输IETF Datatracker
  • 确立RR为数据核心,支撑 A/CNAME/MX/NS 等基础记录
  • 虽经多次扩展,但主体格式与字段至今未变,是所有 DNS 实现的基石IETF Datatracker
http://www.jsqmd.com/news/506355/

相关文章:

  • 2026活塞压力计厂家推荐:西安祥跃气体、高压、微压活塞压力计技术解析 - 深度智识库
  • 归并排序实战:如何用分治思想高效计算逆序对(附Python代码)
  • 四旋翼仿真Simulink模型:支持ADRC与PID控制器切换,纯姿态角控制模式与非线性高精度建模
  • HoRain云--Python 适配器模式
  • UE4之FMemStack内存管理机制
  • Python实战:用pdfplumber从PDF中精准提取表格数据(附完整代码)
  • 很多人不知道这个职业,应届生起薪破万、缺口超300万!
  • 2026年阳泉口碑好的双面呢大衣面料工厂服务有哪些 - mypinpai
  • 14-Decisions Form表单进阶:Flex弹性布局全解析
  • 李雅普诺夫函数实战指南:如何用Python验证系统稳定性
  • 简简单单!用 Terraform 轻松配置 VCFA 组织门户 OIDC 身份提供商
  • 持久记忆与上下文引擎:OpenClaw 比传统 AI 强在哪里
  • 命题逻辑中的对偶原理:为什么它与德摩根律如此相似?
  • QLDependency:彻底解决青龙面板依赖配置难题的革新工具
  • 数据库系统工程师-Armstrong 公理系统:函数依赖推理与候选码求解核心方法论(重点)
  • 基于注意力机制的多尺度卷积神经网络在滚动轴承故障诊断中的应用研究
  • 2026年廊坊性价比高的长毛双面呢工厂,推荐哪家 - 工业品牌热点
  • Google Public CA+acme.sh实战:免费通配符证书申请全流程指南
  • 如何选择环保水性漆厂家,山东地区推荐排名 - 工业推荐榜
  • IMU到车体坐标系标定工程:自动驾驶多传感器联合标定之系列
  • PCB设计进阶:大电流场景下的高效散热与安全布局策略
  • CLIP-GmP-ViT-L-14部署案例:智能硬件中设备图-用户手册段落检索
  • 5.1.1 通信->TCP IP协议簇标准(IETF RFC 791 793):TCP(Transmission Control Protocol)、IP(Internet Protocol)
  • Windows下Gradle环境搭建全攻略:从安装到第一个构建项目(避坑指南)
  • LumiPixel Canvas Quest移动端落地:Flutter开发图像生成App实战
  • 2026年工业水性涂料加工厂哪家好用,看看口碑排名就知道 - 工业品网
  • 掌握内存的艺术:Python生成器与 yield 完全解析
  • ViGEmBus虚拟控制器驱动技术全解析:从核心价值到深度实践
  • ASTM D4169 DC4标准全解析:适用包装与测试项目详解
  • ai coding工具共性(三)Rules