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:
- 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
. - 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
"
- El protocolo: "
- 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. - El cliente (navegador) inicia una conexión TCP con el servidor, por defecto en el puerto 80 para HTTP.
- El servidor escucha y notifica al cliente que la conexión ha sido establecida.
- El cliente envía un mensaje de petición GET para la página
index.html
dentro de la conexión TCP abierta. - El servidor recibe el mensaje, procesa la solicitud y crea un mensaje de respuesta que incluye el texto HTML de la página solicitada.
- El servidor cierra la conexión (o la mantiene abierta si se usa Keep-Alive).
- 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
- Ejemplo:
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é).
- Ejemplo:
Cabeceras Comunes en HTTP/1.1
Cache-Control
: Controla el comportamiento de la caché de manera más granular y flexible quePragma
.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.