Protocolo HTTP

 

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:

  1. -          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.
  2. -          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.
  3. -          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.


-

Publicar un comentario

Artículo Anterior Artículo Siguiente