首先,我们在浏览器输入百度的URL
https://www.baidu.com
1.构建请求
GET / HTTP/1.1
2.查找强缓存
3.DNS解析
依赖服务系统(DNS),将域名和IP一 一映射。得到IP的过程就是DNS解析。

值得注意的是,浏览器提供了DNS数据缓存功能,如果一个域名已经被解析过了,那么解析的结果会被缓存下来,下次处理直接走缓存,不需要经过DNS解析了。

另外如果不指定端口,默认采用IP的80端口。

4.建立TCP连接(TCP一种面向连接的、可靠的、基于字节流的传输层通信协议)
首先,Chrome在同一个域名下最多只能有6个TCP连接,超过6个剩下的请求就需要等待。

建立TCP连接经历下面三个阶段:
通过三次握手建立客户端和服务端的连接=>进行数据传输=>通过四次挥手断开连接

5.发送HTTP请求
浏览器发HTTP请求要携带三样东西:请求行、请求头和请求体。
  • 请求行(请求方法、请求URL、HTTP版本协议)
  • 请求头(
        )
  • 请求体(在POST请求中存在,常见场景表单提交)
6.网络响应
HTTP到达请求服务器,服务器进行对应的处理。最后把数据传给浏览器,也就是返回网络响应(响应行(HTTP协议版本、状态码、状态描述)、响应头、响应体)。

响应完成后,要判断Connection字段,如果请求头或响应头包含Connection: Keep-Alive,表示建立了持久连接,这样TCP连接会一直保持,之后请求统一站点的资源会复用这个连接。
否则断开TCP连接,请求-响应流程结束。

总结