
文章插图
作者 | 写代码的明哥
来源 | Python编程时光
头图 | CSDN付费下载自视觉中国
在找工作面试的过程中,面试官非常喜欢考察基础知识,除了数据结构与算法之外,网络知识也是一个非常重要的考察对象 。
而网络知识,通常是很抽象,不容易理解的,有很多同学就在这里裁了跟头 。为了更好地通过面试,本文讲进行一次网络知识大扫盲,聊一聊网络知识最基本的DNS 。

文章插图
DNS 是什么?DNS是 Domain Name System 的缩写,也就是 域名解析系统,它的作用非常简单,就是根据域名查出对应的 IP地址 。
你可以把它想象成一本巨大的电话本,比如当你要访问域名www.163.com,首先要通过DNS查出它的IP地址是112.48.162.8 。

文章插图
域名的层级由于后面我会讲到 DNS 的解析过程,因此需要你对域名的层级有一些了解
- 根域名 :.root 或者 .,通常是省略的
- 顶级域名,如 .com,.cn 等
- 次级域名,如 baidu.com 里的 baidu,这个是用户可以进行注册购买的
- 主机域名,比如 baike.baidu.com 里的baike,这个是用户可分配的
主机名.次级域名.顶级域名.根域名
baike.baidu.com.root

文章插图
DNS 解析过程咱们以访问 www.163.com 这个域名为例,来看一看当你访问 www.163.com 时,会发生哪些事:
- 先查找本地 DNS 缓存(自己的电脑上),有则返回,没有则进入下一步
- 查看本地 hosts 文件有没有相应的映射记录,有则返回,没有则进入下一步
- 向本地 DNS 服务器(一般都是你的网络接入服务器商提供,比如中国电信,中国移动)发送请求进行查询,本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大,www.163.com 的ip是啥?
- 根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1) 。
- 本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给 .com 这个顶级域名服务器发起请求:请问 .com 大大,www.163.com 的ip 是啥?
- .com 顶级域名服务器接收到请求后,看到这是 163.com 的域名,就回信说:这个域名是 .163.com 老弟管理的,你就去问他就行了,这是他的联系方式(ip2)
- 本地 DNS 服务器接收到回信后,按照前辈的指引(ip2),又向 .163.com 这个权威域名服务器发起请求:请问 163.com 大大,请问 www.163.com 的ip是啥?
- 163.com 权威域名服务器接收到请求后,确认了是自己管理的域名,马上查了下自己的小本本,把 www.163.com 的ip告诉了 本地DNS服务器 。
- 本地DNS服务器接收到回信后,非常地开心,这下总算拿到了www.163.com的ip了,马上把这个消息告诉了要求查询的客户(就是你的电脑) 。由于这个过程比较漫长,本地DNS服务器为了节省时间,也为了尽量不去打扰各位老大哥,就把这个查询结果偷偷地记在了自己的小本本上,方便下次有人来查询时,可以快速回应 。
- 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
- 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
- 从"次级域名服务器"查出"主机名"的IP地址

文章插图

文章插图
DNS的缓存时间上面的几个步骤里,可以看到有两个地方会缓存 DNS 的查询记录,有了缓存,在一定程度上会提高查询效率,但同时在准确率上会有所损失 。
因此我们在配置 DNS 解析的时候,会有一个 TTL 参数(Time To Live),意思就是这个缓存可以存活多长时间,过了这个时间,本地 DNS 就会删除这条记录,删除了缓存后,你再访问,就要重新走一遍上面的流程,获取最新的地址 。
推荐阅读
- 一文带你彻底理解Linux的各种终端类型及概念
- 什么样的茶杯才算好茶杯?一文帮你挑到最实用的茶器
- 手电钻、冲击钻、电锤、电起子有什么区别?一文搞懂男人电钻工具
- 服务器软件大扫盲
- 退休人员去世,家属到底可以领取多少钱?一文给你说清楚
- 一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项
- 一文读懂HTTPS以及SSL单向验证和双向验证
- 学好JavaScript设计模式,一文足矣!
- 给家长们扫扫盲:啥是EDG?为什么年轻人对“EDG夺冠”如此狂欢?
- 一文看懂开源许可证,能不能商用再也不抓瞎
