Skip to content
Back to the catalog
Project dns-resolverNetworkingIntermediateBeta

Un resolver de DNS

Construye y parsea paquetes UDP a nivel de bit. Resuelve nombres siguiendo la jerarquía desde los root servers.

Build it in your language

The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.

Guide language

The stage guides read in this language. Only languages this project is fully translated into show up here; the interface language does not change.

What this project is about

Cada vez que escribes una URL, algo traduce un nombre en una dirección IP recorriendo una jerarquía mundial de servidores. Ese algo cabe en unos cientos de líneas.

Aquí construyes paquetes DNS bit a bit, los mandas por UDP y parseas la respuesta, incluida la compresión de nombres que tanto despista. Terminarás resolviendo dominios de verdad partiendo de los root servers, sin apoyarte en el resolver del sistema.

Roadmap

8 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.

  1. Phase 12 stages

    Escribir un paquete

    Construye una consulta DNS byte a byte y mándala por UDP.

    1. 01Cabecera DNS
    2. 02Pregunta y transporte UDP
  2. Phase 23 stages

    Leer la respuesta

    Parsea cabecera y secciones, y descomprime nombres con punteros.

    1. 01Validación de respuesta
    2. 02Registros de recursos
    3. 03Compresión de nombres
  3. Phase 32 stages

    Resolver de verdad

    Recorrido iterativo desde los root servers, CNAMEs y varios tipos de registro.

    1. 01Resolución iterativa
    2. 02CNAME y tipos comunes
  4. Phase 41 stage

    Caché

    Respeta los TTL y evita consultas repetidas.

    1. 01Caché por TTL

Before you start

Un resolver DNS completo: serialización y parseo de paquetes según el RFC 1035, consultas por UDP, soporte de los registros habituales (A, AAAA, CNAME, MX, NS, TXT), descompresión de nombres por punteros, resolución recursiva desde los root servers y caché respetando el TTL.

  • bittorrent
    Beta

    A BitTorrent client

    Bencode, trackers and the peer-to-peer protocol. Download a real file by talking to real peers.

    Advanced12 stages~20 hNetworking
    bencodep2pprotocolos+1

    Go · Python · Java

  • mcp-server
    Beta

    Build an MCP server

    Build a Model Context Protocol server from scratch with JSON-RPC, tools, and resources.

    Intermediate5 stages~12 hNetworking
    mcpjson rpcagentes+1

    TypeScript · Python · Go

  • http-server
    Beta

    An HTTP server from the socket up

    From raw bytes to a 200 response. Parse requests, manage connections and serve concurrent traffic.

    Intermediate10 stages~12 hNetworking
    socketstcphttp+1

    Go · Python · C · Rust