Introducción al Protocolo HTTP: Conceptos Básicos y Ejemplos Prácticos
HTTP - cartero -mailman

Hasta el momento, has visto una serie de artículos relacionados con las APIs en AI Convolution, donde se han tratado los siguientes temas:

Te recomiendo que les dediques un momento antes de leer este artículo, y no olvides que habrá uno nuevo cada semana. Como cereza del pastel, hablaremos de cómo automatizar la difusión de un artículo como este en las redes sociales utilizando WordPress, Zapier y la API de OpenAI.

Entonces hoy aprenderás los conceptos fundamentales del Protocolo de Transferencia de Hipertexto (HTTP) y su relevancia en la comunicación entre clientes y servidores en redes informáticas. Abordaremos desde la definición de HTTP y HTTPS, hasta la arquitectura y aspectos clave del protocolo. Además, te guiaremos a través de ejemplos prácticos utilizando el comando curl para realizar solicitudes HTTP y analizar sus respuestas.

En esta oportunidad, trataremos los siguientes apartados:

  1. ¿Qué es HTTP?
  2. ¿Qué es HTTPS?
  3. Arquitectura de HTTP
  4. Aspectos Básicos de HTTP
  5. Ejemplo de una Solicitud HTTP
    1. 5.1 ¿Qué es el comando curl?
    2. 5.2 ¿Cómo ejecutar el comando curl?
    3. 5.3 Explicación del comando curl -iX GET
    4. 5.4 ¿Qué se espera al ejecutar el comando curl?
    5. 5.5 Análisis de la respuesta
  6. Encabezados HTTP como Pares Clave/Valor
    1. 6.1 ¿Qué son los encabezados HTTP?
    2. 6.2 Tipos de encabezados HTTP
    3. 6.3 Ejemplos Prácticos
    4. 6.4 Importancia de los Encabezados HTTP
  7. Conceptos clave

1. ¿Qué es HTTP?

El Protocolo de Transferencia de Hipertexto (HTTP) es un protocolo de comunicación cliente-servidor que te permite intercambiar información a través de la red mediante solicitudes y respuestas. Opera en la capa de aplicación y depende de TCP/IP para el transporte de datos.

Nota: El Protocolo de Control de Transmisión (TCP) es un protocolo de capa de transporte que garantiza la entrega ordenada y confiable de los mensajes entre el cliente y el servidor.

🔄Imagina que estás enviando una carta tradicional. Tú eres el cliente y el servicio postal es el servidor. Escribes tu carta (la solicitud) y la envías por correo. El cartero (HTTP) la entrega al destinatario (el servidor), quien lee la carta y te responde con otra (la respuesta). Cada vez que mandas una carta es como si enviaras una solicitud HTTP: directa y sin conexión, pues una vez enviada, el cartero no recuerda las cartas anteriores.

2. ¿Qué es HTTPS?

El HTTPS es una extensión segura de HTTP que utiliza cifrado para proteger la comunicación en redes informáticas. En HTTPS, el protocolo de comunicación está cifrado utilizando TLS (Transport Layer Security) sobre una conexión TCP, lo que garantiza confidencialidad e integridad en los datos transmitidos.

🔄Usando el mismo ejemplo del apartado anterior, HTTP sería como enviar una carta sin sobre, donde cualquiera puede leer el contenido mientras se transporta. En cambio, HTTPS es como enviar la carta dentro de un sobre cerrado con candado, que solo tú y el destinatario pueden abrir. De esta forma, HTTPS garantiza que nadie pueda interceptar ni leer la información durante el trayecto.

3. Arquitectura de HTTP

HTTP
HTTP

La arquitectura de HTTP se basa en la interacción entre un cliente y un servidor.

  • Cliente: Eres tú cuando utilizas un navegador web o cualquier dispositivo que realiza solicitudes.
  • Servidor: Es el sistema que procesa las solicitudes y envía las respuestas correspondientes.

El flujo de comunicación sigue estos pasos:

  1. El cliente envía una solicitud (Request) al servidor.
  2. El servidor procesa la solicitud y devuelve una respuesta (Response) al cliente.

Este proceso es fundamental para la navegación web y el intercambio de información en Internet.

4. Aspectos Básicos de HTTP

  • Sin Conexión: HTTP es un protocolo sin conexión, lo que significa que cada solicitud se maneja de forma independiente.
  • Sin Estado: HTTP es sin estado, es decir, no guarda información sobre las solicitudes anteriores. Cada solicitud es autónoma y no está relacionada con las anteriores.
  • Extensible: HTTP es personalizable y puede adaptarse a nuevas funcionalidades mediante acuerdos entre el cliente y el servidor.

5. Ejemplo de una Solicitud HTTP

Para ilustrar cómo funciona una solicitud HTTP, utilizaremos el comando curl para realizar una solicitud y analizaremos la respuesta.

curl -iX GET https://reqres.in/api/users/1

5.1 ¿Qué es el comando curl?

El comando curl es una herramienta de línea de comandos que te permite transferir datos desde o hacia un servidor utilizando múltiples protocolos, como HTTP, HTTPS y FTP. Es especialmente útil para realizar solicitudes HTTP y descargar contenido directamente desde la terminal.

5.2 ¿Cómo ejecutar el comando curl?

  1. Abrir la terminal:
  • Linux/macOS: Abre la aplicación de terminal.
  • Windows: Utiliza el Símbolo del sistema, PowerShell o el Subsistema de Windows para Linux (WSL).
  1. Verificar si curl está instalado:
   curl --version

Si no está instalado:

  • Ubuntu/Debian: sudo apt update sudo apt install curl
  • macOS (con Homebrew): brew install curl

5.3 Explicación del comando curl -iX GET

  • curl: Ejecuta el comando curl.
  • -i: Incluye los encabezados de respuesta en la salida.
  • -X GET: Especifica el método HTTP GET.
  • https://reqres.in/api/users/1: URL de la API a la que se realiza la solicitud.

5.4 ¿Qué se espera al ejecutar el comando curl?

Al ejecutar este comando, estás enviando una solicitud HTTP GET al servidor de la API de reqres.in, esperando recibir información sobre el usuario con ID 1.

5.5 Análisis de la respuesta

La respuesta que recibirás es:

HTTP/1.1 200 OK
Date: Tue, 28 Sep 2021 14:28:00 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 98
Connection: keep-alive
...

