【问题标题】:Transparent Proxy for Windows XPWindows XP 的透明代理
【发布时间】:2010-12-25 10:08:01
【问题描述】:
我有一个在 Windows XP 下运行的实验性 TCP/IP 堆栈。此堆栈使用 LSP 和 NDIS IM 绕过 Windows TCP/IP 堆栈。我现在需要为此提供代理服务,以支持其他想要使用实验堆栈的平台。代理必须对客户端透明(无客户端配置)。我想在用户模式下运行此代理服务,其中我使用普通 Windows TCP/IP 与客户端建立 TCP 连接,并通过实验堆栈以另一种方式建立 TCP 连接。一旦以这种方式连接,代理只会在两者之间进行读/写。我正在努力解决的问题是如何从客户端获取一个发往某个地址/端口的传入数据包并将其重定向到我的代理,同时仍然保持原始目标地址/端口的知识,以便代理可以转发数据包到正确的目的地。我会很感激这方面的任何想法。谢谢...
【问题讨论】:
标签:
windows
networking
drivers
ndis
【解决方案1】:
发送一个目的地数组,按时间倒序阅读[我希望这个词在这种情况下有效]顺序。并且每次从节点读取消息时,该节点都会删除零处的元素并将所有其他元素向前移动。 . . .我认为这是一个相当简单的问题。 . .
详细说明:我在第一份工作中使用了类似的系统。发送机器只会知道目的地,它会使用目的地端口和 IP 发送。然后让我们称之为“邮递员”服务器检查哪些服务器可用,即。伪代码:
我喜欢用python编码所以我讨厌声明变量[对不起]我希望你能理解
<br>
nodes = postman.checkAvailableNodes()\\this 将返回一个矩阵,其中每个元素都包含网络上任何可用节点上的 ipaddress 和可用端口
\\ 循环遍历所有可用的目的地并将路由映射到目的地服务器
对于节点中的 n:
nodeArray2 = n[0].checkavailablenodes()
如果长度(nodeArray2)> 0:
对于 nodeArray2 中的 x:
. . . .
无论如何。 . .一旦你得到目标节点和端口,你将IP和端口号添加到一个名为destinations的数组中,每次通过服务器时都会减少一个元素,最终你会到达服务器