前言今天方木带你八分钟了解DNS域名解析流程。在讲解DNS域名解析过程之前,我们先了解一下什么是DNS。什么是DNSDNS(DomainNameSystem)是DomainNameSystem的英文缩写,是为TCP/IP网络组织成域层次结构的计算机和网络服务命名系统。当我们在浏览器中输入一个URL地址时,浏览器需要知道服务器的IP才能向该URL的主机名对应的服务器发送请求。对于浏览器来说,DNS的作用就是将主机名转换成IP地址。DNS域名解析过程DNS域名解析,简单的说就是将域名翻译成IP地址。例如:将域名www.baidu.com翻译成对应的IP220.181.38.251,这里只是举例。域名解析流程上图分8步介绍了域名解析的流程,但是在此之前,会先检查本地缓存配置+hosts解析,然后实际执行上图的流程:浏览器缓存检查浏览器会先搜索浏览器自身的DNS缓存,缓存时间比较短,只有1分钟左右,而且只能容纳1000个缓存,看自己的缓存中是否有对应的条目,并且没有过期,如果有并且还没有过期,在这里解决Finish。操作系统缓存检查+hosts解析如果在浏览器缓存中没有找到对应的条目,操作系统也会有一个域名解析过程,那么浏览器首先去操作系统的DNS缓存中查找是否有解析结果对应域名,如果找到并且没有过期,则停止搜索,解析到此结束。在Linux中,可以通过/etc/hosts文件进行设置,可以将任意域名解析为任意可访问的IP地址。如果这里指定一个域名对应的IP地址,浏览器会优先使用这个IP地址。当解析该配置文件中的域名时,操作系统会将解析结果缓存到缓存中,缓存时间也受域名过期时间和缓存空间大小的控制。第一步,客户端通过浏览器访问域名为www.baidu.com(http://www.baidu.com)的网站,发起DNS请求,查询该域名的IP地址。请求被发送到本地DNS服务器。本地DNS服务器会先查询自己的缓存记录,如果缓存中有这样的记录,就可以直接返回结果。如果没有,本地DNS服务器也会查询DNS根服务器。第二步,本地DNS服务器向根服务器发送DNS请求,请求域名为www.baidu.com(http://www.baidu.com)的IP地址。第三步,已经查询到根服务器,但是没有记录域名和IP地址的对应关系。但是它会告诉本地的DNS服务器,你可以去域名服务器继续查询,并给出域名服务器(.com服务器)的地址。第四步:本地DNS服务器向.com服务器发送DNS请求,请求域名www.baidu.com(http://www.baidu.com)的IP地址。Step5com服务器收到请求后,不会直接返回域名与IP地址的对应关系,而是告诉本地DNS服务器,该域名可以在baidu.com域名服务器上进行解析,获取IP地址,并告诉baidu.com域名服务器的地址。步骤6本地DNS服务器向baidu.com域名服务器发送DNS请求,请求域名www.baidu.com(http://www.baidu.com)的IP地址。Step7baidu.com服务器收到请求后,在自己的缓存表中查找域名与IP地址的对应关系,将IP地址返回给本地DNS服务器。步骤8本地DNS服务器会获取该域名对应的IP地址返回给客户端,并将该域名与IP地址的对应关系保存在缓存中,以备下次其他用户查询时使用。总结最后引用大佬的一张图做一个总结:DNS域名解析过程
