在TCP通信的众多实例中,PUSH标志频繁出现,但其具体作用却鲜少被提及。将深入探讨PUSH标志的用途及其在实际应用中的意义。
发送方通过设置PUSH标志,通知接收方将已接收到的所有数据(包括与PUSH标志一同传输的数据以及此前TCP已接收但尚未提交给接收进程的数据)立即提交给接收进程。
早期TCP规范假设编程接口允许发送进程控制何时设置PUSH标志。例如,在交互式程序中,客户端发送命令给服务器后,会设置PUSH标志并等待服务器响应。这种机制允许客户端进程通知TCP在发送报文段时无需等待额外数据,避免已提交数据滞留在缓存中。类似地,服务器端的TCP接收到设置了PUSH标志的报文段后,会立即将数据递交给服务器进程,而无需等待潜在的额外数据。
然而,现今大多数API并未向应用程序提供控制PUSH标志的接口。实际上,许多TCP实现将PUSH标志视为过时机制,认为优秀的TCP实现应能够自主决定何时设置该标志。例如,源于伯克利的TCP实现会在待发送数据清空发送缓存时自动设置PUSH标志。这意味着,应用程序每次写入的数据都会被设置PUSH标志,因为数据在写入时会清空发送缓存。
暂无评论