SOLUCIONES — Examen de Desarrollo de Redes
Desarrollo modelo de cada apartado, con el cálculo binario que el corrector espera ver escrito · todos los valores verificados con Python (ipaddress, script _verif_desarrollo_redes.py)
Problema 1 · El campus: VLSM + rutas + viaje del paquete20 puntos
Un /22 tiene 22 bits de red y 32 − 22 = 10 bits de host → 210 = 1024 direcciones totales (1022 útiles si se usara plano).
El bloque abarca 172.20.8.0 – 172.20.11.255 (los octetos 8, 9, 10 y 11: cuatro «/24 enteros», porque 2 bits libres en el tercer octeto = 4 valores).
Regla para cada subred: buscar el menor n tal que 2n − 2 ≥ hosts; el prefijo es 32 − n. Justificación de que la máscara es la mínima: con un bit menos de host no cabría.
| Subred | Hosts | Cálculo | Prefijo / máscara | Red | 1ª útil (GW) | Última útil | Broadcast |
|---|---|---|---|---|---|---|---|
| LAN1 | 450 | 2⁹−2=510 ≥ 450 (2⁸−2=254 no) | /23 · 255.255.254.0 | 172.20.8.0 | 172.20.8.1 | 172.20.9.254 | 172.20.9.255 |
| LAN2 | 200 | 2⁸−2=254 ≥ 200 (126 no) | /24 · 255.255.255.0 | 172.20.10.0 | 172.20.10.1 | 172.20.10.254 | 172.20.10.255 |
| LAN3 | 100 | 2⁷−2=126 ≥ 100 (62 no) | /25 · 255.255.255.128 | 172.20.11.0 | 172.20.11.1 | 172.20.11.126 | 172.20.11.127 |
| Servidores | 20 | 2⁵−2=30 ≥ 20 (14 no) | /27 · 255.255.255.224 | 172.20.11.128 | 172.20.11.129 | 172.20.11.158 | 172.20.11.159 |
| Enlace RC–R2 | 2 | 2²−2=2 (justo) | /30 · 255.255.255.252 | 172.20.11.160 | 172.20.11.161 (RC) | 172.20.11.162 (R2) | 172.20.11.163 |
| Enlace RC–R3 | 2 | 2²−2=2 (justo) | /30 · 255.255.255.252 | 172.20.11.164 | 172.20.11.165 (RC) | 172.20.11.166 (R3) | 172.20.11.167 |
Consumo: 512+256+128+32+4+4 = 936 ≤ 1024 → cabe, y quedan libres 172.20.11.168 – 172.20.11.255 para crecer.
| # | Red de destino | Prefijo | Siguiente salto | Interfaz salida | Comentario |
|---|---|---|---|---|---|
| 1 | 172.20.8.0 | /23 | — (conectada) | G0/0 | LAN1, su propia pata |
| 2 | 172.20.11.160 | /30 | — (conectada) | G0/1 | enlace a R2 |
| 3 | 172.20.11.164 | /30 | — (conectada) | G0/2 | enlace a R3 |
| 4 | 203.0.113.0 | /30 | — (conectada) | G0/3 | enlace al ISP |
| 5 | 172.20.10.0 | /24 | 172.20.11.162 (R2) | G0/1 | LAN2 está detrás de R2 |
| 6 | 172.20.11.0 | /25 | 172.20.11.166 (R3) | G0/2 | LAN3 detrás de R3 |
| 7 | 172.20.11.128 | /27 | 172.20.11.166 (R3) | G0/2 | servidores detrás de R3 |
| 8 | 0.0.0.0 | /0 | 203.0.113.1 (ISP) | G0/3 | ruta por defecto |
Clave: el siguiente salto de una ruta estática debe ser una IP del enlace directamente conectado (la del otro extremo): por eso hacia LAN2 es .162 y hacia todo lo del edificio 3 es .166.
| MAC origen | MAC destino | IP origen | IP destino | |
|---|---|---|---|---|
| Trama 1 | AA:AA:AA:00:00:0A (PC-A) | CA:FE:00:00:00:01 (RC G0/0) | 172.20.8.10 | 172.20.11.140 |
| MAC origen | MAC destino | IP origen | IP destino | |
|---|---|---|---|---|
| Trama 2 | CA:FE:00:00:00:03 (RC G0/2, enlace a R3) | C3:00:00:00:00:01 (R3 G0/0) | 172.20.8.10 | 172.20.11.140 |
| MAC origen | MAC destino | IP origen | IP destino | |
|---|---|---|---|---|
| Trama 3 | C3:00:00:00:00:03 (R3 G0/2) | 5E:BB:00:00:00:03 (SRV-WEB) | 172.20.8.10 | 172.20.11.140 |
Constantes en todo el camino: IP origen 172.20.8.10 e IP destino 172.20.11.140. Cambian en cada salto: las dos MAC (nueva trama por tramo), el TTL (−1 por router: 2 routers → TTL llega con −2), el checksum IP y el FCS de la trama.
Problema 2 · Fragmentación doble12 puntos
Datos del original: 4020 − 20 = 4000 B. Con MTU 1500 caben 1500 − 20 = 1480 B de datos; como el campo Fragment Offset se mide en unidades de 8 bytes, el trozo de datos de todo fragmento no final debe ser múltiplo de 8. 1480 = 8 × 185 ✓ → se usan 1480 B por fragmento.
| Frag | Total Length | Datos | Identification | MF | Offset | Bytes que cubre | Justificación |
|---|---|---|---|---|---|---|---|
| 1 | 1500 | 1480 | 0x2B3C | 1 | 0 | 0–1479 | primero: offset 0; hay más → MF=1 |
| 2 | 1500 | 1480 | 0x2B3C | 1 | 185 | 1480–2959 | 1480/8 = 185 |
| 3 | 1060 | 1040 | 0x2B3C | 0 | 370 | 2960–3999 | 2960/8 = 370; resto 4000−2960=1040 → TL 1060; último → MF=0 |
Comprobación: 1480 + 1480 + 1040 = 4000 ✓. Los tres llevan la misma Identification (0x2B3C) y cabecera de 20 B cada uno.
Con MTU 620 caben 620 − 20 = 600 B de datos, y 600 = 8 × 75 ✓. R2 refragmenta cada fragmento por separado, conservando Identification y sumando offsets sobre el offset que ya traía cada uno:
| Frag | Procede de | Total Length | Datos | MF | Offset | Cuenta del offset |
|---|---|---|---|---|---|---|
| 1 | F1 | 620 | 600 | 1 | 0 | 0 |
| 2 | F1 | 620 | 600 | 1 | 75 | 600/8 |
| 3 | F1 | 300 | 280 | 1 | 150 | 1200/8 · MF=1 porque F1 traía MF=1: aún faltan F2 y F3 |
| 4 | F2 | 620 | 600 | 1 | 185 | hereda el offset de F2 (1480/8) |
| 5 | F2 | 620 | 600 | 1 | 260 | 185 + 75 |
| 6 | F2 | 300 | 280 | 1 | 335 | 260 + 75 · MF=1 (F2 traía MF=1) |
| 7 | F3 | 620 | 600 | 1 | 370 | hereda el offset de F3 |
| 8 | F3 | 460 | 440 | 0 | 445 | 370 + 75 · único MF=0: era el final de F3, que traía MF=0 |
Comprobaciones: datos = 600·5 + 280·2 + 440 = 3000 + 560 + 440 = 4000 ✓ · offsets en bytes 0, 600, 1200, 1480, 2080, 2680, 2960, 3560: cada uno empieza donde acaba el anterior (sin huecos ni solapes) ✓ · todos múltiplos de 8 ✓ · un único MF=0 ✓.
Solo reensambla el host destino (nunca los routers intermedios). Usa: Identification (+ IP origen/destino y protocolo) para agrupar fragmentos del mismo datagrama, Offset para ordenarlos y colocarlos, y MF=0 para saber cuál es el último (con su offset+longitud conoce el tamaño total). Si el original llevara DF=1, R1 no podría fragmentar: descartaría el datagrama y devolvería un ICMP «Destination Unreachable – Fragmentation needed» (base del Path MTU Discovery).
Problema 3 · La trama Ethernet, campo a campo10 puntos
Paquete IP de 80 B ≥ 46 B → no necesita relleno. La trama (destino = el gateway, no el servidor):
| Tramo | MAC origen | MAC destino |
|---|---|---|
| 1 · PC-A → RC | AA:AA:AA:00:00:0A | CA:FE:00:00:00:01 |
| 2 · RC → R3 | CA:FE:00:00:00:03 | C3:00:00:00:00:01 |
| 3 · R3 → SRV-WEB | C3:00:00:00:00:03 | 5E:BB:00:00:00:03 |
Las MAC cambian porque la trama vive solo dentro de un tramo de capa 2: cada router la desencapsula, enruta el paquete y construye una trama nueva con las MAC de ese enlace. Las IP no cambian porque identifican los extremos de la comunicación (capa 3, extremo a extremo). Además, en cada salto se recalcula el FCS (la trama es nueva y su contenido cambió: MACs y TTL/checksum del IP interior).
El mínimo de 64 B existe por la detección de colisiones de la Ethernet clásica (CSMA/CD): la trama debe seguir transmitiéndose cuando la posible colisión regresa.
Datos = 40 B < 46 B → la NIC añade relleno de 46 − 40 = 6 B (ceros). Trama: 6+6+2+(40+6)+4 = 64 B, justo el mínimo. El receptor sabe cuánto es relleno porque el Total Length del IP interior dice 40.
Problema 4 · Tabla MAC del switch10 puntos
Regla del switch: aprende siempre (MAC origen → puerto de entrada); para decidir, busca la MAC destino: si no está → inunda por todos los puertos menos el de entrada; si está en otro puerto → reenvía solo por ese; si está en el mismo puerto de entrada → filtra (descarta). El broadcast FF:…:FF siempre se inunda.
| Paso | Trama | Aprende | Acción | Justificación |
|---|---|---|---|---|
| ① | A→B | …AA → p1 | Inunda por p2–p5 | …BB no está en la tabla |
| ② | B→A | …BB → p2 | Reenvía solo por p1 | …AA está: p1 |
| ③ | C→FF:FF:FF:FF:FF:FF | …CC → p3 | Inunda por p1, p2, p4, p5 | el broadcast se inunda siempre |
| ④ | B→C | (…BB→p2 ya sabido: refresca) | Reenvía solo por p3 | …CC está: p3 |
| ⑤ | D→A | …DD → p4 | Reenvía solo por p1 | …AA está: p1 |
| ⑥ | C (desde p5)→A | actualiza …CC → p5 | Reenvía por p1 | la entrada de origen se sobreescribe con el puerto nuevo; …AA sigue en p1 |
| MAC | Puerto |
|---|---|
| …AA (A) | p1 |
| …BB (B) | p2 |
| …CC (C) | p5 (actualizada en ⑥; ya no p3) |
| …DD (D) | p4 |
Un hub (capa 1) no aprende nada ni decide: repite la señal por todos los puertos siempre — los 6 envíos habrían llegado a todos los equipos, con un único dominio de colisión. El switch segmenta: tras aprender, el tráfico unicast solo sale por el puerto correcto.
Problema 5 · Subnetting clásico12 puntos
Condición de subredes: 2b ≥ 5 → b = 3 (2²=4 < 5 → 2 bits no bastan). Quedan 8−3 = 5 bits de host: 2⁵−2 = 30 ≥ 25 ✓. Con b = 4 quedarían 4 bits de host → 2⁴−2 = 14 < 25 ✗. Única solución: 3 bits prestados.
Salto = 256 − 224 = 32 (o 2⁵): .0, .32, .64, .96, .128, .160, .192, .224 (todas /27).
La tercera (contando .0 como primera) es 192.168.100.64/27: rango útil 192.168.100.65 – 192.168.100.94, broadcast 192.168.100.95.
77 AND 224 = 64 → subred 192.168.100.64/27, rango útil 192.168.100.65 – 192.168.100.94, broadcast 192.168.100.95. (Coincide con la 3ª del apartado c.)
Cada subred pierde 2 (red + broadcast): 8 × 2 = 16. La /24 plana perdía 2. Coste del subnetting: 16 − 2 = 14 direcciones extra perdidas (quedan 8×30 = 240 útiles frente a 254).
Problema 6 · Longest prefix match10 puntos
Para cada destino, el router calcula destino AND máscara para cada entrada; entre todas las entradas que coinciden con su red gana la de prefijo más largo (la más específica). La ruta 0.0.0.0/0 coincide con todo (AND con máscara 0 da siempre 0.0.0.0), pero su prefijo es 0: solo gana si ninguna otra encaja.
| Destino | Entradas que encajan | Gana (prefijo) | Siguiente salto |
|---|---|---|---|
| 10.24.200.77 | /8, /13, /18 y /0 | 10.24.192.0/18 | R-C (192.168.0.10) |
| 10.30.15.9 | /8, /13 y /0 (la /18 no: exige 2º octeto = 24 exacto y aquí es 30) | 10.24.0.0/13 | R-B (192.168.0.6) |
| 10.9.1.1 | /8 y /0 (9 AND 248 = 8 ≠ 24) | 10.0.0.0/8 | R-A (192.168.0.2) |
| 172.16.7.200 | /22 y /0 (7 AND 252 = 4 ✓) | 172.16.4.0/22 | R-D (192.168.0.14) |
| 172.16.9.1 | solo /0 (9 AND 252 = 8 ≠ 4) | 0.0.0.0/0 | ISP |
| 8.8.8.8 | solo /0 | 0.0.0.0/0 | ISP |
/13 deja 32−13 = 19 bits de host; en el 2º octeto la máscara es 248 → bloques de 8: 10.24.0.0 – 10.31.255.255. 10.30.15.9 está dentro (24 ≤ 30 ≤ 31) ✓; 10.32.0.1 queda fuera (32 > 31: pertenece al bloque siguiente, 10.32.0.0/13) → para él solo encajaría la /8.
Problema 7 · OSI y encapsulación de una petición web8 puntos
| Capa OSI | Qué hace/añade con la petición | PDU | Dispositivo típico |
|---|---|---|---|
| 7 · Aplicación | Genera el mensaje HTTP (GET /) — junto con DNS para resolver el nombre | Mensaje / datos | — (el software: navegador, servidor) |
| 6 · Presentación | Representación y cifrado: aquí «vive» el TLS de HTTPS (formatos, compresión) | Datos | — |
| 5 · Sesión | Establece y mantiene el diálogo (sesiones, reanudación) | Datos | — |
| 4 · Transporte | Añade cabecera TCP: puertos (origen efímero p. ej. 51200, destino 443), números de secuencia, control de flujo y de errores extremo a extremo | Segmento | — (firewalls de capa 4) |
| 3 · Red | Añade cabecera IP: IP origen y destino, TTL; decide el encaminamiento | Paquete / datagrama | Router |
| 2 · Enlace | Añade cabecera+cola Ethernet: MAC origen/destino (la del gateway), tipo y FCS | Trama | Switch (y la NIC) |
| 1 · Física | Convierte la trama en señales (eléctricas/ópticas/radio) por el medio | Bits | Hub, repetidor, cables, transceptores |
Encapsulación: datos → segmento → paquete → trama → bits (cada capa envuelve lo de la superior). En el receptor, el proceso inverso (desencapsulación).
El switch procesa hasta la capa 2: lee MAC destino y reenvía; el paquete IP es para él «datos opacos» — por eso no mira IPs. El router desencapsula hasta la capa 3: lee la IP destino, consulta su tabla y reencapsula en una trama nueva; no necesita los puertos TCP porque el transporte es extremo a extremo (solo lo procesan los hosts finales).
Aplicación+Presentación+Sesión (7-6-5) → Aplicación · Transporte (4) → Transporte · Red (3) → Internet · Enlace+Física (2-1) → Acceso a la red.
Problema 8 · TCP con números concretos9 puntos
| # | Dirección | Flags | Seq | Ack | Justificación |
|---|---|---|---|---|---|
| 1 | Cliente → Servidor | SYN | 4000 | — | ISN del cliente |
| 2 | Servidor → Cliente | SYN + ACK | 9000 | 4001 | su ISN; ack = 4000+1 porque el SYN consume 1 número: «espero tu byte 4001» |
| 3 | Cliente → Servidor | ACK | 4001 | 9001 | ack = 9000+1 (el SYN del servidor también consume 1) |
Petición del cliente: 500 B con seq 4001 (bytes 4001…4500). El servidor asiente con ack = 4001 + 500 = 4501 («he recibido hasta el 4500, espero el 4501»). Respuesta del servidor: 1200 B con seq 9001 (bytes 9001…10200) → el cliente responde ack = 9001 + 1200 = 10201.
- Consulta DNS: UDP (puerto 53): un mensaje corto pregunta-respuesta; el coste del handshake no compensa (TCP se usa para transferencias de zona o respuestas grandes).
- Descarga de fichero: TCP: hace falta que llegue todo, en orden y sin errores.
- Videollamada en directo: UDP: importa la latencia; retransmitir un frame viejo no sirve (RTP sobre UDP).
- HTTP: TCP (80/443): la página debe llegar íntegra y ordenada.
Servicios de TCP que UDP no da: fiabilidad (retransmisiones con ACK), entrega en orden (números de secuencia), control de flujo (ventana), control de congestión y conexión establecida (handshake). UDP solo aporta puertos y un checksum.
Problema 9 · DHCP y DNS9 puntos
| # | Mensaje | Quién lo envía | Broadcast/unicast | Contenido |
|---|---|---|---|---|
| ① | DHCP Discover | Cliente | Broadcast (255.255.255.255; origen 0.0.0.0) | «¿hay algún servidor DHCP?» |
| ② | DHCP Offer | Servidor | Broadcast o unicast (a la MAC del cliente) | ofrece una IP y parámetros |
| ③ | DHCP Request | Cliente | Broadcast | acepta la oferta (y así los demás servidores retiran las suyas) |
| ④ | DHCP Ack | Servidor | Broadcast/unicast | confirma la concesión (lease) |
El cliente emite en broadcast porque aún no tiene IP (usa origen 0.0.0.0) y no conoce la dirección del servidor. Transporte: UDP, servidor puerto 67, cliente puerto 68. Datos mínimos entregados: IP + máscara + gateway por defecto + servidor DNS (y la duración del lease).
DHCP → ARP al gateway → DNS → handshake TCP → HTTP. No puede alterarse porque cada paso necesita el resultado del anterior: sin IP/máscara/GW/DNS (DHCP) no se puede enviar nada enrutado; para mandar la consulta DNS fuera de la LAN hace falta la MAC del gateway (ARP); sin la IP del servidor (DNS) no se puede abrir la conexión; y HTTP viaja dentro de una conexión TCP ya establecida (SYN, SYN+ACK, ACK) hacia el puerto 443/80.
Verificado con _verif_desarrollo_redes.py (módulo ipaddress): VLSM sin solapes y con capacidad mínima exacta, fragmentación con suma de datos = 4000 y offsets múltiplos de 8, longest prefix match de las 6 IPs, subnetting y aritmética TCP. Todos los checks en OK.