Fundamentos del Protocolo HTTP y la Web: Componentes y Funcionamiento Esencial


HTTP: Protocolo Fundamental de la Web

HTTP (Hypertext Transfer Protocol) es un protocolo de la capa de aplicación que facilita a los usuarios, de una forma sencilla e intuitiva, el acceso a la información hipermedia remota de sistemas conectados a una red.

World Wide Web (WWW)

La World Wide Web (WWW) es un servicio de distribución de información que permite acceder a millones de recursos electrónicos y aplicaciones distribuidos en servidores por todo Internet, los cuales están identificados y localizados por direcciones.

Componentes Clave y Funcionamiento de la Web

  • Recursos: Documentos, imágenes, videos, etc., conectados por hiperenlaces y accesibles mediante servidores web.
  • Nombres y Direcciones: Sistema de nombres basado en cadenas de caracteres que identifican y localizan inequívocamente a los recursos en la web.
  • Clientes Web: Aplicaciones a nivel de cliente (navegadores) que conectan con los servidores e interpretan la información para mostrársela a los usuarios.
  • Servidores Web: Atienden las peticiones de los clientes y les envían los recursos solicitados.
  • Proxies Web: Programas intermediarios entre clientes y servidores, que pueden actuar como cortafuegos y almacenar datos para un mejor rendimiento.
  • Protocolo HTTP: Conjunto de normas y reglas para el diálogo entre cliente, servidor y proxies, utilizando TCP como protocolo de transporte.
  • Tecnologías Web: Herramientas y lenguajes utilizados para desarrollar aplicaciones basadas en la web.

Nombres y Direcciones en la Web: URI y URL

La web es un conjunto de recursos distribuidos y conectados entre sí. Para poder localizar estos recursos, se accede a ellos mediante cadenas de caracteres que los identifican. Estas cadenas se denominan Identificadores Uniformes de Recursos (URI). Los Localizadores Uniformes de Recursos (URL) son un tipo específico de URI.

Páginas Web, Sitios Web y Aplicaciones Web: Conceptos Clave

Una página web es un documento hipermedia que normalmente contiene hiperenlaces a otras páginas web o recursos. Las páginas web están escritas en lenguajes que son interpretados por los navegadores, y su contenido puede ser estático o dinámico.

Un sitio web es un conjunto de páginas web relacionadas y accesibles a partir de un mismo nombre de dominio DNS. El conjunto de sitios web de Internet constituye la WWW. Los sitios web se clasifican según diversos criterios, uno de ellos es por su contenido.

Una aplicación web es aquella donde el usuario interactúa con un navegador que accede a los servicios y recursos ofrecidos por un servidor web.

Servidores Web: Funcionamiento y Características

Los servidores web son programas que atienden peticiones HTTP, procesan e interpretan código escrito en diferentes lenguajes. Los recursos pueden estar localizados en el mismo equipo donde se ejecuta el servidor o en otros equipos de la red a los que el servidor puede acceder usando protocolos adicionales.

El servidor puede enviar tanto contenido estático como dinámico. Por defecto, escuchan peticiones HTTP en el puerto 80/TCP.

Clientes Web (Navegadores): Interacción y Caché

Los navegadores web son programas con los que interactúa el usuario y que le permiten, entre otras funciones, introducir URIs para acceder a recursos disponibles en la red.

Reciben recursos de los servidores web, los procesan y muestran los resultados al usuario, permitiéndole interactuar si es necesario. Además, mantienen una memoria caché en la que almacenan durante un tiempo las direcciones a las que han accedido, recursos procesados, contraseñas, etc., para optimizar el rendimiento.

Proxies Web: Tipos y Funciones

  • Proxy Directo

    Recibe la petición iniciada por un cliente y la traslada al servidor. La solicitud del cliente se dirige al servidor web, no al proxy; este solo actúa como intermediario. Se usan habitualmente para optimizar y controlar el acceso a redes externas.

  • Proxy Inverso

    Recibe la petición de un cliente y la reenvía a uno o varios servidores. En este caso, la solicitud del cliente se dirige al proxy. Se usan habitualmente para ofrecer acceso a servidores web que están detrás de un cortafuegos y no son accesibles directamente.

El Protocolo HTTP: Reglas y Comunicación Web

