所有 TCP 数据包都设置了 PSH 标志 - 谁/什么对此负责?

所有 TCP 数据包都设置了 PSH 标志 - 谁/什么对此负责?

在服务器->客户端 TCP 流中,来自服务器的所有数据包都设置了 PSH 标志。老 Nagle 负责设置此标志吗?

答案1

推送标志(PSHP)由发送主机设置。如果发送应用程序使用 100 字节的写入或发送,则每个数据包都会设置PSH。如果发送方发送 2000 字节,则将分两个数据包发送,第二个数据包将带有标志PSH,假设标准帧大小为 1500。

推送标志向接收主机指示应立即将接收到的数据传递给接收应用程序。

答案2

推送标志的设置通常不由发送应用程序控制,而是由发送 TCP 层控制。大多数现代 TCP/IP 堆栈在提供给 send() 的缓冲区末尾设置 PSH 位。

来源: 通过不等待 Push 标志来改善 TCP 的延迟

答案3

始终设置 P 位是一种标准正确但效率低下的行为,您可能会从旧的 TCP 堆栈中看到这种行为。

相关内容