IT & Engineering

Curso intensivo de HTTP

HTTP son las siglas de Hypertext Transfer Protocol (protocolo de transferencia de hipertexto) y es un mecanismo que se usa para transferir datos a través de internet entre clientes (ordenadores, portátiles, teléfonos, etc.) y servidores.
Imagen para Curso intensivo de HTTP

Hace un tiempo que no analizamos a fondo un proceso técnico más básico y, aunque el mundo del email está en constante cambio, es bueno dar un paso atrás y observar cómo funcionan las cosas. Como puedes deducir por el título, queríamos repasar el protocolo HTTP: qué es, cómo funciona y sus diferentes funciones en la actualidad. Así que abróchate el cinturón, es hora de un curso intensivo.

¿Qué es HTTP?

HTTP son las siglas de Hypertext Transfer Protocol (protocolo de transferencia de hipertexto) y es un mecanismo que se usa para transferir datos a través de internet entre clientes (ordenadores, portátiles, teléfonos, etc.) y servidores.

Por lo tanto, si vas a la barra de direcciones de tu navegador y escribes una dirección web, el navegador busca la dirección del servidor asociada a esa URL. A partir de ahí, el navegador intenta establecer con el servidor lo que se conoce como una conexión TCP a través del HTTP puerto predeterminado para el tráfico: el puerto 80. Si se establece la conexión con el navegador (es decir, el servidor es correcto), tu navegador envía una solicitud similar a esta:

                                

                                    GET /18_tyyp.html HTTP/2.0
Host: the web address or URL
User-Agent: The browser’s name
                                
                            

Utilizando la misma conexión, el servidor responderá:

                                

                                    HTTP/2.0 200 OK
Content-Length: 65635
Content-Type: html/text
Last-Modified: Fri, 24 Jan 2020 08:35:42 GMT
<!doctype html>
…the document's remaining part
                                
                            

El navegador muestra su cuerpo, la parte que sigue a la línea en blanco en el documento, como un documento HTML.

La request (solicitud) es la información que envió el cliente. Empieza así:

                                

                                    GET /18_http.html HTTP/2.0
                                
                            

El método de solicitud define la primera palabra. GET implica que el recurso que estás buscando está especificado. Otros métodos de solicitud incluyen DELETE para eliminar un recurso, PUT para reemplazar o crear recursos y POST para enviar información al recurso. 

Es importante tener en cuenta que el servidor no tiene ninguna obligación de responder a todas las solicitudes que se le envían. Dicho esto, es una comunicación bastante sencilla.

HTTP y navegadores

Cuando introduces una URL en la barra de direcciones de un navegador, se le pide a este que realice una solicitud. Si la página HTML que resulta de la solicitud contiene otros archivos, como archivos JavaScript, imágenes, etc., también se recuperan para crear en conjunto la página que solicitaste.

Algunos sitios web pueden incluir entre 10 y 200 recursos. Para obtenerlos todos rápidamente, el navegador realiza múltiples solicitudes GET simultáneas en lugar de esperar las respuestas una tras otra. De lo contrario, las páginas tardarían una eternidad en cargar correctamente, y nadie tiene tiempo para eso.

Sandboxing de HTTP

Como probablemente sepas, el protocolo HTTP no es el método de comunicación más seguro del planeta. Hay motivos de preocupación cuando se realiza una solicitud HTTP en el script de una página web. La persona a cargo del script podría tener intereses diferentes a los de la persona que ejecuta la solicitud. Por ejemplo, podría visitar `themafia.org`, pero no quiero que el script de esa página envíe una solicitud a otra página utilizando información que pueda identificar desde mi navegador. No es que esté buscando información de la mafia ni nada por el estilo.

Esta es la razón por la que los navegadores no permiten que el script de una página web realice solicitudes HTTP a otro dominio: es una medida de protección. Sin embargo, surge otro problema cuando alguien intenta crear un servidor de sistema que podría solicitar acceso a otros dominios de forma legítima. Esto se soluciona fácilmente si el servidor incluye un encabezado como este: Access-Control-Allow-Origin en su respuesta. El encabezado indica de forma explícita al navegador que permita solicitudes de otro dominio. 

HTTPS y seguridad

Los datos pueden recorrer un largo trecho en internet, y el camino que siguen puede ser largo y peligroso. Antes de llegar a su destino, deben atravesar diferentes elementos a lo largo de la ruta que podrían inspeccionar o incluso modificar los datos. 

Si quieres mantener algo en secreto (piensa en las contraseñas) o quieres que los datos lleguen a su destino sin modificaciones, el protocolo HTTP convencional no es suficiente. 

Una opción de protocolo HTTP más segura es https://. Esta URL envuelve el tráfico HTTP de forma que resulta más difícil manipularlo o leerlo. Antes del intercambio de datos, el cliente primero confirma la autenticidad del servidor pidiéndole que demuestre que tiene su certificado criptográfico, que normalmente emite una autoridad reconocida por el navegador. Después de este paso, todos los datos que pasan por esta conexión se cifran para que sea imposible manipularlos o espiarlos. 

Cuando HTTPS funciona bien, evita que otras personas intenten suplantar el sitio web al que intentas acceder, lo que mantiene tus datos a salvo. Sin embargo, no es perfecto. Si el software falla o se roban los certificados, los datos pueden seguir en peligro. Aun así, es mucho más seguro que el antiguo HTTP.

Sobre el autor

Alice Jones es una periodista y profesional independiente de San Francisco que se especializa en redacción de trabajos académicos y proyectos autónomos. Escribe sobre todo acerca de negocios y marketing, y obtuvo su licenciatura y máster en la Universidad de San Francisco.