为什么会有DNS解析
平时生活中大家访问一个网页输入的都是 域名 (例:www.baidu.com),但是 域名 并不是这个网页真正的地址它只是方便咱们记忆的一个 别名 。真正能够被机器读取的其实是 ip (例:193.112.230.97)。 ip虽然能被机器直接识别但却容易被我们记住,所以出现了和 ip 映射的 域名 。而域名不能直接被机器识别定位进而出现了 DNS , 通过 DNS解析 访问的域名获取对应的ip地址来访问页面。
DNS解析
DNS(Domain Name System)域名系统, DNS是internet上作为域名和IP地址互相映射的一个分布式数据库(个人理解:就是用来存放域名和IP地址的一个仓库,域名和IP相互对应,域名就是IP地址的一个 别名 或者 key )。能够是用户更加方便的访问互联网,不用去记住复杂难记的IP地址。通过域名得到最终访问的IP地址的解析过程就是 DNS解析
查询方式
在DNS解析过程中存在两种查询方式
- 递归查询
- 迭代查询
假设当前教室有三个人:甲乙丙
递归查询:
甲 遇到一个问题解决不了,去问 乙 ,不料 乙 也不会因为害怕在 甲 面前丢面子转而去问学霸 丙 , 丙 告诉 乙 答案后, 乙 再将答案告诉 甲 。
迭代查询:
甲 又遇到一个问题解决不了,去问 乙 , 乙 正忙着没空于是告诉 甲 让他去问 丙 , 甲 又去问 丙 , 丙 告诉了 甲 答案。
在DNS解析中,
主机和本地域名服务器之间的查询是递归查询,本地域名服务器和其他服务器之间的查询是迭代查询。
DNS解析过程
当我们在浏览器输入网址访问的时候
- 首先查看当前
浏览器的DNS缓存 - 若没有找到,则会去查看
操作系统的DNS缓存(hosts文件) - 若仍然没有找到,就
操作系统会将域名发送给本地域名服务器,本地域名服务器查找自己的DNS缓存,成功则返回结果。 - 若
本地域名服务器也没有找到,则本地域名服务器会去上级域名服务器进行询问(该过程使用的是迭代查询)。- 首先
本地域名服务器会去问根域名服务器,根域名服务器是顶级域名服务器如果不知道,则会告诉你去找顶级域名服务器(例:.com,.cn)。 - 得知
顶级域名服务器地址后,本地域名服务器会去询问顶级域名服务器,但是顶级域名服务器,会告诉你这事你可以问权限域名服务器他知道。 - 得知地址后,询问
权限域名服务器拿到想要的IP地址,返回给本地域名服务器。
- 首先
本地域名服务器拿到的IP地址后告诉操作系统,并自己也缓存起来操作系统拿到IP地址后告诉浏览器,并自己也缓存起来- 最后
浏览器拿到IP地址访问页面,并且缓存起来