DNS 如何工作

简介: 在 TCP/IP 协议套件 中, DNS 是一个应用层协议。 DNS 协议默认基于用户数据电报协议(UDP, User Datagram, Protocol),但是也可以工作于传输控制协议(TCP, Transmission Control Protocol),当防火墙禁用 UDP 时作为备用方案。

在之前的文章,我们讨论了 递归查询过程概述,在我们进一步讨论 DNS 如何影响性能之前,我们需要理解 DNS 协议如何工作。

在 TCP/IP 协议套件 中, DNS 是一个应用层协议。 DNS 协议默认基于用户数据电报协议(UDP, User Datagram, Protocol),但是也可以工作于传输控制协议(TCP, Transmission Control Protocol),当防火墙禁用 UDP 时作为备用方案。

UDP 和 TCP 都是传输层协议。UDP 是轻量协议,它不要握手来建立连接或传输确认,因此减少了需要传输的数据包数量,时间流逝,来回往返。UDP 协议最大的骗局是,它不保证另一方能收到数据包,因此,应用程序必须处理没有收到响应的情况。

另一方面,TCP 需要通过三次握手建立连接 并且有传输错误检测,但是需要更多的数据往返次数,当然也需要更多时间。

因为我们正在讨论 TCP/IP 协议,我们将在某些领域深入到比特级别。但是不用担心 - 你不需要学习如何处理标志位来理解 DNS。在 Catchpoint 我们使用并强烈建议使用抓包工具,比如:WireShark 来提高数据包的可读性以及更方便调试。

协议

DNS 协议有 3 种类型的信息组成:请求,响应,更新。我们将不会讨论 “更新”,因为它不会影响最终用户。DNS 信息有 5 个部分: DNS 头,Question, 应答资源记录,权威资源记录,额外资源记录。

DNS 头

包头包含识别信息,以及关于消息其余部分包含什么的提示(摘要)。包头由 6 个字段组成,每个字段 16 位,一共 12 个字节。最前的 16 是传输 ID,用于匹配查询和响应,由客户端创建于查询信息,服务端在响应中返回。

下一个字段是标记。这是 DNS 数据包最重要的部分,因为这些标记用于区分请求和响应,以及迭代查询和递归查询。他们按以下顺序排列:

Bit 1: QR, 请求/响应标记(query/response),为 0 时信息为请求,为 1 时信息为响应。
Bits 2-5: Opcode,操作代码(operation code),告知接收主机消息意图。通常 0 意味着普通请求, 1 为反向请求,2 为 服务器状态。
Bit 6: AA,权威应答(authoritative answer)。只有响应主机是请求域名的权威名称服务器时设置该标记。
Bit 7: TC,截断(truncated)。如果数据包超出 UDP 最大 512 字节限制,则设置该标记。
Bit 8: RD,预期递归(recursion desired),若为 0 则为迭代查询,为 1 则为递归查询。更多递归内容见 文章。
Bit 9: RA,递归可用,若服务器支持递归时设置。
Bit 10: Z,保留为未来使用,所有的请求和响应中都必须设置为 0。
Bit 11: AD,真实数据(authentic data)。在域名系统安全扩展(DNSSEC)中使用,在老机器中被认为是 Z 的一部分。
Bit 12: CD,检测可用(checking disabled)。在域名系统安全扩展(DNSSEC)中使用。在老机器中被认为是 Z 的一部分。
Bit 13-16: Rcode 反馈代码(return code)。通常情况下,没有错误为 0 ,名称不存在则为 3。
头部保留的 4 个字段为问询数,应答资源记录,权威资源记录,和额外的资源记录。这些数字取决于是查询还是响应,以及响应类型。通常情况下,至少有一个请求。

查询

查询在请求和响应里都会展示,并且应该是完全相同的。有些工具,比如 WireShark 管他叫做请求,如上图。

通常情况下,每个数据包只有一个查询或请求。问题有 3 部分组成:请求名称,应该是一个主机名,比如:www.google.com ,查询类型和一个查询类别,对于互联网来说,几乎总是 1 或者 IN。查询类型是资源记录类型。以下列出了一些主要的类型,这里 有一个完整列表。

A, IPv4 地址:IPv4 是域名映射的类型。每个网站域名至少有 1 个 A 记录,否则最终用户将访问不到你的网站。
AAAA, Quad-A, IPv6 地址记录:IPv6 地址是域名映射的类型。由于IPv4 地址不再可用,目前正在大力支持 IPv6 -- 然而,还不是每个 网络运营商(ISP)和网站都支持它。
MX,Mail eXchange 记录:指定由那个邮件服务器代表域名拥有者接收邮件信息。
NS,Name Server 记录:映射域名到它的权威名称服务器。每个域名必须由至少 1 个 NS 记录。

目录
相关文章
|
3月前
|
存储 缓存 网络协议
介绍一下什么是DNS,以及DNS基础原理
DNS(Domain Name System)是互联网中用于解析域名和IP地址的分布式数据库系统。它的作用是将人类易于记忆的域名(如www.example.com)转化为计算机能够理解的IP地址(如192.0.2.1)。
54 0
|
8月前
|
域名解析 缓存 网络协议
DNS中有哪些值得学习的优秀设计 1
DNS中有哪些值得学习的优秀设计
53 0
|
8月前
|
域名解析 缓存 网络协议
DNS中有哪些值得学习的优秀设计 2
DNS中有哪些值得学习的优秀设计
62 0
|
10月前
|
运维 网络协议 Go
使用 SampleDNSTool 快速构建 DNS 服务器
使用 SampleDNSTool 快速构建 DNS 服务器
127 0
|
网络协议 安全 网络安全
DNS 如何工作
在 TCP/IP 协议套件 中, DNS 是一个应用层协议。 DNS 协议默认基于用户数据电报协议(UDP, User Datagram, Protocol),但是也可以工作于传输控制协议(TCP, Transmission Control Protocol),当防火墙禁用 UDP 时作为备用方案。
132 0
|
域名解析 网络协议 分布式数据库
DNS必备知识: DNS部署
DNS(域名系统)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。
631 0
DNS必备知识: DNS部署
|
域名解析 存储 缓存
DNS配置必备知识: DNS配置
DNS,英文全程"Domain Name System,中文全程:域名系统,作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS基于C/S架构(多数基于套接字架构的都是C/S架构),同时使用TCP和UDP的53号端口,当前,对于每一级域名长度限制是63个字符,域名总长度则不能超过253个字符。  我们都知道,IP地址是由32位的二进制数字组成。用户与因特网上某台主机通行时,显然不愿意使用难以记忆的32位的二进制主机地址。相反,大家更愿意使用比较容易记住的主机名称。这时DNS的出现就将繁琐复杂32位二进制数字解析大家易于接受的字符串形式。
589 0
DNS配置必备知识: DNS配置
|
网络协议 负载均衡 安全