Para entender un poco más sobre como funciona la web a continuación les explicare a muy alto nivel los componentes principales que intervienen y hacen posible comprar lo que quieras, ver videos, iniciar sesión en tu aplicación favorita entre otras cosas.
Es importante mencionar que siempre que vistamos una página web, se realizan peticiones a un servidor donde se encuentra regularmente el archivo que permitirá verla una vez que un usuario escribe el nombre en su navegador web.
Cada servidor conectado a internet cuenta con una dirección IP que se forma de cuatro grupos de números del 0 al 255 en el siguiente formato: X.X.X.X donde cada X representa un octeto. Un ejemplo de dirección IP es: 10.10.254.212.
Obviamente este número sería muy complicado de recordar, por lo que se creo un sistema de nombramiento, el cual después sería conocido como: “Sistema de Nombres de Dominio” o DNS (Domain Name System). El DNS desemepeña una función técnica importante de traducción de direcciones IP (X.X.X.X) a su nombre correspondiente que permite a los usuarios de internet recordar fácilmente las páginas.
Por ejemplo, la dirección IP de ‘google’ al escribir este artículo desde México es: 142.250.69.36
Una vez que el navegador sabe la dirección IP de la página que se quiere consultar, es cuando se realiza una petición HTTP GET. GET es un ejemplo de un verbo HTTP, el cual es un método de petición que indica la acción que se desea realizar al servidor.
El servidor responderá a la solicitud GET con el contenido de la página web. Si la página web está cargando recursos adicionales, como JavaScript, imágenes o archivos CSS, estos se recuperarán en solicitudes GET separadas.
Hoy en día, la mayoría de los sitios web utilizan HTTPS. Si, con ‘S’ al final. HTTPS es una versión segura (encriptada) de HTTP utilizando cifrado TLS 1.3 para comunicarse sin que algún intruso pueda leer o modificar los datos que se envían.
Podemos definir a un servidor web como un software que recibe y responde a solicitudes HTTP (S). Algunos ejemplos populares son Apache, Nginx y Tomcat. De forma predeterminada, HTTP se ejecuta en el puerto 80 y HTTPS se ejecuta en el puerto 443.
Solicitudes
Existen 9 “verbos” HTTP, también conocidos como métodos. Cada uno tiene una función diferente, en el caso de las solicitudes GET, que se utilizan para recuperar contenido, vienen predefinidas en en la mayoría de los navegadores web, es decir, no necesitas escribir el tipo de petición.
Las solicitudes POST se utilizan para enviar datos a un servidor web, como agregar un comentario o realizar un inicio de sesión.
Hay varios verbos más, pero no se usan con tanta frecuencia en la mayoría de los servidores web.
Una solicitud HTTP se puede dividir en partes. La primera línea es un verbo y una ruta para el servidor:
GET /index.html
La siguiente sección son los encabezados, que brindan al servidor web más información sobre tú solicitud. Es importante destacar que las cookies se envían en los encabezados de la solicitud.
Finalmente, el body (cuerpo) de la solicitud. Para las solicitudes POST, este es el contenido que se envía al servidor. Para las solicitudes GET, se permite un body, pero el servidor lo ignorará en la mayoría de las veces.
Respuestas
El servidor debería responder con una respuesta. La respuesta sigue una estructura similar a la solicitud, pero la primera línea describe el estado en lugar de un verbo y una ruta.
El estado regularmente será un código, probablemente ya estés familiarizado con: 404: Not found.
A continuación un desglose básico de los códigos de estado:
- 00-199: Información
- 200-299: Éxitos (200 OK es la respuesta “normal” para un GET)
- 300-399: redirecciones (la información que desea está en otro lugar)
- 400-499: errores del cliente (hizo algo mal, como pedir algo que no existe)
- 500-599: errores del servidor (el servidor lo intentó, pero algo salió mal de su lado)
Los encabezados de la respuesta pueden ser muy importantes. A menudo pueden decirte algo sobre el servidor web que los envía o darte cookies que pueden resultar útiles.
Aquí hay un ejemplo de respuesta a una solicitud GET:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 571
Content-Type: text/html; charset=utf-8
Last-Modified: Thu, 27 Feb 2020 02:06:10 GMT
Date: Fri, 13 Aug 2021 16:55:51 GMT
Cookies
Las cookies son pequeños fragmentos de datos que se almacenan en tú navegador. Tienen una gran cantidad de usos como por ejemplo recordar tu idioma de preferencia, hacer que los anuncios que ves sean más relevantes, contar el número de visitas que se reciben en una página, pero los más comunes son la gestión de sesiones o la publicidad (cookies de seguimiento). Las cookies se envían normalmente con cada solicitud HTTP realizada a un servidor.
Las cookies tienen un nombre, un valor, una fecha de caducidad y una ruta:
- El nombre identifica la cookie.
- El valor es donde se almacenan los datos.
- La fecha de caducidad es cuando el navegador se deshará de la cookie.
- La ruta determina con qué solicitudes se enviará la cookie.
El servidor normalmente es el que establece las cookies, y estas vienen en los encabezados de la respuesta (“Set-Cookie”) de la petición que realizas con tú navegador.
Para ejemplificar el uso de las cookies, pondremos el inico de sesión en una aplicación web, cuando lo haces normalmente recibes un token de sesión. Esto permite que el servidor web identifique tus solicitudes y este a su vez sabe quién eres, por ello cuando entras a Facebook no tienes que reescribir tu usuario y contraseña.
Robar el token de sesión de alguien más te puede permitir hacerte pasar por esa persona, por ello se recomienda borrar las cookies cada cierto tiempo.
Por último, es importante mencionar que las cookies son consideradas como soluciones de almacenamiento, pero existen otras soluciones como localStorage y sessionStorage que son propiedades que tienen la función de almacenar datos de manera local.
La diferencia entre éstas dos es que localStorage almacena la información de forma indefinida (lo cual se conoce como persistencia) o hasta que se decida limpiar los datos del navegador y sessionStorage almacena información durante la duración de la sesión del navegador o hasta que este se cierre.
Espero les haya sido útil este artículo amigos, ¡hasta la próxima!