在我们使用互联网和移动应用过程中,域名是一项最基础的服务,之前写过一篇文章介绍了 与域名相关的几个工具 ,本文来分析下域名解析的过程以及与此相关的几个重要参数。
域名解析过程
当我们在浏览器的地址栏中输入 www.edulinks.cn 的域名,或者当我们编写程序、通过命令行工具访问某个域名时,就开始进入域名解析的过程。
使用浏览器的场景,根据浏览器的不同,可能会提供浏览器层面的缓存。
如果没有浏览器缓存,接下来会查询操作系统的缓存。
如果操作系统没有缓存,接下来会从系统的 hosts 文件中查询,Linux 操作系统的 hosts 文件位于 /etc/hosts
。
如果 hosts 中没有记录,就要从本地 DNS 服务器查找域名。
Linux 操作系统中,域名解析的配置主要位于 /etc/resolv.conf
文件中。这里面有两个可能平时大家不太关注的参数,一个是域名解析请求超时设置 timeout,一个是域名解析后的重试次数 attempts,默认情况下,默认超时时间是 5秒,默认请求重试次数是 2次。
互联网上的域名服务器一般分为三种:根域名服务器(.)、顶级域名服务器(.com)、权威域名服务器(.baidu.com)。操作系统上配置的一般为本地域名服务器,如不同的运营商都会提供本地域名服务器,当我们上网时,默认会先向本地域名服务器发送域名解析请求。
这里服务器并不一定是具体的一台物理设备,可能是一组提供对应级别域名解析的服务。
本地域名服务器会按照根域名服务器、顶级域名服务器、权威域名服务器的顺序依次请求需要访问的域名,并将最后的结果返回给客户端。