Be Software Architecture Wise
Be Wise Apps

Read in English · Lire en français · Auf Deutsch lesen

Sección 0.4 de 0.8 · Principiante · 18 min de lectura

Redes, internet y la web: IP, DNS, HTTP y el modelo cliente-servidor

Videolección

5 min · narrado en inglés, con subtítulos
Solo escuchar (audio)
Leer la transcripción

Casi ningún software moderno funciona solo. Una app de reparto de comida en tu teléfono se comunica con los servidores de la empresa, que se comunican con los restaurantes y con un proveedor de pagos. Enviar datos por internet se parece mucho a enviar correo postal. En esta lección seguimos a los paquetes.

Internet es una red de redes: millones de redes con propietarios distintos que acuerdan transportar el tráfico de las demás, usando reglas comunes llamadas protocolos. Los datos no viajan como un único flujo. Se cortan en pequeños paquetes, cada uno etiquetado con su origen y su destino. Unos dispositivos llamados routers van pasando los paquetes, salto a salto, como los centros de clasificación postal. Los paquetes del mismo mensaje pueden tomar rutas distintas, y la computadora que los recibe los vuelve a montar.

Cada dispositivo de internet se alcanza mediante una dirección IP, abreviatura de Internet Protocol. Es como la dirección postal de un edificio de oficinas. Pero una computadora ejecuta muchos programas a la vez, así que un número de puerto indica qué programa debe recibir el paquete: el número de la oficina. TCP da a dos programas una conexión fiable: los paquetes perdidos se vuelven a enviar y todo llega en orden, como el correo certificado. UDP simplemente envía paquetes, sin garantías, como postales. Eso conviene a las videollamadas y a los juegos, donde un fragmento de sonido que llega tarde es peor que uno que falta.

Las personas recuerdan nombres como shop punto example. Las redes enrutan por números. El sistema de nombres de dominio, o DNS, es la libreta de direcciones de internet que traduce lo uno en lo otro. Tu dispositivo pide a un resolvedor recursivo, gestionado normalmente por tu proveedor de internet o por un servicio público, que haga el trabajo pesado. El resolvedor pregunta a un servidor raíz, que no sabe la respuesta, pero sabe quién se ocupa del dominio de nivel superior. El servidor del dominio de nivel superior lo dirige al servidor autoritativo del propio dominio. Y el servidor autoritativo responde con la dirección real. El resolvedor se la devuelve a tu dispositivo. Las respuestas se recuerdan, o se guardan en caché, durante un tiempo que fija el propietario del dominio, así que la mayoría de las consultas tardan solo unos pocos milisegundos.

Una vez que dos programas pueden comunicarse, necesitan un lenguaje común. En la web, ese lenguaje es HTTP. El cliente envía una solicitud que indica un método, una ruta, algunas cabeceras y, a veces, algunos datos. El método dice qué hacer: get obtiene algo, post envía algo nuevo, como un pedido, put sustituye algo y delete lo elimina. El servidor devuelve una respuesta, con un código de estado que dice cómo ha ido. Los códigos del doscientos significan éxito. Los códigos del cuatrocientos significan que la solicitud era incorrecta, como el cuatro cero cuatro, no encontrado. Los códigos del quinientos significan que el servidor falló, y reintentar más tarde puede funcionar.

Cualquiera que esté en el camino puede leer el HTTP simple, como alguien conectado al mismo wifi de una cafetería. HTTPS lo envía por un canal protegido creado por TLS, que lo mantiene privado y detecta las manipulaciones. También demuestra que de verdad estás hablando con el sitio correcto, gracias a un certificado, que funciona como un pasaporte firmado por una autoridad en la que confía tu dispositivo. Pero no demuestra que el sitio sea honrado.

El ancho de banda es cuántos datos pueden fluir por segundo: el ancho de la tubería. La latencia es cuánto tardan los datos en llegar: la longitud de la tubería. Ahora, una tienda alojada en Londres y un cliente en Sídney. Incluso la luz en la fibra tarda en cruzar el mundo, así que cada viaje de ida y vuelta dura alrededor de un cuarto de segundo. Primero, una consulta DNS. Después, dos handshakes, uno para conectar y otro para establecer el cifrado: medio segundo. Luego, la propia página y los archivos que necesita: otro medio segundo. Eso es alrededor de un segundo antes de que aparezca algo útil, y una banda ancha más rápida apenas lo cambiaría. Si sirves el mismo contenido desde Sídney, los mismos pasos tardan alrededor de una vigésima de segundo. Por eso los arquitectos recortan viajes de ida y vuelta y acercan el contenido a los usuarios.

