DNS域名解析过程

本文介绍了域名解析的概念,即把域名指向网站空间IP,由DNS服务器完成。还详细阐述了DNS域名解析的大概5个步骤,包括在浏览器本地缓存、计算机本地HOST指向、本地DNS解析服务器、gTLD Server查找对应IP,最后LDNS返回IP并缓存。

推荐一个自己的博客:JS -- 手动实现数组原生方法​​​​​​​

当我们在浏览器中输入一个域名(eg: www.baidu.com)时,浏览器会显示域名所对应的网站的内容,在输入域名到浏览器显示内容这个过程中就发生了域名解析,即将域名解析成IP的过程。

首先解释一下域名解析的概念。(来自百度百科

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

按个人理解,DNS域名解析大概分为5个步骤,以下。

①  我们在浏览器地址栏输入一个域名,浏览器得到域名,首先在浏览器的本地缓存中查看,有没有与此域名对应的IP;

②  如果没有查找到就会继续查看计算机本地的HOST指向,有没有相关的记录;

HOST:计算机本地的一个文件,记录着域名与IP的映射关系。

③   如果仍没有查找到就会查看本地的DNS解析服务器( LDNS ),这些服务器通常在每个城市都有;

④  如果还是没有查找到就会查看gTLD Server(通用顶级域)

每个顶级域名都有一个记录着所以注册过相应域名的记录,如.com域名的服务器记录着全部注册过的.com域名。

LDNS会访问gTLD其中的一台机器,当这台机器接收到这个域名后,会告诉LDNS应该去访问哪台机器,然后LDNS再去相应的机器去询问这个域名对应的IP; 

⑤  LDNS从gTLD获取到IP后会把这个信息返回给发出请求的计算机,LDNS会在本地进行缓存,浏览器也会对这个域名和IP进行缓存,保证下次访问这个域名时可以很快的响应。

至此,整个过程就结束了,其中的专业名词均可在百度查找到相关解释。

(灵感来自微信公众号:Duing)

### DNS域名解析过程详解 DNS域名解析是一个分层递归的过程,其主要目的是将人类可读的域名转换为机器可以理解的IP地址。以下是详细的解析流程: #### 1. 客户端发起请求 当用户在浏览器中输入一个域名时,客户端会先检查本地缓存是否有该域名对应的IP地址记录。如果有,则直接返回;如果没有,则进入下一步。 #### 2. 查询本地主机配置文件 如果未命中本地缓存,客户端会尝试查询本地主机配置文件(通常是`/etc/hosts`或`C:\Windows\System32\drivers\etc\hosts`),查看是否存在手动映射的域名与IP地址的关系[^2]。 #### 3. 请求本地域名服务器 (LDNS) 如果前两步均未能找到匹配项,客户端会向指定的本地域名服务器发送查询请求。此服务器通常由用户的互联网服务提供商(ISP)提供[^3]。 #### 4. LDNS 的处理逻辑 - **缓存命中**:如果本地域名服务器在其缓存中有目标域名的相关记录,则立即返回给客户端。 - **缓存未命中**:如果本地域名服务器无法解析该域名,它将以递归方式代替客户端继续向上级域名服务器请求解析[^4]。 #### 5. 向根域名服务器请求 本地域名服务器作为代理角色,首先联系根域名服务器(Root Server)。这些服务器负责指导如何定位顶级域(Top-Level Domain, TLD)的信息。例如,“com”、“org”等后缀分别指向不同的TLD服务器[^1]。 #### 6. 转发至权威名称服务器 根据根域名服务器提供的指引,本地域名服务器接着访问相应的TLD服务器获取更具体的子域信息。最终到达存储实际域名到IP映射关系的授权名称服务器(Authoritative Name Servers)[^1]。 #### 7. 返回结果并更新缓存 一旦获得确切的IP地址,这一路径上的每一环节都将把结果保存下来以便未来更快响应相同的请求。最后,原始请求者——即最初发出查询的应用程序收到所需的数据完成整个过程。 ```python import dns.resolver def resolve_domain(domain_name): try: answers = dns.resolver.resolve(domain_name, 'A') for rdata in answers: print(f"The IP address of {domain_name} is {rdata.address}") except Exception as e: print(e) resolve_domain('example.com') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值