Calcular máscaras de red

Una dirección IP suele ir acompañada por una máscara de red, la cual podemos verla en un grupo de cuatro números separados por puntos o en un número tras una barra, la de dividir.

Esa máscara nos identifica la red en la que esa dirección IP está, nos dice el tamaño de la misma, nos da la dirección de red y la de broadcast y nos indica si dos direcciones IP se van a poder ver sin usar un router o no.

Raul comentó en Ivoox que le gustaría que comentara algo de redes desde lo más básico, y pensando en algo donde la gente se hiciera lío he pensado en las máscaras de red, que es algo que hay que usar bastante a menudo y ayuda mucho tener esto claro, porque andar con el ipcalc para arriba y para abajo no es demasiado cómodo la verdad.

Este es un tema que siempre se explica pasando a binario y trabajando en binario, algo que está muy bien para entender cómo funciona, pero no para calcular nada, porque somos personas y las personas pensamos en base 10, no en binario. Supongo que si en vez de tener 10 dedos en las manos tuviéramos sólo 2 trabajaríamos en binario, pero no es así.

Por contra, los ordenadores trabajan en binario, así que para que la programación sea más sencilla y eficiente muchas veces se trabaja en binario, pero es para hacerle la vida más fácil al ordenador, router o lo que sea, no a nosotros.

Así que voy a contaros un poco de donde viene hablando en binario, pero luego el cálculo os lo enseñaré a hacer en base 10, es decir, con números normales, así que para hacer el cálculo os va a hacer falta saber sumar, restar, multiplicar y dividir, si sabéis hacer estas cuatro operaciones lo tenéis todo, prometo explicarlo, o al menos intentar explicarlo de forma fácil, tal y como yo lo hago porque yo no paso a binario para calcular máscaras, sólo faltaba.

La máscara de red de una dirección IP lo que hace es indicar qué parte de la dirección es red y qué parte es host, todas aquellas que compartan la misma red serán visibles entre si en un dominio de broadcast, es decir, sin router, si no comparten la misma red necesitarán un router porque no estarán en la misma red.

La parte de red se identifica con la parte de la máscara que tenga 1s y la parte de host con la parte que tenga 0s.

Por ejemplo, si tenemos la dirección IP 192.168.1.15 y una máscara 255.255.255.0 significará que cualquier dirección que tenga 192.168.1. lo que sea estará en la misma red, vamos a ver porqué.

255 en binario son 8 1s y una dirección IP está formada por cuatro números que son 4 octetos, es decir, cuatro grupos de 8 bits o números binarios.

Así pues 255 es 11111111, podéis calcularlo si queréis, pero es 2⁸ – 1. Vamos a ver esto que representa, 2 significa el número posible de estados, es decir, o 0 o 1, esto es fácil.

Ahora vamos a explicar el exponente, si tenemos 2⁰ es 1, realmente cualquier número elevado a 0 es 1, ese número va a representar el bit de la derecha, de los 8 1s, 2⁰ representa el de la derecha, así pues el segundo empezando por la derecha será 2¹, luego 2² y así hasta 2⁷.

Pero antes hemos dicho que 255 es 2⁸ – 1 y el último número es 2⁷.

Así pues 2⁷ + 2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰ = 255

Y esto es igual a 2⁸ – 1, porque si al 255 que es la suma de antes le sumamos 1 tendremos 2⁸ y es más corto poner 2⁸ – 1  que 2⁷ + 2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰

Son 8 números, pero como el 0 cuenta llegamos hasta el 7, por eso el más grande es 2⁷.

Vale, esto que os acabo de contar es sólo para que sepáis como descomponer el 255, sin más, es más que anda algo cultural, que lo sepáis está bien, pero no lo vais a necesitar de forma práctica, así que no sufráis por la borrachera de los exponentes.

Bien, si tenemos 255.255.255.0 significa que el último octeto es el que representa la parte de host, o lo que es lo mismo, todas las IPs que empiecen por 192.168.1. estarán en la misma red porque el último octeto es 0 y es común.

Si pasáis a binario la IP y debajo ponéis la máscara también en binario, veréis que en el último octeto podéis poner la IP que os de la gana, que la máscara son 8 0s con lo que estarán en la misma red.

Esto que os he contado, esta muy bien, pero de forma práctica no sirve para calcular nada, aunque bueno, yo tuve un profesor en la carrera que el pobre sabía lo que sabía en aquella época y sólo era capaz de calcular en binario y así lo explicaba y claro esas cosas al final pasan factura y la gente no se mueve con la soltura que debiera.

Os imagináis para calcula una máscara poneros a pasar a binario cada uno de los números, pufff, que perece y que poco eficiente cuando se hace de cabeza.

Antes de contaros el método tenéis que saber que hay dos nomenclaturas para las máscaras de red, la del 255.255.255.0 que os he contado o la /24, en ambos casos se representa lo mismo que son 24 1s y 8 0s, es decir, los 24 primeros números en binario son la parte de red y el resto la de host.

Si en vez de un /24 la máscara fuera un /25 ¿qué pasaría? la máscara de red sería 255.255.255.128, el 128 me lo he sacado de pasar a decimal un 1 y siete 0s, no es magia.

