Resumen rápido de notación de redes CIDR
para redes basadas 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 |
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
.
ipcalc
. Pruébala con este ejemplo similar al que aparece arriba:
ipcalc 192.168.3.24/24
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
).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.
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.0 ⇒ red192.168.3.1→192.168.3.62 ⇒ hosts192.168.3.63 ⇒ broadcast |
Segmento 1 ( .64→.127 ) | 192.168.3.64 ⇒ red192.168.3.65→192.168.3.126 ⇒ hosts192.168.3.127 ⇒ broadcast |
Segmento 2 ( .128→.191 ) | 192.168.3.128 ⇒ red192.168.3.129→192.168.3.190 ⇒ hosts192.168.3.191 ⇒ broadcast |
Segmento 3 ( .192→.255 ) | 192.168.3.192 ⇒ red192.168.3.193→192.168.3.254 ⇒ hosts192.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 |
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).