{
    "data": {
        "id": 1,
        "email": "george.bluth@reqres.in",
        "first_name": "George",
        "last_name": "Bluth",
        "avatar": "https://reqres.in/img/faces/1-image.jpg"
    },
    "support": {
        "url": "https://reqres.in/#support-heading",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}

Interpretación de la respuesta

  1. Encabezados HTTP:
  • HTTP/1.1 200 OK: Código de estado que indica éxito en la solicitud.
  • Date: Fecha y hora de la respuesta.
  • Content-Type: Tipo de contenido (application/json).
  • Content-Length: Tamaño del contenido en bytes.
  • Connection: Tipo de conexión (por ejemplo, keep-alive).
  1. Cuerpo de la respuesta: Contiene los datos del usuario y información de soporte en formato JSON.

6. Encabezados HTTP como Pares Clave/Valor

6.1 ¿Qué son los encabezados HTTP?

Los encabezados HTTP son componentes esenciales en las solicitudes y respuestas HTTP que transmiten información adicional entre el cliente y el servidor. Se estructuran en pares clave-valor y permiten controlar aspectos como el tipo de contenido, la codificación y la autenticación.

Ejemplo:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

6.2 Tipos de encabezados HTTP

  1. Encabezados Generales: Aplicables tanto a solicitudes como a respuestas.
  • Ejemplo: Cache-Control: no-cache
  1. Encabezados de Solicitud: Enviados por el cliente para proporcionar información adicional al servidor.
  • Ejemplo: Accept: application/json
  1. Encabezados de Respuesta: Enviados por el servidor para proporcionar información adicional al cliente.
  • Ejemplo: Content-Type: text/html; charset=UTF-8
  1. Encabezados de Entidad: Describen el cuerpo del mensaje en solicitudes y respuestas.
  • Ejemplo: Content-Length: 348

6.3 Ejemplos Prácticos

Solicitud HTTP:

GET /index.html HTTP/1.1
Host: www.ejemplo.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml

Respuesta HTTP:

HTTP/1.1 200 OK
Date: Mon, 27 Sep 2021 12:28:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1389
Server: Apache/2.4.41 (Ubuntu)

6.4 Importancia de los Encabezados HTTP

  • Comunicación Eficiente: Facilitan el intercambio de información adicional necesaria para procesar solicitudes y respuestas.
  • Control y Seguridad: Permiten gestionar aspectos como la autenticación, seguridad y control de caché.
  • Optimización: Ayudan a mejorar el rendimiento mediante el control del almacenamiento en caché y la compresión.

Prueba por ti mismo:

Puedes visualizar los encabezados de una respuesta utilizando:

curl -I https://www.google.com

Este comando muestra solo los encabezados de la respuesta sin el cuerpo.

7. Conceptos clave

Este artículo tiene como objetivo proporcionarte una introducción sólida a los principios fundamentales del Protocolo de Transferencia de Hipertexto (HTTP) y su importancia en la comunicación web. A lo largo del texto, se han explicado aspectos clave como las diferencias entre HTTP y HTTPS, la arquitectura cliente-servidor, los encabezados HTTP y se han mostrado ejemplos prácticos mediante el uso del comando curl. Estos conceptos son fundamentales para comprender cómo interactúan los clientes (como los navegadores) y los servidores en la web.

A continuación, se resumen los conceptos clave tratados:

HTTP (Protocolo de Transferencia de Hipertexto)

Es un protocolo de comunicación basado en el modelo cliente-servidor, que permite el intercambio de información en la web mediante solicitudes y respuestas. Opera en la capa de aplicación y depende de TCP/IP.

HTTPS (Protocolo de Transferencia de Hipertexto Seguro)

Es una extensión de HTTP que añade seguridad mediante el cifrado con TLS (Transport Layer Security). Protege la confidencialidad e integridad de los datos transmitidos en la web.

Arquitectura de HTTP

Describe la interacción entre un cliente (quien solicita la información) y un servidor (quien la procesa y responde). Es un protocolo sin estado y sin conexión, lo que significa que cada solicitud es independiente.

Encabezados HTTP

Los encabezados HTTP son pares clave-valor que permiten transmitir información adicional en las solicitudes y respuestas. Pueden contener detalles sobre el tipo de contenido, la longitud de los datos, la codificación y otros parámetros de control.

Comando curl

Herramienta de línea de comandos utilizada para realizar solicitudes HTTP y otros protocolos. Facilita la transferencia de datos desde o hacia un servidor directamente desde la terminal, sin necesidad de un navegador web.

Solicitud HTTP GET

Es un tipo de solicitud que envía un cliente para obtener datos de un servidor. A través de un ejemplo práctico con curl, has aprendido cómo funciona una solicitud GET y cómo se interpreta la respuesta del servidor.

Tipos de Encabezados HTTP

Existen diferentes tipos de encabezados, como:

  • Generales: Información sobre la conexión en general.
  • De solicitud: Información adicional enviada por el cliente.
  • De respuesta: Información sobre la respuesta proporcionada por el servidor.
  • De entidad: Información sobre el contenido de la solicitud o respuesta.

Estos conceptos te proporcionan una base para entender cómo funciona la web y cómo interactúan los diferentes elementos de una aplicación web utilizando el protocolo HTTP.

Muchas gracias por llegar hasta aquí, espero que el artículo haya sido de utilidad, ¡hasta la próxima!

Bonus Track

Dejo algunas imágenes generadas con Flux RealismLora Image Generator.

Artículos que te pueden interesar