一个TCP 连接可以发多少个 HTTP 请求呢?

一个 TCP 连接可以发多少个 HTTP 请求呢?

1. 打开网址的过程

  1. DNS服务器请求解析(检查host文件)
  2. 建立TCP连接,三次握手
  3. 发送HTTP请求,请求行、请求头部、空行和请求数据4部分组
  4. 服务器返回,服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成
  5. 主动释放or延时释放
  6. 浏览器进行渲染

2. 问题:

  1. 现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?

    HTTP/1.0中,一个HTTP响应后会断开TCP连接

    HTTP/1.1中默认情况下建立 TCP 连接不会断开,只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。

  2. 一个 TCP 连接可以对应几个 HTTP 请求?

    在维持连接的情况下,一个 TCP 连接是可以发送多个 HTTP 请求的。

  3. 一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?

    HTTP/1.1 存在一个问题,单个 TCP 连接在同一时刻只能处理一个请求,意思是说:两个请求的生命周期不能重叠,任意两个 HTTP 请求从开始到结束的时间在同一个 TCP 连接里不能重叠。

    1.1通过维持长连接或者多个连接解决问题。

    在 HTTP2 中由于 Multiplexing 特点的存在,多个 HTTP 请求可以在同一个 TCP 连接中并行进行。

  4. 为什么有的时候刷新页面不需要重新建立 SSL 连接?

    TCP 连接有的时候会被浏览器和服务端维持一段时间。TCP 不需要重新建立,SSL 自然也会用之前的。

  5. 浏览器对同一 Host 建立 TCP 连接到数量有没有限制?

    有。Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。

posted @ 2020-08-29 20:16  小小小南瓜  阅读(562)  评论(0编辑  收藏  举报