¿Qué es HTTP y cómo funciona?

Descubre los fundamentos de HTTP, su papel en la comunicación web y cómo impacta en la seguridad y el desempeño de los sitios web.

¿Alguna vez has pensado en cuántas veces al día visitas un sitio web? Esto es tan común en nuestras vidas que no sería exagerado decir que, para algunas personas, Internet es tan esencial como el aire que respiramos. Y en ese breve período de tiempo entre escribir la URL (Uniform Resource Locator, Localizador Uniforme de Recursos), la dirección del sitio web, y la página apareciendo realmente en tu pantalla, ocurren algunas cosas durante este proceso – y una de ellas es la ejecución del protocolo HTTP.

Así que, si quieres entender mejor qué es HTTP y cuán crucial es para Internet, lo explicamos en esta publicación.

Y si ya tienes un sitio web, debes ser aún más cauteloso, porque descuidar el protocolo en sí puede exponer superficies de ataque e incluso afectar directamente tus ventas.

¿Qué es HTTP?

HTTP es el acrónimo de Protocolo de Transferencia de Hipertexto (Hypertext Transfer Protocol). Si no recuerdas o no has notado, aparece al principio de la dirección de un sitio web. HTTP es un protocolo de transferencia de capa de aplicación basado en texto y es considerado la base para la comunicación de datos entre dispositivos en red. Y durante este proceso de solicitud-respuesta, HTTP utiliza estándares y reglas predefinidos para el intercambio de información. En general, HTTP es el protocolo que los clientes y servidores utilizan para comunicarse.

Además, para que el intercambio de datos tenga lugar, HTTP depende de otros dos protocolos de red: TCP (Protocolo de Control de Transmisión) e IP (Protocolo de Internet). A partir de esto, tenemos el modelo TCP/IP, que es parte del proceso de comunicación entre clientes y servidores y también entre servidores y API móviles/web. HTTP es el protocolo más utilizado para aplicaciones basadas en web y API.

Ten en cuenta que TCP/IP es un modelo, pero también una pila de protocolos en la que se incluye HTTP. En cuanto al modelo OSI, del que hablaremos más adelante, TCP es la capa 4 e IP es la capa 3.

Imagen con protocolo HTTP

Naturaleza sin estado

Un hecho importante sobre el protocolo HTTP es que no tiene estado; pero ¿qué significa “sin estado” (stateless)? Significa que cada solicitud que hace el cliente es una transacción independiente, que no está relacionada con ninguna solicitud anterior, y cada una es diferente para el servidor. Es decir, incluso si se realizan varias solicitudes al mismo tiempo, una no sabe que la otra existe, y el servidor no almacena ninguna información sobre el estado del cliente. Tan pronto como se establece una conexión TCP, toda la información intercambiada se pierde. Las ventajas de esto son que hay una reducción en el uso de memoria en el servidor y una reducción en los problemas resultantes de una sesión caducada.

También es importante mencionar que HTTP no tiene estado si se ve desde un alto nivel de abstracción, pero también se basa en TCP (no UDP), y por lo tanto está basado en conexión y tiene estado desde un punto de vista de capa inferior. Lo que esto significa es que, debido a que está basado en conexión, tiene estado en la entrega, lo que garantiza que todos los paquetes se reciban y secuencien correctamente.

URL

Ya sabemos qué es una URL, y que es el primer paso en el proceso de intercambio de información. Pero, aunque es parte de nuestra vida cotidiana en línea, muchos de nosotros no sabemos qué significa su estructura. Entonces, consideremos la siguiente URL:

Imagen con estructura básica de URL

En su forma básica, podemos dividir la URL en tres partes:

  • El protocolo (http:// o https://) le dice a tu navegador cómo comunicarse con el servidor de un sitio web para enviar y recuperar información. Cuando es HTTPS, significa que es un HTTP seguro que tiene algunos estándares de seguridad extra y texto cifrado.
  • El dominio (azion.com) tiene el subdominio (blog.), el nombre por el cual se conoce el sitio web (azion), y el TLD (.com). TLD significa Dominio de Nivel Superior, que es la categoría de los sitios web como .com (comercial), .org (organizaciones) y .net (redes).
  • La ruta (/edge) dirige al navegador a una página específica en el sitio web.

Historia de HTTP

Comencemos con el término hipertexto, que fue creado por Ted Nelson en 1965 y se definió como “escritura no secuencial”. En otras palabras, es un tipo de texto que se ramifica, no es necesariamente lineal y contiene enlaces a otros textos. Este término, a su vez, fue inspirado por las ideas de Vannevar Bush presentadas previamente en su artículo de 1945 As We May Think.

Más tarde, en 1989, Tim Berners-Lee propuso el proyecto WorldWideWeb y, en 1991, él y su equipo crearon un protocolo que permitiría la recuperación de textos de otros documentos a través de enlaces de hipertexto, lo que se convertiría en el formato HTTP original. Los hipertextos fueron los primeros archivos que utilizaron HTML (Lenguaje de Marcado de Hipertexto, HyperText Markup Language), un formato textual para representar documentos en hipertexto. HTML, así como el hipertexto, es texto, pero puede servir como comandos, incluyendo llamar a otros activos como imágenes, videos, audios, etc. Su última versión es HTML5.

Como todo en el mundo de Internet, el protocolo HTTP ha sufrido varias transformaciones y ha evolucionado mucho, como se puede ver a continuación.

  • HTTP/0.9 - La primera versión se lanzó en 1991 y era muy simple. Se centró en la transferencia de texto y solo tenía el método de solicitud GET; no tenía encabezados HTTP, códigos de estado o error.
  • HTTP/1.0 - Esta versión posterior es de 1996 y presentó, además de la transferencia de texto simple, la transmisión de datos más sofisticados, como metadatos de solicitud/respuesta y negociación de contenido.
  • HTTP/1.1 - Esta versión de 1999 se considera un hito en la evolución de Internet, ya que eliminó varios problemas de versiones anteriores e introdujo una serie de optimizaciones, como un mecanismo de cache extra, transferencias de codificación fragmentadas, canalización de solicitudes y cifrado de transferencia. Aunque existe una versión más reciente, esta sigue siendo la versión estándar y más utilizada en el mundo.
  • HTTP/2 - Esta versión es de 2015 y está mejor preparada para el uso masivo y generalizado de Internet actual. Aunque no ha habido cambios en la semántica de la versión anterior, algunos beneficios notables son un mejor desempeño en el transporte de información y seguridad de datos y una latencia significativamente menor.
  • HTTP/3 - Lanzado en 2019, el protocolo HTTP/3 es aún más rápido, confiable y seguro. Presenta una diferencia fundamental con respecto a la versión anterior: un nuevo protocolo de transporte, el QUIC. QUIC se basa en UDP (Protocolo de Datagramas de Usuario, User Datagram Protocol), que es más rápido que TCP en la transmisión de datos, ya que no pasa por el proceso de verificación de datos; esto, sin embargo, lo hace menos seguro. Aunque no es un transporte confiable, QUIC agrega una capa extra a UDP, aportando características como retransmisión de paquetes y control de congestión. Otra característica importante de HTTP/3 es que soporta HTML5, la versión más moderna de HTML, que agrega la capacidad de hacer programación nativa.

Entendiendo dónde encaja HTTP en el rompecabezas de la comunicación

HTTP es una pequeña pieza en la pila de comunicación, pero ¿cómo encaja en ella? Para entenderlo mejor, primero veamos rápidamente el modelo OSI.

El modelo OSI (Interconexión de Sistemas Abiertos, Open System Interconnection), creado por la Organización Internacional de Normalización en 1971, es un modelo de redes de computadoras que sirve como estándar, o reglas, para protocolos de comunicación entre diferentes sistemas en una red. Es decir, es como si fuera un lenguaje universal para redes de computadoras. En este modelo, el sistema de comunicación se divide en siete capas abstractas, cada una con una funcionalidad específica.

Imagen con modelo OSI

El protocolo HTTP actúa precisamente en la capa 7, la capa de aplicación, donde ocurre la interacción entre usuarios y computadoras: cuando los usuarios visitan un sitio web o revisan e-mails, por ejemplo. La capa de aplicación es responsable de los protocolos y la manipulación de datos de los que depende el software para presentar datos significativos al usuario. Además de HTTP, otros protocolos que operan en la capa de aplicación son: HTTPS, DNS, FTP, IMAP, MIME, POP, RTP, SMTP, TELNET, TFTP y TLS.

La comunicación HTTP

Cuando un cliente quiere comunicarse con un servidor, lo primero que sucede, después de que el usuario escribe la URL en la barra de direcciones del navegador o va a otra página, es abrir una conexión TCP/IP, y la solicitud HTTP se envía al servidor. En esa solicitud, hay un mensaje con una serie de datos que describen lo que el cliente ha solicitado. El servidor luego envía la respuesta al cliente, que también contiene datos que se pueden leer. Finalmente, el proceso de solicitud-respuesta se finaliza. Ten en cuenta que todo esto generalmente toma microsegundos en suceder.

En el proceso de comunicación que describimos anteriormente, es posible que hayas notado que hay dos agentes esenciales: la solicitud y la respuesta.

Mensajes HTTP

¿Qué es una solicitud?

La solicitud es lo que el cliente necesita del servidor. En ese mensaje, hay datos específicos, que describen lo que se solicitó. Los componentes principales de una solicitud se describen a continuación.

  1. El método - indica la acción que el cliente quiere realizar, como:
    • GET - para obtener recursos o recuperar datos del servidor; es el más común.
    • POST - para enviar datos al servidor, como enviar un formulario.
    • HEAD - para resumir la línea de respuesta y encabezados.
    • PUT - para enviar archivos al servidor o hacer una actualización completa de un recurso.
    • PATCH - para hacer una actualización parcial de un recurso.
    • DELETE - para eliminar documentos dentro del servidor.
    • OPTIONS - para consultar qué comandos están disponibles para un usuario determinado.
    • TRACE - para depurar solicitudes, devolviendo un encabezado de documento.

2. La ruta - el URI (Identificador Uniforme de Recursos, Uniform Resource Identifier) del recurso a buscar.

3. La versión HTTP del protocolo.

4. Los encabezados de solicitud - que contienen información extra para los servidores.

5. El cuerpo de la solicitud - opcional y necesario para algunos métodos, como POST, y contiene el recurso solicitado.

Imagen con solicitud HTTP

¿Qué es una respuesta?

La respuesta dada por el servidor contiene la información solicitada por el cliente o informa que hubo un error en relación con lo que se solicitó. Contiene los elementos enumerados a continuación.

  1. El encabezado de respuesta - contiene la versión del protocolo, el código de estado de la solicitud y el tipo de contenido que se incluye en el cuerpo.
  2. El código de estado - indica si la solicitud fue exitosa o no. La respuesta se da mediante códigos específicos, como:
    • 200 - la solicitud fue respondida con éxito.
    • 301 - la solicitud fue movida permanentemente.
    • 401 - la solicitud no fue autorizada por el servidor.
    • 404 - la solicitud no fue encontrada por el servidor.
    • 500 - error interno del servidor.
  3. El cuerpo de la respuesta - como en la solicitud, es opcional y contiene datos sobre el recurso solicitado.

Imagen con respuesta HTTP

Otro aspecto interesante de la comunicación HTTP es el uso de cache, que mantiene copias de datos a los que se accede con frecuencia. Básicamente, el cache acelera la búsqueda y entrega de datos utilizados frecuentemente y ahorra el uso de recursos en un servidor, mejorando el desempeño y la velocidad del proceso – pero este es un tema para otra publicación.

La desventaja de HTTP

Has visto que el protocolo HTTP es la base para cualquier intercambio de información en Internet, pero, como todo en esta vida, hay un inconveniente: no es seguro. ¿Sabías que esto es exactamente por lo que es el objetivo de acciones maliciosas? Entre los delitos cibernéticos que pueden afectar al protocolo HTTP, podemos mencionar la interceptación de datos durante la transmisión de información y los ataques DDoS en la capa 7, también conocidos como ataques de inundación HTTP, que sobrecargan un servidor con solicitudes HTTP. Cuando el servidor ya no puede responder al tráfico normal, las solicitudes de usuarios legítimos sufrirán denegación de servicio.

Aunque todos los sitios y aplicaciones están sujetos a delitos cibernéticos, la buena noticia es que hay algunas formas de protegerse contra estas amenazas, como: Web Application Firewall, DDoS Protection y Network Layer Protection.

Soluciones de seguridad avanzadas

El Web Application Firewall (WAF) mejora la seguridad de las aplicaciones web defendiéndolas contra una amplia gama de amenazas, desde las vulnerabilidades del Top 10 de OWASP hasta sofisticados ataques de día cero. Protege la capa de aplicación (capa 7), donde las aplicaciones interactúan con los servicios de red, actuando como una barrera protectora que aplica un conjunto de reglas para filtrar y monitorear el tráfico entre la aplicación e Internet. En términos prácticos, WAF se enfoca en asegurar los protocolos HTTP/S analizando solicitudes, detectando y bloqueando actividades maliciosas antes de que puedan impactar en la infraestructura, todo sin comprometer el desempeño de la aplicación.

La solución de DDoS Protection ofrece múltiples capas de defensa contra ataques DDoS, incluidos aquellos dirigidos a la capa 7, donde opera el protocolo HTTP. Al aprovechar una red distribuida globalmente junto con centros de mitigación especializados, proporciona la inteligencia y escalabilidad necesarias para neutralizar incluso los ataques más complejos y a gran escala.

Para una cobertura de seguridad aún más amplia, Network Layer Protection establece un perímetro de seguridad programable en el edge de la red, controlando el tráfico entrante y saliente. Esta solución permite la capacidad de bloquear amenazas, monitorear comportamientos sospechosos y aplicar penalizaciones como limitaciones de acceso.

Adoptar estas estrategias de mitigación ayuda a las empresas a mantenerse resilientes frente a las amenazas cibernéticas emergentes, incluidos los ataques cada vez más frecuentes y a gran escala, la explotación dirigida de API y las metodologías de ataque en evolución.

La importancia de HTTP

HTTP es un protocolo simple, pero más que eso, es una característica destacada que también es accesible, ya que fue diseñado para tener mensajes que puedan ser leídos y entendidos por cualquier usuario. Además, su naturaleza sin estado simplifica el desempeño del servidor y lo hace más rápido, ya que no hay necesidad de almacenar o borrar datos para las próximas solicitudes. Si una transacción se interrumpe, ninguna parte del sistema necesita ser responsable de limpiar el estado actual del servidor. Otro aspecto fundamental es el hecho de que es extensible, lo que permite la inserción de nuevas funcionalidades y, en consecuencia, HTTP sigue las necesidades y la evolución de Internet en su misión de transmitir los datos que prácticamente hacen funcionar al mundo.

mantente actualizado

Suscríbete a nuestro boletín informativo

Recibe las últimas actualizaciones de productos, destacados de eventos y conocimientos de la industria tecnológica directamente en tu bandeja de entrada.