我修改了TCP数据包的IP头,并直接在netfilter NF_INET_LOCAL_OUT钩子中发送它们。可以成功建立TCP连接。不幸的是,对等体无法很好地处理具有PSH标志设置的数据包。但是,如果我让PSH的数据包通过默认的linux堆栈而其他数据包通过我的模块,那么所有TCP数据包都会顺利运行。我可以知道PSH数据包会发生什么变化吗?我该如何解决这个问题?感谢。
答案 0 :(得分:0)
我建议阅读关于PSH标志的following article。
设置PSH标志的数据包的接收者有可能正在尝试缓冲数据包,而不是仅仅通过PuSH,这就是造成错误的原因。