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: 232=4,294,967,2962^{32} = 4{,}294{,}967{,}296 ≈ 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" = 2h22^h - 2: 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 Loopback127.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 internasno 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 traceroute aprovecha. 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 Identification pero distinto Offset.
  • 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: 21283.4×10382^{128} \approx 3.4 \times 10^{38} 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: 0db8db8.
  • Una secuencia de grupos 0000 se 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 a 127.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 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:

  1. Buscar coincidencia más específica (longest prefix match). /32 > /24 > /16 > /0.
  2. Entre coincidencias del mismo prefijo, la menor métrica.
  3. 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):

  1. Manda paquete con TTL=1. Router 1 lo decrementa a 0, descarta, envía ICMP "Time Exceeded".
  2. Vos sabés cuál es el primer router.
  3. Manda paquete con TTL=2. Router 2 lo descarta. Aprendés el segundo router.
  4. ...
  5. 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"):

  1. Discover: PC envía broadcast preguntando "¿hay alguien que dé IPs?"
  2. Offer: servidor responde "tengo 192.168.1.50 disponible".
  3. Request: PC pide formalmente "quiero esa".
  4. 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 log24=2\log_2 4 = 2 bits adicionales para identificar las 4 subredes. Total: /24 + 2 = /26.

Paso 2: tamaño de cada subred. /26/26 → 32 - 26 = 6 bits para host → 26=642^6 = 64 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.

  1. 192.168.1.130/24
  2. 10.5.5.99/16
  3. 203.0.113.50/28

✏️ Ejercicio 3.2 — Subnetting

Tenés 172.16.0.0/22 (1024 IPs). Dividilo en 4 subredes iguales.

✏️ Ejercicio 3.3 — Traceroute

Ejecutá traceroute google.com y traceroute example.com. Compará: ¿pasan por los mismos routers? ¿En qué punto se separan?

✏️ 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?

3.13 Para profundizar


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.