首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >DNS 解析过程详解

DNS 解析过程详解

原创
作者头像
一杯茶Ja
发布2024-11-27 09:30:07
发布2024-11-27 09:30:07
3K0
举报

在开始之前,推荐大家阅读一篇文章《强化学习系列(十)--基于大语言模型的RLHF》https://cloud.tencent.com/developer/article/2471480,该文章介绍了大语言模型训练三部曲,重点阐述 RLHF 流程,包括相关模型及 PPO 算法思路与代码实现,有兴趣的朋友可以去了解下。

前言

在互联网的世界中,我们每天都在通过各种各样的域名来访问网站、发送邮件等,但实际上计算机之间是依靠 IP 地址来进行通信的。域名系统(Domain Name System,简称 DNS)就像是互联网的 “电话簿”,它的作用是将便于人们记忆的域名转换为计算机能够识别的 IP 地址,下面来详细介绍一下 DNS 解析的过程。

一、DNS 解析的基本概念

(一)域名

域名是互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。例如,“www.example.com” 就是一个常见的域名,它由不同的部分组成,从右到左依次为顶级域名(如 “.com”)、二级域名(如 “example”)以及主机名(如 “www”)等,不同层级的域名有助于对网络资源进行分类和定位。

(二)IP 地址

IP 地址是分配给连接到互联网的每台设备的数字标识符,有 IPv4(如 192.168.1.1,由四个用点分隔的十进制数表示,每个数范围是 0 - 255)和 IPv6(如 2001:0db8:85a3:0000:0000:8a2e:0370:7334,用冒号分隔的十六进制数表示)两种常见格式,它是网络中设备互相通信的 “门牌号”,计算机依靠 IP 地址来准确地找到对方并传输数据。

(三)DNS 服务器

DNS 服务器是专门用于存储域名和 IP 地址对应关系(即 DNS 记录)以及响应客户端 DNS 查询请求的服务器。全球有众多的 DNS 服务器,它们相互协作,共同构成了庞大的 DNS 系统,比如常见的有根 DNS 服务器、顶级域名服务器、权威 DNS 服务器等,各自承担着不同阶段的解析任务。

二、DNS 解析的具体步骤

(一)本地缓存查询

当用户在浏览器中输入一个域名(比如 “www.google.com”)想要访问对应的网站时,客户端计算机首先会检查自己的本地 DNS 缓存。操作系统(如 Windows、Linux、macOS 等)和浏览器(如 Chrome、Firefox 等)都会维护一个 DNS 缓存区域,里面存储了之前查询过的域名及其对应的 IP 地址记录。如果在本地缓存中找到了该域名对应的 IP 地址,那么就直接使用这个 IP 地址去访问目标网站,这个过程速度非常快,能有效减少网络查询的开销,因为不需要向外部的 DNS 服务器发送请求了。

例如,你刚刚访问过某个网站,短时间内再次访问时,很可能直接从本地缓存获取 IP 地址就能快速加载页面了。

(二)本地 hosts 文件查询(可选步骤)

如果在本地 DNS 缓存中没有找到对应的 IP 地址,客户端计算机接下来会查看本地的 hosts 文件。hosts 文件是一个纯文本文件,位于操作系统特定的目录下(在 Windows 系统中一般在 “C:\Windows\System32\drivers\etc\” 目录下,Linux 和 macOS 系统中位置有所不同),用户可以手动在这个文件中添加域名和 IP 地址的映射关系。如果在 hosts 文件中找到了要查询的域名对应的 IP 地址,那么就按照这个 IP 地址进行访问。不过通常情况下,普通用户较少手动去编辑 hosts 文件,这个文件更多地用于一些特定的网络配置或者测试场景等。

(三)向本地 DNS 服务器发起查询

如果在前两步都没有找到域名对应的 IP 地址,客户端计算机就会向本地网络配置中指定的本地 DNS 服务器发送 DNS 查询请求。这个本地 DNS 服务器一般由网络服务提供商(如电信、联通等宽带运营商)提供,或者是企业内部自行搭建的用于管理内部网络域名解析的服务器。

