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 很慢,你的网页将依然响应缓慢。

目录
相关文章
|
26天前
|
监控
新功能上线:云解析DNS-重点域名监控功能发布
新功能上线:云解析DNS-重点域名监控功能发布
|
7月前
|
域名解析 存储 网络协议
域名解析的终极指南:从基础到进阶,彻底搞懂 DNS 记录
域名解析是网站运行的基础,正确配置DNS记录至关重要。本文从基础到进阶全面解析DNS知识,涵盖A、AAAA、CNAME、MX、TXT、CAA等常见记录类型及其应用场景。通过学习,你将了解DNS的工作原理,掌握如何优化域名配置,确保网站与邮件服务高效运行。无论搭建个人博客还是企业官网,本文都能助你轻松搞定域名解析!
1447 0
|
5月前
|
网络协议 安全 区块链
DNS+:互联网的下一个十年,为什么域名系统正在重新定义数字生态? ——解读《“DNS+”发展白皮书(2023)》
DNS+标志着域名系统从基础寻址工具向融合技术、业态与治理的数字生态中枢转变。通过与IPv6、AI和区块链结合,DNS实现了智能调度、加密传输等新功能,支持工业互联网、Web3及万物互联场景。当前,中国IPv6用户达7.6亿,全球DNSSEC支持率三年增长80%,展现了其快速发展态势。然而,DNS+仍面临安全威胁、技术普惠瓶颈及生态协同挑战。未来,需推动零信任DNS模型、加强威胁情报共享,并加速标准制定,以筑牢数字时代网络根基,实现更安全、高效的数字生态建设。
383 3
|
8月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
6月前
|
网络协议 安全 Linux
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
|
12月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
309 2
|
8月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
763 29
|
8月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
247 4
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS