Direccionamiento IP y subredes — teoría con máscaras, un AND bit a bit y un router que solo mira la red (y la máscara que me dejó hablando solo)
Práctica de configuración de red, puesto 7 del laboratorio. Tenía que dejar el portátil con la IP 10.110.7.24 y, como siempre, copié la configuración a toda prisa. ping a la pasarela: perfecto. ping al servidor del campus: perfecto. ping a la impresora del aula 12: «Destination Host Unreachable», una y otra vez. Le eché la culpa al cable, al switch y a la impresora. El fallo era mío: había escrito la máscara 255.255.0.0 en lugar de 255.255.255.0. Con esa máscara, mi portátil se creía que la impresora estaba en su misma red, la buscaba por el aula 7 preguntando a gritos «¿quién tiene esta IP?» y, claro, nadie contestaba. Estaba hablando solo.
Ese día entendí que la máscara no es un número que se rellena porque sí: es lo que decide si un datagrama se entrega directamente o se le da al router. Hoy vas a ver cómo se unen muchas redes en una interred, cómo es una dirección IP (formato y clases), qué servicio da el protocolo IP, la cabecera del datagrama IPv4 con la fragmentación, cómo decide un router con su tabla, las subredes con su máscara y los protocolos que ayudan a IP: ARP, RARP, ICMP y DHCP. Si vienes de los modelos OSI y TCP/IP, ya sabes que IP vive en la capa Internet; hoy nos metemos dentro. Y cuando acabes, tienes los ejercicios tipo examen de direccionamiento IP y subredes.
El ejemplo que nos acompaña todo el artículo es la red de la facultad, la misma del tema anterior. El portátil tiene la IP 10.110.7.24 con máscara 255.255.255.0 y su pasarela es 10.110.7.1, el router de la facultad. El servidor del campus, 10.200.1.80, está en otra red, la del CPD (el centro de proceso de datos), detrás de un segundo router, el 10.110.1.2.
Tabla de Contenidos
Interconexión a nivel de red
Una sola red no basta para todo el mundo: la red del aula es una LAN, la de la operadora una WAN, cada una con su tecnología. Pero los usuarios quieren hablar con cualquiera, esté donde esté. La solución de TCP/IP es una interconexión de redes unificada y cooperativa que da un servicio de comunicación universal: muchas redes físicas que, vistas desde fuera, parecen una sola. Eso es Internet, la interred.
Las piezas que unen las redes son las pasarelas o routers (en los apuntes verás los dos nombres para lo mismo). Su objetivo es ocultar los detalles de hardware de las redes que hay debajo y dar la apariencia de una única red.
Fíjate en las dos mitades del dibujo. Arriba, lo que ve el usuario: su portátil, «Internet» y el servidor. Abajo, lo que hay: la red del aula 7, la red troncal de la facultad y la red del CPD, unidas por dos routers. Para que eso funcione, la interred de TCP/IP se apoya en tres premisas:
- Ocultar la arquitectura de interconexión a los usuarios y a las aplicaciones.
- No imponer una topología determinada: las redes se pueden unir de cualquier forma.
- Independencia de la interred con la interfaz de usuario: la aplicación no cambia aunque cambien las redes de debajo.
Y una idea que vas a ver en todo el tema: los routers encaminan en base a la red de destino, no al equipo de destino. El router de la facultad no tiene una ruta para el servidor 10.200.1.80; tiene una para la red 10.200.1.0, y con eso le basta para saber a qué siguiente router pasárselo.
Recuerda la diferencia del tema anterior. El switch trabaja con direcciones MAC y une equipos de una misma red (capa de acceso a la red). El router necesita la dirección IP y une redes diferentes (llega a la capa Internet). Todo lo de hoy es trabajo del router.
Direcciones IP
Para que un datagrama llegue, cada conexión a la interred necesita una dirección que la identifique en todo el mundo: la dirección IP.
El formato: 32 bits en cuatro números
Una dirección IPv4 tiene 32 bits (4 bytes) y una IPv6, 128 bits. Escribir 32 unos y ceros sería un suplicio, así que cada byte se escribe en decimal y se separa con puntos. Por eso cada número va de 0 a 255: es lo que cabe en 8 bits.
En el dibujo tienes 10.110.7.24 por dentro: 10 es 00001010, 110 es 01101110, 7 es 00000111 y 24 es 00011000. Debajo, la máscara 255.255.255.0: unos en los tres primeros bytes y ceros en el último. Ya verás que esos unos marcan qué parte de la dirección es la red (10.110.7) y qué parte es el equipo (24).
Dos cosas que caen en el examen:
- La dirección IP identifica la conexión del dispositivo a Internet, no el aparato en sí. Un router con tres interfaces tiene tres IP, una en cada red.
- La IP es distinta de la dirección hardware de la tarjeta de red (la MAC). La MAC viene de fábrica y solo sirve dentro de la red local; la IP la pone la configuración y sirve en toda la interred.
Las clases A, B, C y D
En el diseño original, la dirección se partía en dos trozos, identificador de red e identificador de dispositivo, y el tamaño de cada trozo dependía de la clase. La clase se reconoce por los primeros bits de la dirección.
Mira los bits coral del principio de cada barra: un 0 es clase A, 10 es clase B, 110 es clase C y 1110 es clase D. Cada clase añade un 1 delante, y por eso el primer byte basta para saber la clase:
| Clase | Empieza por | Red / equipo | Primer byte | Ejemplo |
|---|---|---|---|---|
| A | 0 | 8 bits / 24 bits | 0 – 127 | 10.110.7.24 |
| B | 10 | 16 bits / 16 bits | 128 – 191 | 172.30.3.5 |
| C | 110 | 24 bits / 8 bits | 192 – 223 | 193.145.138.32 |
| D | 1110 | dirección de multidifusión | 224 – 239 | 224.0.0.9 |
¿De qué clase es 191.4.20.1? 191 = 10111111, empieza por 10: clase B. ¿Y 192.5.48.3? 192 = 11000000, empieza por 110: clase C. Un número de diferencia en el primer byte y cambia la clase.
No pases nada a binario en el examen si no hace falta. Memoriza los cortes del primer byte: 128, 192 y 224. Por debajo de 128, A; hasta 191, B; hasta 223, C; desde 224, D.
Las direcciones de clase D no son de un equipo, sino de un grupo (multidifusión): un datagrama a una de ellas lo reciben todos los equipos apuntados a ese grupo. Por eso en el dibujo no tienen parte de red y parte de equipo.
Fuera de clase verás direcciones escritas como 10.110.7.24/24. El /24 dice cuántos bits de unos tiene la máscara (24 = 255.255.255.0). Es la forma moderna de partir la dirección sin depender de la clase; en el examen de IC2 se pregunta con clases y máscaras, pero conviene que te suene.
El protocolo IP y sus características
IP lleva las unidades de información entre el computador fuente y el de destino, estén en la misma red o en redes distintas unidas por routers, y hace Internet transparente a los equipos que se comunican: ellos no saben ni cuántas redes hay por medio.
La unidad que maneja es el datagrama: un paquete de datos que es el mínimo bloque de información en una red de conmutación por datagramas. Como cada datagrama lleva en su cabecera la dirección de origen y la de destino, cada uno se trata de forma independiente.
¿Y qué garantiza IP? Menos de lo que parece:
| IP sí hace | IP no hace |
|---|---|
| Da un servicio no orientado a conexión (no pregunta antes de enviar) | Control de secuencia (no reordena) |
| Toma decisiones de enrutamiento independientes para cada datagrama | Control de flujo (no frena al emisor) |
| Lleva el datagrama de la fuente al destino a través de las redes | Recuperación de errores (no reenvía lo perdido) |
Como cada datagrama va por su cuenta, pueden pasar tres cosas: pérdida de datagramas, datagramas fuera de secuencia y datagramas duplicados. ¿Entonces cómo llega bien tu práctica al campus? Porque encima de IP va TCP, que sí numera, reordena y pide reenvíos.
Decir que IP es «fiable» porque Internet funciona. IP hace lo que puede (en inglés se dice best effort); la fiabilidad la pone TCP, en la capa de transporte.
La cabecera del datagrama IPv4
Cada datagrama empieza con una cabecera que los routers leen en cada salto. Se dibuja en filas de 32 bits, y estos son los valores del datagrama de nuestro ejemplo (1400 bytes de datos del portátil al servidor del campus):
Los campos en violeta son los que más caen. Uno a uno:
| Campo | Bits | Qué guarda |
|---|---|---|
| Versión | 4 | Número de la versión del protocolo (4 para IPv4) |
| IHL | 4 | Longitud de la cabecera, en palabras de 32 bits; el mínimo es 5 (20 bytes) |
| Tipo de servicio | 8 | Precedencia (de 0, normal, a 7, control de red) y los bits D (bajo retardo), T (alta eficiencia) y R (alta fiabilidad) |
| Longitud total | 16 | Longitud del datagrama completo, cabecera más datos, en bytes |
| Identificador | 16 | Número que identifica de forma única al datagrama y ayuda a ensamblar sus fragmentos |
| Flags | 3 | Bit 0 reservado (0), DF (no fragmentar) y MF (más fragmentos) |
| Desplazamiento | 13 | A qué parte del datagrama original pertenece el fragmento |
| Tiempo de vida | 8 | Garantiza que los datagramas no circulan indefinidamente por la red |
| Protocolo, suma de control | 8 + 16 | A quién se entregan los datos (6 = TCP) y la comprobación de la cabecera |
| Direcciones de origen y destino | 32 + 32 | Las dos IP |
Comprobemos las cuentas del dibujo. Cinco filas de 32 bits son 5 × 4 = 20 bytes, así que IHL = 5. Si llevara 4 bytes de opciones, serían 24 bytes e IHL = 6: siempre IHL × 4 = bytes de cabecera. Y la longitud total es 20 + 1400 = 1420 bytes.
Contestar que IHL = 20. IHL no cuenta bytes, cuenta palabras de 4 bytes. Con la cabecera mínima vale 5.
El tiempo de vida (TTL) se va restando en cada router y, cuando llega a 0, el datagrama se descarta. Sin él, un datagrama atrapado en un bucle entre dos routers con tablas mal hechas daría vueltas para siempre.
Fragmentación y reensamblado
Cada red tiene una MTU, el tamaño máximo que cabe en una de sus tramas. Ethernet admite 1500 bytes, pero por el camino puede haber una red más pequeña. Si el datagrama no cabe, el router lo fragmenta: lo parte en trozos, cada uno con su propia cabecera IP.
Es el ejemplo de los apuntes con nuestros números. Los 1400 bytes de datos llegan a una red con MTU 620: quitando los 20 de cabecera, caben 600 bytes de datos por fragmento. Salen tres fragmentos: 600 + 600 + 200 = 1400. Fíjate en que cada fragmento empieza justo donde marca su offset (desplazamiento): el primero en 0, el segundo en 600 (lo que ocupaba el primero) y el tercero en 600 + 600 = 1200.
Para que el destino pueda juntarlos, los tres llevan el mismo identificador (4711) y los flags dicen cuál es el último:
| Fragmento | Datos | Offset | MF |
|---|---|---|---|
| 1 | 600 bytes | 0 | 1 (vienen más) |
| 2 | 600 bytes | 600 | 1 (vienen más) |
| 3 | 200 bytes | 1200 | 0 (último) |
Los dos flags que hay que saberse:
- DF (Don’t Fragment): 0 = puede fragmentarse; 1 = no fragmentar. Si un datagrama con DF = 1 no cabe, el router no puede partirlo: lo descarta y avisa al origen con ICMP.
- MF (More Fragments): 0 = último fragmento; 1 = hay más fragmentos.
¿Y dónde se vuelven a juntar? En una red TCP/IP el reensamblado se hace en el dispositivo de destino, no en los routers.
| Reensamblar en el destino | |
|---|---|
| Ventajas | Cada fragmento se puede encaminar por separado, incluso por redes distintas, y no sobrecarga a las pasarelas |
| Inconvenientes | Ineficiencia (todos los fragmentos llevan cabecera) y, si se pierde un fragmento, vence el temporizador de reensamblado y es imposible reconstruir el datagrama |
En los apuntes el offset se cuenta en bytes (0, 600, 1200), y así hay que contestarlo en el examen. En la cabecera real se guarda en unidades de 8 bytes (0, 75 y 150), y por eso los fragmentos llevan siempre un número de bytes de datos múltiplo de 8, como 600.
Encaminamiento: cómo decide un router
El encaminamiento es la función de la capa de red que determina la ruta que siguen los paquetes entre redes. Hay dos casos:
- Directo: el destino está en la misma red. Se entrega sin router: se averigua su MAC y se le manda la trama.
- Indirecto: el destino está en otra red. El datagrama se entrega al siguiente router, que vuelve a decidir. Para eso se usan tablas de encaminamiento.
Una tabla tiene al menos dos columnas: la red de destino (y permite una ruta por defecto, default) y la dirección del siguiente enrutador (si el router ya está en esa red, la IP de su interfaz, o «directo»). Las tablas más completas añaden la máscara y un coste. Según cómo se construyen:
| Tablas | Cómo se construyen | ¿Se adaptan a los cambios? |
|---|---|---|
| Estáticas | A mano, considerando la topología de la red | No |
| Dinámicas | Automáticamente, con intercambio periódico de información entre los encaminadores (algoritmos de enrutamiento) | Sí |
El AND con la máscara
Para comparar una IP con una fila de la tabla, el router necesita saber a qué red pertenece la IP. Se obtiene el prefijo de red haciendo un AND bit a bit entre la dirección de destino y la máscara. El AND da 1 solo cuando los dos bits son 1:
Mira cómo funciona columna a columna: donde la máscara tiene un 1, el bit de la IP pasa tal cual; donde tiene un 0, el resultado es 0. Con 255.255.255.0 eso significa: los tres primeros bytes se copian y el último se pone a cero. 10.200.1.80 AND 255.255.255.0 = 10.200.1.0. Es la misma cuenta del ejemplo de los apuntes: 172.30.3.5 AND 255.255.255.0 = 172.30.3.0.
El algoritmo, fila a fila
Ahora el router de la facultad recibe nuestro datagrama para 10.200.1.80. Su tabla y el algoritmo que sigue:
Recorre las filas en orden. Fila 1: 10.200.1.80 AND 255.255.255.0 = 10.200.1.0, que no es 10.110.7.0. Fila 2: tampoco es 10.110.12.0. Fila 3: 10.200.1.0 = 10.200.1.0, coincide, así que lo envía al siguiente nodo, el router del CPD (10.110.1.2). Ese router hará lo mismo con su tabla y verá que la red 10.200.1.0 es suya: entrega directa al servidor.
¿Y si el destino fuera www.ulpgc.es (193.145.138.32)? No coincide con las tres primeras filas, pero sí con la última: 0.0.0.0 con máscara 0.0.0.0 es la ruta por defecto. Cualquier IP AND 0.0.0.0 da 0.0.0.0, así que esa fila coincide con todo y se lleva lo que no tiene ruta propia, en nuestro caso hacia la salida a Internet (10.110.1.1). Si no hubiera ruta por defecto y ninguna fila coincidiera, el datagrama se descartaría.
Poner la ruta por defecto la primera. Como coincide con todo, ninguna otra fila llegaría a usarse. Va siempre la última.
El portátil hace la misma cuenta con su propia máscara antes de enviar nada. Si el destino AND la máscara da su misma red (10.110.7.0), entrega directa; si no, se lo da a la pasarela. Por eso una máscara mal puesta rompe la red sin que falle ningún cable.
Subredes y máscara de subred
Una facultad con 40 aulas podría pedir 40 redes distintas, pero sería un desperdicio y el resto de Internet tendría que conocerlas todas. La idea de las subredes es usar un identificador de red único en múltiples redes: algunos bits más significativos de la parte de estación (equipo) identifican la subred.
La herramienta es la máscara de subred. Tiene 32 bits, igual que una IP, y se codifica así: 1 si ese bit identifica a la red (incluida la subred) y 0 si ese bit identifica a la estación.
En el dibujo tienes las dos caras. Arriba, 10.110.7.24 partida en tres trozos: 10.110 es la red de la facultad, el 7 es la subred (el aula) y el 24 es el equipo. La máscara 255.255.255.0 tiene unos en los tres primeros bytes, así que la red llega hasta el aula. Abajo, el árbol: desde fuera solo existe 10.110.0.0 (todo el tráfico a 10.110.x.x llega al router de la facultad), y dentro el router reparte entre la troncal, el aula 7 y el aula 12.
Cuántos equipos caben
En cada red o subred hay dos direcciones que no se le dan a ningún equipo:
- La dirección de red: todos los bits de equipo a 0 (10.110.7.0).
- La dirección de difusión (broadcast): todos los bits de equipo a 1 (10.110.7.255). Un datagrama a ella le llega a todos los equipos de la red.
Si quedan h bits de equipo, hay 2^h direcciones y 2^h − 2 equipos. Con 255.255.255.0 quedan 8 bits: 2⁸ − 2 = 254 equipos por aula.
¿Y si el aula 12 se parte en trozos más pequeños? Con la máscara 255.255.255.224 el último byte es 11100000: tres bits más para la subred y 5 para el equipo. Cada subred tiene 2⁵ = 32 direcciones (30 equipos), y van de 32 en 32:
| Subred | Red | Primer equipo | Último equipo | Difusión |
|---|---|---|---|---|
| 1.ª | 10.110.12.0 | 10.110.12.1 | 10.110.12.30 | 10.110.12.31 |
| 2.ª | 10.110.12.32 | 10.110.12.33 | 10.110.12.62 | 10.110.12.63 |
| 3.ª | 10.110.12.64 | 10.110.12.65 | 10.110.12.94 | 10.110.12.95 |
| 4.ª | 10.110.12.96 | 10.110.12.97 | 10.110.12.126 | 10.110.12.127 |
| … | … | … | … | … |
| 8.ª | 10.110.12.224 | 10.110.12.225 | 10.110.12.254 | 10.110.12.255 |
Comprueba una a mano: ¿en qué subred está 10.110.12.70? 70 = 01000110 y 224 = 11100000; el AND da 01000000 = 64. Está en la tercera, 10.110.12.64, entre .65 y .94.
Contestar 2^h en lugar de 2^h − 2 cuando preguntan por equipos. Las direcciones son 2^h, pero la de red y la de difusión no se pueden asignar.
Para sacar el tamaño de cada subred sin binario, resta el último byte no nulo de la máscara a 256: 256 − 224 = 32, 256 − 192 = 64, 256 − 240 = 16. Las redes van de ese tamaño en ese tamaño.
Protocolos de soporte: ARP, RARP, ICMP y DHCP
IP no trabaja solo. Junto a él, en la capa Internet, hay cuatro protocolos que caen siempre juntos en el examen:
| Protocolo | Qué hace | Truco para recordarlo |
|---|---|---|
| ARP | Convierte direcciones IP en direcciones físicas (MAC) de la red | Address Resolution: «resuelve» la MAC |
| RARP | Permite a un computador que conoce su dirección física obtener una IP | Reverse: al revés que ARP |
| ICMP | Permite a las pasarelas enviar mensajes de error o de control a otras pasarelas o sistemas | Control Message: los avisos |
| DHCP | Protocolo de configuración dinámica de computadoras | Dynamic Host Configuration |
ARP: de IP a MAC
Cuando el portátil manda su datagrama al servidor del campus, ya sabe por el AND que tiene que dárselo a la pasarela 10.110.7.1. Pero para meterlo en una trama Ethernet necesita la MAC de la pasarela, y eso no lo dice ninguna tabla de encaminamiento. Ahí entra ARP:
Sigue los números del dibujo:
- El proceso ARP del portátil (A) envía un broadcast (a la MAC ff:ff:ff:ff:ff:ff) con un ARP request que lleva la IP buscada, 10.110.7.1. El emisor incluye en la solicitud su propio par de direcciones IP-física.
- Todos los procesos ARP de la red lo reciben. La impresora y el compañero ven que no es su IP y lo ignoran.
- El router (B) reconoce su IP y manda un ARP response a A con su dirección física, ya sin difusión.
- A almacena la pareja de direcciones en la caché ARP (en tu ordenador la ves con
arp -a), para no volver a preguntar en cada datagrama. - El proceso IP de A ya puede entregar los datagramas en tramas dirigidas a esa MAC.
Ahora vuelve a mi anécdota: con la máscara 255.255.0.0, el portátil creía que 10.110.12.5 estaba en su red, así que no se lo daba a la pasarela. Hacía un ARP request por 10.110.12.5 dentro del aula 7, y como ese equipo está en otra red, nadie respondía. De ahí el «Destination Host Unreachable».
ARP también tiene que resolver el caso de que la dirección física y la de la interred tengan longitudes distintas. Las soluciones son el mapeo directo (una relación fija, cuando se quiere mantener conectados dos dispositivos) y la asociación dinámica (la de la caché, que se borra cuando no se usa).
RARP: de MAC a IP
RARP (Reverse ARP) realiza la operación inversa: un equipo que solo conoce su MAC pide su IP. Para eso es necesario un servidor RARP en la red física: el cliente solicita una dirección, el servidor mantiene una tabla que relaciona direcciones físicas e IP y, cuando llega una petición, la consulta y responde. Hoy apenas se usa, porque DHCP hace lo mismo y mucho más.
ICMP: los avisos de la red
ICMP permite enviar mensajes de error o de control. Dos detalles que caen: solo reporta los errores a la fuente original de los datos (no a los routers del camino) y sus mensajes van encapsulados en el campo de datos de los datagramas IP. Cada mensaje empieza con un tipo y un código:
| Tipo | Significado | Ejemplo de código |
|---|---|---|
| 0 | Respuesta de eco | 0 |
| 3 | Destino inalcanzable | 0 red, 1 host, 3 puerto, 4 necesidad de fragmentación |
| 5 | Redirección | — |
| 8 | Petición de eco | 0 |
| 11 | Tiempo excedido (el TTL llegó a 0) | — |
El ping que usamos en la práctica de red es exactamente la petición de eco (tipo 8) y la respuesta de eco (tipo 0) de ICMP.
DHCP: la configuración automática
Cuando abres el portátil en la facultad, nadie te teclea la IP: te la da DHCP, que asigna automáticamente la configuración de red a un dispositivo cuando se conecta. Consta de dos componentes: un protocolo para entregar los parámetros de configuración a un equipo desde un servidor y un mecanismo para asignar direcciones de red. Los mecanismos de asignación son dos:
| Mecanismo | Cómo es la dirección |
|---|---|
| Automática | Asignación permanente cuando la estación se conecta la primera vez |
| Dinámica | Préstamo de una dirección durante un tiempo |
Así se consigue una dirección nueva cuando hay dos servidores DHCP en la red:
El cliente lanza un DHCPDISCOVER por difusión, cada servidor responde con un DHCPOFFER, el cliente elige una oferta y la pide con un DHCPREQUEST (también por difusión, para que el otro servidor sepa que no ha sido elegido) y el servidor elegido confirma con un DHCPACK. Discover, Offer, Request, Ack: DORA. Otros mensajes que aparecen en los apuntes:
- DHCPNACK: el servidor rechaza la petición (por ejemplo, al renovar una dirección que ya no vale) y el cliente empieza de nuevo.
- DHCPDECLINE: el cliente comprueba con ARP que la dirección ya está en uso, la rechaza y empieza de nuevo.
- DHCPRELEASE: el cliente libera la dirección.
- Para renovar el préstamo, el cliente manda otro DHCPREQUEST a su servidor y espera un DHCPACK.
Más detalles: el servidor escucha por el puerto 67 y el cliente por el 68 de UDP, y un equipo con varias interfaces usa DHCP para cada una.
Decir que la asignación automática es la que «caduca». Es al revés: automática es permanente y dinámica es un préstamo. Las dos las hace el servidor solo, sin que nadie teclee nada.
Y DNS, que no es de la capa Internet
En la misma parte de los apuntes aparece DNS: los dispositivos en Internet se direccionan por su IP, pero los usuarios los conocen por un nombre. DNS es una aplicación que proporciona la dirección IP de destino a partir del nombre que da el usuario: www.ulpgc.es → 193.145.138.32. Ojo, es de la capa de aplicación: cuando IP entra en juego, el nombre ya se ha traducido.
Errores típicos
Pensar que la máscara solo importa en los routers. El propio portátil la usa para decidir si un destino es de su red. Una máscara más corta de la cuenta (255.255.0.0 en lugar de 255.255.255.0) hace que trate como vecinos a equipos que están detrás del router.
Confundir ARP y RARP en las preguntas cortas. ARP: tengo la IP, quiero la MAC. RARP: tengo la MAC, quiero la IP.
Decir que los routers reensamblan los fragmentos. Los fragmentos viajan sueltos y se juntan en el destino.
Pensar que IP reordena o reenvía. IP no hace control de secuencia, ni de flujo, ni recuperación de errores.
Contar los equipos de una subred como 2^h. Resta siempre la dirección de red y la de difusión.
Compruébalo con Python
Vamos a hacer con Python lo que hacen el portátil y el router: pasar las IP a números de 32 bits, hacer el AND con la máscara, decidir si la entrega es directa o va a la pasarela y, si va al router, recorrer su tabla fila a fila. Los datos son los del artículo. Si quieres probarlo, copia el programa en cualquier intérprete de Python 3 (no necesita nada instalado):
# Compruébalo con Python: ¿entrega directa o al router? (Tema 3 de IC2)
# Datos fijos: el portátil del aula 7 y la tabla del router de la facultad.
def a_bits(ip): # "10.110.7.24" -> un entero de 32 bits
a, b, c, d = (int(x) for x in ip.split("."))
return a << 24 | b << 16 | c << 8 | d # cada byte ocupa su sitio de 8 bits
def a_texto(n): # el camino inverso: entero -> "a.b.c.d"
return ".".join(str(n >> s & 255) for s in (24, 16, 8, 0))
def red(ip, mascara): # la red sale de un AND bit a bit
return a_texto(a_bits(ip) & a_bits(mascara))
def clase(ip): # solo miran los primeros bits del primer byte
b = a_bits(ip) >> 24
return "A" if b < 128 else "B" if b < 192 else "C" if b < 224 else "D"
PORTATIL, MASCARA, PASARELA = "10.110.7.24", "255.255.255.0", "10.110.7.1"
TABLA = [ # router de la facultad: red, máscara, siguiente nodo
("10.110.7.0", "255.255.255.0", "directo"),
("10.110.12.0", "255.255.255.0", "directo"),
("10.200.1.0", "255.255.255.0", "10.110.1.2"),
("0.0.0.0", "0.0.0.0", "10.110.1.1"), # por defecto: todo lo demás
]
def encamina(ip): # filas en orden, como el algoritmo de los apuntes
for destino, mascara, siguiente in TABLA:
if red(ip, mascara) == destino: # N = ID AND máscara; ¿coincide con la fila?
return siguiente
return "descarta" # sin fila por defecto, el datagrama se tira
bits = lambda ip: ".".join(f"{int(x):08b}" for x in ip.split("."))
for etiqueta, ip in (("destino", "10.200.1.80"), ("máscara", MASCARA), ("AND", red("10.200.1.80", MASCARA))):
print(f"{etiqueta:>8} {bits(ip)} {ip}")
print(f"\n{'Destino':<16}{'Clase':<7}{'Red /24':<15}{'Portátil':<17}Router")
for d in ("10.110.7.200", "10.110.12.5", "10.200.1.80", "193.145.138.32"):
misma = red(d, MASCARA) == red(PORTATIL, MASCARA) # ¿la misma red que el portátil?
p, r = ("directo", "-") if misma else ("a " + PASARELA, encamina(d))
print(f"{d:<16}{clase(d):<7}{red(d, MASCARA):<15}{p:<17}{r}")
La clave está en las dos primeras funciones. a_bits coloca cada byte en su sitio con desplazamientos: el primero se mueve 24 posiciones a la izquierda (a << 24), el segundo 16, el tercero 8 y el cuarto se queda donde está; el | los junta en un solo número. a_texto hace el camino de vuelta: desplaza a la derecha y se queda con 8 bits con & 255 (255 = 11111111). Con eso, red es literalmente la definición de los apuntes: un AND bit a bit (&) entre la IP y la máscara.
Esta es la salida real:
destino 00001010.11001000.00000001.01010000 10.200.1.80
máscara 11111111.11111111.11111111.00000000 255.255.255.0
AND 00001010.11001000.00000001.00000000 10.200.1.0
Destino Clase Red /24 Portátil Router
10.110.7.200 A 10.110.7.0 directo -
10.110.12.5 A 10.110.12.0 a 10.110.7.1 directo
10.200.1.80 A 10.200.1.0 a 10.110.7.1 10.110.1.2
193.145.138.32 C 193.145.138.0 a 10.110.7.1 10.110.1.1
Las tres primeras líneas son el dibujo del AND con los mismos bits: el último byte de 10.200.1.80 (01010000) se queda en 00000000 porque la máscara tiene ceros ahí. Debajo, la tabla de decisiones. Vamos con la función que hace de router:
def encamina(ip): # filas en orden, como el algoritmo de los apuntes
for destino, mascara, siguiente in TABLA:
if red(ip, mascara) == destino: # N = ID AND máscara; ¿coincide con la fila?
return siguiente
return "descarta" # sin fila por defecto, el datagrama se tira
Recorre TABLA en orden y, en cada fila, calcula red(ip, mascara), que es el «N = ID AND máscara» del algoritmo. Si coincide con la red de la fila, devuelve su siguiente nodo y ya no mira más; si ninguna coincide, devuelve "descarta". Con nuestra tabla eso nunca pasa, porque la última fila es la ruta por defecto.
¿Y mi anécdota? Es el mismo programa con una sola línea cambiada, MASCARA = 255.255.0.0, ejecutado aparte:
destino 00001010.11001000.00000001.01010000 10.200.1.80
máscara 11111111.11111111.00000000.00000000 255.255.0.0
AND 00001010.11001000.00000000.00000000 10.200.0.0
Destino Clase Red /16 Portátil Router
10.110.7.200 A 10.110.0.0 directo -
10.110.12.5 A 10.110.0.0 directo -
10.200.1.80 A 10.200.0.0 a 10.110.7.1 10.110.1.2
193.145.138.32 C 193.145.0.0 a 10.110.7.1 10.110.1.1
Ahí está mi error en una fila: con /16, 10.110.12.5 da la red 10.110.0.0, la misma que el portátil, y la columna del portátil dice «directo». El portátil no se lo da a la pasarela: lo busca por ARP en el aula 7 y nadie contesta.
Qué observar:
- En la primera tabla, 10.110.7.200 es la única entrega directa: su red (10.110.7.0) es la del portátil, así que el router ni aparece («-»).
- 10.110.12.5 va a la pasarela, pero el router de la facultad lo entrega directamente: el aula 12 es una de sus redes conectadas (fila 2).
- 10.200.1.80 coincide con la fila 3 y sale hacia 10.110.1.2, el router del CPD, igual que en el diagrama del algoritmo.
- 193.145.138.32 es de clase C (193 empieza por 110) y no tiene fila propia: lo recoge la ruta por defecto, 10.110.1.1.
- Con la máscara equivocada cambia la columna del portátil, pero no la del router: el router usa su propia tabla, no la máscara del portátil.
Cambia en el programa la ruta por defecto por otra fila cualquiera (o bórrala) y vuelve a ejecutarlo: verás aparecer «descarta» para www.ulpgc.es. Es la mejor forma de convencerte de para qué sirve esa última fila.
Resumen
| Concepto | Lo que tienes que saber |
|---|---|
| Interred | Redes distintas unidas por routers que parecen una sola; premisas: ocultar la interconexión, sin topología impuesta, independiente de la interfaz de usuario |
| Dirección IP | 32 bits (IPv6: 128), cada byte en decimal con puntos; identifica la conexión y es distinta de la MAC |
| Clases | A empieza por 0, B por 10, C por 110, D (multidifusión) por 1110; cortes del primer byte: 128, 192, 224 |
| Protocolo IP | Datagramas independientes, no orientado a conexión, sin control de secuencia, flujo ni errores |
| Cabecera IPv4 | IHL en palabras de 32 bits (mínimo 5 = 20 bytes), longitud total, identificador, flags DF/MF, offset, TTL |
| Fragmentación | Por la MTU; mismo identificador, offset, MF = 0 en el último; reensamblado en el destino |
| Encaminamiento | Directo (misma red) o indirecto (tabla: red de destino → siguiente nodo); tablas estáticas o dinámicas; ruta por defecto la última |
| Subredes | Bits de la parte de equipo para la subred; máscara 1 = red, 0 = equipo; red = IP AND máscara; 2^h − 2 equipos |
| Protocolos de soporte | ARP IP → MAC, RARP MAC → IP (con servidor), ICMP errores a la fuente, DHCP configuración (DORA, UDP 67/68) |
Tres ideas para llevarte:
- La máscara decide: IP AND máscara da la red, y si coincide con la tuya la entrega es directa; si no, al router.
- Los routers no conocen equipos, conocen redes: prueban su tabla fila a fila y la ruta por defecto recoge el resto.
- IP hace lo justo (llevar datagramas sueltos) y se apoya en otros: ARP para la MAC, ICMP para los avisos, DHCP para la configuración y TCP, más arriba, para la fiabilidad.
Ahora toca demostrarlo: en los ejercicios tipo examen de direccionamiento IP y subredes tienes un cuestionario interactivo con todos los formatos del examen, cálculos de subredes y fragmentos, y cuatro preguntas de desarrollo con su respuesta modelo. Con este tema se acaba la parte de redes; en el siguiente empezamos con los sistemas operativos: qué es un sistema operativo.
Siguiente paso: ejerciciosDireccionamiento IP y subredes — ejercicios tipo examen con máscaras, clases, fragmentos y ARP (y los puertos de DHCP que puse al revés)¿Te ha servido este artículo? Así puedes apoyar SergioLearns →




Qué es un sistema operativo — teoría con tu portátil en una tarde de estudio, una llamada a write() y la CPU que nunca descansa (y los tres programas que no se ejecutaban a la vez)