在大部分场景下,人们通过域名访问网站,然而计算机之间使用IP地址进行定位通讯,并不能直接识别域名,因此需要把人们习惯使用的域名解析到计算机能够理解的IP地址上,这个过程被称为域名解析,或DNS解析。
如何设置域名解析?大部分域名注册商都提供域名解析服务,登录域名注册商的域名解析控制平台,添加一条解析记录,设置好主机值、记录类型、解析线路、记录值、TTL值等参数后,保存提交,解析记录生效后,即完成域名解析的设置工作,用户就可以通过域名访问对应的IP地址。
比如我们想把“www.example.com”这个域名指向1.1.1.1这个IP地址,就需要添加一条解析记录。
其中主机值填写“wwww”,记录类型选择A记录,解析线路和TTL值选择默认即可,记录值填写1.1.1.1,提交保存,解析生效后,通过www.example.com这个域名即可访问到1.1.1.1这个IP地址。
域名解析的步骤流程是什么样的?理想的域名解析流程如下:
用户发起解析请求:用户在浏览器输入一个域名尝试访问时,会首先请求客户端设置的本地DNS。
请求根域名服务器:本地DNS服务器请求根域名服务器(.),根域名服务器告知下一级顶级域名服务器(.com、.net)的地址。
请求顶级域名服务器:本地DNS服务器请求顶级域名服务器,顶级域名服务器告知下一级权威域名服务器的地址。
请求权威域名服务器:本地DNS服务器请求权威域名服务器。权威域名服务器负责某个具体域名的解析工作,并为本地DNS服务器返回最终的解析结果。
用户访问网站:本地DNS服务器将得到的解析结果告知用户浏览器,用户通过域名对应的IP地址访问网站获取信息或服务。
以上是一个标准且理想的域名解析流程,然而在实际的解析过程中,为了节省解析时间,优化用户的访问体验,域名解析引入了DNS缓存机制。
当用户发起解析请求时,并不是每一次都会依次从根服务器请求到权威域名服务器,而是会尽可能地利用各级DNS服务器中的缓存,来加快解析的速度。
当用户在浏览器输入域名后,并不会直接去请求本地DNS服务器,而是会检查自身的缓存。如果自身缓存中有该域名的解析记录,就会直接取出并进行访问。
如果浏览器中没有找到对应的IP地址,浏览器就会查询系统缓存,看看本机的hosts文件中是否有结果。hosts文件是一个静态的域名解析文件,可以将域名手动绑定到某个IP地址上。如果hosts文件中找到了对应的域名和IP地址,则直接返回该IP地址。
如果hosts文件也没有域名的解析记录,浏览器才会去向本地DNS服务器发起域名解析请求。本地DNS服务器收到请求后,也不会直接请求根域名服务器,而是先查询自己的缓存,缓存中有记录,直接返回给用户。如果缓存中没有记录,才会依次向根域名服务器、顶级域名服务器、权威域名服务器发起请求。
在从权威域名服务器获取到最新的域名解析记录后,本地DNS服务器除了将结果告知用户浏览器外,还会将结果缓存在自身一段时间,供下一次用户访问时直接读取告知。