Generalidades del protocolo HTTP
El protocolo HTTP significa Hyper Text Transfer Protocol.
Este protocolo está en cada momento en el que estamos en
la web, cuando queremos ver una página o le damos click a un botón para enviar
información. Este protocolo sirve para enviar y recibir datos entre un cliente
y un servidor web, es importante tener en cuenta que este protocolo no tiene
estado (stateless) lo que significa que cada petición será única y que al hacer
otra petición no recordará la anterior algo parecido a una transacción, por
esto para manejar información del cliente bien sea su usuario etc. Y mejorar su
experiencia se utilizan cookies, sesiones, local storage y programación.
MÉTODOS
Este protocolo tiene métodos para la transmisión de datos,
y estos son algunos de ellos.
GET: Este
es el más común, en donde HTTP pide OBTENER información del servidor. Cuando
tipeamos el nombre de una página web, estamos haciendo una petición GET.
POST: Se
utiliza para ENVIAR información al servidor, se ve en un formato de contacto.
PUT: Se
utiliza para ACTUALIZAR información en el servidor.
DELETE: Se
utiliza para ELIMINAR información en el servidor.
HTTP: Cabeceras
Los
paquetes de datos que se envían entre cliente y servidor contienen una parte
fundamental llamada cabecera, en esta se envían datos importantes ejm: La URL
HTTP Códigos Estado:
Los
estados de HTTP conforman una parte muy importante, puesto informa de que
respuesta obtuvo la petición.
100 – Ok
(Petición recibida / Procesando)
200 – OK,
Petición resuelta
300 –
Redireccionamiento (Debe hacerse un proceso luego)
400 –
Error del cliente (La petición no tiene lo que necesita)
500 –
Error del servidor (En una petición aparentemente válida el servidor falla en
resolverla)
Estados comunes:
200 – OK
201- OK Created
301 – Moved to New URL
304 – Not modified (Caché version)
400 - Bad request
401 - Unauthorized
404 – Not found
500 – Internal server error
¿Cómo funciona HTTP?
Se crea una conexión TCP por parte y parte (cliente - servidor), esta conexión funciona por medio de algo llamado 3-way-handshake o Enlace de 3 vías. Lo que va a suceder será que al realizar la conexión exitosamente se mandará la petición HTTP al servidor y este enviará la respuesta.
Versiones HTTP
En 1996,
apareció HTTP 1.0 que cierra esta conexión cuando el servidor responde, es
decir, por cada petición que se haga al servidor se creará una conexión TCP y
cuando el servidor responda esta conexión se cerrará, cuando se haga otra
petición se creará otra conexión y así sucesivamente.
En 1997,
se publicó HTTP 1.1 el cual añadió numerosas ventajas:
-
Conexión
reutilizable, con una sola conexión se pueden hacer las peticiones
-
Pipelining
(Enrutamiento), permite hacer dos peticiones antes de ser respondida la primera
y disminuye así la latencia de la comunicación. Viene deshabilitada por defecto.
Esto conlleva un problema y es el orden de las peticiones, puesto se envían peticiones
en paralelo para entonces esperar la respuesta y esto crea un problema de ordenamiento
de las peticiones.
(La
latencia es el tiempo que tarda en transmitirse un paquete dentro de la red)
-
Transferencia
fragmentada (Chunked transfer): Es un mecanismo de transferencia de datos “fragmentados”.
ESTE MECANISMO HA SIDO REEMPLAZADO POR UNO MEJOR INTEGRADO EN HTTP/2
A
principios de 2012 un equipo inspirado en el proyecto SPDY, creó el protocolo
HTTP/2. Este protocolo contiene todas las funcionalidades de petición y respuesta
necesarias para la renderización de la página, pero con algunos matices cambiados.
Trae
consigo las siguientes características:
- -
Multiplexed
streams: Para
evitar una congestión causada por muchas conexiones al tiempo se desarrolló un
mecanismo capaz de mandar las peticiones por una misma conexión.
- -
Server
push: HTTP/2
permite enviar archivos que pueden ser necesarios antes de que se soliciten, es
decir, si se hace una petición para obtener un archivo HTML se manda con ello
los archivos CSS e imágenes. Esto supone una mejora en el rendimiento.
- -
Compresión
de Headers: En
HTTP/1.x se envía una cabecera con información de como se debe comportar el
navegador o servidor con el paquete de datos. HTTP/2 permite enviar un solo bloque
comprimido con toda la información de las cabeceras y una vez finalizada la transmisión
se decodifica este bloque.
La ultima
versión del protocolo HTTP (HTTP/3), esta actualmente en fase de experimentación
y la diferencia con las anteriores versiones es que se basa en una conexión UDP
y no TCP.
DATOS ADICIONALES
Número de Puerto: El PC ejecuta varios servicios al mismo tiempo, y se necesita identificar qué servicio está ejecutándose. Para acceder a una página web, se ofrece junto a la IP un puerto, este puerto es donde está ejecutándose el servidor HTTP(S) que está alojado en el servidor web de la página que estamos visitando.
-> 93.184.216.34:433
433 es el
puerto donde se está ejecutando el servicio bien sea un servidor HTTP, una base
de datos como MySQL o MongoDB en la IP 93.184.216.34
Definición
de caché (web): Es
la memoria intermedia encargada de almacenar copias de documentos web (imágenes,
páginas etc.) para evitar demoras en la descarga de estas y mejorar la
experiencia de usuario. Algunas peticiones pueden ser respondidas por el mismo
caché (Estado HTTP 304) Existen tres tipos:
1.
Privadas
(Para un solo usuario)
2.
Compartidos
(Para varios usuarios)
3.
Pasarela
(Del lado del servidor)
¿Cuál es la diferencia entre HTTP/1.1 Pipelining y HTTP/2 Multiplexing?
El Pipelining de HTTP/1.1 requiere que las peticiones sean resueltas totalmente en el mismo orden que fueron pedidas, mientras Multiplexing de HTTP/2 permite que lleguen desordenadas y en fragmentos evitando bloqueos.
-