Notación de Redes y Segmentación

Resumen rápido de notación de redes CIDR para redes basadas en IPv4.

Propiedades de una red en IPv4

Una red en IPv4 es denotada por un número compuesto por cuatro octetos, agregado a una máscara señalada por una cantidad ordinal o un valor hexadecimal. Este formato se llama CIDR. Se puede describir como sigue:

Red: aa.bb.cc.dd/M, donde:

  • aa.bb.cc.dd son los cuatro octetos que señalan la red. Corresponden a la primera dirección de red que está disponible para esa red y a la que no se asocia host (máquina) alguno.
  • M es la máscara de red y es un valor binario que permite enmascarar (de ahí el nombre) una petición IP para determinar si la dirección que se está pidiendo existe en la misma red que la IP que hemos asignado. Se denota en uno de dos formatos:
    • n donde n es un número ordinal entre 1 y 31. Denota el número de bits a 1 que contiene la máscara, contados desde el bit más significativo del primer octeto (el “primer bit”).
    • xx donde xx es un número decimal u hexadecimal (debe deducirse del contexto) indicando el valor decimal de los bits de la máscara contando desde el primer cero, de modo de disociar la red del host. No se usa mucho esta notación.

Notación
bin 1100 0000 1010 1000 0001 1000 0100 0001
hex b0 a8 18 41
dec 192' 168 24 65
Estructura de una dirección de red IPv4 en notaciones binaria (bit a bit), hexadecimal (octeto) y decimal (dirección humana)

Dado que una dirección IP tiene 32 bits (4 octetos), la cantidad de combinaciones posibles está dada por:

2^32  == 4.294.967.296

La importancia de la máscara de red radica en que el Sistema Operativo la utilizará para determinar dos parámetros de red, aplicándola como una máscara AND a la dirección IP. Estos parámetros determinan a qué dirección de red se hace “broadcasting” (llamada a toda la red en busca de un host), así como cuándo una petición de host se envía a un gateway.

Ejemplos:

Notación CIDR Ejemplo de Host Explicación
192.168.0.0/16 192.168.0.1 — 192.168.255.254 La máscara tiene 16 bits (2 octetos) a uno,
indicando que los primeros 2 octetos (192.168) representan el identificador de red;
los dos octetos restantes pueden identificar a los hosts por lo cual permiten hasta ffff = 256² = 65.536 direcciones de red, es decir, 65.634 hosts.
10.0.0.0/24 10.0.0.1, 10.0.0.230 La máscara tiene 24 bits (3 octetos), dejando un octeto para direcciones, es decir, 254 hosts.
Estos hosts van numerados de 10.0.0.1 a 10.0.0.254.
10.0.1.192/26 10.0.1.193 — 10.0.1.254 La máscara tiene 26 bits: 3 octetos más 2 bits.
Esto significa que de las 256 direcciones que podemos usar (1 octeto), esta red sólo admite 64 (8-2 = 6 bits).
Para determinar cuál de los 4 segmentos resultantes (256 = 64 × 4) es el que identifica nuestra red,
miramos al último octeto de la IP que dice 192, es decir, la red parte con la IP 192 y cubre 64 direcciones, es decir, llega hasta 255.
El rango de IPs de esta “subred” es entonces el indicado en los ejemplos de host.

Para determinar la red a la cual pertenece la IP, se hace una operación AND con la máscara de red. Esto deja activos los bits que corresponden a la numeración de la red en cuestión. Por ejemplo:

Dirección IP (en hexadecimal) c0.a8.00.18 = 192.168.3.24
Máscara de red ff.ff.ff.00
× (AND) c0.a8.00.00 = 192.168.3.0 (red)
~× (NAND) 00.00.00.18 = .18 (host)

Por tanto, la IP pertenece a la red 192.168.3.0. Puesto que la máscara de red tiene un octeto de host (ff.ff.ff.00), es decir, 8 bits para numeración de direcciones, acepta 2^8 = 256 direcciones. Esto es, descontanto las direcciones especiales de red (.0) y broadcast (.255), tenemos una red que acepta 254 direcciones, empezando en 192.168.3.1 y terminando en 192.168.3.254.

Una herramienta útil en la consola de Linux para determinar las características de una dirección de red es ipcalc. Pruébala con este ejemplo similar al que aparece arriba:
ipcalc 192.168.3.24/24

Otros conceptos de red IPv4

  • Host: es una de las direcciones de una red a las cuales es posible asignar anfitriones (“hosting”). Es decir, en estas direcciones se puede colocar una interface de red de un PC, un celular, un Nintendo1) o cualquier otro aparato con conectividad IPv4.
  • {!Gateway:también llamado “pasarela”}}: es una dirección dentro de la red, a la cual un paquete será enviado por el Sistema Operativo cuando se determine que el host deseado no pertenece a la misma red. El gateway es el responsable de transmitir ese paquete a la red adecuada (en estricto rigor, la tarea es de un router pero las mecánicas de routers y gateways son similares y están usualmente integradas; además el nombre de “gateway” es el que ha quedado).
    • Ejemplo, si estás en la red 192.168.10.0/24 (192.168.10.1 en adelante, 254 hosts), y envías una petición de IP buscando el host 192.168.8.24, el S.O. determinará que este IP está fuera de tu red (pues la máscara 192.168.8.24 AND 0xff.ff.ff.00 entrega un resultado distinto a la máscara 192.168.10.xxx AND 0xff.ff.ff.00), le enviará el paquete a un gateway (usualmente para esta red 192.168.10.254) para que éste se encargue de “rutearlo” a la red adecuada (probablemente 192.168.8.0/24).
  • Broadcast: dirección a la cual se ejecutan los ping o llamadas ICMP de broadcast, es decir, conexiones que deben alcanzar a todos los hosts de la red, y se basa en usar la máscara de red para cubrir todas las direcciones posibles que pertenecen a una misma red. Usualmente se requieren privilegios especiales para formar y enviar los paquetes TCP especiales que requiere usar esta dirección.

Concepto de Subred

Ya se vio que con la máscara (netmask) es posible identificar las direcciones que pertenecen a nuestra red v/s las que deben consultarse a un gateway externo. En algunos casos en los que es necesario, es posible “segmentar” una red en subredes las cuales pueden estar en contacto entre sí por medio de un gateway, lo cual es vital para un uso más eficiente y controlado de recursos.

Por ejemplo, el segmento de red 192.168.3.0/24, que compone 256 direcciones, podría dividirse en cuatro subredes, cada una de 64 direcciones (64×4=256). Las máquinas de cada subred pueden verse la una a la otra; sin embargo para que una subred contacte a otra deben pasar por un gateway (que, idealmente, es común a todas las subredes).

Esto se hace agregando bits a 1 en la máscara de subred, de modo de ir ocupando más bits para determinar las redes y menos bits para determinar los hosts. Después del octeto base de cada clase de red (16, 16^2 o 16^3 redes), cada bit extra a 1 duplica la cantidad de redes posibles y reduce a la mitad la cantidad de direcciones posibles.

Ejemplo

En nuestro ejemplo, basta que agreguemos dos bits a la definición de la red, lo cual la convierte en 192.168.3.0/26. Si consideramos la máscara de red con el octeto que nos interesa escrito en binario, podemos ver el efecto que esto tiene sobre la definición de la red:

Dirección de red Octeto 3 Octeto 2 Octeto 1 Octeto 0
192.168.30.0/26 1111 1111 1111 1111 1111 1111 1100 0000

Puesto que ahora tenemos 24+2=26 bits para señalar las redes, dentro de nuestro segmento de una de 256^3 redes posibles. Al estar ocupando dos bits extra, podemos direccionar 2^2=4 nuevas redes, y como nos quedan 6 bits para direcciones, podemos asignar 2^6=64 direcciones en cada subred. Puesto que cada una de estas subredes se comporta igual que una red normal, la primera dirección asociada es la de la red, y la última es la dirección del broadcast. Veamos en una tabla cómo quedan asociadas las direcciones.

Segmento en 192.168.3.0/26 Direcciones
Segmento 0
(.0→.63)
192.168.3.0red
192.168.3.1→192.168.3.62 ⇒ hosts
192.168.3.63 ⇒ broadcast
Segmento 1
(.64→.127)
192.168.3.64red
192.168.3.65→192.168.3.126 ⇒ hosts
192.168.3.127 ⇒ broadcast
Segmento 2
(.128→.191)
192.168.3.128red
192.168.3.129→192.168.3.190 ⇒ hosts
192.168.3.191 ⇒ broadcast
Segmento 3
(.192→.255)
192.168.3.192red
192.168.3.193→192.168.3.254 ⇒ hosts
192.168.3.255 ⇒ broadcast

Puesto que ahora la máscara de red tiene 26 bits, hemos de traducirla a nuestro sistema decimal, lo cual nos da el valor 255.255.255.192 que es el que asignamos a cada una de las subredes. Por tanto las subredes quedan definidas de la siguiente forma:

Subred Dirección de red / CIDR Máscara de red
octeto final dec hex bin
S0 192.168.3.0/26 255.255.255.192 (c0; 1100 0000)
S1 192.168.3.64/26 ídem a la anterior
S2 192.168.3.128/26 ídem a la anterior
S3 192.168.3.192/26 ídem a la anterior

Calculando los tamaños y máscaras de subred

Para calcular la máscara (decimal) que necesitamos para armar una subred es bastante fácil.

Solo tenemos dos variables: en qué lase está nuestra red, lo cual indicamos por el número de bits designados a hosts Q, y cuántas subredes deseamos armar, que debe ser un número potencia de 2 y designareos por N.

Supongamos que tenemos un segmento de red clase C (Q=8 por tanto tenemos 256 direcciones) y queremos segmentarla en N subredes, donde N debe ser una potencia exacta de 2. Las siguientes ecuaciones nos serán de utilidad:

Calcular Fórmula En nuestro ejemplo
Tamaño de la máscara a uno
agregado a loc octetos de host
L = log(N) / log(2) L = 2
Número de direcciones X = 2^(Q-L) X = 64
Octeto de la máscara (decimal) M = 2^Q - X M = 255.255.255.192
Número de hosts por subred
(descont. red y broadcast)
H = X - 2 H = 62
Dirección de red
n-ésima subred
Rn = n×X 192.168.3.0
192.168.3.64
192.168.3.128
192.168.3.256

Para redes clase B o A el procedimiento es exactamente igual, solo que al final debemos convertir el valor de la máscara, que usa dos o tres octetos, en los valores de los tres octetos separados, lo cual es un simple procedimiento aritmético de sexto básico (divisiones y restas).

Ver También

1)
en mis sueños