禁用TCP延迟ACK

Tom*_*Tom 18 linux tcp

我有一个应用程序通过TCP接收相对稀疏的流量,没有应用程序级响应.我相信TCP堆栈正在发送延迟的ACK(基于对网络数据包捕获的瞥见).对于单个套接字,在网络堆栈中禁用延迟ACK的建议方法是什么?我已经看过了TCP_QUICKACK,但看起来堆栈会在我的脚下改变它.

这是在Linux 2.6内核上运行的,我并不担心可移植性.

eph*_*ent 16

你可以setsockopt(sockfd, IPPROTO_TCP, TCP_QUICKACK, (int[]){1}, sizeof(int))在每次recv表演之后.看来TCP_QUICKACK只有在发送或接收数据时才会重置; 如果您没有发送任何数据,那么它只会在您收到数据时重置,在这种情况下您只需再次设置即可.

您可以在第14 字段中查看/proc/net/tcp; 如果它不是1,则应立即发送ACK ...如果我正在正确读取TCP代码.(我也不是这方面的专家.)