stringtranslate.com

túnel HTTP

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 creación de túneles también puede permitir la comunicación utilizando un protocolo que normalmente no sería compatible con la red restringida.

Método de conexión HTTP

La forma más común de túnel 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. Luego, 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 hacia y desde el cliente. Solo la solicitud de conexión inicial es HTTP; después de eso, el servidor simplemente representa la conexión TCP establecida.

Este mecanismo es cómo un cliente detrás de un proxy HTTP puede acceder a sitios web utilizando SSL o TLS (es decir, HTTPS). Los servidores proxy también pueden limitar las conexiones permitiendo solo conexiones al puerto HTTPS predeterminado 443, incluyendo hosts en listas blancas o bloqueando el tráfico que no parece ser SSL.

Ejemplo de negociación

El cliente se conecta al servidor proxy y solicita la creación de un túnel 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]

CONECTAR  streamline.t-mobile.com:22  HTTP / 1.1 Autorización de proxy :  credenciales codificadas básicas

Si se permitió la conexión y el proxy se conectó al host especificado, entonces el proxy devolverá una respuesta de éxito 2XX. [3]

HTTP / 1.1  200  OK

El cliente ahora está siendo enviado mediante proxy al host remoto. Todos los datos enviados al servidor proxy ahora se reenvían, sin modificar, al host remoto [3] y el cliente puede comunicarse utilizando 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 únicamente los métodos HTTP habituales como POST, GET, PUT y DELETE. Esto es similar al enfoque utilizado en transmisiones bidireccionales a través de HTTP síncrono ( BOSH ).

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 pasa tráfico de red desde el cliente, el cliente vuelve a empaquetar los datos del tráfico como una solicitud HTTP y los transmite al servidor externo, que extrae y ejecuta la solicitud de red original para el cliente. La respuesta a la solicitud, enviada al servidor, luego se vuelve a empaquetar como una respuesta HTTP y se retransmite al cliente. Dado que todo el tráfico está encapsulado dentro de solicitudes y respuestas GET y POST normales, este enfoque funciona a través de la mayoría de los servidores proxy y firewalls. [a]

Ver también

Notas

  1. ^ "Bridge: un reenviador de puertos dinámico a través de HTTP (con soporte HTTP PROXY)". GitHub .

Referencias

  1. ^ 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 .
  2. ^ Khare, R.; Lorenzo, S. (2000). "Actualización a TLS dentro de HTTP/1.1 (RFC 2817)". doi : 10.17487/RFC2817 . RFC 2817 . Consultado el 3 de julio de 2011 .  {{cite journal}}: Citar diario requiere |journal=( ayuda )
  3. ^ abc "CONECTAR". HTTP/1.1 Semántica y Contenido. IETF . Junio ​​de 2014. p. 30 segundos. 4.3.6. doi : 10.17487/RFC7231 . RFC 7231 . Consultado el 4 de noviembre de 2017 .