DNS
DNS(Domain Names System),域名系统,是互联网一项服务,是进行域名和与之相对应的 IP 地址进行转换的服务器。
DNS 相当于一个翻译官,负责将域名翻译成 `ip`` 地址
IP
地址:一长串能够唯一地标记网络上的计算机的数字- 域名:是由一串用点分隔的名字组成的
Internet
上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识
所以 DNS 的作⽤就是通过域名查询到具体的 IP。
因为
IP
存在数字和英⽂的组合(IPv6
),很不利于⼈类记忆,所以就出现了域名。你可以把域名看成是某个IP
的别名,DNS
就是去查询这个别名的真正名称是什么。- 在
TCP
握⼿之前就已经进⾏了DNS
查询,这个查询是操作系统⾃⼰做的。 当你在浏览器中想访问www.baidu.com
时,会进⾏⼀下操作。
- 在
操作系统会⾸先在本地缓存中查询。
没有的话会去系统配置的
DNS
服务器中查询。如果这时候还没得话,会直接去
DNS
根服务器查询,这⼀步查询会找出负责com
这个⼀级域名的服务器。然后去该服务器查询
www.baidu.com
这个⼆级域名。接下来三级域名的查询其实是我们配置的,你可以给
www
这个域名配置⼀个IP
,然后还可以给别的三级域名配置⼀个IP
。
- 域名 域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名...
例如 www.xxx.com
,www
为三级域名、xxx
为二级域名、com
为顶级域名,系统为用户做了兼容,域名末尾的根域名.一般不需要输入。
除此之外,还有电脑默认的本地域名服务器
查询方式
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
地址缓存起。
- 首先搜索浏览器的
tip
以上介绍的是 DNS
迭代查询,还有种是递归查询,区别就是前者是由客户端去做请求,后者是由系统配置的 DNS
服务器做请求,得到结果后将数据返回给客户端。