DNS (Domain Name System)是域名系统的简称,用于将 http://www.baidu.com/ 这样的主机名解析为 IP 地址。
如果浏览器中输入的是 ip 地址,就不需要域名解析这一步了,如果输入的是 http://www.baidu.com/ 这样的域名,具体解析过程大致如下(肯定还有别的):
1、浏览器缓存 |
---|
用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的地址,当用户再次访问的时候,浏览器就会从缓存中查找该域名对应的IP地址,因为缓存不仅是有大小限制,而且还有时间限制,所以存在域名对应的找不到的情况。当浏览器从缓存中找到了该网站域名对应的地址,那么整个解析过程结束,如果没有找到,将进行下一步骤。对于的缓存时间问题,不宜设置太长的缓存时间,时间太长,如果域名对应的发生变化,那么用户将在一段时间内无法正常访问到网站,如果太短,会造成频繁解析域名 |
2、本地缓存(hosts 文件) |
如果浏览器缓存中没有找到(缓存没有命中),则会在本地缓存中找,在 C:\Windows\System32\drivers\etc 下的 hosts 文件,中存储域名对应的 ip;这个过程是操作系统级别的域名解析,修改 hosts 里的内容就可以把特定域名解析到指定 ip 上,造成域名劫持,所以 windows 里 hosts 文件是 readonly 的 |
3、本地dns解析器缓存 |
在命令行中输入 ipconfig /displaydns 可以查看本地dns解析器缓存 |
4、本地域名服务器 LDNS |
如果无法在本机上解析,那么需要请求 LDNS 进行解析,LDNS 一般是本地区服务器,比如校园网,由各自运营商提供 |
5、根域名服务器 |
还是没有的话,LDNS 向根域名服务器发起解析请求,根域名服务器返回所查询的通用顶级域名地址(gTLD, Generic Top-Level Domain)如.com,.net这些,一定能查到,然后再往下查 |
6、顶级域名服务器 |
然后,本地域名服务器向 gTLD 服务器发起请求,gTLD 根据需要解析的预警,找到该域名对应的域名服务器(Name Server 服务器) |
7、Name Server 服务器返回 ip 地址 |
对应的 Name Server 服务器查找到域名对应的地址,将 ip 地址返回给本地域名服务器 |
8、LDNS 混村解析结果 |
本地域名服务器将解析结果缓存,缓存结果有生命周期 TTL(Time to live) |
9、返回解析结果给用户 |
LDNS 将结果反馈给 本地 DNS 客户机,客户机通过这个 ip 地址与 web 服务器建立连接,至此解析结束 |