Cómo funciona HTTP

Como desarrolladores de software es importante conocer el funcionamiento del protocolo HTTP. En tal sentido, en este artículo vamos a ver de forma resumida conceptos sobre HTTP, sus versiones, métodos y códigos de estado. Por lo tanto, te invito a continuar la lectura y descubrir como funciona.

Que es HTTP ?

El Protocolo de Transferencia de Hipertexto es un protocolo de la capa de aplicación que permite el intercambio de comunicación entre un cliente (navegador) y un servidor web. Así mismo, este utiliza el protocolo TCP o UDP en la capa de red.

Arquitectura Cliente - Servidor

Hablemos sobre el modelo cliente - servidor, para ello debemos tener en cuenta qué es cada uno. Para este caso, un cliente es todo software que permita realizar una solicitud HTTP, es decir un navegador. Por otro lado, un servidor web será aquel que responda a estas solicitudes y entregará o negará la información o recurso requerido.

Cliente-Servidor.png

Versiones HTTP

Durante los años, el protocolo HTTP ha incorporado mejoras para que sea más eficiente y rápido la navegación en sitios webs. A continuación, veremos algunas de sus versiones que actualmente se utilizan.

HTTP 1.1

  • Soportado en todos los navegadores y servidores web.
  • Es el estándar actualmente, ya que toda página web debe será recibida como mínimo mediante esta versión HTTP.
  • El servidor web entregará una respuesta HTTP por cada solicitud del cliente. Esto quiere decir, que si queremos ver una página web nuestro navegador hará la solicitud al servidor por el documento HTML; por lo tanto, si este requiere de una imagen, deberá hacer otra solicitud HTTP para que el servidor entregue la imagen.

Http1.png

HTTP 2

  • Soportado por todos los navegadores y la mayoría de los servidores.
  • Compresión de cabeceras con múltiples solicitudes.
  • El servidor web entregará múltiples recursos con una sola solicitud HTTP del cliente.

Http2.png

HTTP 3

  • Soportado en pocos navegadores y pocos servidores.
  • Utiliza el protocolo QUIC (Quick UDP Internet Connection) en la capa de red en lugar del TCP.
  • Envía múltiples respuestas al cliente hasta que la conexión sea finalizada.
  • Al usar el protocolo QUIC reduce en gran proporción su latencia.

Http3.png

A continuación veremos en que versión de HTTP serán entregados los recursos de maadcode.dev/blog. Para ello, abre el inspector y haz clic en "Network", luego recarga la página web. Debería aparecer una tabla de los recursos entregados con su nombre, estado, protocolo, tamaño, etc; para este ejemplo, nos interesa el protocolo, verás que dichos archivos son entregados desde el servidor mediante el protocolo HTTP2 (Si estas usando un navegador que no tiene soportado HTTP2, es posible que te salga HTTP1.1).

maadcode-inspector-network.png

Métodos HTTP

Existen muchos métodos HTTP; sin embargo, en este artículo veremos lo más comunes.

GET

Este método se utiliza para solicitar un recurso al servidor.

POST

El método POST se utiliza para enviar datos al servidor.

DELETE

DELETE es usado para eliminar un recurso.

PUT

Utilizado para crear o modificar un recurso o dato.

HEAD

Similar al comportamiento de GET; sin embargo, el servidor no enviará algún recurso en la respuesta HTTP a una solicitud HEAD, ya que solo enviará información del recurso en la cabecera de la respuesta, como por ejemplo, el tamaño de algún archivo.

Códigos de respuesta HTTP

Para poder resumirlo veremos el significado en cada uno de los rangos de los códigos de respuesta HTTP. Por lo tanto, al referirnos a 2xx queremos decir , un rango entre 200 ~ 299, lo mismo para los otros rangos o categorías.

1xx

Los códigos de estado en este rango indican información sobre la solicitud que se encuentra en proceso. Por ejemplo, si se esta procesando, si va a continuar o se tuvo que cambiar de protocolo, etc.

2xx

Los códigos de estado en el rango 2xx nos indican que la solicitud fue recibida y aceptada. Aquí todo anda bien y no hay nada de que preocuparse.

3xx

Los códigos del rango 3xx indican que la solicitud ha sido trasladada o redireccionada temporalmente o permanente. Ideal cuando se tiene otros dominios que se desean redireccionar al principal.

4xx

Los del rango 4xx indican que hubo un problema del lado del cliente. Por ejemplo, si un usuario intenta ingresar a un panel administrador sin credenciales (Error 403) o si intenta acceder a una ruta que no existe como maadcode.dev/404.

5xx

Los códigos de estado 5xx nos indican que el problema ocurrió del lado del servidor, por lo tanto si eres un usuario que intenta visitar un sitio web externo, no hay algo que puedas hacer. Sin embargo, si es tu propio sitio web deberás verificar a nivel de backend los posibles errores que puedas tener. Por ejemplo, si hubo un mantenimiento que cambio algunos parámetros o el soporte a ciertas librerías, tal vez un limite de ancho de banda, etc.

Tener en cuenta que existen múltiples valores dentro de cada uno de estos rangos; sin embargo, dichos códigos comparten un comportamiento similar si se encuentran en un mismo rango. Por ejemplo, el error 500 (Internal Server Error) y el error 503 (Service Unavailable) nos indican que el problema se encuentra del lado del servidor, no del cliente.

Espero que este breve resumen te haya servido para entender el funcionamiento de HTTP. Si deseas más información puedes visitar Mozila Developer Network 😁

Happy coding! 🥳

Ver más

Creado con y por Maadcode | ©2021 todos los derechos reservados