El Protocolo HTTP define las reglas que utilizan los componentes de software para comunicarse en la web. Es un protocolo que utiliza TCP como protocolo de transporte y determina los tipos de peticiones que los clientes pueden enviar, así como el formato y estructura de las respuestas.

Además, define una estructura de metadatos, en forma de cabeceras, que se envían tanto en las peticiones como en las respuestas.

Funcionamiento Básico de HTTP

  1. El usuario introduce una URI en la barra de direcciones del navegador.
  2. El navegador analiza la URL y establece una conexión TCP con el servidor web.
  3. Una vez establecida la conexión TCP, el navegador envía un mensaje HTTP de petición, que depende de la URI solicitada.
  4. El servidor envía un mensaje de respuesta, que depende de la petición recibida y del estado del servidor.
  5. Finalmente, se cierra la conexión TCP.

Estructura de los Mensajes HTTP

Los mensajes HTTP se componen de líneas escritas en texto plano (ASCII) que contienen las órdenes y parámetros con la sintaxis definida en el protocolo. Pueden ser de petición o de respuesta.

Mensajes de Petición HTTP

  • Línea Inicial: Incluye el método utilizado (GET, POST, etc.), la parte relativa al servidor (ruta del recurso) y la versión del protocolo HTTP.
  • Líneas de Cabecera: Conjunto de pares nombre/valor que determinan cómo será procesada la petición por parte del servidor. Cada cabecera se muestra en una línea. Detrás de la última cabecera se envía una línea en blanco.
  • Cuerpo del Mensaje (Opcional): Contiene datos adicionales, como los enviados en un formulario POST.

Mensajes de Respuesta HTTP

  • Línea Inicial: Incluye la versión HTTP utilizada, el código de estado o error (ej. 200 OK, 404 Not Found) y un texto explicativo del código de estado.
  • Líneas de Cabecera: Conjunto de pares nombre/valor que proporcionan información adicional sobre la respuesta, el servidor o el recurso. Detrás de la última cabecera se envía una línea en blanco.
  • Cuerpo del Mensaje (Opcional): Contiene el recurso solicitado (ej. una página HTML, una imagen) o datos relacionados con la respuesta.

Métodos de Petición HTTP: Operaciones Cliente-Servidor

Los métodos de petición HTTP especifican la operación que el cliente desea realizar en el servidor. La versión HTTP 1.1 contempla siete métodos principales:

  • Método GET

    Es el método más utilizado y se emplea para obtener cualquier tipo de información del servidor. Se invoca cuando se introduce una URL en el navegador. Permite enviar parámetros al servidor en la URI, añadiéndolos detrás del nombre del recurso con el carácter «?», separando los diferentes parámetros mediante «&», y sustituyendo los espacios por «+». No envían cuerpo de mensaje y no se pueden utilizar para subir archivos o realizar operaciones que requieran enviar una gran cantidad de datos al servidor.

  • Método POST

    Se emplea para solicitar al servidor que acepte información que se envía adjunta en el cuerpo de la petición. En el cuerpo del mensaje se incluyen los parámetros y los datos, por lo que no son visibles en la URL. Se invoca normalmente como consecuencia de enviar formularios HTML POST. Se utilizan en operaciones que no deben ser repetidas (al recargar la página, los navegadores suelen lanzar una alerta). No tiene límite de cantidad de datos. No es recomendable cachear las respuestas obtenidas en una petición POST.

  • Método OPTIONS

    Se utiliza para solicitar al servidor información sobre las opciones de comunicación disponibles para un recurso determinado.

  • Método HEAD

    Permite recuperar únicamente las cabeceras de un recurso web. Es similar a GET, pero el servidor devuelve solo las cabeceras, sin el cuerpo del mensaje. Se usa para implementar cachés de navegadores, informar al usuario del tamaño del recurso antes de recuperarlo, etc. Generalmente es útil para servidores proxy.

  • Método PUT

    Se utiliza para enviar recursos al servidor, con el fin de crear o actualizar un recurso en una URI específica. Por seguridad, no es habitual que los servidores web permitan subir recursos usando el método PUT.

  • Método DELETE

    Se emplea para eliminar un recurso del servidor. Por seguridad, no es habitual que los servidores web permitan eliminar recursos usando el método DELETE.

  • Método TRACE

    Se usa para trazar la ruta de una petición a través de proxies y cortafuegos. Es útil para depurar errores en redes complejas.