¿Esta máscara qué representa? pues como hemos añadido un bit obviamente va a ser la mitad, para los que hayáis estudiando ensamblador lo que hemos hecho ha sido un desplazamiento.

Pero lo que vamos a hacer es lo siguiente, ahora todos atentos, vamos a escribir en un papel, también vale hacerlo mentalmente 256 y le vamos a restar el último número de la máscara que no es 255, en este caso 128, así pues 256 – 128 = 128, pues esas son las direcciones que tiene la red.

Si el último número es un 0 sería 256 – 0 = 256, si el último número es 224 el resultado sería 256 – 224 = 32, ¿cómo se os ha quedado el cuerpo? no hay que pasar pasar a binario nada, viendo la máscara de red ya sabéis automáticamente, bueno, después de hacer una miserable resta cuantos hosts tiene la red.

Vamos a poner otro ejemplo, la máscara es 255.255.255.192 ¿cuántos elementos tiene la red?, pues 256 – 192 = 64, ya está, así de fácil.

Ahora vamos a ponerlo más difícil, la máscara es 255.255.254.0 ¿cuántos elementos tiene la red? pues 256 – 254 = 2, pero ojo, que no es el último octeto, así que tendremos que multiplicar ese número por 256 que sale de 256 – 0, así el resultado será 2 * 256 = 512, tenemos una red de 512 elementos.

Si fuera 255.255.248.0 tendríamos por un lado 256 – 248 = 16 y por otro lado 256 – 0 = 256, así pues 16 * 256 = 4096

De todos modos ya os digo que las posibilidades de encontraros con una red tan grande son muy muy muy bajitas porque habría que despedir al administrador de esa red por inepto, pero bueno, eso es una opinión.

Vale, ahora vamos al siguiente paso, tenemos la IP 192.168.1.100 con la máscara 255.255.255.252 y queremos saber si está en la misma red que la 192.168.1.90

Lo primero será calcular la red que será de 256 – 252 = 4 nodos. Eso significa que la primera red será desde la 192.168.1.0 hasta la 192.168.1.3, otra red será desde la 192.168.1.4 hasta la 192.168.1.7 y así todo, ¿cómo calculamos la red en la que está la .100? pues diviendo 100 / 4 = 25, esa IP está en la red 25, empezando desde el principio y la .90 está en la red 90 / 4 = 22,5 realmente el decimal nos da exactamente igual ahora, así pues la IP .90 está en la red número 22, así que no están en la misma red y no se verán.

No se si ha quedado claro esto, pero si sabemos que la red es de pongamos 8 direcciones, si dividimos la parte de host por ese número sabremos en qué grupo está y seremos capaces de ver si dos IPs están en el mismo grupo o no.

Ahora vamos a apretar un poquito más, si la red es 255.255.252.0 y queremos saber si la IP 192.168.1.5 y la 192.168.3.23 se van a ver, ¿cómo lo hacemos? Pues aquí el primer octeto que no es 255 es 252, así que 256 – 252 = 4 y lo que hacemos es dividir el tercer octeto por 4, así pues 1 / 4 = 0 y 3 / 4 también es 0, así que ambas direcciones están en la misma red.

Hemos mirado sólo el tercer octeto, porque el cuarto todo son 0s y nos da igual pues siempre estarán en la misma red y es el tercer octeto donde se va a definir el límite de la red.

Y ya el último y definitivo paso, una red tiene siempre dos direcciones especiales, que son la primera y la última, la primera será la de red y la última será la de broadcast y estas direcciones no se podrán usar, salvo honrosas excepciones y sabiendo muy bien que se hace.

Así pues si tenemos una red de 4 elementos, realmente tendremos la primera dirección que será la de red, no usable, la segunda y la tercera serán usables y la última será no usable por ser la de broadcast.

Para saber si es la dirección de red cuando hagamos la dirección tiene que dar como resultado un número entero, sin decimales o dar como resto de la división 0 y para saber si es la de broadcast el resto tiene que ser igual al número que defina el tamaño de la red menos 1, o si preferís calcularemos el siguiente y nos dará de resto 0.

Vamos con un ejemplo, tenemos la IP 192.168.1.65 y la máscara 255.255.255.252.

256 – 252 tenemos que es una red de 4 elementos

65 (el último número) / 4 = 16 y de resto tenemos 1, así que es la primera dirección útil del rango

Si la IP fuera 192.168.1.64. Haríamos 64/4 = 16 y de resto 0, así que sería la dirección de red y si fuera 67 nos daría de resto 3, que sería 4 – 1, y sería la de broadcast

Si fuera una red de 128 y el resto fuera 127 sería de broadcast, si fuera una red de 32 y el resto fuera 31, también sería de broadcast y así.

Y ahora sólo queda añadir una cosa, /24, /25, /26 … esa nomenclatura y su correspondencia con las máscaras del tipo 255.255.255.0 hay que saberselas o saber calcular.

Las máscaras pueden ser 255, 254, 252, 248, 240, 224, 192, 128 ó 0 siempre, y eso sería /32, /31, /30, /29, /28, /27, /26, /25 o /24, esto os recomiendo apuntar en un panel las primeras veces hasta que os lo sepáis.