Despliegue de Aplicaciones Web
José Juan Sánchez Hernández
Curso 2024/2025
HTTP es un protocolo de la capa de aplicación que establece las reglas que deben seguir un cliente y un servidor para comunicarse en la web (World Wide Web). Su principal objetivo es permitir que los usuarios soliciten y recuperen recursos, como páginas web, imágenes y archivos, desde servidores en la web.
En las comunicaciones HTTP existen dos roles principales:
Cliente: Es el software o equipo que realiza peticiones a un servidor. Ejemplo: Un navegador web, como Chrome o Firefox.
Servidor: El servidor HTTP es un software o equipo que almacena y entrega recursos solicitados por los clientes. Ejemplo: Los servidores web, como Apache, Nginx o Microsoft IIS.
El protocolo HTTP utiliza el puerto 80
, mientras que el
protocolo HTTPS utiliza el puerto 443
.
La comunicación en el protocolo HTTP se basa en un modelo basado en peticiones y respuestas:
Petición (Request): El cliente envía una
petición al servidor para recuperar un recurso específico. La petición
incluye información como el método HTTP seleccionado (GET
,
POST
, etc.), la URL del recurso y los encabezados HTTP
necesarios.
Respuesta (Response): El servidor recibe la
petición y responde con la información solicitada, junto con un código
de estado HTTP (Ejemplo: 200 OK
o
404 Not Found
) y encabezados adicionales. La respuesta
puede incluir datos en HTML, imágenes, archivos JSON, etc.
GET /index.html HTTP/1.1
Host: www.iescelia.org
User-Agent: MiNavegador/1.0
Accept: text/html
En este ejemplo aparecen los siguientes elementos:
GET
es el método HTTP utilizado para
solicitar un recurso./index.html
es la ruta del recurso que
se está solicitando en el servidor.HTTP/1.1
indica la versión del
protocolo HTTP que se está utilizando.Host: www.iescelia.org
especifica el
nombre del host al que se hace la petición.User-Agent: MiNavegador/1.0
proporciona información sobre el agente de usuario o el navegador que
realiza la petición.Accept: text/html
indica que el
cliente prefiere recibir el recurso en formato HTML.HTTP/1.1 200 OK
Date: Miércoles, 28 de septiembre de 2023 13:30:00 GMT
Server: ServidorEjemplo/1.0
Content-Type: text/html
Content-Length: 1234
<!DOCTYPE html>
<html>
<head>
<title>Página de Ejemplo</title>
</head>
<body>
<p>Esta es una página de ejemplo.</p>
</body>
</html>
En la respuesta de ejemplo aparecen los siguientes elementos:
HTTP/1.1 200 OK
: indica que el recurso
solicitado se encontró y se entregó correctamente.Date: Miércoles, 28 de septiembre de 2023 13:30:00 GMT
:
proporciona la fecha y la hora en que se generó la respuesta.Server ServidorEjemplo/1.0
: indica el
software del servidor web y su versión.Content-Type: text/html
: indica que el
tipo de contenido de la respuesta es HTML.Content-Length: 1234
: indica el número
de bytes del contenido de la respuesta.Utiliza la herramienta curl
para realizar una petición
HTTP a la página web del IES Celia Viñas. ¿Qué información se muestra en
la respuesta?
El parámetro -v
habilita el modo verbose del
comando curl
y muestra información más detallada sobre la
petición y la respuesta.
Si queremos omitir el contenido de la respuesta, podemos utilizar el
parámetro -I
. Este parámetro hará que sólo se muestren las
cabeceras.
Utiliza las herramientas para desarrolladores que se se incluyen en los navegadores Google Chrome o Mozilla Firefox para realizar una petición HTTP a la página del IES Celia Viñas y examinar el contenido de las cabeceras (Headers)), peticiones (Request) y respuestas (Response).
En el protocolo HTTP se definen diferentes métodos que indican la acción que se debe realizar en una petición. Algunos de los métodos más comunes son:
GET
: Solicita un recurso
específico.POST
: Envía datos al servidor para
procesarlos, por ejemplo, para enviar formularios.PUT
: Actualiza un recurso existente o
crea uno nuevo si no existe.DELETE
: Elimina un recurso.HEAD
: Solicita únicamente la cabecera
de la respuesta HTTP.Las URL (Uniform
Resource Locators) son direcciones que identifican recursos en
la web. Una URL típica consta de un esquema (como “http://
”
o “https://
”), un dominio (como
“www.iescelia.org
”) y una ruta que indica la ubicación del
recurso en el servidor.
Cada respuesta HTTP incluye un código de estado que indica si la petición se pudo resolver con éxito o no. Existen cinco tipos de códigos de estado:
100 - Continue
: Indica que la petición ha sido recibida
y el cliente puede continuar con su petición.200 - OK
: La petición se completó con éxito.301 - Moved Permanently
: Indica que el recurso
solicitado se ha movido permanentemente a una nueva ubicación y se
proporciona la URL actualizada.403 - Forbidden
: Indica que el servidor comprende la
petición del cliente, pero no se permite su acceso.404 - Not Found:
El recurso solicitado no se encontró
en el servidor.500 Internal Server Error:
Hubo un error en el servidor
al procesar la petición.Imagen 1: Imagen obtenida de ByteByteGo.com.
Busca en Internet el significado del siguiente código de estado HTTP:
418
.Referencias:
El protocolo HTTP utiliza encabezados para transmitir información adicional tanto en las peticiones, como en las respuestas. Los encabezados pueden incluir información sobre el tipo de contenido, la longitud del contenido, la codificación, la autenticación, etc.
Versión | Fecha de publicación | Características principales |
---|---|---|
HTTP/0.9 | 1991 | Se trata de una versión muy sencilla que sólo admite peticiones
GET |
HTTP/1.0 | 1996 | Se añaden más tipos de peticiones: GET ,
POST , HEAD y PUT |
HTTP/1.1 | 1997 | Incluye mejoras de rendimiento, como la caché y conexiones persistentes |
HTTP/2 | 2015 | Incluye mejoras de rendimiento, como la multiplexación y la compresión de cabeceras |
HTTP/3 | 2018 | Utiliza el protocolo UDP para mejorar el rendimiento y la seguridad |
Imagen 2: Imagen obtenida de ByteByteGo.com.
HTTP 1.0: Es necesario realizar una una conexión TCP separada para cada petición HTTP.
HTTP 1.1: Permite utilizar conexiones persistentes, que consiste en mantener una conexión TCP abierta para que se pueda reutilizar. Esta versión no resuelve el problema de bloqueo HOL (Head-Of-Line).
El bloqueo HOL ocurre cuando se agota el número de peticiones paralelas permitidas en el navegador, lo que hace que las peticiones posteriores deban esperar a que las anteriores se completen.
HTTP 2.0: Resuelve el problema de bloqueo HOL a través de la multiplexación de peticiones, lo que elimina el bloqueo HOL en la capa de aplicación, aunque el bloqueo HOL todavía existe en la capa de transporte (TCP).
HTTP 2.0 introdujo el concepto de streams de HTTP, que permite la multiplexación de diferentes intercambios de HTTP en la misma conexión TCP. Cada stream no necesita ser enviado en orden.
HTTP 3.0: Utiliza QUIC en lugar de TCP como protocolo de transporte subyacente, eliminando así el bloqueo HOL en la capa de transporte.
Referencia:
Esta
página forma parte del curso
Despliegue de Aplicaciones
Web de José Juan Sánchez
Hernández y su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.