浏览器工作原理(3):HTTP请求流程

在浏览器的地址栏中输入 http://blog.xyb.cool ,浏览器是如何进行 HTTP 请求拿到资源的呢?

  1. 首先需要构建 HTTP 请求

    浏览器会构建一个请求行信息

    GET http://blog.xyb.cool HTTP1.1
    
  2. 查找缓存

    发起请求前,浏览器会查看该资源是否命中强缓存,如果没命中则进行协商缓存的请求。

  3. 准备服务器端口和ip地址

    浏览器使用域名访问服务器,那浏览器是如何知道服务器的 IP 地址的呢?

    在网络中有一项服务叫 DNS域名系统 ,这个服务的作用就是把域名和IP地址一一映射,使得不用输入形如 http:// 10.152.66.4url,而使用域名替代繁琐的IP地址,这就是 DNS 的主要作用。

    浏览器首次请求该域名 -> 本地无DNS缓存 -> 请求网络中的 DNS 服务器,获得目标主机的 IP

    浏览器二次请求该域名 -> 本地有DNS缓存 -> 使用浏览器本身的DNS缓存,获得目标主机的 IP

  4. 等待 TCP 队列

    有些浏览器对 TCP 连接会有限制,比如谷歌浏览器,一个域名最多只能建立6个TCP连接,如果超过这个数,只能进入TCP队列等待之前的连接完成。

  5. 建立 TCP 连接

    三次握手四次挥手建立连接

    注意:一旦服务器向客户端发送完数据以后就要断开连接,

  6. 发送 HTTP 请求

    把带有 请求行请求头请求体,的请求发送给服务器。

  7. 获取 HTTP响应

    得到服务器的响应,在浏览器上进行渲染。

    特殊情况:301重定向,重定向的地址为响应头中的 location 字段。

猜你喜欢

转载自blog.csdn.net/weixin_44038881/article/details/127213377