网络基础-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
相关推荐
一个天蝎座 白勺 程序猿6 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
天诰9 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
2035去旅行10 小时前
bootcmd 详细讲解
linux·嵌入式·arm·soc
分布式存储与RustFS10 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12310 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡11 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
@兽血沸腾11 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
艺杯羹11 小时前
Windows原生软件锁设计:从暴力杀进程丢数据到零轮询事件驱动架构
windows·系统架构·开源·开源软件·内存管理·开源协议
且从容.14 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道15 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor