摘要:我正在尝试创建套接字以在同一台机器上存在的两个物理接口之间传递数据,而 Win32 套接字总是直接在内核中转发流量,而不是通过物理接口推送。有没有办法禁用这种行为,可能是通过设备设置、注册表调整、路由表恶作剧或套接字选项?我们使用的是 Windows XP SP3。
一些背景。我正在尝试构建一些完全自动化的 IP 测试来运行我们的定制 IPv4 设备。我们有一个大型的 Windows XP 机器实验室,以及我们连接到的每台设备的单独物理以太网接口。我们的设备实际上是以太网路由器,每个路由器都有自己的 IP。
我们需要通过我们的设备将数据从我们的实验室机器发送出去,然后再发送回同一台计算机。我们将通过设备发送单播和多播 UDP、TCP 和广播 IP 流量。
我们希望(并且可能需要)流量源自它注定要到达的同一台机器。为此,我们在自己的子网上配置了两个独立的 NIC,每个 NIC 都有自己的 IP,例如 NIC #1 的 10.0.0.1/24 和 NIC #2 的 10.0.1.1/24。然后,我们的设备就像简单的直通路由器一样,有两个接口,一个在 10.0.0.0/24 子网,一个在 10.0.1.0/24 子网,它们只是来回转发数据包。
为了生成我们的数据,我们希望能够使用 Win32 套接字,因为它很容易理解、得到很好的支持、我们的客户正在使用什么,并且可能是最快速的方法。数据包注入对于 UDP 和广播 IP 可能是可行的,但对于 TCP 很可能不可行。我会接受使用数据包注入的想法,但更喜欢标准的 Win32 套接字。
如摘要中所述,数据包永远不会离开机器。我像疯子一样用谷歌搜索,但没有找到太多。有任何想法吗?