网络知识大扫盲:DNS 详解
在找工作面试的过程中,面试官非常喜欢考察基础知识,除了数据结构与算法之外,网络知识也是一个非常重要的考察对象。网络知识虽然抽象且不易理解,但却是现代信息技术的重要组成部分。为了帮助大家更好地通过面试,本文将进行一次网络知识大扫盲,重点聊一聊网络知识中最基本的DNS。
DNS 是什么?
DNS是Domain Name System的缩写,即域名解析系统。它的作用非常简单,就是根据域名查出对应的IP地址。
域名的层级
在了解DNS的解析过程之前,我们需要对域名的层级有一些了解。
- 顶级域名,如.com、.cn等。
- 次级域名,如里的baidu,这是用户可以进行注册购买的。
- 主机域名,比如baike.里的baike,这是用户可分配的。
- 先查找本地DNS缓存(自己的电脑上),如果有则返回,没有则进入下一步。
- 查看本地hosts文件有没有相应的映射记录,有则返回,没有则进入下一步。
- 向本地DNS服务器发送请求进行查询。本地DNS服务器收到请求后,先查下自己的缓存记录,如果查到了直接返回就结束了。如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求。
DNS的缓存时间及其他相关内容
在上面的解析过程中,我们可以看到有两个地方会缓存DNS的查询记录。缓存的存在在一定程度上提高了查询效率,但同时也可能导致一定的准确率损失。因此我们在配置DNS解析的时候,会有一个TTL参数(Time To Live),表示这个缓存可以存活多长时间。
除了基本的解析过程,DNS还有其他的记录类型,如A记录、NS记录、MX记录等。这些记录类型在不同的应用场景中有着不同的作用。
我们还会使用一些工具来查询DNS信息,如dig命令、host命令、whois命令和nslookup命令等。
DNS劫持与HTTP劫持
在了解DNS的基本工作原理后,我们还需要知道的是关于DNS劫持和HTTP劫持的概念和区别。DNS劫持是指当你在访问某个网站时,返回给你的IP地址并不是该网站的真正IP地址,而HTTP劫持则是在你访问网站时弹出广告等干扰行为。
DNS劫持和HTTP劫持的产生原因和防范方法也是网络安全中的重要内容。
工具的使用
这里我们重点介绍dig命令的使用。dig是一个在类Unix命令行模式下查询DNS信息的工具。通过dig命令(加相关参数),我们可以看到上面描述的DNS解析的详细过程。
除了dig命令外,还有其他如host命令、whois命令和nslookup命令等工具也可以用来查询DNS信息。
手动清理本地缓存
在使用DNS的过程中,本地缓存的清理也是一个重要的操作。不同操作系统的清理方式略有不同,这里简单介绍了MacOS、Windows和Linux系统下的清理方法。