Capa de red — IP, routing y NAT
"Cada paquete IP en Internet está pasando por algún router en este momento. Hay miles de millones de paquetes vivos."
Qué vas a aprender en este capítulo
La capa de red es donde los datos cruzan fronteras de red. Vas a aprender el formato de IPv4 e IPv6, cómo funciona el subnetting (dividir un bloque de IPs en partes), qué hacen los routers internamente, qué es NAT (y por qué tu IP local es 192.168.x.x), e ICMP (los mensajes diagnósticos que te dejan hacer ping y traceroute).
3.1 La idea: direccionamiento global
💡 Intuición
A nivel de enlace (cap 2), las máquinas de tu LAN se conocen por MAC. Pero las MACs no escalan — son aleatorias por fabricante, no tienen estructura jerárquica. Si yo quisiera mandar un paquete desde San Miguel a Tokyo, mirando la MAC del destino, ningún router del mundo sabría adónde dirigirlo.
Las direcciones IP dan estructura geográfica/topológica. Como un código postal: el primer trozo te dice qué país, el siguiente la región, y el último el bloque concreto.
Esa estructura permite que un router con una tabla razonable (en lugar de "todas las MACs del planeta") sepa por dónde mandar el paquete.
IP es lógica (asignada, jerárquica), MAC es física (de fábrica, plana). Un dispositivo tiene una MAC fija (más o menos), pero muchas IPs distintas a lo largo de su vida (una por red en la que se conecta).
3.2 IPv4 — direcciones de 32 bits
📐 Fundamento
Formato: 32 bits, escritos como 4 octetos en decimal:
192.168.1.10
Cada octeto va de 0 a 255. Total de direcciones IPv4: ≈ 4.3 mil millones. Insuficientes para el mundo moderno — por eso existe IPv6 y NAT.
Estructura: red + host
Una IP se divide en parte de red y parte de host. Ejemplo:
192.168.1.10 / 24
↑
"los primeros 24 bits son la red"
- Red: 192.168.1.0 (los primeros 24 bits, lo que comparten todos los hosts).
- Host: .10 (los últimos 8 bits, identifica al host dentro de la red).
Notación CIDR (Classless Inter-Domain Routing): la /24 se llama prefijo.
| Prefijo | Bits red | Bits host | Hosts disponibles |
|---|---|---|---|
| /8 | 8 | 24 | 16,777,214 |
| /16 | 16 | 16 | 65,534 |
| /24 | 24 | 8 | 254 |
| /28 | 28 | 4 | 14 |
| /30 | 30 | 2 | 2 |
Por qué "hosts útiles" = : dos direcciones están reservadas:
- Todos los bits de host en 0 = dirección de red (
192.168.1.0/24). - Todos los bits de host en 1 = broadcast (
192.168.1.255).
Máscaras de subred
Otra forma de expresar el prefijo:
/24 = 255.255.255.0 (los primeros 24 bits son 1)
/16 = 255.255.0.0
/8 = 255.0.0.0
/26 = 255.255.255.192 (24 unos, 2 unos, 6 ceros)
Cómo calcular la red de una IP (AND bit a bit con la máscara):
IP: 192.168.1.130 = 11000000.10101000.00000001.10000010
Máscara: 255.255.255.192 = 11111111.11111111.11111111.11000000
AND: 192.168.1.128 10000000
Red: 192.168.1.128/26
Rango: 192.168.1.128 a 192.168.1.191
Hosts: .129 a .190 (62 utilizables)
Broadcast: .191
3.3 Direcciones especiales
📐 Fundamento
| Rango | Significado |
|---|---|
0.0.0.0 |
"Esta máquina, esta red" (DHCP request, default route) |
127.0.0.0/8 |
Loopback — 127.0.0.1 es siempre tu propia máquina |
169.254.0.0/16 |
Link-local (auto-asignada cuando falla DHCP) |
224.0.0.0/4 |
Multicast |
255.255.255.255 |
Broadcast limitado (a la red local) |
IPs privadas (RFC 1918)
Reservadas para redes internas — no rutean en Internet pública:
10.0.0.0/8(16 millones de hosts)172.16.0.0/12(1 millón de hosts)192.168.0.0/16(65 mil hosts)
Tu router casero te asigna una de estas (típicamente 192.168.1.x o 192.168.0.x). Para salir a Internet, NAT (próxima sección).
IPs públicas
Las que sí rutean en Internet. Asignadas por registros regionales (LACNIC para América Latina, ARIN para Norteamérica, etc.).
Bloques famosos:
8.8.8.8= Google DNS.1.1.1.1= Cloudflare DNS.142.250.0.0/16= Google.52.0.0.0/8= Amazon AWS.
Un test simple: ¿es esta IP pública o privada?
$ curl ifconfig.me # te da tu IP pública
3.4 Cabecera IPv4
📐 Fundamento
+---+----+----+--------+----+----+--------+
|Ver|IHL |TOS | Total length |
+---+----+----+--------+----+----+--------+
| Identification | Flags | Offset |
+----+--------+----+----+----+----+--------+
|TTL | Proto | Header checksum |
+----+--------+--------+--------+----------+
| IP origen (4 bytes) |
+------------------------------------------+
| IP destino (4 bytes) |
+------------------------------------------+
| Opciones (variable) |
+------------------------------------------+
| Datos (paquete TCP, UDP, etc.) |
+------------------------------------------+
Campos importantes:
- TTL (Time To Live): cada router que pasa lo decrementa. Si llega a 0, el paquete se descarta y el router envía un ICMP "Time Exceeded". Eso es lo que
tracerouteaprovecha. Inicial típico: 64 (Linux), 128 (Windows), 255 (Cisco). - Protocol: qué hay adentro.
6= TCP,17= UDP,1= ICMP. - Header checksum: integridad solo de la cabecera (no del payload).
- Identification + Flags + Offset: para fragmentación.
Fragmentación
Si un paquete es más grande que el MTU del enlace siguiente, se fragmenta:
- Se divide en múltiples paquetes IP.
- Cada fragmento lleva el mismo
Identificationpero distintoOffset. - El receptor reensambla.
Problemas de fragmentación:
- Si se pierde un fragmento, hay que reenviar todo el paquete original.
- Atacantes la usan para evadir firewalls.
Solución moderna: Path MTU Discovery — descubrir el MTU mínimo del camino y nunca fragmentar. IPv6 obliga a esto (no permite fragmentación en routers, solo en el origen).
3.5 IPv6 — el futuro
📐 Fundamento
Direcciones de 128 bits. Total: direcciones. Suficiente para asignar un bloque a cada átomo de la Tierra.
Notación: ocho grupos de 4 dígitos hex, separados por :.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Reglas de compactación:
- Ceros iniciales en cada grupo se pueden omitir:
0db8→db8. - Una secuencia de grupos
0000se puede colapsar con::(una sola vez):2001:db8:85a3:0:0:8a2e:370:7334 ↓ 2001:db8:85a3::8a2e:370:7334
Direcciones especiales:
::1— loopback (equivale a127.0.0.1).::— todas las direcciones (default route).fe80::/10— link-local (auto-configurada).fc00::/7— privadas (Unique Local Address, ULA).
Diferencias clave con IPv4
| IPv4 | IPv6 | |
|---|---|---|
| Tamaño dirección | 32 bits | 128 bits |
| Cabecera | 20+ bytes (variable) | 40 bytes (fija) |
| Broadcast | Sí | No (usa multicast) |
| Fragmentación | Routers o origen | Solo origen |
| Auto-configuración | DHCP | SLAAC + DHCPv6 |
| Seguridad | IPsec opcional | IPsec parte del estándar |
Adopción
IPv6 fue diseñado en los 90s. Adopción real ha sido lenta porque IPv4 + NAT funciona "lo suficientemente bien". Hoy en 2026, alrededor del 40-50% del tráfico mundial es IPv6. Móviles y servidores grandes ya usan dual-stack (IPv4 + IPv6).
Por qué importa: las IPs públicas IPv4 están agotadas desde 2011. Cada nueva conexión es cara. IPv6 es la solución a largo plazo.
3.6 Ruteo
📐 Fundamento
Un router es un dispositivo que conecta redes distintas y reenvía paquetes entre ellas.
Tabla de ruteo:
Destino Gateway Interfaz Métrica
192.168.1.0/24 * eth0 0
192.168.2.0/24 192.168.1.1 eth1 1
0.0.0.0/0 203.0.113.1 eth2 10
Cómo se decide qué ruta usar:
- Buscar coincidencia más específica (longest prefix match).
/32>/24>/16>/0. - Entre coincidencias del mismo prefijo, la menor métrica.
- Default route (
0.0.0.0/0) atrapa todo lo demás.
Ver tu tabla de ruteo en Linux:
$ ip route
default via 192.168.1.1 dev wlan0
192.168.1.0/24 dev wlan0 src 192.168.1.10
default via 192.168.1.1 = "todo lo que no caigo en nada más, mandalo al gateway".
Ruteo estático vs dinámico
- Estático: vos configurás manualmente las rutas. OK para redes chicas y predecibles.
- Dinámico: los routers se hablan entre sí y descubren topología. Protocolos clásicos:
- RIP (viejo, simple, conteo de saltos).
- OSPF (avanzado, métrica de costo, dominante en redes empresariales).
- BGP — el protocolo de Internet entera. Anuncia bloques de IPs entre AS (Autonomous Systems).
El backbone de Internet
Internet es una red de redes. Cada AS (operador, ISP grande, gobierno) tiene un número (ASN). BGP los conecta:
- Tu casa → ISP local (Tigo, Claro) → Operador regional → Internet exchange → Backbone global → Datacenter.
Un paquete típico de El Salvador a EE.UU. cruza unos 10-15 routers.
Curiosidad: errores en BGP han causado los apagones más grandes de Internet. Cuando Facebook se cayó en octubre 2021, fue un mal anuncio BGP.
3.7 NAT — Network Address Translation
📐 Fundamento
Problema: vos tenés 192.168.1.10 (privada). No rutea en Internet. Pero querés ver Google. ¿Cómo?
Solución: NAT. Tu router tiene una IP pública (digamos 203.0.113.55). Cuando salís, traduce tu IP privada a la pública. Cuando vuelve la respuesta, vuelve a traducir al revés.
Tu PC (192.168.1.10:50000) → router → Internet
traduce a:
203.0.113.55:60000
Google responde a 203.0.113.55:60000
↓ router lookup en tabla NAT
↓
entrega a 192.168.1.10:50000
El router mantiene una tabla NAT:
| LAN IP:port | WAN IP:port | Destino |
|---|---|---|
| 192.168.1.10:50000 | 203.0.113.55:60000 | google.com:443 |
| 192.168.1.20:51234 | 203.0.113.55:60001 | facebook.com:443 |
Cada conexión saliente tiene una entrada. Cuando llega tráfico desde el destino, el router busca por el puerto WAN y reenvía a la LAN correcta.
Ventajas de NAT
- Ahorra IPs públicas. Una sola IP pública sirve a 100+ dispositivos privados.
- Aislamiento. Tu LAN no es directamente alcanzable desde Internet — primer firewall implícito.
- Flexibilidad. Podés cambiar de ISP sin renumerar todas tus máquinas.
Desventajas
- Rompe el modelo end-to-end. No podés conectar de afuera a una máquina interna sin port forwarding.
- Complica protocolos (FTP, SIP, P2P) que envían IPs en sus mensajes.
- Latencia extra (mínima, pero no cero).
- CGNAT (Carrier-Grade NAT) — cuando el ISP pone NAT en su lado y vos quedás detrás de doble NAT. Limita más todavía.
Port forwarding
Si querés que tu PC sea alcanzable desde afuera (servidor casero, juegos):
Router config:
Externa: 203.0.113.55:8080 → Interna: 192.168.1.10:80
Eso le dice al router: "todo lo que llegue al puerto 8080 mandalo a la PC interna en el puerto 80".
IPv6 elimina NAT
Con IPv6, cada dispositivo tiene IP pública propia. No hay NAT. El modelo end-to-end vuelve. Pero firewalls siguen siendo necesarios para seguridad.
3.8 ICMP — los mensajes del router
📐 Fundamento
ICMP (Internet Control Message Protocol) es para mensajes de control y diagnóstico:
| Tipo | Uso |
|---|---|
| Echo Request / Reply | ping |
| Time Exceeded | TTL llegó a 0 (traceroute) |
| Destination Unreachable | red/host/puerto inalcanzable |
| Redirect | "usá este router en vez del default" |
Ping:
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=109 time=20.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=109 time=21.1 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss
rtt min/avg/max/mdev = 20.4/20.7/21.1/0.35 ms
ttl=109 te dice cuántos routers quedan. Si el origen TTL fue 128 (Windows), pasaron 128-109 = 19 routers. Aproximación útil.
Traceroute (cómo funciona):
- Manda paquete con TTL=1. Router 1 lo decrementa a 0, descarta, envía ICMP "Time Exceeded".
- Vos sabés cuál es el primer router.
- Manda paquete con TTL=2. Router 2 lo descarta. Aprendés el segundo router.
- ...
- Manda con TTL=64 (suficiente). El destino lo recibe y responde.
Brillante por simple.
$ traceroute google.com
1 router.casa (192.168.1.1) 1.2 ms
2 10.42.0.1 8.5 ms
3 isp-gw.tigo.com.sv 12.3 ms
4 ...
10 google.com 20.4 ms
ICMP en seguridad. Algunos firewalls bloquean ICMP — eso "esconde" la red pero también complica diagnóstico. Bloquearlo está discutido.
3.9 DHCP — IP automática
📐 Fundamento
Cuando conectás tu PC a una red, ¿quién te da una IP? El DHCP server (típicamente, el router casero).
Proceso (4 pasos, "DORA"):
- Discover: PC envía broadcast preguntando "¿hay alguien que dé IPs?"
- Offer: servidor responde "tengo 192.168.1.50 disponible".
- Request: PC pide formalmente "quiero esa".
- Acknowledge: servidor confirma.
DHCP también te da:
- Subnet mask.
- Default gateway (qué router usar).
- DNS servers.
- Lease time (cuánto dura la asignación).
Ver tu config DHCP en Linux:
$ cat /var/lib/dhcp/dhclient.leases
Liberar y renovar:
$ sudo dhclient -r # release
$ sudo dhclient # renew
Static IP: podés configurar IP manualmente en lugar de DHCP. Útil para servidores que necesitan IP estable.
3.10 Subnetting — ejemplo paso a paso
🛠️ En la práctica
Tu empresa recibió el bloque 203.0.113.0/24 (256 IPs). Querés dividirlo en 4 subredes de igual tamaño.
Paso 1: bits para subred. Necesitás bits adicionales para identificar las 4 subredes. Total: /24 + 2 = /26.
Paso 2: tamaño de cada subred. → 32 - 26 = 6 bits para host → direcciones, 62 utilizables (descontá red y broadcast).
Paso 3: las cuatro redes.
| Subred | Rango | Broadcast |
|---|---|---|
| 203.0.113.0/26 | .1 a .62 | .63 |
| 203.0.113.64/26 | .65 a .126 | .127 |
| 203.0.113.128/26 | .129 a .190 | .191 |
| 203.0.113.192/26 | .193 a .254 | .255 |
Cada subred tiene 62 hosts utilizables. Total = 248. Perdiste 8 IPs (2 por subred = 4 redes × 2 = 8) en favor de tener 4 dominios separados.
VLSM (Variable Length Subnet Masking)
Si las subredes necesitan distintos tamaños, podés usar prefijos distintos:
| Subred | Prefijo | Hosts |
|---|---|---|
| Servidores | /25 | 126 |
| Oficinas | /26 | 62 |
| WiFi guests | /27 | 30 |
| WAN links | /30 | 2 |
VLSM es lo estándar — pocas redes son de tamaños iguales.
3.11 Resumen visual
| Concepto | Una línea |
|---|---|
| IPv4 | 32 bits, 4.3B direcciones, agotadas |
| IPv6 | 128 bits, ridículamente abundantes |
| CIDR /N | Los primeros N bits son la red |
| Privadas vs públicas | RFC 1918 vs ruteables en Internet |
| TTL | Cuenta de saltos restantes |
| Router | Conecta redes distintas, hace longest prefix match |
| NAT | Traduce privada → pública usando puertos |
| ICMP | Mensajes de diagnóstico (ping, traceroute) |
| DHCP | Asigna IPs automáticamente |
3.12 Ejercicios
✏️ Ejercicio 3.1 — Identificar la red
Para cada IP/prefijo, calculá:
a. Dirección de red. b. Dirección de broadcast. c. Cantidad de hosts útiles.
192.168.1.130/2410.5.5.99/16203.0.113.50/28
Solución
-
/24:
- Red:
192.168.1.0. - Broadcast:
192.168.1.255. - Hosts: 254.
- Red:
-
/16:
- Red:
10.5.0.0. - Broadcast:
10.5.255.255. - Hosts: 65,534.
- Red:
-
/28 (4 bits host, 14 hosts, 16 direcciones):
.50está en.48 a .63.- Red:
203.0.113.48. - Broadcast:
203.0.113.63. - Hosts: 14.
✏️ Ejercicio 3.2 — Subnetting
Tenés 172.16.0.0/22 (1024 IPs). Dividilo en 4 subredes iguales.
Solución
/22 + 2 = /24. Cada subred es /24 (256 direcciones, 254 hosts).
| Subred | Rango | Broadcast |
|---|---|---|
| 172.16.0.0/24 | .0.1 - .0.254 | .0.255 |
| 172.16.1.0/24 | .1.1 - .1.254 | .1.255 |
| 172.16.2.0/24 | .2.1 - .2.254 | .2.255 |
| 172.16.3.0/24 | .3.1 - .3.254 | .3.255 |
✏️ Ejercicio 3.3 — Traceroute
Ejecutá traceroute google.com y traceroute example.com. Compará: ¿pasan por los mismos routers? ¿En qué punto se separan?
Solución
Probable observación:
1. router casa (192.168.1.1) ← idéntico
2. ISP local ← idéntico
3. ISP regional ← probablemente idéntico
4-5. Backbone ← varía
6. AS de Google / Cloudflare / etc. ← se separa acá
Los primeros saltos son siempre los mismos (tu LAN + ISP), después se separan según el destino. Eso te dice mucho sobre tu ISP y la topología local.
✏️ Ejercicio 3.4 — NAT en acción
Tenés tres dispositivos en tu casa: laptop, celular y smart TV. Todos comparten una IP pública del ISP. ¿Cómo distingue el router cuál es cuál cuando llega tráfico de Internet?
Solución
Por puerto (PAT — Port Address Translation, una variante de NAT).
Cuando cada dispositivo abre una conexión saliente:
| Dispositivo | LAN | Puerto WAN |
|---|---|---|
| Laptop | 192.168.1.10:50000 → google:443 | 60000 |
| Celular | 192.168.1.20:50000 → instagram:443 | 60001 |
| Smart TV | 192.168.1.30:50000 → netflix:443 | 60002 |
El router asigna un puerto WAN distinto a cada conexión y mantiene la tabla. Cuando llega tráfico al puerto 60000, sabe que es para la laptop.
Limitación: un router típico maneja 5,000-65,000 conexiones simultáneas (limitado por puertos disponibles). En CGNAT, esto se vuelve cuello de botella.
3.13 Para profundizar
- Tanenbaum cap. 5 (Capa de red).
- Kurose & Ross cap. 4-5.
ipcalc— herramienta de línea de comandos para subnetting.- Próximo capítulo: Capa de transporte — TCP y UDP — los dos protocolos sobre los que corren tus aplicaciones.
Definiciones nuevas: IPv4, IPv6, CIDR, máscara, IP privada, IP pública, TTL, MTU, fragmentación, ruteo, longest prefix match, BGP, NAT, port forwarding, CGNAT, ICMP, DHCP, DORA, VLSM.