Protocolo HTTP: Funcionamiento y Estructura de la Comunicación Web

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,75 KB

Fundamentos del Protocolo HTTP: La Base de la Comunicación Web

Los elementos de software de la arquitectura web, como clientes, servidores y proxies, utilizan el Protocolo HTTP (Hypertext Transfer Protocol) para comunicarse. HTTP define la sintaxis y la semántica que emplean estos componentes para intercambiar información.

Las versiones más comunes del protocolo son HTTP/1.0 y HTTP/1.1. Es un protocolo que opera en la capa de aplicación del modelo TCP/IP, apoyándose directamente en TCP/IP para la transmisión de datos.

HTTP es el protocolo de comunicaciones estándar que facilita la interacción entre servidores, proxies y clientes, permitiendo la transferencia de documentos web de manera universal, independientemente del cliente o servidor involucrado.

Características Clave del Protocolo HTTP

  • Modelo Petición/Respuesta: HTTP se basa en un esquema fundamental de petición y respuesta, donde un cliente envía una solicitud y un servidor proporciona una respuesta.
  • Basado en Mensajes de Texto Plano: El protocolo HTTP utiliza mensajes en formato de texto plano.

    Ventajas:

    • Legible: Los mensajes son fácilmente comprensibles para los humanos.
    • Fácil de Depurar: Simplifica la identificación y corrección de errores.

    Desventajas:

    • Mensaje Más Largo: El formato de texto plano puede resultar en mensajes con mayor tamaño en comparación con formatos binarios.
  • Protocolo Sin Estado (Stateless): HTTP es un protocolo sin manejo de estados.
    • Hay una ausencia de estado persistente tras cada par petición-respuesta.
    • Tras enviar la respuesta, el servidor cierra inmediatamente la conexión (en HTTP/1.0, aunque Keep-Alive en HTTP/1.1 permite conexiones persistentes).
    • No existe el concepto inherente de sesión a nivel de protocolo HTTP, lo que requiere mecanismos adicionales (como cookies) para gestionar el estado de la sesión.

Escenario Típico de una Interacción HTTP

A continuación, se describe un flujo común de comunicación HTTP:

  1. El usuario escribe en la barra de dirección del navegador el recurso al que desea acceder, por ejemplo: http://www.uv.es/~uvalen/cat/index.html.
  2. El navegador descompone la URL en sus tres partes principales:
    • El protocolo: "http"
    • El nombre del servidor: "www.uv.es"
    • El camino del recurso: "/~uvalen/cat/index.html"
  3. El navegador se comunica con un servidor de nombres (DNS) para traducir el nombre del servidor "www.uv.es" en una dirección IP, que es utilizada para establecer la conexión con la máquina servidora.
  4. El cliente (navegador) inicia una conexión TCP con el servidor, por defecto en el puerto 80 para HTTP.
  5. El servidor escucha y notifica al cliente que la conexión ha sido establecida.
  6. El cliente envía un mensaje de petición GET para la página index.html dentro de la conexión TCP abierta.
  7. El servidor recibe el mensaje, procesa la solicitud y crea un mensaje de respuesta que incluye el texto HTML de la página solicitada.
  8. El servidor cierra la conexión (o la mantiene abierta si se usa Keep-Alive).
  9. El cliente recibe el mensaje de respuesta y presenta la página web al usuario.

Estructura de los Mensajes HTTP: Petición y Respuesta

Mensaje de Petición (Cliente a Servidor)

El cliente envía una petición al servidor en forma de mensaje de texto, que incluye:

  • Una línea inicial con el método de solicitud, la URL del recurso solicitado y la versión del protocolo.
  • Una lista de campos de cabecera, que consisten en modificadores de la petición, información del cliente, etc.
  • Un posible cuerpo de contenido (opcional, utilizado principalmente en métodos como POST o PUT).

Línea Inicial en las Peticiones

