El principal problema con el túnel IP en las solicitudes GET de HTTP es que HTTP es un protocolo impulsado por el cliente: el cliente siempre habla primero y el servidor no puede enviar nada al cliente, como respuesta a una solicitud. En TCP / IP puro, ambas partes deben poder hablar cuando lo deseen.
Los dos métodos principales para resolver este problema son:
Sondeo . El cliente envía solicitudes a intervalos muy regulares, digamos al menos una o dos veces por segundo. El servidor responde con un fragmento de datos o un mensaje que dice "nada que enviar en ese momento".
Bloqueo . El cliente envía una solicitud, pero el servidor no responde hasta que efectivamente tiene algunos datos para enviar al cliente, o una cierta cantidad de tiempo ha transcurrido. De cualquier manera, cuando ha recibido una respuesta, el cliente envía inmediatamente una nueva solicitud, para el siguiente fragmento de datos.
El mecanismo de bloqueo es más discreto y requiere menos recursos; sin embargo, es más complejo de configurar y operar, especialmente porque el cliente necesita dos canales, para enviar y recibir paquetes encapsulados. El terminal-over-Web Anyterm utiliza el mecanismo de bloqueo; sin embargo, lo hace con XmlHttpRequest, que envía solicitudes POST, no GET. Consulte también el protocolo BOSH , que utiliza el mismo principio, que se explica con más detalles en la sección 4.
El concepto se puede aplicar a las solicitudes HTTP GET; probablemente tendría que codificar los datos salientes en la ruta de destino, o como un encabezado personalizado, ya que se supone que las solicitudes HTTP GET no tienen cuerpos no vacíos (el estándar HTTP lo permite, pero no se supone que suceda en la práctica, y creo que haría que el firewall sea muy sospechoso).
No conozco ninguna herramienta existente, pero este es un buen ejercicio de programación.
Por supuesto, pasar la configuración del firewall es solo una parte del tema. Supongo que quienquiera que ponga restricciones tan pesadas en las solicitudes web también instalará algunos dispositivos de monitoreo para recibir advertencias sobre actividades inusuales de la red, y cualquier tunelización debería activar tal sistema.