(四)本地 DNS 服务器的查询流程

  1. 根 DNS 服务器查询

本地 DNS 服务器收到客户端的请求后,如果它自己的缓存中也没有相应域名的记录,首先会向根 DNS 服务器发起查询。根 DNS 服务器是 DNS 体系的顶层,全球共有 13 台根 DNS 服务器(实际上是以多个镜像服务器的形式分布在全球各地保证稳定性和冗余性),它知道所有顶级域名服务器的 IP 地址,虽然它并不知道具体域名对应的 IP 地址,但可以根据域名的后缀(比如.com、.net 等顶级域名)指引本地 DNS 服务器下一步该去询问哪个顶级域名服务器。

  1. 顶级域名服务器查询

根据根 DNS 服务器的回复,本地 DNS 服务器接着会向对应的顶级域名服务器发送查询请求。例如对于域名 “www.example.com”,就会向负责.com 顶级域名的服务器发起询问,顶级域名服务器负责管理该顶级域名下所有二级域名的注册信息,它可以告诉本地 DNS 服务器去哪个权威 DNS 服务器进一步查询具体域名对应的 IP 地址。

  1. 权威 DNS 服务器查询

从顶级域名服务器得到回复后,本地 DNS 服务器再向权威 DNS 服务器发送查询请求。权威 DNS 服务器是域名所有者(比如某个网站的运营方)自行配置和维护的,它存储着该域名(如 “www.example.com”)准确的 IP 地址记录以及其他相关的 DNS 资源记录(比如邮件服务器对应的记录等),最终权威 DNS 服务器会把域名对应的 IP 地址回复给本地 DNS 服务器。

(五)本地 DNS 服务器向客户端返回结果

本地 DNS 服务器得到权威 DNS 服务器回复的 IP 地址后,会把这个 IP 地址缓存起来(方便下次有相同域名查询时快速响应),然后将 IP 地址返回给客户端计算机。客户端计算机收到 IP 地址后,就可以利用这个 IP 地址与目标服务器(比如网站服务器)建立连接,进而进行数据的传输,例如请求网页内容、下载文件等操作。

三、DNS 缓存的作用及相关机制

(一)缓存的重要性

DNS 缓存机制极大地提高了域名解析的效率。由于互联网上域名的访问频率差异很大,对于那些经常被访问的域名,如果每次都要完整地经过从根 DNS 服务器开始一步步查询的流程,将会耗费大量的时间和网络资源。通过缓存,无论是客户端计算机、本地 DNS 服务器还是各级别的 DNS 服务器,都可以快速响应之前查询过的域名对应的 IP 地址,减少了重复查询的次数,加快了网络访问的整体速度。

(二)缓存的更新机制

不过,缓存也不能一直保存不变,因为域名对应的 IP 地址可能会发生变化(比如网站更换了服务器,IP 地址随之改变)。为了保证缓存数据的准确性,DNS 缓存都有相应的过期时间(TTL,Time To Live)设置,这个时间是由域名的权威 DNS 服务器在返回记录时指定的,一般从几分钟到几天不等。当缓存中的记录超过 TTL 时间后,就会被视为过期,下次查询时就需要重新向权威 DNS 服务器等进行验证和获取最新的 IP 地址。

总结

总的来说,DNS 解析过程是一个涉及多个环节、多个服务器协作的复杂但又十分有序的过程,它默默地在背后为我们方便快捷地访问互联网资源发挥着关键作用,了解它的工作原理也有助于我们更好地理解网络通信以及排查一些可能出现的网络访问问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、DNS 解析的基本概念
    • (一)域名
    • (二)IP 地址
    • (三)DNS 服务器
  • 二、DNS 解析的具体步骤
    • (一)本地缓存查询
    • (二)本地 hosts 文件查询(可选步骤)
    • (三)向本地 DNS 服务器发起查询
    • (四)本地 DNS 服务器的查询流程
    • (五)本地 DNS 服务器向客户端返回结果
  • 三、DNS 缓存的作用及相关机制
    • (一)缓存的重要性
    • (二)缓存的更新机制
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档