【发布时间】:2020-09-24 08:36:51
【问题描述】:
我知道 http 请求首先进行 3 次握手以建立连接。随后是请求和响应。
如果以后的请求需要握手,则称为非持久连接。
服务器可以选择保持连接活动,以便在超时值(持久)之前不需要握手。这称为持久连接。它不需要为每个请求进行 3 次握手,从而节省了所需的时间。
我的同事提到http支持持久性和非持久性。我的理解是 - tcp 建立连接。所以持久性是由 tcp 层控制的。我说的对吗?
【问题讨论】:
我知道 http 请求首先进行 3 次握手以建立连接。随后是请求和响应。
如果以后的请求需要握手,则称为非持久连接。
服务器可以选择保持连接活动,以便在超时值(持久)之前不需要握手。这称为持久连接。它不需要为每个请求进行 3 次握手,从而节省了所需的时间。
我的同事提到http支持持久性和非持久性。我的理解是 - tcp 建立连接。所以持久性是由 tcp 层控制的。我说的对吗?
【问题讨论】:
可能不对。 HTTP 比 TCP 更高层,HTTP 1.0 在完成传输一些数据流时会发送close()。但是在 HTTP 1.1 中,控制器不会发送close(),而是会发送keepalive/heartbeat 到另一端进行直播。它由应用层控制,换句话说,由 HTTP 本身控制。
【讨论】:
HTTP 支持持久连接的一种方式称为服务器发送事件。
用于持久连接的 HTTP 替代方案是 WebSocket。 WebSocket 是一种计算机通信协议,通过单个 TCP 连接提供全双工通信通道。 WebSocket 在 TCP 之上启用消息流。 WebSocket 与 HTTP 不同。
【讨论】: