我正在开发一个涉及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不是理想的操作系统,但是我无法控制操作系统。
提前致谢
答案 0 :(得分:1)
修复了TCP Syn数据包没有被激活的问题,原来我在计算TCP头校验和时忘了包含伪头。现在看起来tcp握手完成了,所以我解决了这个问题。如果有人想要更好的方式来完成这个,请随时回复。现在看起来我们将使用winpcap方法。
更新: 为了在没有Windows的情况下不断使用RST的tcp连接,你必须在你发送数据包的适配器上启用互联网连接共享(ICS)。除此之外,这最终为我们工作。