百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

DNS域名详细解析过程(最全面,看这一篇就够)

ahcoder 2025-05-28 14:42 8 浏览

一、什么是DNS域名解析

我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。

但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的IP地址,这样对于我们日常工作生活访问不同网站是很困难的。基于这种背景,人们在IP地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比IP地址更易被识别和记忆,逐渐代替IP地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。

域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的IP地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成IP地址。而DNS域名解析承担的就是这种翻译效果。

二、DNS域名解析过程

当我们在浏览器地址栏中输入www.baidu.com时,DNS解析将会有将近10个步骤,这个过程大体大体由一张图可以表示:

整个过程大体描述如下,其中前两个步骤是在本地电脑内完成的,后8个步骤涉及到真正的域名解析服务器:

第一步、本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。

第二步、如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也有一个域名解析的过程,在Linux中可以通过/etc/hosts文件来设置,而在windows中可以通过配置C:\Windows\System32\drivers\etc\hosts文件来设置,用户可以将任何域名解析到任何能够访问的IP地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地DNS解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的IP地址上,导致这些域名被劫持。

第三步、前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。

windows在这配置:控制面板-》网络和共享中心-》更改适配器设置-》选中目标适配器右键选择属性-》Internet协议版本4(TCP/IPv4)-》配置DNS地址。

第四步、如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析。

第五步、根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。

第六步、本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。

第七步、接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。 比如我要访问www.baidu.com,而这个域名是从A公司注册获得的,那么A公司上的服务器就会有www.baidu.com的相关信息。

第八步、Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等等信息,连同一个TTL值返回给本地DNS服务器。

第九步、返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。

第十步、把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。

三、递归查询和迭代查询的区别

DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。

DNS递归名称解析: 在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。

DNS迭代名称解析:(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。

客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

四、域名解析记录

主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录:

1、A记录

A代表Address,用来指定域名对应的IP地址,如将item.taobao.com指定到115.238.23.xxx,将switch.taobao.com指定到121.14.24.xxx。A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址

2、MX记录

Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server,如taobao.com域名的A记录IP地址是115.238.25.xxx,如果将MX记录设置为115.238.25.xxx,即xxx@taobao.com的邮件路由,DNS会将邮件发送到115.238.25.xxx所在的服务器,而正常通过Web请求的话仍然解析到A记录的IP地址

3、CNAME记录

Canonical Name,即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名,如将aaa.com解析到bbb.net、将ccc.com也解析到bbb.net,其中bbb.net分别是aaa.com和ccc.com的别名

4、NS记录

为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器取解析

5、TXT记录

为某个主机名或域名设置说明,如可以为ddd.net设置TXT记录为"这是XXX的知乎"这样的说明

相关推荐

Linux抓包工具tcpdump安装和使用,监视网络接口小工具大用途

Tcpdump工具是一个抓包工具也是一个协议分析软件。强大的功能和灵活的截取策略,使它成为Linux统下网络分析和问题排查的首选工具。tcpdump可以将网络中传送的数据包的头截获下来做分析。它支持...

linux安装lnmp一键安装包

一般企业正式服环境用的lnmp.org一键安装包,下面做下简单介绍:官网:https://lnmp.org1.安装(官网上有详细的安装步骤)screen-Slnmp是为了在安装的过程中,断线的后台...

Linux 安装Oracle11.2.0.4 (静默安装法)

一、环境准备1下载安装包已上传至对象存储,一共两个包#oracle11.2.0.4_1of7.zipwgethttps://oss-cn-north-1.unicloudsrv.com/sc-...

Ubuntu入门使用之 24.04 如何安装命令工具(或软件包)

如果你是初学者,在Ubuntu24.04上运行命令时遇到错误,这意味着运行该特定命令所需的软件包在你的系统中不可用。无论你是刚开始探索Linux世界,还是从旧版本升级而来,你可能会想知道如何...

Linux 安装代理 实现Windows Proxifier 功能

场景:linux上的应用---------->代理服务器(socket5)--------------------目标服务实现方案通过ProxyChains+Socat这2个工具来实现,具体...

Python保姆级安装教程(CPU+GPU)

以下是为您整理的2024年Python保姆级安装教程(CPU+GPU详细版),涵盖Windows、macOS和Linux系统,并详细说明GPU环境的配置(如CUDA、cuDNN等...

linux安装oracle

需要安装oracledataguard,所以先要安装单台oracle11g,下面是单台oracle11g的详细安装过程。1,安装环境硬件环境:2台linux虚拟机,Centos6.4,4G,4核...

Linux安装Nginx详细教程

Nginx是一款高性能的开源Web服务器软件,它被广泛应用于构建高性能的网站和应用程序。本文将向您介绍如何在Linux操作系统上安装和配置Nginx服务器。一、下载nginx1.1、手动下载进入ngi...

选择LINUX安装平台

您已经选择了Linux发行版,并准备开始安装过程,但您需要确定您的硬件选项。以下是从哪里开始。译自Linux:ChooseanInstallationPlatform,作者Damon...

用Linux“还原”Win11,AnduinOS创始人公布1.4/1.5版本更新计划

IT之家5月24日消息,据外媒Neowin今日报道,AnduinOS的唯一开发者AnduinXue近日公布了“类Windows风格”Linux系统未来的版本规划。他表示,A...

Linux lsof命令使用小结

推荐理由lsof(listopenfiles)是一个列出当前系统打开文件的工具。在Linux环境下,任何事物都是以文件的形式存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。所以,如传...

Linux进程管理—信号、定时器使用详解

信号:1.信号的作用:背景:进程之间通信比较麻烦。但进程之间又必须通信,比如父子进程之间。作用:通知其他进程响应。进程之间的一种通信机制。信号:接受信号的进程马上停止,调用信号处理函数...

Nexus 3 本地搭建与使用实战指南(适用于 Linux 与 Win11)

一、背景与介绍在DevOps流程中,本地镜像仓库能显著提升镜像下载速度、增强安全性并保障离线可用性。本文将手把手教你在Linux和Win11上分别部署并使用Nexus3搭建Dock...

字节跳动介绍使用AI优化Linux内核成果,可减少30%内存用量

IT之家11月23日消息,据外媒zdnet报道,字节跳动日前在LinuxPlumbersConference上介绍了通过使用AI优化Linux内核的成果,号称可以取得“显著...

一文带你了解 Linux 文件权限,从基础到高级

在Linux中,每个文件和目录都关联了一组权限,定义了不同用户对其的访问能力。权限分为三类:读取(read,r)、写入(write,w)和执行(execute,x),分别用字母r、w、x...