由于IP地址不容易为人们记住、使用,因此出现了域名,而在进行网络通信时,IP地址又是必不可少的信息,因此,DNS(域名解析服务)便应运而生,其大体流程如下:
- 查看浏览器缓存,如存在域名对应的IP(此前解析过),则结束;
- 查看本地host文件,windows操作系统中的C:\Windows\System32\drivers\etc\hosts文件可提前设置相关域名的解析,若存在IP匹配当前域名,则结束;
至此,本地相关操作结束,如未能解析,则需要到DNS服务器上进行查询 - 用户向本地DNS服务器发起请求,每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责;
- 向根DNS服务器请求解析;
- 根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右;
- 本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求;
- 接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成;
- Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等等信息,连同一个TTL值返回给本地DNS服务器;
- 返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制;
- 把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。