一、浏览器解析URL 解析URL中的参数,将域名和请求的资源分离,确定目标服务器。 二、浏览器封装HTTP请求报文 对URL解析之后,浏览器确定了目标服务器和目标服务器中的资源路径,然后需要根据这些信息封装程一个HTTP请求报文发送出去。 报文 分为 请求行、请求头、请求体 。 三、DNS域名解析 封装好HTTP请求报文后,还需要根据获取域名对应的目标服务器的IP地址,因此DNS协议会做以下事: 1. 首先搜索浏览器的DNS缓存,缓存中维护着一张域名与IP地址的对应表。 2. 若浏览器缓存中没有,则则查找操作系统的DNS缓存。 3. 若仍没命中,则操作系统会将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存,成功则返回结果(注意:主机和本地域名服务器之间的查询方式是递归查询)。 4. 若本地域名服务器的DNS缓存中没有命中,则本地域名服务器向根域名发送请求。根域名返回顶级域名服务器IP,本地域名服务器再向顶级域名服务器发送请求,会被返回权威服务器IP,本地域名服务器再向权威服务器发送请求,权威服务器会返回目标服务器IP。 5. 本地域名服务器会将得到的IP地址返回给浏览器,同时自己也将IP地址缓存起来。 6. 浏览器得到了域名对应的IP地址,并将其缓存。 注: DNS使用UDP协议,也就是上面各种请求和转发,都是基于UDP这个无连接协议的。 四、建立TCP连接 获取到目标服务器IP地址之后,浏览器就可以向其发送封装好的HTTP请求报文了。发送请求就需要TCP通过三次握手为浏览器和服务器之间建立可靠的连接,保证双方都具有可靠接受和发送能力。 五、浏览器发送请求 TCP三次握手完成之后,浏览器与目标服务器之间就建立了一条可靠的虚拟通道,于是浏览器就可以发送自己的HTTP请求报文了。 需要注意的是,HTTP 请求报文或者响应报文在 TCP 连接通道上进行传输的时候,由于这些报文比较大,为了更容易和准确可靠的传输,TCP 会将 HTTP 报文按序号分割成若干报文段并加上 TCP 首部,分别进行传输。接收方在收到这些报文段后,按照序号以原来的顺序重组 HTTP 报文。 六、负责传输的IP协议 实际上,TCP 在三次握手建立连接、四次握手断开连接、以及连接建立过程中的收发数据(TCP 报文段)等各阶段操作时,都是通过 IP 协议进行传输的,IP 协...