我正在尝试使用原始套接字将在一个网络接口中收到的SYN数据包发送到同一主机上的另一个网络接口(同时更改IP地址)。
我在Windows Server 2008 R2上,虽然发送和接收UDP数据包非常顺利,但是当我尝试发送TCP数据包时,另一方却没有收到它(尽管它在Wireshark中正确显示) 。另一方通常会侦听SOCK_STREAM数据。
我刚刚在this网站上看到:
即使您可以使用原始套接字发送TCP数据包,操作系统的TCP / IP堆栈也将处理传入的TCP和UDP数据包。当您使用原始套接字发送TCP SYN数据包时,操作系统将拒绝目标的响应,因为它不知道您发送的SYN。因此,您无法完成三次握手。
但是,Microsoft noted表示:
以上限制不适用于 Windows Server 2008 R2 ,Windows Server 2008,Windows Server 2003或Windows XP SP2之前的操作系统版本。
是否无法通过原始套接字发送TCP数据?但是,如果是,是否有办法建立TCP连接?也许有些WinAPI要添加流标识符?
我很想听到任何与原始套接字建立TCP连接的解决方案。谢谢!