2009-12-10 5 views
1

У меня есть экспериментальный стек TCP/IP, работающий под Windows XP. Этот стек обходит стек TCP/IP Windows с использованием LSP и NDIS IM. Теперь у меня есть требование предоставить прокси-сервис для поддержки других платформ, которые хотят использовать экспериментальный стек. Прокси-сервер должен быть прозрачным для клиентов (без конфигурации клиента). Я хочу запустить эту прокси-службу в пользовательском режиме, где у меня есть TCP-соединение к клиенту, используя обычный TCP/IP для Windows TCP и TCP-соединение другим путем через экспериментальный стек. После подключения таким образом прокси-сервер просто считывает/записывает между ними. Проблема, с которой я борюсь, заключается в том, как принимать входящий пакет от клиента, который предназначен для какого-либо адреса/порта, и перенаправлять его на мой прокси-сервер, сохраняя при этом информацию об исходном адресе/порту назначения, поэтому прокси-сервер может перенаправлять пакеты к правильному месту назначения. Буду признателен за любые идеи по этому поводу. Спасибо ...Прозрачный прокси для Windows XP

ответ

0

отправьте массив пунктов назначения, читайте в обратном хронологическом порядке [я надеюсь, что это слово работает в этом контексте]. и каждый раз, когда сообщение считывается с узла, этот узел удаляет элемент в ноль и сдвигает все остальные элементы вперед. , , , Я думаю, это был довольно простой вопрос. , ,

подробно: я работал над подобной системой на своей первой работе. отправляющая машина будет знать только назначение, она отправляется с целевым портом и IP-адресом. затем позволяет называть его сервером «почтальон», который проверяет, какие серверы доступны, т.е. pseudocode: Мне нравится кодирование в python, поэтому я ненавижу объявление переменных [извините] Я надеюсь, что вы можете понять

nodes = postman.checkAvailableNodes()\\this will return a matrix with each element containing an ipaddress and available port on whichever available node on the network
\\loop through all available destinations and map a route to the destination server for n in nodes:
nodeArray2 = n[0].checkavailablenodes()
if length(nodeArray2) > 0:
for x in nodeArray2: . . . .

в любом случае. , .once вы получаете узел назначения и порт, вы добавляете IP-адреса и номера портов в массив под названием destination, который будет уменьшаться на один элемент каждый раз, когда вы проходите через сервер, и в конечном итоге вы достигнете сервера