Low-Level Atlas III
De “construí sistemas reales” a “construí sistemas que se hablan entre sí”
Parte III de la serie Low-Level Atlas: sockets, concurrencia y protocolos de red a fondo — TCP crudo, un protocolo binario propio, WebSocket según RFC 6455, concurrencia de conexiones a escala, y un chat en tiempo real con un cliente en C y otro en TypeScript hablando el mismo formato de cable. Sin frameworks, sin atajos. Asume que ya hiciste los atlas I y II.
./chat --room systemssend(frame)terminalbrowserLeelo como cola de build, no como catálogo de cursos.
Arrancá con TCP crudo, sufrí diseñar tu propio framing antes de adoptar WebSocket, después hacé que las conexiones escalen de verdad y dale al chat salas y presence — con un cliente en C y uno en TypeScript hablando el mismo protocolo al final.
Orientación
Por dónde empezar, qué atlas I y II necesitás antes, y cómo se organiza este atlas como cola de construcción.
Start Here
The build order for this atlas, and what you need from Atlas I and II before starting.
ExplorarMust Know
The load-bearing ideas of this atlas, and where each one lives.
ExplorarÍndice Low-Level
Eight branches across seven phases, all assuming Atlas I and II — the full map of this atlas.
ExplorarTCP desde Cero
Sockets BSD crudos a fondo: el three-way handshake, TCP_NODELAY, buffers de socket, backpressure, half-close y manejo real de errores de red — un servidor de eco simple entendido hasta el fondo.
Diseñar un Protocolo Propio
Diseñar un protocolo de aplicación propio sobre TCP crudo antes de adoptar WebSocket: framing, serialización binaria, versionado, heartbeats — sentir el problema que un estándar real existe para resolver.
WebSocket, de Verdad
RFC 6455 implementado a mano en C: el handshake HTTP Upgrade, Sec-WebSocket-Accept, el frame format, frames de control, fragmentación y el close handshake.
Concurrencia a Escala
Conexiones de larga vida que necesitan verse entre sí: event loops epoll/kqueue vs thread-per-connection vs pools híbridos, el problema C10K→C10M, y registros de conexiones lock vs lock-free.
Arquitectura de Mensajería
Salas, presence, historial de mensajes, garantías de entrega y ordering — y el concepto de backplane pub/sub para escalar un servidor a varios procesos.
Dos Clientes, un Protocolo
El mismo protocolo sobreviviendo a dos runtimes: un cliente de terminal en C y un cliente en TypeScript, lado a lado, bajo nivel vs alto nivel resolviendo el mismo problema de red.
Cliente en C
Un cliente real de terminal: conexión, parsing de frames WebSocket del lado cliente, un loop de UI no bloqueante que atiende teclado y mensajes entrantes a la vez, y reconexión con backoff.
ExplorarCliente en TypeScript
El mismo protocolo en TypeScript/Node: reconexión automática, manejo de mensajes fuera de orden, y una comparación directa de qué te regala el runtime de alto nivel contra hacerlo a mano en C.
ExplorarSiempre Activo
Testear protocolos de red: mock sockets, fuzzing de frames malformados, debugging con Wireshark/tcpdump, observabilidad de conexiones, y TDD aplicado a código async y concurrente.
El chat en tiempo real, v0 → v5
Construido a través de todas las ramas de este atlas — un servidor de eco TCP crudo, después un protocolo binario, después WebSocket según RFC 6455, después salas y escala, después dos clientes hablando el mismo formato de cable — de la misma forma en que el atlas I construyó un OS y el atlas II un motor de base de datos: por hitos, no de una sola vez.
Servidor de eco TCP crudo
Un cliente, un mensaje, ida y vuelta. Todavía sin protocolo — solo un socket que funciona.
Protocolo binario propio
Un formato propio de framing y serialización funcionando entre N clientes — todavía sin WebSocket.
WebSocket según RFC 6455
Migrar a una implementación de WebSocket compliant, verificada contra un cliente de navegador real.
Salas, presence, escala
Broadcast a cientos de conexiones simuladas con concurrencia real, no un loop de juguete.
Dos clientes, lado a lado
Un cliente en C completo y uno en TypeScript completo, ambos hablando con el mismo servidor.
Backplane pub/sub (opcional)
Escalar el servidor a varios procesos — la puerta a la infraestructura distribuida, a discutir cuando se llegue.
Network Craftsmanship
Testing network protocols — mock sockets, frame fuzzing, Wireshark/tcpdump, connection observability, TDD for async code.
Registros y memoria operativa
Los registros mantienen referencias externas, specs, herramientas y material fuente normalizados detrás de notas atómicas cortas.