当使用raw sockets发送TCP数据时,允许将source ip address保留为零,以便内核输入正确的值。这很有帮助,尤其是在使用多个接口(具有不同的IP地址)时。我现在的问题是:要计算TCP校验和,我需要知道最终的源IP地址是什么。这对我来说似乎是不可能的?
有没有办法确定我的传出数据包的源IP?/edit:使用Linux
在Linux论坛上的asking about the same problem和一些bug测试之后,我得到了以下似乎与我的问题相关的信息: 我正在构建一个应用程序,它将传入的数据包通过内核网络钩子转移到用户空间中的代理当数据包进入时,我将skb目标地址更改为我的代理tcp服务器的地址,当它离开时,我更改源地址,以便通信将透明地通过。 我遇到了以下问题: 当大量数据进入时,它们会毫无问题地到达代理服务器。Caveman调试表明,skb只有在离开代理时才是非线性的,如果不调用skb_linearize,则不会