Come costruire correttamente un tunnel TCP in Delphi

1

Sto lavorando a un progetto che deve implementare una connessione Reverse Socks5. In termini pratici, il browser (Chrome / FireFox / Opera / IE) si connetterà a un server locale di socks (127.0.0.1:8080) e su questo stesso server avrò una connessione client remota su un'altra porta (192.168.0.9: 8081).

Dopo aver aperto un sito Web sul browser, è possibile eseguire più richieste (html, immagini, script ...), dovrei passare dalla porta 8080 alla connessione sulla porta 8081. Il client remoto deve eseguire le richieste e rispedisci la risposta sulla porta 8081, una volta arrivato dovrei reindirizzare questa risposta sul tunnel alla porta 8080 e consegnarla al browser.

Ho provato a creare un diagramma per mostrare il mio flusso di dati:

Fingo di utilizzare le classi Indy (IdTCPServer / IdTCPClient), ma non importa quale classe verrà utilizzata.

Il problema arriva quando ho bisogno di inviare le richieste tramite la connessione sulla porta 8081:

  1. Non so quante richieste farà il browser, quindi apro solo 1 connessione sulla porta 8081. Devo passare tutte le richieste su questa connessione?

  2. Se la risposta per la prima domanda era Sì, una volta che ho risposto a Socks5 per rispondere, come il server conoscerà la connessione sulla porta 8080 che la risposta dovrebbe essere consegnata?

  3. Se la risposta per la prima domanda era No, quindi dovrei creare nuove connessioni sulla porta 8081 per elaborare le richieste. Una volta ricevuta una nuova connessione, invio la richiesta a questa connessione, eseguo sul client, restituisco su questa connessione. Ma dovrei tenere traccia della connessione del browser che ha fatto la richiesta, per consegnarla. E ancora, dovrei inviare un testo o qualcosa del genere, sulla prima connessione sulla porta 8081, per richiedere una nuova connessione. Non è troppo complicato?

Mi manca qualche punto su come costruire correttamente un tunnel TCP? Non è possibile creare un tunnel che trasmetta solo le richieste / risposte alle giuste connessioni, senza interferenze del Server?

    
posta user2864778 30.01.2017 - 17:22
fonte

0 risposte

Leggi altre domande sui tag