Juntémoslo todo. Aquí tienes un navegador que carga la página de un producto. El tiempo avanza hacia abajo. Primero, el navegador pregunta al DNS dónde está shop punto example, y obtiene una dirección. Después abre una conexión, establece el cifrado y envía su solicitud del producto cuarenta y dos. El servidor web pide el producto a su base de datos, así que el servidor también es un cliente. El servidor responde, doscientos, OK, con la página. El navegador obtiene las imágenes y los estilos, y dibuja la página. Este es el modelo cliente-servidor. Los clientes inician las solicitudes; los servidores guardan los datos y las reglas compartidos. Y como el usuario puede modificar una app, un servidor nunca debe confiar ciegamente en un cliente.

Recuerda: en cuanto un sistema abarca más de una computadora, cada llamada entre sus partes es más lenta y puede fallar. La sección completa tiene más. A continuación, en la Sección cero punto cinco, vemos dónde se almacenan los datos.

Lo que necesitas saber

Redes y paquetes

Casi ningún software moderno funciona solo. Una app de reparto de comida en tu teléfono se comunica con los servidores de la empresa, que se comunican con las tabletas de los restaurantes, un proveedor de pagos, un servicio de mapas y un servicio de notificaciones. Esta sección explica cómo funciona esa comunicación, de abajo arriba.

Una red es un conjunto de computadoras conectadas para poder intercambiar datos, por cable, wifi, señal de telefonía móvil o enlace de fibra óptica. Internet es una red de redes: millones de redes con propietarios distintos (banda ancha doméstica, operadores de telefonía móvil, universidades, proveedores de nube) que han acordado transportar el tráfico de las demás usando reglas comunes llamadas protocolos.

Los datos no viajan como un flujo continuo. Se cortan en paquetes: trozos de normalmente hasta unos 1500 bytes, cada uno etiquetado con su origen y su destino, como un paquete postal con la dirección del remitente y la del destinatario. Unos dispositivos llamados routers pasan los paquetes de una red a otra, y cada uno elige un buen siguiente salto, igual que los centros de clasificación hacen avanzar los paquetes postales hacia su destino. Distintos paquetes del mismo mensaje pueden tomar rutas diferentes, llegar desordenados u ocasionalmente perderse, y la computadora que los recibe los vuelve a montar. Dividir los datos en paquetes permite que millones de conversaciones compartan los mismos cables de forma equitativa, y que el tráfico rodee un enlace roto.

Los paquetes encuentran su propio camino

Un mensaje de un teléfono a un servidor de una tienda se divide en paquetes que viajan por rutas distintas a través de routers y se vuelven a montarTu teléfono192.0.2.10Serv. tienda203.0.113.5R1R2R3R4R5123Un mensaje se divide en paquetes numerados; cada uno encuentra su camino entre routers y se vuelve a montar al final
Ningún cable único conecta tu teléfono con el servidor; los paquetes saltan entre routers que pertenecen a muchas redes distintas.

Direcciones: direcciones IP y puertos

Para que un paquete llegue, el destino necesita una dirección. Cada dispositivo de internet se alcanza mediante una dirección IP (IP significa Internet Protocol, protocolo de internet). La versión antigua, IPv4, escribe las direcciones como cuatro números del 0 al 255, por ejemplo 192.0.2.10; admite unos 4.3 mil millones de direcciones, que no bastan para cada teléfono, computadora portátil y sensor del mundo. La versión más reciente, IPv6, usa direcciones mucho más largas escritas en hexadecimal (base 16, con los dígitos del 0 al 9 y las letras de la a a la f), por ejemplo 2001:db8::1, y tiene espacio para una cantidad prácticamente ilimitada de dispositivos. Ambas se usan en paralelo. (Las direcciones de ejemplo de esta sección proceden de rangos reservados para documentación, así que no pertenecen a ninguna máquina real).

Una dirección IP lleva un paquete a la computadora correcta, pero una computadora ejecuta muchos programas a la vez. Un número de puerto, del 0 al 65 535, indica qué programa debe recibirlo. Si la dirección IP es la dirección postal de un edificio de oficinas, el puerto es el número de la oficina. Los servicios conocidos tienen puertos estándar: 443 para HTTPS, 80 para HTTP simple, 53 para DNS, 5432 para la base de datos PostgreSQL. Un programa servidor escucha en un puerto, a la espera de conexiones; cuando tu navegador contacta con un sitio web, se conecta al puerto 443 de la dirección IP del sitio.

TCP y UDP: dos formas de entregar

Por encima de IP hay dos protocolos de transporte principales, que deciden cuánto cuidado se pone en la entrega. TCP (Transmission Control Protocol) da a dos programas un flujo de bytes fiable y ordenado. Antes de enviar ningún dato, las dos partes establecen una conexión con un handshake de tres pasos. Cada paquete va numerado; el receptor confirma lo que ha llegado; lo que falta se vuelve a enviar; y todo se entrega al programa en el orden correcto. TCP también reduce la velocidad cuando la red está congestionada. Es como un servicio de correo certificado con seguimiento: fiable, pero con cierta sobrecarga.

UDP (User Datagram Protocol) simplemente envía paquetes sueltos, llamados datagramas, sin handshake, sin confirmaciones, sin reenvíos y sin orden. Es como enviar postales: barato y rápido, pero puede que algunas no lleguen. Eso es justo lo adecuado cuando un paquete que llega tarde no sirve de nada. En una videollamada, un fragmento de sonido que llega medio segundo tarde es peor que uno que nunca llega, así que las llamadas, las transmisiones en directo y los juegos en línea usan UDP y toleran pequeños huecos. Las consultas DNS, que son preguntas y respuestas diminutas, también usan tradicionalmente UDP.

TCP y UDP comparados

TCPUDP
Establecimiento de la conexiónSí: un handshake antes de que fluyan los datosNinguno: simplemente envía
EntregaGarantizada: los paquetes perdidos se reenvíanMejor esfuerzo: las pérdidas no se reparan
OrdenSe conservaNo garantizado
Sobrecarga y retrasoMayorMenor
Usos habitualesPáginas web y API (HTTP/1.1 y HTTP/2), correo electrónico, transferencia de archivos, conexiones a bases de datosLlamadas de voz y video, transmisión en directo, juegos en línea, DNS

DNS: la libreta de direcciones de internet

Las personas recuerdan nombres como shop.example; las redes enrutan por direcciones IP. El sistema de nombres de dominio (DNS, Domain Name System) traduce lo uno en lo otro. Es un directorio mundial y distribuido: ninguna computadora contiene todos los nombres. En su lugar, la responsabilidad se reparte según los puntos del nombre, leídos de derecha a izquierda. Los servidores raíz saben quién es responsable de cada dominio de nivel superior, como .com o .uk; esos servidores de dominio de nivel superior saben qué servidores de nombres autoritativos son responsables de cada dominio registrado bajo ellos; y los servidores autoritativos contienen los registros reales, como la dirección IP de www.shop.example. La zona raíz la atienden 13 identidades de servidor con nombre, gestionadas por 12 organizaciones independientes mediante bastante más de mil instancias de servidor repartidas por todo el mundo.

Tu dispositivo no suele recorrer esta cadena por sí mismo. Pregunta a un resolvedor recursivo, gestionado normalmente por tu proveedor de internet o por un servicio público, que hace el trabajo pesado y recuerda (guarda en caché) las respuestas durante un periodo fijado por el propietario del dominio, llamado TTL (time to live, tiempo de vida). Como las respuestas se guardan en caché en muchos niveles, la mayoría de las consultas se responden en unos pocos milisegundos sin llegar siquiera a la raíz. Esa misma caché explica por qué un cambio en un registro DNS puede tardar minutos u horas en verse en todas partes.

La resolución DNS paso a paso (sin nada en caché)

  1. Preguntar al resolvedorTu dispositivo pregunta a su resolvedor recursivo configurado: ¿cuál es la dirección IP de www.shop.example?
  2. Preguntar a un servidor raízEl resolvedor pregunta a un servidor raíz, que no sabe la respuesta pero responde con los servidores responsables del dominio de nivel superior.
  3. Preguntar al servidor del dominio de nivel superiorEl resolvedor pregunta a uno de esos servidores, que responde con los servidores de nombres autoritativos de shop.example.
  4. Preguntar al servidor autoritativoEl resolvedor pregunta al servidor autoritativo, que responde con el registro: por ejemplo, 203.0.113.5, válido durante 300 segundos.
  5. Responder y recordarEl resolvedor devuelve la dirección a tu dispositivo, y ambos la guardan en su caché hasta que vence el TTL, así que la siguiente consulta es casi instantánea.

Quién responde a una pregunta DNS

Un resolvedor recursivo pregunta a un servidor raíz, luego a un servidor TLD y luego al servidor autoritativo del dominio, y devuelve la dirección al dispositivoDispositivoresolvedor stubResolvedorrecursivode tu proveedoro servicio públicoServidor raíz"pregunta a los TLD"Servidor TLD"pregunta al dominio"Servidor autoritativo"203.0.113.5"18234567
Las flechas continuas son preguntas y las discontinuas, respuestas; gracias a la caché, la mayoría de las consultas reales se saltan los pasos 2 a 7.

HTTP: solicitudes y respuestas

Una vez que un programa puede llegar a otro, los dos necesitan un lenguaje común para decir lo que quieren. En la web, ese lenguaje es HTTP (Hypertext Transfer Protocol). Sigue un patrón sencillo: el cliente envía una solicitud; el servidor devuelve una respuesta. Cada solicitud indica un método (qué hacer), una ruta (sobre qué), algunas cabeceras (información adicional en forma de pares nombre-valor) y, a veces, un cuerpo (los datos que se envían). Cada respuesta lleva un código de estado, cabeceras y normalmente un cuerpo: una página web, una imagen o datos en un formato como JSON (un formato de texto sencillo para datos estructurados, que se explica en la sección sobre las API).

Los métodos más comunes son GET (obtener algo, sin cambiarlo), POST (enviar algo nuevo, como hacer un pedido), PUT (sustituir algo en una dirección conocida, como actualizar una dirección de entrega) y DELETE (eliminar algo). GET, PUT y DELETE se definen como idempotentes: enviar dos veces la misma solicitud tiene el mismo efecto que enviarla una vez, lo que hace seguro reintentarlas tras un fallo de red. POST no lo es, y por eso un reintento descuidado puede hacer un pedido dos veces. Las cabeceras llevan cosas como el tipo de contenido (Content-Type: application/json), el idioma que prefiere el usuario, las cookies (pequeños datos que un sitio pide al navegador que guarde y devuelva con las solicitudes posteriores) y las credenciales, e instrucciones de caché.

HTTP es sin estado: cada solicitud se entiende por sí sola, y el servidor no tiene por qué recordar las anteriores. Las sesiones con usuario identificado se construyen por encima, normalmente porque el cliente envía una cookie o un token con cada solicitud. La ausencia de estado es una de las razones por las que la web escala tan bien, porque cualquiera de muchos servidores idénticos puede atender cualquier solicitud.

POST /api/orders HTTP/1.1
Host: shop.example
Content-Type: application/json
Authorization: Bearer eyJhbGciOi...

{"product_id": 42, "quantity": 2}

HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/orders/9917

{"order_id": 9917, "status": "received", "total_pence": 3000}
Un intercambio HTTP realista: hacer un pedido y, después, la respuesta del servidor

Códigos de estado por familia

FamiliaSignificadoEjemplos habituales
2xxÉxito200 OK; 201 Created (se ha creado algo nuevo); 204 No Content
3xxRedirección: busca en otro sitio301 Moved Permanently; 302 Found (traslado temporal); 304 Not Modified (tu copia en caché sigue siendo válida)
4xxError del cliente: la solicitud era incorrecta400 Bad Request; 401 Unauthorized (sin sesión iniciada); 403 Forbidden (con sesión iniciada, pero sin permiso); 404 Not Found; 429 Too Many Requests
5xxError del servidor: la solicitud era correcta, pero el servidor falló500 Internal Server Error; 502 Bad Gateway; 503 Service Unavailable; 504 Gateway Timeout

La división entre 4xx y 5xx importa en la práctica. Un 4xx dice "no te limites a reintentar; corrige la solicitud". Un 5xx dice "el problema está de nuestro lado"; reintentar más tarde puede funcionar, y hay que avisar al equipo de operaciones cuando aumenta la tasa de 5xx.

HTTPS y TLS: privacidad e identidad

El HTTP simple envía todo como texto legible, así que cualquiera que esté en el camino, como alguien conectado al mismo wifi de una cafetería, podría leerlo o alterarlo. HTTPS es HTTP enviado a través de un canal protegido creado por TLS (Transport Layer Security; la versión actual, TLS 1.3, se publicó como RFC 8446 en 2018). TLS aporta tres cosas: confidencialidad (quien escucha a escondidas solo ve datos codificados), integridad (se detectan las manipulaciones) y autenticación (de verdad estás hablando con shop.example, no con un impostor).

La autenticación se basa en certificados. El certificado de un sitio es un documento digital que dice, en esencia, "esta clave pública pertenece a shop.example", firmado por una autoridad de certificación (CA) en la que tu navegador o tu teléfono ya confían. Funciona como un pasaporte: lo emite una autoridad en la que ambas partes confían, se comprueba frente a su titular y solo es válido hasta su fecha de caducidad. Durante el handshake de TLS, el servidor presenta su certificado, el cliente comprueba la firma, el nombre y las fechas, y las dos partes acuerdan claves secretas nuevas para cifrar el resto de la conversación. Si falla alguna comprobación, el navegador muestra una advertencia.

TLS protege los datos en tránsito entre dos puntos. No protege los datos una vez almacenados, ni demuestra que el sitio sea honrado, solo que es quien dice ser. Hoy HTTPS es la norma para todo el tráfico web, no solo para los pagos, y los certificados a menudo se emiten gratis y se renuevan automáticamente.

El modelo cliente-servidor

La mayoría de los sistemas de este curso siguen el modelo cliente-servidor. Un cliente (un navegador, una app móvil, otro programa) inicia la conversación enviando una solicitud. Un servidor espera solicitudes y las responde. El servidor guarda lo que debe ser compartido y fiable: el catálogo de productos, los pedidos de todos, las reglas sobre precios y reembolsos. El cliente se ocupa de la pantalla del usuario y de lo que este introduce.

En un restaurante, los comensales son los clientes y la cocina es el servidor: los comensales inician los pedidos; la cocina tiene los ingredientes y el oficio, y atiende a muchos comensales a la vez. Una consecuencia es que el servidor nunca debe confiar ciegamente en el cliente. El usuario puede modificar una app de su teléfono, así que los precios, los permisos y los niveles de stock deben comprobarse en el servidor, por mucho cuidado que ponga también la app al comprobarlos.

A menudo un servidor también es cliente: el servidor web de la tienda es cliente de su base de datos y del proveedor de pagos. Los sistemas reales son cadenas y redes de relaciones de este tipo, como muestra el diagrama de secuencia de más abajo.

Latencia y ancho de banda

Dos números describen lo rápida que se siente una red, y a menudo se confunden. El ancho de banda es cuántos datos puede transportar una conexión por segundo, por ejemplo 100 megabits por segundo: el ancho de la tubería. La latencia es cuánto tarda un dato en ir de un extremo al otro, y suele medirse como tiempo de ida y vuelta (RTT, round-trip time) en milisegundos: la longitud de la tubería. Ayuda una analogía con una autopista: añadir carriles (ancho de banda) deja pasar más vehículos por hora, pero no acorta el trayecto de ningún vehículo concreto (latencia).

La latencia tiene un mínimo fijado por la física. La luz en la fibra óptica viaja a unos 200 000 km por segundo, alrededor de dos tercios de su velocidad en el vacío. Londres y Sídney están a unos 17 000 km de distancia en línea recta sobre la superficie del globo, así que incluso una fibra perfecta a lo largo de esa línea necesitaría unos 85 ms de ida y 170 ms de ida y vuelta. Los cables reales no siguen el camino más corto y los routers añaden retraso, de modo que los viajes de ida y vuelta medidos rondan normalmente los 250 ms. Ninguna mejora puede eliminar eso. Si cargar una página desde Sídney requiere diez viajes de ida y vuelta secuenciales a un servidor en Londres, el usuario espera dos segundos y medio, por muy rápida que sea su banda ancha.

Ejemplo práctico

Ejemplo práctico: un servidor en Londres, un cliente en Sídney

Una tienda aloja todo en Londres. Un cliente en Sídney abre la página de un producto a través de una nueva conexión HTTPS. Supón un viaje de ida y vuelta de 250 ms e ignora el tiempo de procesamiento del servidor.

Consulta DNS (sin caché)Puede que el resolvedor necesite varias consultas; pongamos 1 viaje de ida y vuelta a servidores cercanos: unos 50 ms
Handshake de TCP1 viaje de ida y vuelta a Londres: 250 ms
Handshake de TLS 1.31 viaje de ida y vuelta: 250 ms
Solicitar la página HTML1 viaje de ida y vuelta: 250 ms
Solicitar el CSS y los scripts que necesita la páginaAl menos 1 viaje de ida y vuelta más: 250 ms
Total antes de que aparezca algo útilUnos 1050 ms, y el ancho de banda apenas influye
El mismo cliente, con el contenido servido desde SídneyViaje de ida y vuelta de quizá 10 ms: los mismos cinco pasos tardan unos 50 ms

En las páginas pequeñas domina la latencia, no el ancho de banda. Mejorar la banda ancha del cliente de 50 a 500 megabits por segundo apenas cambiaría el resultado.

Los arquitectos reducen la latencia recortando viajes de ida y vuelta (reutilizando conexiones, combinando solicitudes) y acercando el contenido a los usuarios, por ejemplo con redes de distribución de contenidos, que se tratan en Servidores y la nube.

Guía de decisión

Guía de decisión: ¿una experiencia de red lenta se debe a la latencia o al ancho de banda?

Un primer diagnóstico aproximado cuando los usuarios se quejan de que algo va lento por la red.

  1. ¿También son lentas las solicitudes pequeñas (una llamada breve a una API, una página diminuta)?
    SíLa causa probable es la latencia. Comprueba la distancia hasta el servidor y cuántos viajes de ida y vuelta secuenciales hace la página o la app.
    NoPasa a la siguiente pregunta.
  2. ¿Solo son lentas las transferencias grandes (videos, descargas grandes, informes extensos)?
    SíEl límite probable es el ancho de banda, en la conexión del usuario o en la del servidor. Plantéate la compresión, archivos más pequeños o una red de distribución de contenidos.
    NoPasa a la siguiente pregunta.
  3. ¿El retraso es el mismo desde todas las ubicaciones?
    SíPuede que la red no sea el problema en absoluto: revisa el procesamiento en el servidor, las consultas a la base de datos y los algoritmos (consulta la sección sobre datos y algoritmos).
    NoUn retraso que depende de la ubicación apunta a la latencia y al enrutamiento: atiende a los usuarios desde un lugar más cercano a donde están.

Qué ocurre cuando escribes una dirección web

Todas estas piezas se combinan cada vez que visitas un sitio web. Esta es la secuencia cuando escribes https://shop.example/products/42 y pulsas Intro, simplificada pero exacta.

De Intro a la página

  1. Analizar la direcciónEl navegador divide la URL en el esquema (https, por tanto puerto 443 y TLS), el nombre de host (shop.example) y la ruta (/products/42).
  2. Encontrar la dirección IPEl navegador consulta su propia caché, luego la del sistema operativo, y después pregunta al resolvedor recursivo, que consulta el DNS como se ha descrito antes y devuelve, por ejemplo, 203.0.113.5.
  3. Abrir una conexión TCPEl navegador y el servidor intercambian los tres mensajes del handshake para establecer una conexión fiable con el puerto 443.
  4. Establecer TLSEl servidor presenta su certificado; el navegador comprueba que es válido para shop.example y que lo ha firmado una autoridad de confianza; las dos partes acuerdan las claves de cifrado.
  5. Enviar la solicitud HTTPEl navegador envía GET /products/42 con cabeceras como los idiomas aceptados y las cookies que tenga para el sitio.
  6. El servidor hace su trabajoEl software del servidor recibe la solicitud y ejecuta el código de la tienda, que consulta en una base de datos el producto 42, y construye una página HTML.
  7. Recibir la respuestaEl servidor responde 200 OK con el HTML en el cuerpo y cabeceras como Content-Type: text/html y reglas de caché.
  8. Obtener el restoEl HTML hace referencia a hojas de estilo, scripts e imágenes; el navegador también los solicita, a menudo muchos a la vez por la misma conexión.
  9. RenderizarEl navegador compone la página y la dibuja en pantalla; después, los scripts pueden hacer más solicitudes, por ejemplo para obtener reseñas.

Diagrama de secuencia: carga de la página de un producto

Diagrama de secuencia de un navegador que carga una página de producto: consulta DNS, handshakes TCP y TLS, solicitud HTTP, consulta a base de datos y respuestasNavegadorResolvedor DNSServidor webBase de datos1. Busca shop.example2. 203.0.113.53. Conexión TCP (handshake)4. Handshake TLS: certificado, claves5. GET /products/426. SELECT producto 427. Fila: nom., precio8. 200 OK + HTML9. GET style.css, photo.jpg10. 200 OK (arch.)11. renderiza la página
El tiempo avanza hacia abajo; las flechas continuas son solicitudes y las discontinuas, respuestas.

Por qué esto importa para la arquitectura

En cuanto un sistema se reparte entre más de una computadora, cada interacción entre sus partes se convierte en una llamada de red, con latencia, posibilidad de fallo y necesidad de seguridad. Una llamada a una función dentro de un programa tarda nanosegundos y nunca se pierde; una llamada a través de una red tarda milisegundos, a veces mucho más, y a veces nunca vuelve. Muchos de los problemas más difíciles de la arquitectura se derivan de esa diferencia, y por eso el Capítulo 6 empieza con las falacias de la computación distribuida, como la creencia de que la latencia es cero.

Los protocolos de esta sección también reaparecen como bloques de construcción: HTTP sustenta las API web de la siguiente parte de este capítulo y los estilos de comunicación del Capítulo 6, mientras que TLS y los certificados vuelven en comunicación segura y zero trust. Situar los servidores cerca de los usuarios forma parte de la arquitectura multirregión y en el borde.

Comprueba lo que has entendido

¿Por qué necesita un paquete un número de puerto además de una dirección IP?

La dirección IP lo lleva a la computadora correcta, pero esa computadora ejecuta muchos programas; el puerto indica qué programa debe recibirlo, como el servidor web que escucha en el 443.

¿Qué le dice al cliente un código de estado 3xx?

Que lo que pidió está en otro lugar o no ha cambiado: por ejemplo, 301 significa que se ha trasladado de forma permanente, y 304, que la copia en caché del cliente sigue siendo válida.

¿Cuál es la diferencia entre una respuesta 401 y una 503?

401 es un error del cliente: a la solicitud le faltan credenciales válidas. 503 es un error del servidor: el servicio no puede atender la solicitud temporalmente.

¿Por qué ninguna mejora de la red puede bajar a 10 ms un viaje de ida y vuelta entre Londres y Sídney?

La luz en la fibra recorre unos 200 000 km por segundo, así que el viaje de ida y vuelta de aproximadamente 34 000 km tarda como mínimo unos 170 ms.

Siguiente · 0.5Almacenar datosPor qué los sistemas necesitan bases de datos y no simples archivos, cómo funcionan las tablas relacionales, las claves, SQL, los índices y las transacciones ACID, las principales familias NoSQL y por qué hay que probar las copias de seguridad.Continuar →

Fuentes y lecturas recomendadas

¿Tienes una pregunta sobre esta sección? ArchitectBot, el asistente de estudio con IA del curso, responde primero a partir del curso.

Pregunta: “Nuestros usuarios en Australia dicen que la app va lenta, pero nuestros servidores están en Europa. ¿Qué opciones tengo y cuánto cuesta cada una?”