tcp - 什么时候在 tcp 段中设置推送标志

标签 tcp linux-kernel packet-sniffers

我在这里问了之前的问题:

tcp two sides trying to connect simultaneously

我尝试了解决方案中给出的方法,在使用 netcat 发送并使用 ethereal 嗅探数据包时,我观察到当我从一侧向另一侧发送“hello”字符串时,它是在设置了推送标志的段中发送的.

谁决定设置推送标志? 在 TCP 段中设置推送或紧急标志的规则是什么? 是否可以使用套接字 API 来实现?

最佳答案

tcp 堆栈使用 PUSH 标志来基本上说“我现在完成了”。它只是表示数据段已完全由源传输。

无法在用户空间(您的套接字 API)中指示或控制它,因为这只是执行此操作的 tcp 堆栈/实现。作为紧急标志。

(来源:Richard Stevens - Tcp/ip illustrated vol 1,第 20 章)

关于tcp - 什么时候在 tcp 段中设置推送标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264154/

相关文章:

linux - 如何在不运行 mknod 的情况下让 Linux 字符设备自动显示在/dev 中?

linux - 卸载高分辨率定时器模块

php - TCP 连接使用套接字返回错误结果

tcp - 强制断开 WebSocket 连接的最简单方法是什么?

macos - 如何在 Mac OS X 中加载不同的拥塞控制算法?

sslstrip 并不总是有效 - 仅在成功登录之前

c# - Winpcap 简单问题——如何向指定的ip/端口发送数据包?

performance - TCP 客户端在继续发送之前等待 ack

module - Linux : order of statically linked module loading

php - 是否可以使用数据包嗅探器来跟踪 GET 请求