zoukankan      html  css  js  c++  java
  • 一个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 连接。不同的浏览器有一些区别。

  • 相关阅读:
    Go通过闭包避免程序运行崩溃
    占个坑
    Go多核并行
    一个计划
    python入门:模拟简单用户登录(自写)
    python入门:if、elif、else 条件语句的基本用法
    python入门:if和else的基本用法
    python入门:print打印输出的用法
    python入门:最基本的用户登录
    Python入门:Python基础笔记
  • 原文地址:https://www.cnblogs.com/punnpkin/p/13583368.html
Copyright © 2011-2022 走看看