我们知道,当接收到设置了 PSH 的 TCP 数据时,它会立即将接收到的数据传输给应用程序。让我们在推送数据到达接收方并且接收方应用程序没有读取任何数据(忙于其他任务)时。那么接收者如何将数据传递给它的应用程序,因为接收者的进程甚至没有读取数据呢?
当接收方不读取数据时,TCP 标头中的 PSH 标志有什么作用?
网络工程
tcp
2022-02-27 04:46:39
1个回答
PSH 标志使发送方的堆栈立即发出下一个数据段,而不收集更多数据。接收者的堆栈也不会等待更多数据,而是立即将段的数据传递给应用程序。如果接收应用程序很慢或根本不读取数据,那就是它卡住的地方。PSH 标志不能神奇地唤醒死进程。
如果没有 PSH,当发送方(或接收方)堆栈等待更多数据填满段(或缓冲区)时,发送小数据块可能会延迟。当仅以小块生成数据时,这可以显着减少处理和协议开销。
If the PUSH flag is set, the data must be transmitted promptly to the receiver, and the PUSH bit will be set in the last TCP segment created from the buffer. If the PUSH flag is not set, the data may be combined with data from subsequent SENDs for transmission efficiency.
请注意与 URG 的相似之处仍然不同,因为它向接收器堆栈发出信号,以按应用程序应无序处理的 URGent 数据。
PUSH 的典型示例是一个控制台应用程序 (telnet),它单独发送每个密钥,并且在没有 PUSH 的情况下会遭受严重的延迟。URG 可用于在此类应用程序中发出中断/停止/重置信号:停止运行输出而不是输出所有内容,然后等待/处理下一个用户输入。
其它你可能感兴趣的问题