Tunnel HTTP - HTTP tunnel

Il tunneling HTTP viene utilizzato per creare un collegamento di rete tra due computer in condizioni di connettività di rete limitata, inclusi firewall , NAT e ACL , tra le altre restrizioni. Il tunnel viene creato da un intermediario chiamato server proxy che di solito si trova in una DMZ .

Il tunneling può anche consentire la comunicazione utilizzando un protocollo che normalmente non sarebbe supportato sulla rete con restrizioni.

Metodo HTTP CONNECT

La forma più comune di tunneling HTTP è il metodo HTTP CONNECT standard . In questo meccanismo, il client chiede a un server proxy HTTP di inoltrare la connessione TCP alla destinazione desiderata. Il server procede quindi a stabilire la connessione per conto del client. Una volta stabilita la connessione dal server, il server proxy continua a eseguire il proxy del flusso TCP da e verso il client. Solo la richiesta di connessione iniziale è HTTP, dopodiché il server esegue semplicemente il proxy della connessione TCP stabilita.

Questo meccanismo è il modo in cui un client dietro un proxy HTTP può accedere a siti Web utilizzando SSL o TLS (cioè HTTPS). I server proxy possono anche limitare le connessioni consentendo solo le connessioni alla porta HTTPS predefinita 443, inserendo gli host nella whitelist o bloccando il traffico che non sembra essere SSL.

Esempio di negoziazione

Il client si connette al server proxy e richiede il tunneling specificando la porta e il computer host a cui desidera connettersi. La porta viene utilizzata per indicare il protocollo richiesto.

CONNECT streamline.t-mobile.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials

Se la connessione è stata consentita e il proxy si è connesso all'host specificato, il proxy restituirà una risposta di successo 2XX.

HTTP/1.1 200 OK

Il client viene ora inoltrato all'host remoto. Tutti i dati inviati al server proxy vengono ora inoltrati, non modificati, all'host remoto e il client può comunicare utilizzando qualsiasi protocollo accettato dall'host remoto. Nell'esempio seguente, il client sta avviando le comunicazioni SSH, come suggerito dal numero di porta nella richiesta CONNECT iniziale.

SSH-2.0-OpenSSH_4.3\r\n
...

Tunneling HTTP senza utilizzare CONNECT

Un tunnel HTTP può essere implementato anche utilizzando solo i soliti metodi HTTP come POST, GET, PUT e DELETE. Questo è simile all'approccio utilizzato nei flussi bidirezionali su HTTP sincrono ( BOSH ).

In questo programma di prova , uno speciale server HTTP viene eseguito all'esterno della rete protetta e un programma client viene eseguito su un computer all'interno della rete protetta. Ogni volta che il traffico di rete viene passato dal client, il client ricompone i dati del traffico come richiesta HTTP e inoltra i dati al server esterno, che estrae ed esegue la richiesta di rete originale per il client. La risposta alla richiesta, inviata al server, viene quindi riconfezionata come risposta HTTP e ritrasmessa al client. Poiché tutto il traffico è incapsulato all'interno delle normali richieste e risposte GET e POST, questo approccio funziona attraverso la maggior parte dei proxy e dei firewall.

Guarda anche

Riferimenti