DNS 查询:域名如何被解析为 IP 地址

简介: 在网页和页面资源加载之前,DNS 必须被解析为 IP 地址,然后浏览器才能建立 TCP 连接来发起 HTTP 请求。除此以外,对于每个使用 URL 引用的外部资源,DNS 解析必须在发起 HTTP 请求之前完成相同的解析步骤(针对每个域名)。当用户在浏览器地址栏输入 URL 地址并敲下回车时 DNS 解析过程就开始。此时,浏览器向操作系统请求特定页面,在例子中即为 google.com 。

在 Catchpoint 我们认为快速的 DNS (Domain Name Server)解析像内容一样重要。DNS 负责将域名( www.google.com ) 解析为 IP 地址供浏览器使用。该系统是网页性能的基础,然而大多数人并不完全理解它是如何工作的。因此,为了帮你更好的理解网站可用性及性能,我们会发布一系列博客文章,从基础知识开始,来阐明有时复杂的 DNS 世界。

为了简单期起见,本文假设不存在 DNS 缓存。因此,这是最差的场景。我们会在未来的文章中讨论 DNS 缓存。

在网页和页面资源加载之前,DNS 必须被解析为 IP 地址,然后浏览器才能建立 TCP 连接来发起 HTTP 请求。除此以外,对于每个使用 URL 引用的外部资源,DNS 解析必须在发起 HTTP 请求之前完成相同的解析步骤(针对每个域名)。当用户在浏览器地址栏输入 URL 地址并敲下回车时 DNS 解析过程就开始。此时,浏览器向操作系统请求特定页面,在例子中即为 google.com 。

  1. OS 向 DNS Resolver 发起 递归查询

因为操作系统并不知道 www.google.com 是什么,它向 DNS Resolver 发起请求。操作系统向 DNS Resolver 发起的请求带有特殊的标记表明它是一个 递归查询。这意味着 DNS Resolver 必须完成递归且响应必须为 IP 地址或错误。

对大多数用户而言,他们的 DNS Resolver 由他们的 ISP (网络运营商提供)。或者使用一个开源替代方案,比如:Google DNS(8.8.8.8) 或者 OpenDNS(208.67.222.222)。可以在你的网络或路由器配置查看或配置。此时,DNS Resolver 执行一个递归步骤来将域名解析为 IP 地址。

  1. DNS Resolver 向根服务器发起 迭代查询

Resolver 从向 一个 根 DNS Server 请求 www.google.com 的 IP 地址开始。该请求并不包含递归标记,因此是一个迭代请求,意味着它的响应必须是一个地址,权威名称服务器地址或错误。根域在域名最后以隐藏的"."表示。不需要额外输入“.”,浏览器会自动加上。

有 13 个名为 A-M 根服务器集群, 服务器分布在 380 个地区。他们被 12 个不同的组织管理,并汇报给 IANA(Internet Assigned Numbers Authority) ,比如:Verisign 管理着 A 和 J 集群。所有的服务器都是 IANA 运行的一个主服务器的副本。

  1. 根服务器响应

这些根服务器拥有所有顶级域名(TLDs)的位置,如 .com、.de、.io,以及较新的通用顶级域名,如 .camera。

根域并没有 "www.google.com" 的 IP 信息,但是它知道 .com 可能知道,所以它返回 .com 服务器的位置。根域返回 13 个 .com 的 gTLD 服务器的位置列表,以 NS 或者 name server 记录形式列出。

  1. DNS Resolver 向 TLD 服务器发起 迭代查询

下一步 resolver 请求向其中一个 .com 名称服务器请求 google.com 的位置。就像根服务器一样,每个顶级域名都有 4-13 集群的名称服务器存在于多个位置。有两种类型的顶级域名(TLD): 由政府组织管理的国家代码(ccTLD, Country Code Top Level Domain),以及通用域名(gTLD, Generic Top Level Domain)。每个通用顶级域名都有一个不同的商业实体负责运行这些服务器。在当前的例子中,我们将使用由 Verisign 负责运行 gTLD 服务器,Verisign 负责管理通用顶级域名中的 .com, .net, .edu, .gov。

  1. TLD 服务器响应

