DNS(Domain Name System)是互联网上的一种服务,用于将域名(例如example.com)转换为对应的IP地址(例如192.0.2.1)。它是一个分布式数据库系统,用于管理域名和对应的IP地址之间的映射关系。
域名解析服务器(DNS Server):负责维护域名与IP地址对应关系的数据库,并对解析者的请求进行响应。
DNS报文
DNS协议涉及的报文主要包括两种:查询报文和响应报文。
查询报文(Query Message):
-
查询报文由DNS客户端向DNS服务器发送,用于查询特定域名对应的IP地址或其他DNS记录。
-
查询报文包含以下字段:
Header(报头):包含标识、标志位和问题数量等信息。 Question(问题):包含查询的域名和查询类型(如A记录、MX记录等)。 Additional(附加信息):可选字段,包含附加的参数或信息。 Authority(权威信息):可选字段,包含与所查询域相关的授权或权威信息。
响应报文(Response Message):
-
响应报文由DNS服务器向DNS客户端发送,包含对查询的响应结果。
-
响应报文包含以下字段:
Header(报头):与查询报文的报头类似,包含标识、标志位和响应码等信息。 Question(问题):与查询报文中的问题相同,包含查询的域名和类型。 Answer(回答):包含DNS服务器对查询的响应结果,如IP地址、CNAME等记录。 Authority(权威信息):包含授权或权威信息,指示响应的可靠性和可信度。 Additional(附加信息):可选字段,包含与响应相关的其他信息。
DNS的查询方式
递归查询:
由DNS服务器向其他DNS服务器进行查询,再将最终查询结果返回给DNS客户端。
迭代查询
DNS服务器告知DNS客户端其他DNS服务器地址,由客户端自行向其他DNS服务器进行查询。
协议相关应用
1.nslookup
nslookup
是一个用于查询 DNS 信息的命令行工具,它与 DNS 协议密切相关。nslookup
工具允许用户通过命令行界面查询域名对应的 IP 地址、域名服务器的记录和其他 DNS 相关信息。
用户可以在命令行中输入 nslookup
命令,然后输入要查询的域名(Linux与Windows都是使用nslookup命令),例如:
nslookup example.com
执行这个命令会向默认的 DNS 服务器发送查询请求,以获取 example.com
对应的 IP 地址;nslookup
工具会显示查询结果,包括域名对应的 IP 地址、域名服务器的记录以及其他相关信息。
nslookup
命令的输出内容通常包括以下信息:
-
默认 DNS 服务器:
nslookup
通常会首先显示正在使用的默认 DNS 服务器的名称和 IP 地址。 -
查询结果: 如果用户在命令行中指定了要查询的域名,则
nslookup
会向默认 DNS 服务器发送查询请求,并显示查询结果。查询结果通常包括以下信息:-
域名:被查询的域名。
-
Address:域名对应的 IP 地址。如果域名有多个 IP 地址,则会显示所有 IP 地址。
-
Aliases:域名的别名(如果有),别名是指与被查询的域名关联的其他名称。
-
Non-authoritative answer:非权威答案,表示查询结果不是从域名的权威 DNS 服务器获取的,这可能是因为 DNS 缓存、中继服务器或其他原因导致的。
-
Authoritative answer:权威答案,表示查询结果是从域名的权威 DNS 服务器获取的,这通常意味着查询结果更可信。
-
-
其他信息:
nslookup
还可能显示其他相关信息,如查询过程中的通信交互、查询的时间戳等。
2.dig
dig
(Domain Information Groper)是一个功能强大的命令行工具,用于查询 DNS 信息。与 nslookup
类似,dig
允许用户查询域名对应的 IP 地址、域名服务器记录和其他 DNS 相关信息。它提供了更灵活的查询选项和更详细的输出结果。
dig
命令的一般格式:
dig [@server] [options] [domain] [type]
-
@server
:指定要向其发送查询请求的 DNS 服务器的 IP 地址或主机名。如果未指定,则使用默认的系统 DNS 服务器。 -
options
:可选的查询选项,如 +trace、+recurse、+short 等。 -
domain
:要查询的域名。 -
type
:查询的记录类型,如 A、MX、DS、TXT 等。如果未指定类型,则默认查询 A 记录。
1.A 记录(Address Record):A 记录是最常见的 DNS 记录类型之一,用于将域名解析为 IPv4 地址。它将域名映射到一个或多个 IPv4 地址,使得用户可以通过域名访问相应的服务器或主机。例如,example.com 的 A 记录可能指向 192.0.2.1。 2.NS 记录(Name Server Record):NS 记录用于指定一个域名的权威域名服务器(Name Server)。它告诉 DNS 解析器哪些服务器负责管理特定域名的 DNS 记录。每个域名至少有一个 NS 记录。例如,example.com 的 NS 记录可能指向 ns1.example.com 和 ns2.example.com。 3.MX 记录(Mail Exchange Record):MX 记录指定接收邮件的邮件服务器。它告诉邮件发送者应该将邮件发送到哪个邮件服务器来投递给特定域名的邮件。MX 记录包含邮件服务器的优先级和域名。优先级数字越小,优先级越高。例如,example.com 的 MX 记录可能指向 mail.example.com,优先级为 10。 4.TXT 记录(Text Record):TXT 记录用于存储任意文本信息。它通常用于存储与域名相关的文本信息,如 SPF(Sender Policy Framework)记录、DKIM(DomainKeys Identified Mail)记录、证书验证等。TXT 记录可以包含任意文本,但通常是键值对的形式。例如,SPF 记录用于指定哪些 IP 地址或域名有权发送特定域名的邮件。
示例:(Windows 系统中不自带dig)
dig @8.8.8.8 example.com A 指定要查询的 DNS 服务器(8.8.8.8);并指定查询记录类型为A