网络基础-DNS协议(看这一篇就够了!)

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 命令的输出内容通常包括以下信息:

  1. 默认 DNS 服务器nslookup 通常会首先显示正在使用的默认 DNS 服务器的名称和 IP 地址。

  2. 查询结果 : 如果用户在命令行中指定了要查询的域名,则 nslookup 会向默认 DNS 服务器发送查询请求,并显示查询结果。查询结果通常包括以下信息:

    • 域名:被查询的域名。

    • Address:域名对应的 IP 地址。如果域名有多个 IP 地址,则会显示所有 IP 地址。

    • Aliases:域名的别名(如果有),别名是指与被查询的域名关联的其他名称。

    • Non-authoritative answer:非权威答案,表示查询结果不是从域名的权威 DNS 服务器获取的,这可能是因为 DNS 缓存、中继服务器或其他原因导致的。

    • Authoritative answer:权威答案,表示查询结果是从域名的权威 DNS 服务器获取的,这通常意味着查询结果更可信。

  3. 其他信息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
相关推荐
Dontla7 分钟前
git bash打开Claude code报错:Claude Code on Windows requires git-bash.(别把git装其他位置,严格按照默认安装)找不到claude code
windows·git·bash
谢平康12 分钟前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
IP老炮不瞎唠20 分钟前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
GIS数据转换器23 分钟前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
comcoo1 小时前
电脑自动干活不用值守!OpenClaw 本地部署完整实操流程
windows·开源·github·open claw部署·open claw部署包
睡不醒男孩0308231 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
dog2501 小时前
网络长尾延时的重尾本质
开发语言·网络·php
Tokai_Teio_11 小时前
第四届黄河流域 misc
运维·服务器
戴西软件1 小时前
戴西 DLM 许可授权管理系统:破解无网络环境下工业软件授权难题,助力制造企业降本增效
网络·人工智能·python·深度学习·程序人生·算法·制造
6v6-博客1 小时前
u盘出现图片、文件,文件夹全部隐藏怎么办
网络