探索全球DNS体系 | 从根服务器到本地解析

2024-01-23 18:20

本文主要是介绍探索全球DNS体系 | 从根服务器到本地解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DNS 发展

DNS(Domain Name System)的起源可以追溯到互联网早期。

  1. 早期的挑战:

    • 早期互联网主要通过IP地址进行通信,用户需要记住复杂的数字串来访问网站。
  2. 需求的催生:

  • 随着互联网的扩大,更简单、易记的命名系统的需求逐渐增大。
  1. 创建DNS的动机:

    • Paul Mockapetris和Jon Postel于1983年共同设计了DNS,旨在提供一种分布式的、层级的域名解析系统,以解决通过域名而非IP地址访问网络资源的问题。
  2. DNS的关键设计元素:

    • 分层结构: DNS采用了分层的域名结构,包括顶级域名(TLD)、次级域名、主机名等,使得域名管理更为灵活。
    • 分布式数据库: DNS的数据存储采用了分布式数据库的方式,由各级域名服务器负责管理特定域的解析信息。

DNS的发展历程:

  • 1980年: DNS被正式引入互联网,成为解决命名和地址解析问题的标准。
  • 1990年: 随着互联网的快速增长,DNS逐渐成为互联网基础设施的重要组成部分。
  • 2000年以后: DNS不断演进,引入了各种改进和扩展,例如DNSSEC(DNS Security Extensions)、IPv6支持等。

DNSSEC 引入:

  • DNSSEC是为了提高DNS的安全性而引入的,使用数字签名来确保域名解析的数据完整性和认证性。

DNS over HTTPS (DoH) 和 DNS over TLS (DoT):

  • 这两种协议通过加密通信方式提高DNS请求和响应的隐私和安全性。
    在这里插入图片描述

根 DNS 服务器

  • 根 DNS 服务器负责处理顶级域(TLD)DNS 服务器的查询,例如 .com、.org、.net 等。
  • 当本地 DNS 服务器收到一个域名查询时,首先向根 DNS 服务器发送查询请求。
  • 根 DNS 服务器不直接提供完整的域名解析,而是指示本地 DNS 服务器继续向适当的 TLD DNS 服务器发出查询。

根 DNS 服务器分布

  • 世界上的根 DNS 服务器共有13个,分别用字母 A 到 M 表示。
  • 这些根 DNS 服务器由不同的组织和机构管理,分布在全球不同的地理位置。
  • 每个根 DNS 服务器都有多个实际的 IP 地址,提供冗余和负载均衡。
  • 根 DNS 服务器分布在世界各地,包括北美、欧洲、亚洲等地区。
  • 这种分布有助于提高 DNS 查询的效率和可用性,并减少对特定地理区域的依赖性。
  • DNS 结构是动态演进的,ICANN 和相关组织定期评估和调整根 DNS 的配置。根据评估新的根 DNS 服务器会添加到系统中,以应对互联网的扩展和增长。

中国 DNS 体系

我国的 DNS 体系中,本地 DNS 服务器会向全球的根 DNS 服务器发送查询请求,并由根 DNS 服务器引导本地 DNS 服务器到相应的顶级域(TLD)DNS 服务器,从而完成域名解析。

我国在国内维护自己的顶级域(TLD)DNS 服务器,例如 .cn 域的 DNS 服务器。这些服务器负责管理国内顶级域的域名解析服务。与根 DNS 服务器不同,这些服务器是针对特定顶级域而不是全球性的。

DNS 的作用

  1. 域名解析: 提供域名到 IP 地址的解析服务,允许用户通过好记的域名访问网络资源而无需记住复杂的 IP 地址。

  2. 层次化结构: 将互联网上的域名划分为层次化的结构,每一级域名(如.com、.org)都由不同的注册机构管理,实现了分布式管理和维护。

  3. 负载均衡: 允许一个域名映射到多个 IP 地址,从而实现负载均衡。当一个域名对应多个服务器时,DNS 可以轮流分配请求,分散流量。

  4. 电子邮件交换: 管理电子邮件系统中的邮件路由,通过 MX 记录指定邮件服务器,确保邮件能够正确地路由到目标邮件服务器。

  5. 提供别名(CNAME): 允许一个域名指向另一个域名,提供了域名的别名机制。

DNS 的工作原理

  1. 域名查询: 当用户在浏览器中输入一个域名时,操作系统将首先检查本地 DNS 缓存,如果没有找到对应的 IP 地址,将发起 DNS 查询。

  2. 本地 DNS 解析: 操作系统将查询发送到本地 DNS 服务器,由互联网服务提供商(ISP)或其他网络服务提供商提供。本地 DNS 服务器具有缓存功能,如果有记录则直接返回 IP 地址,否则将向更高层次的 DNS 服务器发起查询。

  3. 缓存: 为了提高查询效率,DNS 服务器会在查询过程中进行缓存。本地 DNS 服务器和中间 DNS 服务器都会在配置时间内保存查询结果,以便下次查询时能够直接返回。

  4. TTL(Time to Live): DNS 记录中包含 TTL,指定该记录在缓存中的存活时间。一旦过期,DNS 服务器将重新查询获取最新的 IP 地址。

