El túnel HTTP se utiliza para crear un enlace de red entre dos computadoras en condiciones de conectividad de red restringida, incluidos firewalls , NAT y ACL , entre otras restricciones. El túnel es creado por un intermediario llamado servidor proxy que generalmente se encuentra en una DMZ .
La tunelización también puede permitir la comunicación mediante un protocolo que normalmente no sería compatible con la red restringida.
Método HTTP CONNECT
La forma más común de tunelización HTTP es el método HTTP CONNECT estandarizado . [1] [2] En este mecanismo, el cliente solicita a un servidor proxy HTTP que reenvíe la conexión TCP al destino deseado. A continuación, el servidor procede a realizar la conexión en nombre del cliente. Una vez que el servidor ha establecido la conexión, el servidor proxy continúa enviando el flujo TCP desde y hacia el cliente. Solo la solicitud de conexión inicial es HTTP; después de eso, el servidor simplemente hace un proxy de la conexión TCP establecida.
Este mecanismo es cómo un cliente detrás de un proxy HTTP puede acceder a sitios web usando SSL o TLS (es decir, HTTPS). Los servidores proxy también pueden limitar las conexiones al permitir solo las conexiones al puerto HTTPS predeterminado 443, incluir hosts en la lista blanca o bloquear el tráfico que no parece ser SSL.
Negociación de ejemplo
El cliente se conecta al servidor proxy y solicita la tunelización especificando el puerto y la computadora host a la que le gustaría conectarse. El puerto se utiliza para indicar el protocolo que se solicita. [3]
CONNECT streamline.t-mobile.com:22 HTTP / 1.1 Proxy-Authorization: Credenciales codificadas básicas
Si se permitió la conexión y el proxy se ha conectado al host especificado, el proxy devolverá una respuesta de éxito 2XX. [3]
HTTP / 1.1 200 OK
El cliente ahora se está transfiriendo al host remoto. Cualquier dato enviado al servidor proxy ahora se reenvía, sin modificar, al host remoto [3] y el cliente puede comunicarse usando cualquier protocolo aceptado por el host remoto. En el siguiente ejemplo, el cliente está iniciando comunicaciones SSH, como lo indica el número de puerto en la solicitud CONNECT inicial.
SSH-2.0-OpenSSH_4.3 \ r \ n...
§
Túnel HTTP sin usar CONNECT
También se puede implementar un túnel HTTP utilizando solo los métodos HTTP habituales como POST, GET, PUT y DELETE. Esto es similar al enfoque utilizado en Bidirectional-streams Over Synchronous HTTP ( BOSH ).
En este programa de prueba de concepto , un servidor HTTP especial se ejecuta fuera de la red protegida y un programa cliente se ejecuta en una computadora dentro de la red protegida. Siempre que se transmite tráfico de red desde el cliente, el cliente vuelve a empaquetar los datos de tráfico como una solicitud HTTP y transmite los datos al servidor externo, que extrae y ejecuta la solicitud de red original para el cliente. La respuesta a la solicitud, enviada al servidor, se vuelve a empaquetar como una respuesta HTTP y se retransmite al cliente. Dado que todo el tráfico está encapsulado dentro de las solicitudes y respuestas GET y POST normales, este enfoque funciona a través de la mayoría de los servidores proxy y firewalls.
Ver también
Referencias
- ^ Fielding, R. (junio de 1999). "Definiciones de métodos, CONECTAR" . Protocolo de transferencia de hipertexto: HTTP / 1.1 . IETF . pag. 56. seg. 9,9. doi : 10.17487 / RFC2616 . RFC 2616 . Consultado el 9 de julio de 2010 .
- ^ "Actualización a TLS dentro de HTTP / 1.1 (RFC 2817)" . RFC 2817 . Consultado el 3 de julio de 2011 .
- ^ a b c "CONECTAR" . Semántica y contenido de HTTP / 1.1 . IETF . Junio de 2014. p. 30 segundos. 4.3.6. doi : 10.17487 / RFC7231 . RFC 7231 . Consultado el 4 de noviembre de 2017 .