📜  HTTP 非持久和持久连接 |设置 1

📅  最后修改于: 2022-05-13 01:57:01.241000             🧑  作者: Mango

HTTP 非持久和持久连接 |设置 1

超文本传输协议 (HTTP) 是一种应用程序级协议,它使用 TCP 作为底层传输,通常在端口 80 上运行。HTTP 是一种无状态协议,即服务器不维护有关过去客户端请求的信息。

HTTP 连接

  1. 非持久
  2. 执着的

在开始使用持久性和非持久性 HTTP 连接之前,让我们知道什么是 RTT。

RTT -> 小数据包从客户端传输到服务器并返回的时间。

RTT= 2*propagation time

1. 对于持久连接或非持久连接,确保使用一个 RTT 来启动 TCP 连接。
2.一个RTT用于HTTP请求和HTTP响应的前几个字节返回。

所以为了知道总的文件传输时间->

total = 2RTT+transmit time

持久连接和非持久连接之间的区别。

非持久连接

  1. 无并联
  2. 带并联

无并联 非持久
每个异议需要两个 RTT(假设没有窗口限制),一个用于 TCP 连接,另一个用于 HTTP 图像/文本文件。

带并联 非持久

持续连接

  1. 非流水线
  2. 流水线

非管道连接中,我们首先建立需要两个 RTT 的连接,然后我们发送所有对象图像/文本文件,每个对象需要 1 个 RTT(不需要每个对象的 TCP)。

流水线连接中,2RTT 用于连接建立,然后 1RTT(假设没有窗口限制)用于所有对象,即图像/文本。

持久连接的优点:
1) 较低的 CPU 和内存使用率,因为连接数较少。
2) 允许请求和响应的 HTTP 流水线。
3) 减少网络拥塞(更少的 TCP 连接)。
4) 减少后续请求的延迟(无握手)。
5) 可以报告错误而不会关闭 TCP 连接。

持久连接的缺点:
即使在不需要时,资源也可能一直被占用,并且可能对其他人不可用。

大多数现代浏览器,如 Chrome、Firefox 和 Internet Explorer 都使用持久连接。

参考: https://en.wikipedia.org/wiki/HTTP_persistent_connection