我修改了TCP数据包的IP头并直接在netfilter NF_INET_LOCAL_OUT钩子(Hook)中将它们发送出去。 TCP连接可以成功建立。不幸的是,带有PSH标志的数据包不能被对端很好地处理。但是,如果我让带有 PSH 的数据包通过默认的 Linux 堆栈,而其他数据包通过我的模块,则所有 TCP 数据包都会顺利通过。我可以知道带有PSH的数据包会发生什么情况吗?我该如何解决这个问题?谢谢。
最佳答案
我建议阅读following article关于 PSH 标志。
设置了 PSH 标志的数据包的接收者可能会尝试缓冲数据包,而不是仅仅通过推送数据包,这就是导致错误的原因。
关于c - 处理 TCP PSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688424/