域名解析详解

我们知道网络通讯基本上是基于TCP/IP的,而TCP/IP以IP地址为基础,而域名仅仅是为了方便人类的记忆而设计的名称,计算机在网络中进行通讯时不能识别域名,只能识别IP地址,所以计算机在进行网络通讯之前需要先完成域名到IP的转化,我们称之为域名解析。

域名相关机构角色的关系

ICANN,全称是互联网名称与数字地址分配机构,一个非营利性的国际组织,负责在全球范围内对互联网唯一标识符系统及其安全稳定的运营进行协调,包括IP地址的空间分配、通用顶级域名以及国家和地区顶级域名系统的管理、根服务器系统的管理。

IANA,互联网数字分配机构,早期代表美国政府行使ICANNA的职能,后来工作交由ICANN负责。

域名注册局,是顶级域名下注册的域名的数据库。注册操作者是域名系统(NIC)的一部分,它保存了域名的数据。每个NIC都是一个组织,它管理顶级域名下的域名注册,负责控制域名分配政策。比如.com注册局则保存.com域名的数据,成为注册局需要向ICANN申请。

域名注册商,是经认证可向公众销售域名的组织,如 godaddy。

域名解析商,是提供域名解析服务的组织,比如dnspod。

此外,CNINIC和通信管理局是两个具有中国特色的组织,分别负责域名的实名和备案,这两个环节是域名使用过程中最为耗时最为繁琐的环节。

DNS解析架构的演变

早期接入互联网的设备很少,IP的管理比较简单,最开始是是通过本地Hosts文件的方式对域名和IP的映射关系进行管理;后来为了解决本地Host带来的配置不一致的问题,改为Hosts文件由Ftp统一发布,各个设备定时从Ftp更新Hosts 文件;再到后来出现了中心化的DNS服务集群提供域名解析服务;但随着接入互联网的设备增加,域名解析的请求量暴增,中心化的DNS服务集群开始暴露出明显的缺陷。客户机直接将所有查询请求发往中心化的DNS服务器,同时DNS服务器直接对所有查询客户机做出响应,出现了有单点故障,通信容量,远距离通信延迟,维护开销大等问题。为了解决中心化DNS服务存在的问题,出现了分布式DNS层次架构。

DNS解析架构的演变

DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器。

DNS解析过程

  1. 当在浏览器中输入URL时,浏览器会先检查自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信;
  2. 如果浏览器没有缓存,则操作系统会检查本地Hosts文件是否有域名IP的映射关系,有责使用IP进行通信;
  3. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有映射关系,有则直接返回完成域名解析;
  4. 如果至此还未找到映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,也就是常称的本地DNS服务器,如果服务器已缓存了映射关系,则使用这个IP地址映射返回完成域名解析,此时解析不具有权威性;
  5. 如果本地DNS服务器缓存已经失效(以转发模式为例),本地DNS服务器就把请求发至13组根DNS服务器,根DNS服务器收到请求后会判断这个.com域名是谁管理,并会返回一个负责该顶级域名服务器。本地DNS服务器收到顶级域名服务器信息后,将会联系负责.com域的服务器。该.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级.tencent.com域DNS服务器给本地DNS服务器。当本地DNS服务器收到该服务器的信息后,就会找向.tencent.com域服务器查询cloud.tencent.com域名指向的主机地址,返回给浏览器并将映射关系缓存,至此完成域名解析的过程。

整个迭代查询的过程均通过本地DNS服务器进行,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

下一篇分享我们将给大家介绍如何通过实用的 dig 命令洞察 DNS 解析过程。

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏拂晓风起

jira 3.13.5版 安装 配置 用户权限控制

1153
来自专栏idealclover的填坑日常

如何使用github给大佬递茶

最近也是闲到没事干(误),开始给开源项目打小黑工贡献代码,当个dalao手底下的端茶党。但是看来端茶党也不是那么容易做的或许只是傻翠他智商太低跟不上,在打小黑工...

1732
来自专栏walterlv - 吕毅的博客

文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶

发布于 2018-03-09 13:26 更新于 2018-05...

4722
来自专栏JadePeng的技术博客

统一配置中心选型对比

引入配置中心,需要考虑和现有项目的兼容性,以及是否引入额外的第三方组件。我们的java项目以SpringBoot为主,需要重点关注springboot支持性。

1K3
来自专栏杨建荣的学习笔记

关于几个MySQL环境问题的对比 (r7笔记第66天)

有时候出现了环境问题,对比是一种很好的方式,如果对比得当,可以避免反复的出现问题,可以根据对比的情况推理出一些可能出现的情况或者问题。 如果对比不当,很可能得出...

3696
来自专栏小文博客

红米note3全网通刷入第三方rec——小文’s blog

1694
来自专栏FreeBuf

利用Cobalt strike一步步教你发送钓鱼邮件

*本文原创作者:rj00,本文属FreeBuf原创奖励计划,未经许可禁止转载 前几天,在freebuf上就发表了新的Cobalt strike,提权利器Coba...

3465
来自专栏自由而无用的灵魂的碎碎念

老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?

先说一下我的配置:08年的acer aspire 5520g,很老的电脑,除了内存加到4g,其他都不变。官方只支持到windows7,并且官方说明该型号不在官方...

931
来自专栏Spark学习技巧

大数据基础系列之kafka知识点和优点

一,流式平台介绍 1,一般来说一个通用的流平台必须具备以下三个重要的能力: 1),能够允许你订阅和发布流式消息。在这方面,它类似于消息队列或企业消息系统。 2)...

4155
来自专栏阿杜的世界

Java Web项目中Maven使用经验

771

扫码关注云+社区

领取腾讯云代金券