DNS解析又称域名解析。目的是将域名解析成对应的ip地址,去相对应的ip地址服务器上获取请求资源。

从输入网址到看到界面的整个流程:

1.浏览器中输入网址  
==> 2.域名解析(DNS),找到IP服务器
==> 3.HTTP三次握手,发送HTT的请求(Request)
==> 4.服务器响应HTTP(Response)
==> 5.浏览器下载资源 html css js images
==> 6.浏览器解析代码(如果服务器有gzip压缩,浏览器先解压)
==> 7.浏览器渲染呈现给用户

DNS解析的详细流程:

以Chrome浏览器为例:

#dns 来进行查看Chrome自身的缓存)

第二步、 如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,
如果找到且没有过期可以在命令行下使用 ipconfig /displaydns 来进行查看 )

第三步、 如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件
(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。

第四步、 如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,发起域名解析请求
(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必
须得提供给我们该域名的IP地址)运营商又会从自身的一级一级缓存中查找,最后从服务器数据库中
找到对应的ip地址返回来。
【当然dns服务器有好多级,什么com cn 很多,从根服务器又一层层分了好多。一般用户是就近访问。】

题外话,web优化的时候,需要考虑 DNS解析所花费的时间。

一般DNS解析是有时间开销的,大概时间在20-100多毫秒不等。
优化原则是: 减少主机名的数量就可以减少dns查找的时间。但是减少了页面中并行下载的数量。一般2个。 减少主机名和并行下载方案就会产生矛盾。需要每个项目不同的权衡。一般建议是将不同的资源放在至少2个以上,但不建议多余4个主机名下,减少DNS查找的时间同时又可以高速并行下载资源!