每个 TLD 服务器有 TLD 中每个域名的所有权威名称服务器列表。例如, 13 个 .com 的 gTLD 服务器中的每个服务器都有每个 .com 域名 的所有名称服务器列表。.com 的 gTLD 服务器并没有 google.com 的 IP 地址,但是知道 google.com 的名称服务器。.com 的 gTLD 服务器响应一个包含所有 google.com NS 记录的列表。当前例子中 Google 有 4 个名称服务器, 从 ns1.google.com 到 ns4.google.com。

  1. DNS Resolver 向 Google.com NS 发起 迭代查询

最终, DNS resolver 向 Google 其中一个名称服务器请求 www.google.com 的 IP 地址。

  1. Google.com NS 响应

这次被请求的名称服务器知道 IP 地址, 并分别针对 IPv4 和 IPv6(取决于请求类型) 返回 A 或 AAAA 记录。

  1. DNS Resolver 响应 OS

此时, resolver 完成了递归步骤并可以给最终用户的操作系统返回一个 IP 地址。

  1. 浏览器发起 TCP 握手

此时操作系统已经拿到 www.google.com 的 IP 地址,将其提供给应用程序(浏览器),浏览器初始化 TCP 连接开始加载页面。关于该过程的更多信息,我们写了一篇博客 剖析 HTTP。

如前所述,就完成解析的时长而言,这是最糟糕的情况。就大多数情况而言,如果用户最近访问过相同域名的 URL , 或者其他依赖相同 DNS resolver 的用户发起过类似请求,将不需要 DNS ,或将限制在本地 DNS 解析器上的查询。 我们将在后续文章讨论这个问题。

在这种没有 DNS 缓存的情况下,涉及 4 套 DNS 服务器,所以可能会出现很多问题。最终用户并不知道幕后发生了什么;他们只是等待页面加载,所有 DNS 查询必须在浏览器请求前发生。

这就是为什么我要抢到快速 DNS 的重要性。你可以有一个快速且后见良好的站点,但如果你的 DNS 很慢,你的网页将依然响应缓慢。

目录
相关文章
|
域名解析 缓存 网络协议
减少域名dns解析时间
域名解析中的TTL值设置多少合适
927 5
|
12月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
1088 31
|
12月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
428 1
|
域名解析 弹性计算 负载均衡
新手上云教程参考:阿里云服务器租用、域名注册、备案及域名解析流程图文教程
对于想要在阿里云上搭建网站或应用的用户来说,购买阿里云服务器和注册域名,绑定以及备案的流程至关重要。本文将以图文形式为您介绍阿里云服务器购买、域名注册、备案及绑定的全流程,以供参考,帮助用户轻松上手。
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
700 11
|
域名解析 安全 数据建模
没有域名只有IP地址怎么申请https证书?
IP 地址 SSL 证书是一种特殊的 SSL/TLS 证书,允许直接为 IP 地址配置 HTTPS 加密,适用于内部服务、私有网络和无域名的设备管理。与基于域名的证书不同,申请过程较为复杂,需选择支持 IP 的证书颁发机构(CA),并完成额外的身份验证步骤。浏览器对 IP 地址的支持有限,可能会显示警告。通过正确配置服务器(如 Nginx 或 Apache),可以确保通信安全。
1718 12
|
存储 运维 负载均衡
Hologres 查询队列全面解析
Hologres V3.0引入查询队列功能,实现请求有序处理、负载均衡和资源管理,特别适用于高并发场景。该功能通过智能分类和调度,确保复杂查询不会垄断资源,保障系统稳定性和响应效率。在电商等实时业务中,查询队列优化了数据写入和查询处理,支持高效批量任务,并具备自动流控、隔离与熔断机制,确保核心业务不受干扰,提升整体性能。
367 11
|
存储 数据库 对象存储
新版本发布:查询更快,兼容更强,TDengine 3.3.4.3 功能解析
经过 TDengine 研发团队的精心打磨,TDengine 3.3.4.3 版本正式发布。作为时序数据库领域的领先产品,TDengine 一直致力于为用户提供高效、稳定、易用的解决方案。本次版本更新延续了一贯的高标准,为用户带来了多项实用的新特性,并对系统性能进行了深度优化。
308 3
|
安全 测试技术 网络安全
无需域名,如何通过IP地址申请SSL证书保障网站安全
SSL证书不仅适用于域名,还可为IP地址申请,确保无域名或局域网内数据传输安全。本文详解如何为IP地址申请SSL证书:选择支持的CA机构(如JoySSL),完成注册、验证并安装证书。特别适合没有域名、开发测试环境及局域网应用等场景。虽价格较高且供应商较少,但在特定需求下是有效解决方案。