DNS(Domain Names System)是什么
它是一个域名系统,是进行域名和与之相对应的 IP 地址进行转换的服务器,将域名翻译成IP地址。
- IP 地址:一长串能够唯一地标记网络上的计算机的数字
- 域名:是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识
域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名等等,例如www.xxx.com
,www
为三级域名、xxx
为二级域名、com
为顶级域名。
除了这些还有电脑默认的本地域名服务器,查看本机的DNS域名服务器,可以在桌面上输入Win+R,运行输入框中输入cmd,再点击“确定”按钮,进入命令提示窗口,输入ipconfig/all指示命令之后按回车键,就可以看到电脑的服务器的ip地址了。接下来在命令提示框内输入命令“netstat -an”然后再按一下回车,按了回车之后,就可以看本地电脑所有端口的信息。
DNS 两种查询方式
- 递归查询:如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案
- 迭代查询:如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求
域名缓存
在域名服务器解析的时候,使用缓存保存域名和IP
地址的映射
DNS
的记录也分成了两种缓存方式:
- 浏览器缓存:浏览器在获取网站域名的实际 IP 地址后会对其进行缓存,减少网络请求的损耗
- 操作系统缓存:操作系统的缓存其实是用户自己配置的
hosts
文件
查询过程
- 首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表
- 若没有命中,则继续搜索操作系统的 DNS 缓存
- 若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的 DNS 缓存,查找成功则返回结果
- 若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询
- 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
- 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
- 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
- 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
- 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起
- 至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起