总的来说会有以下几个过程:
- DNS解析
DNS解析就是把一个域名转换成一个IP地址。
那么为什么要DNS解析呢?
因为网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。
比如,我们现在要解析www.qq.com这个域名。
-
操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析
-
如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
-
如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器。如果有就解析返回
-
如果还没有,本地DNS服务器就会把请求返回根域名服务器(全球只有13台),根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。
-
本地DNS服务器就会发起请求对这台负责.com域的服务器。收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。
-
当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。
值得一提的是,其中从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的属于迭代查询。
- TCP连接
浏览器与服务器之间建立TCP连接,浏览器再通过HTTP协议构建HTTP请求报文。
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面