DNS 数据包详解
基本选项部分
字段名 | 长度(字节) | 描述 |
Length | 2 | 整个 DNS 数据包的长度(不包含 length 占用的两个字节) |
Transaction ID | 2 | 请求的 ID 号,应答数据包中的 ID 号会与请求中的 ID 号一一对应 |
Q/R | 1bit | 第一位表示请求(1)/应答(0) |
Opcode | 4bit | 操作码,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求 |
Truncation | 1bit | 表示应答包是否有被截断,当客户端收到被截断的数据包时,应转而发送一个 TCPDNS 的数据包来获取完整的应答 |
Recursion desired | 1bit | 为 1 时表示期望递归查询,为 0 时表示可以接受迭代查询 |
Z | 保留字段 | 一般置为 0 |
AD bit | 1bit | 当服务器返回的资源记录已被本地 DNS 服务器认证通过时,会将此位置为 1,否则置为 0 |
Reply code | 4bit | 应答响应码,表示查询结果 |
Questions | 16bit | 标志域名数与资源记录数 |
Answer RRss | 16bit | 标志域名数与资源记录数 |
Authority RRs | 16bit | 标志域名数与资源记录数 |
Additonal RRs | 16bit | 标志域名数与资源记录数 |
请求部分
字段名 | 长度(字节) | 描述 |
Question Count | 16bit | 问题段中的记录数 |
Answer Count | 16bit | 回答段中的记录数 |
Authority Count | 16bit | 授权段中的记录数 |
Additional Count | 16bit | 附加信息段中的记录数 |
问题部分
字段名 | 长度(字节) | 描述 |
Name | 可变 | 待查询域名,按 . 切分成若干部分,每个部分由一个前导计数字节开头,记录当前部分的字符数 |
Type | 2 | 查询类型,如 A 记录(IPv4 地址)、AAAA 记录(IPv6 地址)等 |
Class | 2 | 类,通常为 1,表示 TCP/IP 互联网地址 |
资源记录部分
字段名 | 长度(字节) | 描述 |
Answer | 可变 | 回答段,包含与查询问题相关的资源记录 |
Authority | 可变 | 授权段,包含权威域名服务器的资源记录 |
Additonal | 可变 | 附加信息段,包含其他相关信息的资源记录 |
实验步骤
1、配置接口 IP:在路由器上配置接口 IP 地址,并启用 OSPF 协议实现全网可达。
2、配置 DNS 服务:在 DNS 服务器上开启 DNS 服务,并绑定域名和 IP 映射。
3、定义 DNS 客户端:在 DNS 客户端上,开启域名查询,并定义 DNS 服务器。
4、抓取 DNS 数据包:使用抓包工具(如 Wireshark)抓取 DNS 客户端的 F0/0 端口的流量。
5、分析 DNS 数据包:分别分析 DNS query 和 DNS response 数据包,了解其结构和内容。
相关问题与解答
1、什么是递归查询和迭代查询?
答:递归查询是指本机向本地域名服务器发出一次查询请求后,直到得到最终的 IP 地址才结束查询的过程,如果本地域名服务器无法解析,它会代表客户端向其他域名服务器进行查询,直到得到答案,迭代查询则是本地域名服务器为客户机完全解析域名(直到获得最终的 IP 地址)的过程,如果本地域名服务器无法解析某个域名,它会代表客户端向其他域名服务器进行查询,直到得到答案。
2、DNS 数据包中的标志位有哪些?
答:DNS 数据包中的标志位包括 Q/R、Opcode、Truncation、Recursion desired、Z、AD bit、Reply code 等,Q/R 位表示这是一个查询请求还是应答;Opcode 表示操作类型;Truncation 表示应答包是否有被截断;Recursion desired 表示是否期望递归查询;Z 是保留字段;AD bit 表示服务器返回的资源记录是否经过认证;Reply code 表示查询结果的状态码。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/189159.html