HTTP 非持久和持久连接 |设置 1
超文本传输协议 (HTTP) 是一种应用程序级协议,它使用 TCP 作为底层传输,通常在端口 80 上运行。HTTP 是一种无状态协议,即服务器不维护有关过去客户端请求的信息。
HTTP 连接
- 非持久
- 执着的
在开始使用持久性和非持久性 HTTP 连接之前,让我们知道什么是 RTT。
RTT -> 小数据包从客户端传输到服务器并返回的时间。
RTT= 2*propagation time
1. 对于持久连接或非持久连接,确保使用一个 RTT 来启动 TCP 连接。
2.一个RTT用于HTTP请求和HTTP响应的前几个字节返回。
所以为了知道总的文件传输时间->
total = 2RTT+transmit time
持久连接和非持久连接之间的区别。
非持久连接
- 无并联
- 带并联
无并联 非持久
每个异议需要两个 RTT(假设没有窗口限制),一个用于 TCP 连接,另一个用于 HTTP 图像/文本文件。
带并联 非持久
持续连接
- 非流水线
- 流水线
在非管道连接中,我们首先建立需要两个 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