Il problema principale con l'IP tunneling nelle richieste HTTP GET è che HTTP è un protocollo client-driven: il client parla sempre per primo, e il server non può inviare nulla al client come risposta a una richiesta. In puro TCP / IP, entrambe le parti devono essere in grado di parlare in qualsiasi momento che desiderano.
I due metodi principali per risolvere questo problema sono:
-
Polling . Il client invia richieste ad intervalli molto regolari, diciamo almeno una volta o due al secondo. Il server risponde con una porzione di dati o un messaggio che dice "nulla da restituire a quel punto".
-
stallo . Il client invia una richiesta, ma il server non risponde finché non ha effettivamente alcuni dati da inviare al client, o è trascorso un certo periodo di tempo. In entrambi i casi, quando ha ricevuto una risposta, il client invia immediatamente una nuova richiesta, per il prossimo blocco di dati.
Il meccanismo di stallo è più discreto e richiede meno risorse; tuttavia, è più complesso da configurare e utilizzare, in particolare perché il client richiede quindi due canali, per l'invio e la ricezione di pacchetti incapsulati. I prodotti Anyterm del terminale sul Web utilizzano il meccanismo di stallo; tuttavia, lo fa con XmlHttpRequest, che invia richieste POST, non GET. Vedi anche il protocollo BOSH , che usa lo stesso principio, spiegato in maggiori dettagli nella sezione 4.
Il concetto può essere applicato alle richieste HTTP GET; probabilmente dovresti codificare i dati in uscita nel percorso di destinazione, o come intestazione personalizzata, perché le richieste HTTP GET non dovrebbero avere corpi non vuoti (lo standard HTTP lo consente, ma non dovrebbe accadere nella pratica, e credo che renderebbe il firewall molto sospetto).
Non conosco nessuno strumento esistente, ma questo è un buon esercizio di programmazione.
Ovviamente, superare la configurazione del firewall è solo una parte del soggetto. Presumo che chiunque applichi restrizioni così pesanti alle richieste Web installerà anche alcuni dispositivi di monitoraggio per essere avvisati di attività di rete insolite e qualsiasi tunneling dovrebbe attivare tale sistema.