El túnel HTTP se utiliza para crear un enlace de red entre dos ordenadores en condiciones de conectividad de red restringida, incluyendo cortafuegos , NAT y ACL , entre otras restricciones. El túnel lo crea un intermediario llamado servidor proxy , que normalmente se encuentra en una DMZ .
El uso de túneles también permite 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. El servidor procede entonces a establecer la conexión en nombre del cliente. Una vez establecida la conexión por el servidor, el servidor proxy continúa gestionando el flujo TCP hacia y desde el cliente. Solo la solicitud de conexión inicial es HTTP; después de eso, el servidor simplemente gestiona la conexión TCP establecida.
Este mecanismo permite que un cliente detrás de un proxy HTTP acceda a sitios web mediante SSL o TLS (es decir, HTTPS). Los servidores proxy también pueden limitar las conexiones, permitiendo únicamente el acceso al puerto HTTPS predeterminado 443, creando listas blancas de hosts o bloqueando el tráfico que no parezca ser SSL.
El método HTTP CONNECT no puede reenviar la conexión UDP , a menos que se utilice el método MASQUE para QUIC. [ 3 ]
Ejemplo de negociación
El cliente se conecta al servidor proxy y solicita la tunelización especificando el puerto y el equipo host al que desea conectarse. El puerto se utiliza para indicar el protocolo solicitado. [ 4 ]
CONECTAR streamline.t-mobile.com:22 HTTP / 1.1 Proxy-Authorization : Credenciales codificadas básicasSi la conexión fue permitida y el proxy se ha conectado al host especificado, entonces el proxy devolverá una respuesta de éxito 2XX. [ 4 ]
HTTP / 1.1 200 OKEl cliente ahora se conecta al host remoto a través de un proxy. Cualquier dato enviado al servidor proxy se reenvía sin modificaciones al host remoto [ 4 ] , y el cliente puede comunicarse utilizando cualquier protocolo aceptado por el host remoto. En el ejemplo siguiente, el cliente inicia la comunicación 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 únicamente los métodos HTTP habituales como POST, GET, PUT y DELETE. Esto es similar al enfoque utilizado en Bidirectional-streams Over Synchronous HTTP ( BOSH ).
Un servidor HTTP especial se ejecuta fuera de la red protegida y un programa cliente se ejecuta en un ordenador dentro de la red protegida. Cada vez que el cliente envía tráfico de red, lo reempaqueta como una solicitud HTTP y lo reenvía al servidor externo, que extrae y ejecuta la solicitud de red original para el cliente. La respuesta a la solicitud, enviada al servidor, se reempaqueta como una respuesta HTTP y se reenvía al cliente. Dado que todo el tráfico se encapsula dentro de solicitudes y respuestas GET y POST normales, este método funciona a través de la mayoría de los proxies y cortafuegos. [ a ]
Véase también
Notas
Referencias
- ↑ Fielding, R. (junio de 1999). "Definiciones de métodos, CONNECT" . Protocolo de transferencia de hipertexto -- HTTP/1.1 . IETF . pág. 56. sec. 9.9. doi : 10.17487/RFC2616 . RFC 2616. Recuperado el 16 de enero de 2025 .
- ↑ Khare, R.; Lawrence, S. (mayo de 2000). Protocolo de transferencia de hipertexto -- HTTP/1.1 . IETF . doi : 10.17487/RFC2817 . RFC 2817. Recuperado el 16 de enero de 2025 .
- ↑ "Multiplexed Application Substrate over QUIC Encryption (masque)" . datatracker.ietf.org . Consultado el 30 de diciembre de 2025 .
- 1 2 3 Fielding, R.; Reschke, J. (junio de 2014). "CONNECT" . HTTP/1.1 Semántica y contenido . IETF . pág. 30. sec. 4.3.6. doi : 10.17487/RFC7231 . RFC 7231. Recuperado el 16 de enero de 2025 .
- Protocolo de transferencia de hipertexto
- Protocolos de tunelización
- protocolos de red
- Seguridad informática