有没有一种简单的方法将IP数据包从用户空间Windows应用程序路由到网络?

时间:2010-11-18 05:14:13

标签: windows routing tcp ethernet ipv4

我正在开发一个涉及USB设备的项目,通过它我们将从远程PC接收ip数据包。我们为远程PC分配其IP地址。我一直在尝试通过几种方法发送原始ip数据包:

1 - 原始套接字:ping工作正常,发送tcp的问题

2 - tun / tap W32:我设法让这个工作足以发送ping并将ping回到phy以太网设备,但无法使用驱动程序guid上的ReadFile(...)读取它们。

3 - winpcap:ping工作,out tcp出现在wireshark上(所以我假设它离开了电脑),但我从来没有得到我的syn的ack。我还担心,如果我确实得到了一个ack,Windows TCP堆栈会发送第一个。

我们的目标是成为从客户端PC到网络的透明传递。 客户端< -wrapped ip packet-> [device]< -wrapped ip packet-> WinPC< - IP - > IpNetwork

我可能会发现这个错误,似乎这应该更容易。

我意识到Windows不是理想的操作系统,但是我无法控制操作系统。

提前致谢

1 个答案:

答案 0 :(得分:1)

修复了TCP Syn数据包没有被激活的问题,原来我在计算TCP头校验和时忘了包含伪头。现在看起来tcp握手完成了,所以我解决了这个问题。如果有人想要更好的方式来完成这个,请随时回复。现在看起来我们将使用winpcap方法。

更新: 为了在没有Windows的情况下不断使用RST的tcp连接,你必须在你发送数据包的适配器上启用互联网连接共享(ICS)。除此之外,这最终为我们工作。