Linux 下域名解析的一些小知识

在我们使用互联网和移动应用过程中,域名是一项最基础的服务,之前写过一篇文章介绍了 与域名相关的几个工具 ,本文来分析下域名解析的过程以及与此相关的几个重要参数。

域名解析过程

当我们在浏览器的地址栏中输入 www.edulinks.cn 的域名,或者当我们编写程序、通过命令行工具访问某个域名时,就开始进入域名解析的过程。

使用浏览器的场景,根据浏览器的不同,可能会提供浏览器层面的缓存。

如果没有浏览器缓存,接下来会查询操作系统的缓存。

如果操作系统没有缓存,接下来会从系统的 hosts 文件中查询,Linux 操作系统的 hosts 文件位于 /etc/hosts

如果 hosts 中没有记录,就要从本地 DNS 服务器查找域名。

Linux 操作系统中,域名解析的配置主要位于 /etc/resolv.conf 文件中。这里面有两个可能平时大家不太关注的参数,一个是域名解析请求超时设置 timeout,一个是域名解析后的重试次数 attempts,默认情况下,默认超时时间是 5秒,默认请求重试次数是 2次。

互联网上的域名服务器一般分为三种:根域名服务器(.)、顶级域名服务器(.com)、权威域名服务器(.baidu.com)。操作系统上配置的一般为本地域名服务器,如不同的运营商都会提供本地域名服务器,当我们上网时,默认会先向本地域名服务器发送域名解析请求。

这里服务器并不一定是具体的一台物理设备,可能是一组提供对应级别域名解析的服务。

本地域名服务器会按照根域名服务器、顶级域名服务器、权威域名服务器的顺序依次请求需要访问的域名,并将最后的结果返回给客户端。

参考资料

  1. resolv.conf 的超时(timeout)与重试(attempts)机制
  2. linux下DNS设置以及解析顺序
  3. 浅谈域名解析过程

cocowool

A FULL STACK DREAMER!