Esta línea especifica el recurso que se solicita y la acción que se precisa de él:

  • Nombre del método: (ej. GET, POST, HEAD, etc.).
  • Recurso: La URL completa o el camino de la URL (ej. /directorio/otro/fichero.html).
  • Versión del protocolo HTTP: (ej. HTTP/1.0, HTTP/1.1).

Ejemplo: GET /directorio/otro/fichero.html HTTP/1.0

Mensaje de Respuesta (Servidor a Cliente)

El servidor responde con un mensaje que incluye:

  • Una línea de estado, con la versión del protocolo y un código de éxito o error.
  • Una lista de campos de cabecera, donde se incluyen, entre otras cosas: el tipo MIME de la respuesta, información del servidor, entidades de meta-información, etc.
  • Un cuerpo con el contenido del recurso solicitado (opcional, por ejemplo, el HTML de una página).

Línea Inicial de la Respuesta

Esta línea proporciona el estado de la solicitud:

  • Versión de HTTP: (ej. HTTP/1.1).
  • Código de estado: Un código numérico que indica el resultado de la solicitud.
  • Comentario descriptivo de estado: Una breve descripción textual del código de estado.

Ejemplo: HTTP/1.1 401 Unauthorized

Métodos de Envío de Datos en HTTP

Los métodos HTTP (también conocidos como verbos HTTP) indican la acción deseada a realizar sobre el recurso identificado.

  • GET: Solicita un documento al servidor. Los datos pueden enviarse en la URL (como parámetros de consulta).
  • HEAD: Similar a GET, pero solo solicita las cabeceras HTTP de la respuesta.
    • Útil para comprobar la existencia de un enlace o para consultar información sobre el fichero (como su tamaño o tipo) antes de solicitar el contenido completo.
  • POST: Envía datos al servidor para su procesamiento.
    • Similar a GET, pero los datos se envían en el cuerpo del mensaje de la petición, no en la URL.
    • La URL suele corresponder a una página dinámica o un script que procesa los datos enviados.
  • PUT: Almacena el documento enviado en el cuerpo del mensaje en la URL especificada. Si el recurso ya existe, lo reemplaza; si no, lo crea.
  • DELETE: Elimina el documento referenciado en la URL.
  • TRACE: Realiza un rastreo de los intermediarios (proxies) por los que pasa la petición, devolviendo el mensaje de petición final recibido por el servidor.
  • OPTIONS: Averigua los métodos HTTP que soporta el servidor para un recurso específico.

Nota importante: En una caché, solo se guardan las respuestas de las peticiones realizadas con GET y HEAD (no con POST, PUT, DELETE, etc., ya que estos métodos implican cambios en el servidor o envío de datos sensibles).

Cabeceras Genéricas HTTP

Las cabeceras HTTP son campos que se incluyen en los mensajes de petición y respuesta para proporcionar información adicional sobre la transacción, el cliente, el servidor o el recurso.

Cabeceras Comunes en HTTP/1.x

  • Date: Indica la fecha y hora de creación del mensaje.
    • Ejemplo: Date: Tue, May 16 12:39:32 2001 GMT
  • Pragma: Utilizada principalmente en HTTP/1.0 para controlar el comportamiento de la caché.
    • Ejemplo: Pragma: no-cache (indica que no se debe enviar una copia guardada en la caché).

Cabeceras Comunes en HTTP/1.1

  • Cache-Control: Controla el comportamiento de la caché de manera más granular y flexible que Pragma.
  • Connection: Controla las opciones de conexión para la transmisión actual.
    • close: Indica que la conexión debe cerrarse después de completar la respuesta.
    • Keep-Alive (introducido en HTTP/1.0, mejorado en HTTP/1.1): Indica que la conexión debe mantenerse abierta para múltiples peticiones/respuestas.
  • Via: Contiene información sobre los intermediarios (proxies o gateways) por los que ha pasado la petición o respuesta.

Entradas relacionadas: