域名系统
域名系统是互联网的分布式目录,通过委托授权服务器的层级结构和普遍的缓存,将人类可读的域名转换为网络所需的IP地址。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
域名系统是一种分层、分布式的命名服务,通过委托授权名称服务器和缓存解析器的网络实现,将域名映射到IP地址及其他记录。
Scope
本主题涵盖DNS:其分层命名空间和区域;根、顶级域和授权名称服务器的作用;递归和迭代解析;资源记录(如A、AAAA、NS、MX和CNAME);使系统可扩展的缓存和生存时间值;以及DNS对UDP的依赖性(用于大多数查询)。它还指出DNS在简单查找之外的作用,例如在负载分配和CDN重定向中的作用。它不包括依赖于DNS的应用协议和内容交付系统。
Core questions
- 为什么互联网需要一个独立于IP地址的命名系统?
- DNS命名空间是如何分层组织成区域和委托的?
- 递归和迭代查询如何将名称解析为地址?
- 缓存和生存时间值如何使DNS具有可扩展性和速度?
- DNS使用哪些资源记录类型,每种代表什么?
Key concepts
- 域名层级
- 区域和委托
- 根、TLD和授权服务器
- 递归和迭代解析
- 资源记录(A、AAAA、NS、MX、CNAME)
- 缓存和生存时间(TTL)
- 基于UDP的DNS
- 基于DNS的负载分配
Key theories
- 分层、委托命名
- DNS将命名空间划分为域树,并将子树的权限委托给不同组织的名称服务器,因此没有单个实体需要知道所有名称,并且管理是分布式的。
- 解析和缓存
- 解析器通过遵循从根到授权服务器的层级结构来回答查询,然后将其结果缓存至其生存时间;积极的缓存意味着大多数查找永远不会到达授权服务器,这对于DNS的可扩展性至关重要。
Clinical relevance
DNS是几乎所有在线交互的关键依赖项:网页浏览、电子邮件和应用程序连接都始于名称查找,因此DNS的性能和可用性影响用户体验,DNS中断会波及各项服务。DNS还用于引导用户访问附近服务器以进行内容交付和负载均衡,其安全性(通过DNSSEC和加密DNS)是一个活跃的关注点。
History
在DNS出现之前,主机名通过一个无法扩展的单一共享文件映射到地址。Paul Mockapetris在20世纪80年代中期设计了域名系统(RFC 1034和1035,1987年),作为一种分布式、分层的替代方案。此后,DNS得到了巨大发展,增加了记录类型、国际化名称、安全扩展(DNSSEC)和加密传输,同时在架构上忠实于其原始设计。
Debates
- 加密DNS与操作可见性
- 加密DNS查询(DNS over HTTPS/TLS)可以保护用户隐私免受路径上的观察者影响,但它也降低了网络运营商用于过滤和故障排除的可见性,并可能将解析集中到少数大型提供商;隐私和控制之间的权衡存在争议。
Key figures
- Paul Mockapetris
- James F. Kurose
- Keith W. Ross
Related topics
Seminal works
- rfc1034
- rfc1035
- kurose2021
Frequently asked questions
- DNS有什么作用?
- DNS将诸如example.com之类的用户友好名称转换为网络路由数据包到正确服务器所需的IP地址。它是互联网的电话簿,通过分布式服务器层级结构和大量缓存进行此查找,从而使其能够扩展到整个互联网。
- 为什么DNS是分布式的而不是一个大型服务器?
- 单个服务器无法处理查询量,将成为单点故障,并且无法由全球所有组织管理。DNS转而将部分命名空间的权限委托给许多服务器并广泛缓存结果,从而分散负载和控制,使系统具有弹性。