2009-12-10 25 views
1

J'ai une pile TCP/IP expérimentale fonctionnant sous Windows XP. Cette pile contourne la pile Windows TCP/IP à l'aide d'un LSP et d'un IM NDIS. J'ai maintenant besoin de fournir un service proxy pour supporter d'autres plateformes qui veulent utiliser la pile expérimentale. Le proxy doit être transparent pour les clients (pas de configuration client). Je veux exécuter ce service de proxy en mode utilisateur où j'ai une connexion TCP vers le client en utilisant Windows TCP/IP normal et une connexion TCP dans l'autre sens à travers la pile expérimentale. Une fois connecté de cette façon, le proxy lit/écrit entre les deux. Le problème que je suis en train de résoudre est comment prendre un paquet entrant du client qui est destiné à une adresse/port et le rediriger vers mon proxy tout en maintenant la connaissance de l'adresse/port de destination d'origine, afin que le proxy puisse transférer les paquets à la bonne destination. J'apprécierais des idées à ce sujet. Merci ...Proxy transparent pour Windows XP

Répondre

0

envoyer un tableau de destinations, en lecture en ordre chronologique inverse [j'espère que ce mot fonctionne dans ce contexte]. et chaque fois que le message est lu à partir d'un noeud, ce noeud supprime l'élément à zéro et décale tous les autres éléments vers l'avant. . . . c'était une question assez simple je pense. . .

en détail: j'ai travaillé sur un système similaire à mon premier emploi. l'expéditeur ne connaîtra que la destination, il sera envoyé avec le port de destination et l'adresse IP. Ensuite, appelons cela un serveur "postier" qui vérifie quels sont les serveurs disponibles. pseudocode: j'aime coder en python donc je déteste déclarer les variables [désolé] j'espère que vous pouvez comprendre

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: . . . .

de toute façon. . Une fois que vous avez obtenu le noeud et le port de destination, vous ajoutez les adresses IP et les numéros de ports à un tableau appelé destinations, ce qui réduit d'un élément chaque fois que vous traversez un serveur et finit par atteindre le serveur