Cabeceras HTTP: Metadatos Esenciales para la Comunicación

Las cabeceras HTTP son pares de nombre/valor que se incluyen en los mensajes de petición y respuesta HTTP. Definen información crucial sobre los datos que se intercambian, así como sobre los propios clientes y servidores. Se pueden clasificar de la siguiente manera:

  • Cabeceras Generales

    Definen información que puede ser utilizada tanto por clientes como por servidores, ya que se aplican a una sesión completa de comunicación. Proporcionan información sobre:

    • Control de caché.
    • Fechas.
    • Codificación de la transferencia.
  • Cabeceras de Petición

    Empleadas por los clientes para enviar información al servidor. Proporcionan detalles sobre:

    • El propio navegador (User-Agent).
    • Nombre y puerto del servidor al que se dirige la petición (Host).
    • Tipos MIME, compresión, mapas de caracteres, idiomas que está dispuesto a aceptar (Accept, Accept-Encoding, Accept-Charset, Accept-Language).
    • Cookies.
  • Cabeceras de Respuesta

    Empleadas por el servidor para enviar información adicional al cliente. Proporcionan datos sobre:

    • La edad de la respuesta (Age).
    • Si un recurso no está disponible, la fecha en la que se espera que esté disponible (Retry-After).
    • El tipo de servidor (Server).
    • Si el servidor necesita autorización para acceder al recurso solicitado (WWW-Authenticate).
  • Cabeceras de Entidad

    Información relacionada directamente con el recurso que se le va a proporcionar al cliente. Proporcionan detalles sobre:

    • Codificación (Content-Encoding).
    • Idioma (Content-Language).
    • Longitud (Content-Length).
    • Tipo MIME de los recursos (Content-Type).

Códigos de Estado HTTP: Respuestas del Servidor

Los códigos de estado HTTP son enviados por los servidores en las respuestas HTTP e informan al cliente sobre cómo ha sido procesada la petición. Se acompañan de un texto explicativo.

  • 1xx: Informativos

    Indican que el servidor ha recibido la petición pero no ha finalizado de procesarla.

    • 100 Continue
  • 2xx: Éxito

    Usados cuando la petición ha sido procesada satisfactoriamente.

    • 200 OK
    • 201 Created
  • 3xx: Redirección

    Indican que la petición ha sido procesada y redirigida a otra localización.

    • 301 Moved Permanently
    • 302 Found
    • 304 Not Modified
  • 4xx: Errores del Cliente

    El servidor indica que hay un error en la petición del cliente o que no se puede conceder.

    • 400 Bad Request
    • 401 Unauthorized
    • 403 Forbidden
    • 404 Not Found
  • 5xx: Errores del Servidor

    El servidor no puede atender una petición porque ha existido algún problema interno.

    • 500 Internal Server Error
    • 503 Service Unavailable

Almacenamiento en Caché HTTP: Optimización del Rendimiento

Los servidores web a menudo contienen información que no cambia durante largos periodos de tiempo. HTTP soporta el almacenamiento en caché para aumentar el rendimiento y evitar tráfico de red innecesario.

Tanto los navegadores como los proxies pueden almacenar localmente recursos durante un tiempo determinado. Para controlar este proceso, se definen cabeceras HTTP específicas que permiten especificar qué se almacena en caché, durante cuánto tiempo, y qué recursos no deben ser cacheados.

Redirecciones HTTP

HTTP permite a los servidores y a los proxies redirigir las peticiones de los clientes a otras localizaciones o recursos, lo cual es útil para mantener la accesibilidad de contenidos que han cambiado de URL o para balanceo de carga.

Compresión HTTP: Reducción del Tráfico de Red

Para reducir el tráfico de red y mejorar los tiempos de carga, es posible que los servidores compriman los recursos solicitados antes de enviárselos a los clientes.

Los clientes utilizan cabeceras específicas en los mensajes de petición (como Accept-Encoding) para indicar que soportan la compresión. Por su parte, los servidores responden con cabeceras (como Content-Encoding) para informar al cliente que los datos enviados están comprimidos.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *