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.

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.

La interred Arriba, el portátil y el servidor unidos por lo que parece una sola red. Abajo, la red del aula 7, la troncal y la del CPD unidas por los routers R1 y R2. Lo que ve el usuarioPortátil10.110.7.24«Internet»parece una sola redServidor10.200.1.80Lo que hay de verdadRed del aula 710.110.7.0portátil .24Red troncal10.110.1.0entre routersRed del CPD10.200.1.0servidor .80R1facultadR2CPDel datagrama salta de red en red; cada router mira solo la red de destino
Arriba, lo que ve el usuario: una única red. Abajo, lo que hay: redes distintas unidas por routers.

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.

Una dirección IPv4 por dentro Los cuatro bytes de 10.110.7.24 en decimal y en binario, los tres primeros marcados como red y el último como equipo, con la máscara 255.255.255.0 debajo. 10.110.7.24 con máscara 255.255.255.01000001010255 = 1111111111001101110255 = 11111111700000111255 = 1111111124000110000 = 00000000red: 10.110.7 (24 bits)equipo: 24 (8 bits)32 bits = 4 bytes, cada uno en decimal y separados por puntos · IPv6: 128 bits
Cada byte es un número de 0 a 255; la máscara dice cuáles son de red (los de los unos).

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.

Clases de direcciones IPv4 Barras de 32 bits para las clases A, B, C y D con sus bits iniciales 0, 10, 110 y 1110, el reparto entre red y equipo, el rango del primer byte y un ejemplo. 08162431Clase A0red · 7equipo · 241.er byte 0–12710.110.7.24Clase B10red · 14equipo · 161.er byte 128–191172.30.3.5Clase C110red · 21equipo · 81.er byte 192–223193.145.138.32Clase D1110dirección de multidifusión1.er byte 224–239224.0.0.9los bits coral del principio dicen la clase; el resto se reparte entre red y equipo
Mira los primeros bits: 0 es A, 10 es B, 110 es C y 1110 es D (multidifusió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:

ClaseEmpieza porRed / equipoPrimer byteEjemplo
A08 bits / 24 bits0 – 12710.110.7.24
B1016 bits / 16 bits128 – 191172.30.3.5
C11024 bits / 8 bits192 – 223193.145.138.32
D1110dirección de multidifusión224 – 239224.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í haceIP 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 datagramaControl de flujo (no frena al emisor)
Lleva el datagrama de la fuente al destino a través de las redesRecuperació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):

Cabecera del datagrama IPv4 Rejilla de 32 bits de ancho con los campos de la cabecera IPv4 y los valores del datagrama del ejemplo; en violeta, los campos que más caen en el examen. 048161931Versión4IHL5Tipo de servicio0Longitud total1420Identificador4711Flags0 0 0Desplazamiento (offset)0Tiempo de vida64Protocolo6 (TCP)Suma de control…Dirección IP de origen10.110.7.24Dirección IP de destino10.200.1.805 filas de 32 bits = 20 bytes → IHL = 5 · longitud total = 20 + 1400 = 1420 bytes
En violeta, los campos que más caen: versión, IHL, longitud total, identificador, flags, offset y tiempo de vida.

Los campos en violeta son los que más caen. Uno a uno:

CampoBitsQué guarda
Versión4Número de la versión del protocolo (4 para IPv4)
IHL4Longitud de la cabecera, en palabras de 32 bits; el mínimo es 5 (20 bytes)
Tipo de servicio8Precedencia (de 0, normal, a 7, control de red) y los bits D (bajo retardo), T (alta eficiencia) y R (alta fiabilidad)
Longitud total16Longitud del datagrama completo, cabecera más datos, en bytes
Identificador16Número que identifica de forma única al datagrama y ayuda a ensamblar sus fragmentos
Flags3Bit 0 reservado (0), DF (no fragmentar) y MF (más fragmentos)
Desplazamiento13A qué parte del datagrama original pertenece el fragmento
Tiempo de vida8Garantiza que los datagramas no circulan indefinidamente por la red
Protocolo, suma de control8 + 16A quién se entregan los datos (6 = TCP) y la comprobación de la cabecera
Direcciones de origen y destino32 + 32Las 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.

Fragmentación de un datagrama Un datagrama de 1400 bytes de datos llega a una red con MTU 620 y se parte en fragmentos de 600, 600 y 200 bytes con offsets 0, 600 y 1200 y MF 1, 1 y 0. Datagrama original (red 1, MTU 1500: cabe entero)cab.datos: 1400 bytes6001200routerred 2: MTU 620 → caben 600 de datoscab.600 B · offset 0 · MF = 1cab.600 B · offset 600 · MF = 1cab.200 Boffset 1200 · MF = 0Los tres llevan el mismo identificador (4711): el destino los junta por el offseten la cabecera real el offset se guarda en unidades de 8 bytes: 0, 75 y 150
Cada fragmento empieza justo donde marca su offset; solo el último lleva MF = 0.

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:

FragmentoDatosOffsetMF
1600 bytes01 (vienen más)
2600 bytes6001 (vienen más)
3200 bytes12000 (ú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
VentajasCada fragmento se puede encaminar por separado, incluso por redes distintas, y no sobrecarga a las pasarelas
InconvenientesIneficiencia (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:

TablasCómo se construyen¿Se adaptan a los cambios?
EstáticasA mano, considerando la topología de la redNo
DinámicasAutomá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:

El AND con la máscara Los 32 bits de 10.200.1.80, de la máscara 255.255.255.0 y del resultado 10.200.1.0, bit a bit. destino0000101011001000000000010101000010.200.1.80máscara11111111111111111111111100000000255.255.255.0AND0000101011001000000000010000000010.200.1.0donde la máscara tiene 1 el bit pasa tal cual; donde tiene 0 sale 0 → la red es 10.200.1.0
Los tres primeros bytes pasan tal cual y el último se queda a cero: así sale la red.

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:

Cómo decide el router Diagrama de flujo del encaminamiento: extraer la IP de destino, hacer el AND con la máscara de cada fila, comparar y enviar o pasar a la siguiente fila; al lado, la tabla del router de la facultad con la fila de 10.200.1.0 resaltada. 1. Extraer la IP de destino (ID)2. Fila i: N = ID AND máscara¿N = red de la fila?sí3. Enviar al siguiente nodo«directo» = a la propia IP destinono: i + 1sin más filas: descartarúltima filaRed destinoMáscaraSiguiente10.110.7.0255.255.255.0directo10.110.12.0255.255.255.0directo10.200.1.0255.255.255.010.110.1.20.0.0.00.0.0.010.110.1.1Destino 10.200.1.80:fila 1: 10.200.1.0 ≠ 10.110.7.0fila 2: 10.200.1.0 ≠ 10.110.12.0fila 3: 10.200.1.0 = 10.200.1.0  → se envía a 10.110.1.2la fila 0.0.0.0 / 0.0.0.0 (por defecto)coincide con todo: va siempre la última
El router prueba fila a fila: para 10.200.1.80 acierta en la tercera y lo manda a 10.110.1.2.

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.

Subredes en la facultad La dirección 10.110.7.24 partida en red de la facultad (16 bits), subred del aula (8 bits) y equipo (8 bits), y el árbol de la facultad con la troncal, el aula 7 y el aula 12. 10.110.7.24 con máscara 255.255.255.010.110red de la facultad (16 bits)255.255 (1…1)7subred: el aula (8)255 (1…1)24equipo (8)0 (0…0)Facultad10.110.0.0desde fuera se ve una sola red:todo lo que va a 10.110.x.xTroncal10.110.1.0Aula 710.110.7.0Aula 1210.110.12.0la máscara dice dónde acaba la red: 1 = red y subred, 0 = equipo
Una sola red de la facultad hacia fuera; dentro, unos bits de la parte de equipo dicen el aula.

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:

SubredRedPrimer equipoÚltimo equipoDifusión
1.ª10.110.12.010.110.12.110.110.12.3010.110.12.31
2.ª10.110.12.3210.110.12.3310.110.12.6210.110.12.63
3.ª10.110.12.6410.110.12.6510.110.12.9410.110.12.95
4.ª10.110.12.9610.110.12.9710.110.12.12610.110.12.127
……………
8.ª10.110.12.22410.110.12.22510.110.12.25410.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:

ProtocoloQué haceTruco para recordarlo
ARPConvierte direcciones IP en direcciones físicas (MAC) de la redAddress Resolution: «resuelve» la MAC
RARPPermite a un computador que conoce su dirección física obtener una IPReverse: al revés que ARP
ICMPPermite a las pasarelas enviar mensajes de error o de control a otras pasarelas o sistemasControl Message: los avisos
DHCPProtocolo de configuración dinámica de computadorasDynamic 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:

ARP paso a paso El portátil envía un ARP request por difusión preguntando por 10.110.7.1; la impresora y el compañero lo ignoran; el router responde con su MAC y el portátil la guarda en su caché. Portátil (A)10.110.7.243c:a9:f4:07:00:18① ARP request a todos (ff:ff:ff:ff:ff:ff)¿Quién tiene 10.110.7.1? Soy 10.110.7.24, 3c:a9:f4:07:00:18switch del aulaImpresora10.110.7.200no es mi IP: ignoraCompañero10.110.7.31no es mi IP: ignoraRouter (B)10.110.7.1¡es la mía! responde② ARP reply solo a A: 10.110.7.1 está en 00:1a:2b:07:00:01③ Caché ARP de A: 10.110.7.1 → 00:1a:2b:07:00:01 · el siguiente datagrama ya no pregunta
La pregunta va a todos (difusión); la respuesta, solo a quien preguntó.

Sigue los números del dibujo:

  1. 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.
  2. Todos los procesos ARP de la red lo reciben. La impresora y el compañero ven que no es su IP y lo ignoran.
  3. El router (B) reconoce su IP y manda un ARP response a A con su dirección física, ya sin difusión.
  4. 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.
  5. 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:

TipoSignificadoEjemplo de código
0Respuesta de eco0
3Destino inalcanzable0 red, 1 host, 3 puerto, 4 necesidad de fragmentación
5Redirección—
8Petición de eco0
11Tiempo 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:

MecanismoCómo es la dirección
AutomáticaAsignación permanente cuando la estación se conecta la primera vez
DinámicaPréstamo de una dirección durante un tiempo

Así se consigue una dirección nueva cuando hay dos servidores DHCP en la red:

DHCP: una dirección nueva Diagrama de secuencia entre el cliente y dos servidores DHCP: DISCOVER por difusión, dos OFFER, REQUEST por difusión eligiendo el servidor 2 y ACK del servidor 2. Cliente (portátil)Servidor 1Servidor 2DHCPDISCOVER (difusión): ¿hay algún servidor?DHCPOFFER: te ofrezco 10.110.7.40DHCPOFFER: te ofrezco 10.110.7.24DHCPREQUEST (difusión): me quedo con la del servidor 2DHCPACK: es tuya, préstamo de 8 horasel cliente comprueba con ARP que nadie usa la IP → configuradoUDP: el servidor escucha en el puerto 67 y el cliente en el 68 · si algo falla: DHCPNACK o DHCPDECLINE
Discover, Offer, Request, Ack: el orden que cae en el examen (DORA).

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:

  1. 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 («-»).
  2. 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).
  3. 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.
  4. 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.
  5. 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

ConceptoLo que tienes que saber
InterredRedes 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 IP32 bits (IPv6: 128), cada byte en decimal con puntos; identifica la conexión y es distinta de la MAC
ClasesA empieza por 0, B por 10, C por 110, D (multidifusión) por 1110; cortes del primer byte: 128, 192, 224
Protocolo IPDatagramas independientes, no orientado a conexión, sin control de secuencia, flujo ni errores
Cabecera IPv4IHL en palabras de 32 bits (mínimo 5 = 20 bytes), longitud total, identificador, flags DF/MF, offset, TTL
FragmentaciónPor la MTU; mismo identificador, offset, MF = 0 en el último; reensamblado en el destino
EncaminamientoDirecto (misma red) o indirecto (tabla: red de destino → siguiente nodo); tablas estáticas o dinámicas; ruta por defecto la última
SubredesBits 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 soporteARP IP → MAC, RARP MAC → IP (con servidor), ICMP errores a la fuente, DHCP configuración (DORA, UDP 67/68)

Tres ideas para llevarte:

  1. 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.
  2. Los routers no conocen equipos, conocen redes: prueban su tabla fila a fila y la ruta por defecto recoge el resto.
  3. 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 →

Sigue aprendiendo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *