对于互联网一代的我们,一出生就学会使用电脑。当我们对着浏览器地址栏输入www.baidu.com的时候,百度的首页就出现在面前。但你可曾想过,为什么我们输入www.baidu.com就可以弹出百度首页?在这弹指一挥间,到底发生了什么?今天就让我带你来揭开这背后发生的一切。

当我们开始之前,我们需要明白:虽然我们每次访问网页,都是使用域名的方式(例如:www.baidu.com)。但对于计算机来说,它最终访问的是域名对应的IP(例如:10.102.201.253)。所以今天我们要讲的这一切,其实就为了说清楚一件事情:DNS是如何为域名找到对应的 IP 地址的。

浏览器DNS缓存

当我们在浏览器地址栏输入域名后,浏览器首先会去其本身的 DNS 缓存中查找是否有对应域名的记录。如果有,那么直接访问对应的服务器。

不同浏览器会设置不同的 DNS 缓存时间,一般来说是 2-30 分钟之间。如果当你修改了系统 DNS 缓存后,发现访问还是没生效,你可以尝试清除下浏览器的 DNS 缓存。

系统DNS缓存

当浏览器在其自身的缓存中找不到对应域名的记录时,其将会去系统的 DNS 缓存中寻找记录。在 Windows 系统中,DNS 缓存信息存储在 C:/windows/system32/drivers/etc/hosts 中。而在 Mac OSX 系统中,DNS 缓存信息存储在 /etc/hosts 文件中。

但无论在哪个系统,该文件的格式都是域名的 IP 地址的映射。每一行是一个映射,前面是域名对应的 IP 地址,后面是对应的域名。

127.0.0.1 www.baidu.com
192.168.1.1 www.google.com

如上面的范例所示,其设置了当我们访问 www.baidu.com 时,我们直接访问 127.0.0.1 这台机器。而当我们访问 www.google.com 时,我们直接访问 192.168.1.1 这台机器。

所以很多时候,当我们在本地调试时我们可以设置任意的域名,只要该域名对应的 IP 存在对应的服务即可。例如像我这样喜爱写文章的程序员,我可以写这样设置一个域名的映射:

127.0.0.1 top-writer.google.com

当你的机子上访问 top-writer.google.com 的时候,请求自然就会转发到本机上,即使你并不是这个域名的所有者。

本地DNS服务器

如果在系统 DNS 也找不到域名的记录,那么浏览器就会去本地的 DNS 服务器(LDNS)上寻找该域名的记录。在这里的 LDNS 一般是指本机所设置的 DNS 服务器地址。例如在我的电脑上,其对应的 DNS 地址为:10.xxx.xxx.253。那么浏览器就会去这个 DNS 服务器上寻找域名对应的记录。

如果在 LDNS 服务器上找到了记录,那么就直接返回就可以。但如果还是没找到记录,那么就得进一步深入查找了。

根DNS服务器

当 LDNS 服务器还是招不到域名对应的记录时,那么其就会去根 DNS 服务器去寻找域名对应的记录。根 DNS 服务器全球只有 13 台,所以在 LDNS 服务器建立的时候,其会写死一个根 DNS 服务器的 IP 地址列表。

但实际上根 DNS 服务器并不存储所有域名的信息,其只存储顶级域名的解析记录。即对于我们访问的域名 www.baidu.com 来说,根 DNS 服务器并不能告诉我们 www.baidu.com 这个域名对应的 IP 是多少,它只能告诉我们 .com 这个顶级域名应该找哪个 DNS 服务器解析,然后把对应顶级 DNS 服务器的 IP 地址告诉我们。

顶级DNS服务器

我们访问域名 www.baidu.com 后,根 DNS 服务器告诉我们可以找对应的 .com 顶级 DNS 服务器解析。但实际上顶级 DNS 服务器只能解析二级域名的地址,即它只能告诉你:baidu.com 这个域名应该找哪台 DNS 服务器去解析。

这里我们从顶级 DNS 服务器解析 baidu.com 这个域名得到的 DNS 服务器,其实就是你买域名时用于管理解析的服务器。而且也是你设置域名 NS 记录时,设置的 DNS 服务器的地址。

注:关于什么是 NS 记录,可以在公众号后台回复「域名解析类型」,查看我写的另一篇文章。

域名DNS服务器

上一步我们知道 baidu.com 这个顶级域名应该找哪台 DNS 服务器去解析,其实这台 DNS 服务器就是我们购买域名时设置的用于解析的 DNS 服务器。在这台 DNS 服务器上,我们通过设置一条 A 记录(A 记录就是域名到 IP 地址的映射)就可以让某个域名与 IP 联系起来。

当浏览器去请求 baidu.com 对应的 DNS 服务器时,其会尝试寻找解析类型为 A ,并且主机名为 www 的解析记录。如果找到了,那么就返回对应的 IP 地址。否则就报告 DNS 解析错误,其不会再去其他 DNS 服务器上寻找了。

总结

看到这里,相信大家都清楚了 DNS 寻址的整个流程了。总的来说,DNS 寻址的顺序为:

  • 浏览器 DNS 缓存

  • 系统 DNS 缓存

  • 本地 DNS 服务器

  • 根 DNS 服务器

  • 顶级 DNS 服务器

  • 域名 DNS 服务器

如果到最后还是找不到解析记录,那么就直接报域名解析错误。在这个过程中,我们还可以学到两个重要的知识点,即:

第一,域名 DNS 服务器就是 NS 记录设置的地址。 我们在域名服务商可以设置 NS 记录,将域名托管给另外一台 DNS 服务器进行解析,这个时候顶级 DNS 服务器注册的域名 DNS 服务器,就是我们 NS 记录配置的值。

上图我为 doc.csyimg.com 子域名设置了一条 NS 解析记录。那么当我访问 doc.csyimg.com 的时候,当解析到顶级 DNS 服务器时,顶级 DNS 服务器应该是返回 csyimg.com 对应的域名 DNS 服务器地址。接着浏览器访问 csyimg.com 对应的域名 DNS 服务器时,发现是要访问 doc.csyimg.com 域名,因为设置了 NS 记录,于是告诉它去 ns.baidu.com DNS 服务器上去寻找对应的解析记录。

注:这里说的找 ns.baidu.com 解析,其实应该是该域名对应的 IP,这里为了表述方便,没有做过多解释。

第二,域名最终得到的 IP 地址,是通过域名的 A 解析类型。 通过上面的解释,你会发现无论怎样设置,最终都会有一台 DNS 服务器去解析该域名。而在该 DNS 服务器上,必然存在一条解析类型为 A 的解析记录。如下图所示,我设置的是一条针对 hello.csyimg.com 域名的 A 记录,其指向了 192.168.1.1 这个 IP。如果最终找不到 A 记录,那浏览器就会报 DNS 解析错误。

第三,域名是由:主机名.二级域名.顶级域名.根域名组成的。 例如:www.baidu.com 中,www 就是主机名,.baidu 就是二级域名,.com 就是顶级域名。而在 .com 后面省略的 . 就是根域名。

通过这两个知识点,你会发现域名的解析类型与 DNS 的解析原理息息相关的。如果你感兴趣可以在公众号后台回复「域名解析类型」,查看我写的另一篇文章。

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

