Una pregunta común en las entrevistas para desarrolladores web suele ser:
¿Qué ocurre cuando ingresas la dirección de un sitio en el navegador?
Puedes encontrar una respuesta detallada a esta pregunta en GitHub. Lo más importante que busca el entrevistador es entender cuánto sabes sobre HTTP. En esta lección, vamos a profundizar en este tema.
Qué es HTTP
Para comprender mejor este término, recordemos que un protocolo es un conjunto de acuerdos o reglas que permiten a diferentes programas intercambiar información.
Uno de los protocolos más comunes en la web es HTTP (Hyper-Text Transferring Protocol). Es un conjunto de reglas que son conocidas tanto por tu computadora como por la computadora remota. El navegador y el servidor web se comunican entre sí a través de él 💻➡️🌐
Ya sabes que un servidor web es un programa instalado en un servidor y que atiende las conexiones entrantes. El servidor web opera en dos etapas:
- El servidor recibe del navegador información sobre qué página de qué sitio queremos cargar.
- El servidor devuelve al navegador el contenido de la página de ese sitio.
Este ciclo de "solicitud-respuesta" se llama sesión HTTP. Vamos a ver cómo se ve a través del programa curl:
curl -v --head https://app.codica.la
* Trying 174.66.43.105:443...
* TCP_NODELAY set
* Connected to app.codica.la (174.66.43.105) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=California; L=San Francisco; O=Cloudflare, Inc.; CN=sni.cloudflaressl.com
* start date: Dec 21 00:00:00 2021 GMT
* expire date: Dec 20 23:59:59 2022 GMT
* issuer: C=US; O=Cloudflare, Inc.; CN=Cloudflare Inc ECC CA-3
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x560728425e30)
> HEAD / HTTP/2
> Host: app.codica.la
> user-agent: curl/7.68.0
> accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
< HTTP/2 200
HTTP/2 200
< date: Wed, 09 Feb 2022 07:13:32 GMT
date: Wed, 09 Feb 2022 07:13:32 GMT
< content-type: text/html; charset=utf-8
content-type: text/html; charset=utf-8
...
<
* Connection #0 to host app.codica.la left intact
Es importante no solo conocer la tecnología HTTP. También es importante poder hacer solicitudes HTTP crudas, no indirectamente a través del navegador, sino por tu cuenta, emulando el comportamiento del navegador. Para esta tarea, se utiliza el programa telnet. En Códica hay un curso sobre este tema, donde aprenderás todo al respecto.
Para qué se utiliza HTTP
El protocolo HTTP se utiliza para diversas tareas:
- En el trabajo con formularios, al subir archivos y en redireccionamientos.
- Para autenticación, ya que depende completamente de HTTP.
- Para extraer información sobre la solicitud, por ejemplo, se puede determinar desde qué navegador se realizó la solicitud.
- Para mejorar el rendimiento y el almacenamiento en caché.
Protocolo HTTPS
Además del HTTP, se ha vuelto muy popular un protocolo más seguro, el HTTPS 🛡️ Si una página utiliza HTTP, es mejor no realizar acciones que impliquen datos sensibles, como la información de tarjetas de crédito. En ese caso, cualquier persona que administre el sitio o tenga acceso al equipo entre tú y el servidor podría leer tus datos.
Ten en cuenta que en los sitios populares, las páginas de pago siempre se entregan a través de HTTPS. A su vez, saber trabajar con HTTPS añade inmediatamente conceptos nuevos:
- Encriptación, encriptación asimétrica.
- Certificados.
- Firma digital.
TCP/IP
No se puede prescindir solo de los protocolos HTTP y HTTPS. El hecho es que HTTP no existe por sí solo, sino sobre la pila de protocolos TCP/IP. El conocimiento básico de redes es importante por las siguientes razones:
- Por seguridad. Sin conocimientos básicos, es fácil cometer un error y ser hackeado.
- Para la depuración. Incluso con los problemas más mínimos en el funcionamiento de los sitios, es difícil lidiar sin un conocimiento básico de las redes. Esto ocurre porque una buena parte de las preguntas sobre el lanzamiento y la configuración de los sitios están relacionadas con los sockets de red.
DNS
Otro pilar de la web es el DNS 🏷️ o servicio de nombres de dominio.
Imagina que estamos ingresando una dirección en el navegador. En este punto, el navegador realiza solicitudes de DNS a los servidores correspondientes e intenta averiguar a qué dirección IP pertenece el sitio. El hecho es que la conexión con el servidor se hace a través de TCP/IP, no a través de HTTP. El protocolo HTTP comienza a funcionar solo después de que se ha establecido la conexión TCP.
El conocimiento de DNS te ayudará a:
- Asociar un dominio con un servidor.
- Configurar el correo para el dominio.
- Verificar el proyecto con varios servicios.
- Realizar la depuración de forma más rápida y efectiva, ya que a menudo los problemas de carga están relacionados con DNS.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.