计算机网络 | 应用层(4)--DNS:因特网的目录服务
💓个人主页:mooridy-CSDN博客
💓文章专栏:《计算机网络:自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客
🌹关注我,和我一起学习更多计算机网络的知识
🔝🔝
目录
4. DNS:因特网的目录服务
4.1 是什么?
4.2 DNS 提供的服务
4.3 DNS 工作机理概述
集中式设计的问题
分布式、层次数据库
DNS 查询
DNS 缓存(DNS caching)
DNS 记录和报文(DNS Records and Messages)
DNS 记录
DNS 报文
4. DNS:因特网的目录服务
4.1 是什么?
域名系统(Domain Name System, DNS)的核心功能是将主机名映射到对应的 IP 地址。它由两个关键部分构成:
- 分层的 DNS 服务器实现的分布式数据库:通过分层架构存储域名与 IP 地址等相关信息。
- 应用层的 DNS 协议:运行在 UDP 之上,发送和接收的报文均通过 53 号端口进行传输。
4.2 DNS 提供的服务
DNS 提供的服务被其他应用层协议广泛使用,主要包括:
- 主机名(域名)解析为 IP 地址:实现域名到 IP 地址的转换,是 DNS 最基础的功能。
- 主机别名(host aliasing):为同一主机提供多个不同的名称,方便用户记忆和使用。
- 邮件服务器别名(mail server aliasing):用于标识邮件服务器的别名,方便邮件系统的使用。
- 负载分配(load distribution):对于像
taobao.com
这样的繁忙站点,通常拥有多台服务器且各自有不同的 IP 地址。在 DNS 服务器中,一个 IP 地址集合与同一个规范主机名关联,每次响应时循环返回这些 IP 地址,从而实现流量的负载均衡,避免单台服务器负载过高 。
4.3 DNS 工作机理概述
集中式设计的问题
若采用集中式设计,DNS 会面临以下问题:
- 单点故障(a single point of failure):一旦中心服务器出现故障,整个域名解析服务将瘫痪。
- 通信容量(traffic volume):大量的域名解析请求集中到一台服务器,容易造成网络拥塞和服务器负载过高。
- 远距离的集中式数据库(distant centralized database):数据存储在单一位置,对于距离较远的用户,访问效率低。
- 维护(maintenance):数据更新、服务器维护等操作复杂,成本高。
分布式、层次数据库
DNS 采用分布式、层次化的架构,主要包含以下几类 DNS 服务器(不包括本地 DNS 服务器):
- 根 DNS 服务器(Root DNS Servers):负责提供顶级域(TLD)服务器的 IP 地址,是域名解析的起点。
- 顶级域 DNS 服务器(top-level domain, TLD):对应各个顶级域(如
.com
、.org
、.net
、.edu
等)以及国家级顶级域(如.uk
、.fr
、.jp
等),存储该顶级域下的域名解析信息。 - 权威 DNS 服务器(authoritative DNS servers):保存特定主域名及其子域名的主机 IP 地址信息。例如,
qq.com
的权威服务器掌握着mail.qq.com
、lol.qq.com
、music.qq.com
等主机的 IP 地址。组织机构既可以自行搭建权威服务器来管理记录,也可以将记录托管在服务提供商的权威服务器上。
此外,还有本地 DNS 服务器(local DNS server) ,每个 ISP(互联网服务提供商)通常配备一台或多台。当主机发起 DNS 请求时,首先会将请求发送到本地 DNS 服务器,它作为代理,将请求进一步转发到 DNS 服务器层次结构中进行处理。
DNS 查询
- 迭代查询(iterative queries):以主机
cse.nyu.edu
查询gaia.cs.umass.edu
的 IP 地址为例(具体过程可结合相关图示理解) 。 - 递归查询(recursive query) :
- 通常主机向本地域名服务器的查询采用递归查询方式。
- 本地域名服务器向其他域名服务器查询时,一般采用迭代查询(也可采用递归查询)。
- 域名解析过程
- 主机向本地域名服务器的查询都采用递归查询
- 本地域名服务器向其他域名服务器采用迭代(通常)或递归查询
DNS 缓存(DNS caching)
本地 DNS 服务器会缓存之前查询过的 DNS 记录。当再次收到相同的查询请求时,若缓存中存在有效的记录,可直接返回结果,减少查询时间和网络负载。
DNS 记录和报文(DNS Records and Messages)
DNS 记录
DNS 服务器存储的 ** 资源记录(Resource Record, RR)** 用于实现主机名到 IP 地址的映射,每个 DNS 回答报文包含一条或多条资源记录,记录格式为(Name, Value, Type, TTL)
:
- TLL:记录的生存时间,决定该资源记录在缓存中保留的时长,超时后将被删除。
- Type:记录类型,决定
Name
和Value
的含义:- Type = A:
Name
为主机名,Value
是对应的 IP 地址,例如(relay.example.com, 145.37.93.126, A, xxx)
。 - Type = NS:
Name
是主域名(如qq.com
),Value
是该域的权威 DNS 服务器的主机名,例如(foo.com, dns.foo.com, NS, xxx)
。 - Type = CNAME:
Name
是别名,Value
是对应的规范主机名,例如(foo.com, relay1.bar.foo.com, CNAME, xxx)
。 - Type = MX:
Name
是指向邮件服务器的别名,Value
是对应的规范主机名,例如(foo.com, mail.bar.foo.com, MX, xxx)
。
- Type = A:
DNS 报文
- 首部区域(前 12 个字节):
- 标识符:用于标识查询请求,会复制到对应的回答报文中,便于匹配请求和响应(由于 UDP 无连接特性,该标识尤为重要)。
- 标志:包含多个标志位:
- “查询 / 回答” 标志位(1bit):0 表示查询报文,1 表示回答报文。
- “权威” 标志位(1bit):当 DNS 服务器是所请求域名的权威服务器时置 1。
- “希望递归” 标志位(1bit):若客户希望在 DNS 服务器无记录时执行递归查询,则置 1。
- “递归可用” 标志位(1bit):若 DNS 服务器支持递归查询,在回答报文中该位置 1。
- 问题数、回答 RR 数、权威 RR 数、附加 RR 数:分别表示首部后对应 4 类数据区域中的变量数量。
- 问题区域:包含正在进行的查询信息,如被查询的主机名(名字字段)和查询问题类型(类型字段,如
A
、MX
)。 - 回答区域:包含针对最初请求域名的资源记录,可有多条 RR。
- 权威区域:包含其他权威服务器的相关记录。
- 附加区域:包含额外的辅助信息。例如,在一个 MX 请求的回答报文中,回答区域包含提供邮件服务器规范主机名的资源记录,附加区域则包含该规范主机名对应的 IP 地址的 A 类型 RR。