DNS自述:我是如何为域名找到家的相关推荐

  1. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题

    首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 你的服务器IP! 然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为 ...

  2. 详解DNS工作流程及原理 ( 域名、IP与DNS的关系)

    一.DNS服务概述 DNS是Domain Name System的缩写,即域名系统.其实,DNS是internet的一项服务,一般叫域名服务或者域名解析服务,主要提供网站域名与IP地址的相互转换的服务 ...

  3. dns统一管理内网域名

    使用场景:     用一台服务器部署dns,来统一管理系统用的的域名,其他业务系统所在服务器只需要配置dns服务器的ip地址,就可以共享dns服务器中配置的域名和ip,有域名变动,只需要修改dns中的 ...

  4. 修改域名dns服务器,新网互联域名如何修改DNS设置方法

    在新网互联注册的域名,DNS默认为新网互联DNS服务器(例如:ns1.dns.com.cn.ns2.dns.com.cn). 为了方便管理,使用西部数码的智能DNS解析服务,可以将域名的DNS修改为西 ...

  5. DNS扫盲系列之五:域名配置ZONE文件

    DNS扫盲系列之五:域名配置ZONE文件 这次把ZONE文件拿出来简单说明一下.ZONE文件是DNS上保存域名配置的文件,对BIND来说一个域名对应一个ZONE文件,现以abc.com的ZONE文件为 ...

  6. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录

    相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3MpK1nOQXI-JbS-AP5MvREzSnnedU7F9_G8l_Kvbkt_O2gKqFw ...

  7. 网络学习 DNS服务:域名解析和域名迁徙

    目前在互联网上域名解析授权大体上是谁出售域名就把域名的权威DNS授权给谁并由其提供域名的权威DNS来完成域名解析工作,如购买了新网域名默认就是由新网的权威DNS(nsx.xinnetdns.com.n ...

  8. 【Microsoft Azure 的1024种玩法】六十二.利用Azure Private DNS 实现虚拟网络中域名的管理解析

    [简介] Azure Private DNS是Azure为我们虚拟网络提供的安全可靠的DNS服务,我们无需自行配置DNS即可在虚拟网络中实现域名的解析及配置, 于此同时,我们在内网中也可以利用自己的自 ...

  9. Liunx7 DNS服务器正反解析,域名转发

    首先我们先安装DNS域名解析服务,安装命令: yum install -y *bind*(-y是接下来的安装步骤全部y,就是同意操作的意思:*是我不记得到底是哪一个安装包来着,就用*包着bind,把所 ...

最新文章

  1. cmd命令控制台窗口一闪就消失解决办法
  2. 隆重介绍!一款新型基于姿势的人像实例分割框架
  3. 【VMware虚拟化解决方案】VMware VSphere 5.1配置篇
  4. 八城联动丨神策 2020 数据驱动用户大会「上海场」10 月 23 日如期而至!
  5. 防止用户将表单重复提交的方法
  6. 董海冰:2018风云再起 ,期待AV1、AI和AR
  7. java 信息增益_对信息增益(IG,Information Gain)的理解和计算
  8. Linux 系统应用编程——网络编程(socket编程)
  9. php数组在golang,go语言数据类型-数组(array)
  10. C/C++语法知识:typedef struct 用法详解
  11. 浅谈SQL Server中的事物日志(一)
  12. c语言基础代码_全国计算机二级等级考试:C语言二级考试有多难?不看不知道...
  13. 2.15.PHP7.1 狐教程-【PHP 抽象类、抽象方法】
  14. G.8032 ERPS 轻松强固网络安全!
  15. 使用命令运行jmeter并自动生成测试报告
  16. 详解网易有道AI战略,智能硬件、教育、办公三大解决方案
  17. 机器学习--详解人脸对齐算法SDM-LBF
  18. 【组合数学】组合恒等式 ( 组合恒等式 积之和 1 | 积之和 1 证明 | 组合恒等式 积之和 2 | 积之和 2 证明 )
  19. 5G、LPWAN、SDN、NFV、TSN…一文带你看懂物联网“网”的本质
  20. 字节跳动面试题汇总 -- C++后端(含答案)

热门文章

  1. 【Java】Cloneable 接口讲解 (包含浅拷贝与深拷贝不一样的实现讲解)
  2. 制备pdms膜的方法_光栅式PDMS薄膜在透明窗口的超高发射率
  3. 两个文件比对_Edlib:方便快速的长序列比对软件包
  4. P2574 XOR的艺术(线段树)
  5. 构造方法前可以用public修饰吗_程序员,你连反射都不会,还敢说自己会Java吗?...
  6. matlab噪声倍频带声压级,近海风电场水下打桩噪声传播特性
  7. 数据结构与算法 | 线性表 —— 链表
  8. Go语言学习笔记(一)Let's 干吧
  9. 【基础概念】 Redis简介和面试常见问题
  10. JavaEE Tutorials (15) - 对Java持久化API应用使用二级缓存