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
- El usuario introduce una URI en la barra de direcciones del navegador.
- El navegador analiza la URL y establece una conexión TCP con el servidor web.
- Una vez establecida la conexión TCP, el navegador envía un mensaje HTTP de petición, que depende de la URI solicitada.
- El servidor envía un mensaje de respuesta, que depende de la petición recibida y del estado del servidor.
- 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.