【问题标题】:how custom route for a process?如何为流程定制路线?
【发布时间】:2011-01-31 03:11:47
【问题描述】:

在我的电脑中,有两个网络适配器,连接到不同的子网。如下:

适配器 A:10.20.30.201 适配器 B:10.20.31.201

我想让一个特殊进程(例如进程A)的所有传出数据都通过适配器A。即我想把适配器A作为进程的默认路由。

我知道,我可以为一些特殊的目的地修改路由表,但是我想在这里做的是非常不同的。 进程 A 可能会与许多不同的 IP 通信,而我事先并不知道。

Winsock2 提供LSP 作为在 TCP/IP 堆栈中放置 dll 的一种方式。我对LSP不熟悉,不知道LSP能不能做我想做的事情。

谁能给我一些建议,谢谢。

【问题讨论】:

标签: windows process routes winsock-lsp


【解决方案1】:

快速了解 LSP 的背景:

使用 Winsock2 API 的应用程序调用 WSA 前缀函数的组合,例如 WSAConnect、WSASocket、WSASend、WSARecv 等。

如果应用程序仍然使用旧的 Winsock 函数,这些函数无论如何都会在后台映射到 Winsock2。例如:send() 映射到 WSASend(),recv() 映射到 WSARecv(),等等

WSA-prefix 函数将在内部调用它们对应的由 LSP 提供的 WSP-prefix 函数。例如 WSASend() 调用 WSPSend(),WSASocket() 调用 WSPSocket() 等。简而言之,WSAWhateverFunction() 将调用 WSPWhateverFunction()。它们的参数/返回也相同(不完全是,但有点)。

LSP 是一个实现了这些 WSP 前缀功能的 dll,例如。修改出站/入站流量、过滤等。但是 LSP 仍然是用户空间 dll。它与其他用户空间程序一样受到限制,并且没有比其主机应用程序更高的权限,例如互联网浏览器。它可以访问其他程序可用的同一组系统功能,例如。温索克等

结论是,如果您的程序可以将传出的流量引导到特定的 NIC,LSP 也可以做到。如果不能,LSP 也不能。因此,LSP 与您的问题无关。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2016-01-22
    • 2022-12-20
    • 2012-09-21
    • 2022-01-24
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多