总结,DNS 通过分布式数据库、域名层次结构以及查询实现域名到 IP 地址的解析服务。这种分布式的设计保证了 DNS 的高可用性和扩展性。

DNS 查询方式

在 DNS 中,迭代查询是一种查询过程,其中请求者(本地 DNS 服务器)向其他 DNS 服务器发出查询,并要求返回最终结果,而不是通过递归查询的方式由服务器一级一级地向上查询。这种查询方式减轻了根 DNS 服务器的负担,提高了查询效率。

DNS 查询包含两种主要类型:

  1. 递归查询(Recursive Query): 递归查询是请求服务器提供完整的查询结果。当一个 DNS 服务器收到递归查询时,将负责迭代地查询其他 DNS 服务器,直到找到最终的查询结果,然后将结果返回给请求者。

  2. 迭代查询(Iterative Query): 迭代查询是请求服务器提供最好的信息,并允许请求者继续查询其他 DNS 服务器以获取更多信息。当一个 DNS 服务器收到迭代查询时,会返回自己所知道的最佳信息,如果无法提供完整的结果,将指示请求者继续向其他 DNS 服务器查询。

在 DNS 查询过程中,递归查询和迭代查询结合使用。本地 DNS 服务器(请求者)发起一个递归查询,然后向根 DNS 服务器发出迭代查询。根 DNS 服务器返回指向顶级域名服务器(TLD)的迭代查询结果,然后本地 DNS 服务器继续向 TLD 服务器发出迭代查询。这个过程一直持续,直到找到最终的查询结果。

迭代查询在 DNS 查询过程中也是一种常见的机制,通过允许 DNS 服务器返回部分信息,然后继续向其他服务器查询,提高 DNS 查询的效率。

Windows/Linux DNS 记录配置差别

Windows DNS和Linux DNS的记录(域名解析记录)在语法和配置上有些差异。
常见的DNS记录类型,在Windows和Linux环境中的差别:

  1. A记录(IPv4地址记录):
  • Windows:

    example.com.    IN    A    192.168.1.1
    
  • Linux:

    example.com.    A    192.168.1.1
    
  1. AAAA记录(IPv6地址记录):
  • Windows:

    example.com.    IN    AAAA    2001:db8::1
    
  • Linux:

    example.com.    AAAA    2001:db8::1
    
  1. CNAME记录(别名记录):
  • Windows:

    www.example.com.    IN    CNAME    example.com.
    
  • Linux:

    www.example.com.    CNAME    example.com.
    
  1. MX记录(邮件交换记录):
  • Windows:

    example.com.    IN    MX    10    mail.example.com.
    
  • Linux:

    example.com.    MX    10    mail.example.com.
    
  1. PTR记录(反向解析记录):
  • Windows:

    1.1.168.192.in-addr.arpa.    IN    PTR    example.com.
    
  • Linux:

    1.1.168.192.in-addr.arpa.    PTR    example.com.
    
  1. NS记录(域名服务器记录):
  • Windows:

    example.com.    IN    NS    ns1.example.com.
    
  • Linux:

    example.com.    NS    ns1.example.com.
    
  1. SOA记录(起始授权机构记录):
  • Windows:

    example.com.    IN    SOA    ns1.example.com. admin.example.com. (2022010101 ; Serial3600       ; Refresh600        ; Retry1209600    ; Expire3600       ; Default TTL)
    
  • Linux:

    example.com.    SOA    ns1.example.com. admin.example.com. (2022010101 ; Serial3600       ; Refresh600        ; Retry1209600    ; Expire3600       ; Default TTL)
    

windows dns 特有记录

在 Windows DNS 中,与 Active Directory(AD)相关的特有 DNS 记录主要是 SRV 记录。这些记录用于服务发现和域控制器的定位。
SRV 记录:

  1. 域控制器发现记录:

    • _ldap._tcp.dc._msdcs.example.com.
    • _kerberos._tcp.dc._msdcs.example.com.
    • _gc._tcp.dc._msdcs.example.com.
  2. 其他与域控制器相关的记录:

    • _ldap._tcp.pdc._msdcs.example.com.
    • _ldap._tcp.gc._msdcs.example.com.
    • _ldap._tcp.rras._msdcs.example.com.

记录用于指示 LDAP 服务、Kerberos 认证服务、全局编录服务、主域控制器(PDC)、全局编录服务器(GC)和远程访问服务器(RRAS)的位置。

Windows DNS 在配置 AD 时会自动创建这些记录,来支持域环境运作和服务发现。


~喜欢的话,请收藏 | 关注(✪ω✪)~
~万一有趣的事还在后头呢,Fight!!(o^-^)~''☆ミ☆ミ~……

这篇关于探索全球DNS体系 | 从根服务器到本地解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637126

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