Subnetting, subredes y máscaras de red
Para hoy, me gustaría explicar el concepto de subred (subnet) y máscaras de red o máscaras de subred. Aunque hay amplia cantidad de información muy interesante en internet y, también, en la wikipedia, creo que va a ser conveniente preparar un artículo que explique de modo resumido qué es una subred y para qué sirven las máscaras de red. La idea es ir un poco más allá de la simple configuración de nuestra red local de casa y saber para qué es el numerito 255.255.255.0 que todos ponemos sin pensar en la máscara de subred que nos pide el equipo o por qué, a veces, el ordenador “adivina” cuál es la máscara de subred.
Para empezar, un resumen de cómo se numeran las direcciones IP.
Escribí un artículo anterior que hablaba del máximo número de direcciones IP que podíamos configurar a partir del modelo IPv4 que llevamos usando 30 años.
En él, hacíamos una descripción de las redes IPv4 de 32bits, que no era otra cosa que un conjunto de cuatro octetos, osea, cuatro grupos de 8 bits cada uno:
213.15.12.167 = 11010101.00001111.00001100.10100111
Si abrimos una consola de comandos (o terminal, o cmd, o como quieras llamarlo) y escribimos ipconfig ó ifconfig (linux), nos dará un resultado parecido a ésto:
Direc. inet:192.168.1.30 Difus.:192.168.1.255 Másc:255.255.255.0
La primera dirección nos indica la IP del equipo y la última dirección nos muestra la máscara de red.
La dirección IP suele estar bastante clara, pero cuando hablamos de la máscara de red, no todo el mundo sabrá decirte a qué se refiere o qué significa.
Existen 3 clases de direcciones: Clase A, Clase B y Clase C que corresponden con el prefijo de red de la dirección. Así, tenemos direcciones como las siguientes:
10.1.1.1 180.192.192.128 192.168.1.1
Si tomamos el primer número y lo pasamos a binario, obtenemos:
1010 = 000010102 18010 = 101101002 19210 = 110000002
Salvo error en la conversión. Los tres primeros bits de la numeración en binario nos indican qué clase de red es cada dirección:
10 es 000, o clase A 180 es 101, o clase B 192 es 110, o clase C
Para cada clase tenemos un máscara de red concreta, que indicará qué parte reservamos a direcciones de red y qué parte reservamos para direcciones de hosts (o de ordenadores):
10 es 000, o clase A, máscara de red 255.0.0.0 180 es 101, o clase B, máscara de red 255.255.0.0 192 es 110, o clase C, máscara de red 255.255.255.0
Más fácil de ver si colocamos las máscaras en notación binaria:
11111111.00000000.00000000.00000000 11111111.11111111.00000000.00000000 11111111.11111111.11111111.00000000
Estas máscaras nos dicen que los 1 corresponden con direcciones de red y los 0 se destinan a hosts.
El número de redes de cada clase se puede obtener conociendo cuántos bits a 1 tenemos y restando el bit destinado a la definición de red (1-A, 2-B, 3-C) con la siguiente tabla sencilla:
Clase A 11111111 2⁸⁻¹ = 128 redes // 00000000.00000000.00000000 2²⁴-2 = 16777214 hosts Clase B 11111111.11111111 2¹⁶⁻² = 16384 redes // 00000000.00000000 2¹⁶-2 = 65534 hosts Clase C 11111111.11111111.11111111 2²⁴⁻³ = 2097152 redes // 00000000 2⁸-2 = 254 hosts
La máscara de subred
Puesto que, por definición, a cada clase le corresponde una máscara, siempre que configuramos nuestro ordenador con la ip, éste es capaz de mostrar la máscara automáticamente, con lo que es bastante normal que no nos preguntemos para qué sirve esta máscara. En un entorno doméstico en el que apenas hay unos pocos hosts (ordenador, portátil, teléfonos móviles), no parece importante ir más allá con las subredes, con lo que nos bastará con una máscara éstandar de red de clase C 255.255.255.0 que es la habitual. De este modo, en casa podremos tener un máximo de 254 equipos en una misma red.
En caso de que lo que queramos sea administrar una oficina que esté dividida en varios departamentos y que formen redes independientes, necesitaremos utilizar la máscara de subred o diferentes enrutadores para separar las redes.
Una subred dentro de una red se configura “tomando” bits de la parte que corresponde a los hosts:
Por ejemplo: 255 255 255 0 Clase C 11111111.11111111.11111111.00000000 [ red ].[ hosts] 255 255 255 192 11111111.11111111.11111111.11000000 [ red ] sr[hosts] En este caso hemos tomado "prestados" dos bits de la zona hosts, de tal modo que podemos crear 2² = 4 subredes, permitiendo la existencia de, por ejemplo, 4 departamentos separados cuyos ordenadores no podrían verse entre sí. El número de IPs disponibles para hosts quedaría en 2⁶-2=62. Restamos 2 porque la primera dirección corresponde con la dirección de red y la última es la dirección de multidifusión (broadcast).
Ejemplo real
Vamos a crear una red local con 3 departamentos separados entre sí. Diseñar una tabla con todas las direcciones: – En primer lugar, elegimos la clase de la red que vamos a preparar. Para este caso y
sabiendo que se trata de una red local pequeña, elegimos una clase C, por ejemplo 192.168.1.0.
192.168.1.0 con máscara 255.255.255.0
Para montar 3 subredes se requieren 2bits = 2²=4 totales, de las que usaremos 3.
Pasamos la máscara a binario: 255.255.255.0 = 11111111.11111111.11111111.00000000 Tomamos dos bits de la parte hosts: 11111111.11111111.11111111.11000000 = 255.255.255.192 En esta ocasión no necesitamos saber a qué subred pertenece la dirección IP 192.168.1.0, pero si fuera necesario porque no lo hemos ubicado, haríamos una multiplicación (AND) de la dirección por la máscara de subred: 11000000.10101000.00000001.00000000 ->192.168.1.0 11111111.11111111.11111111.11000000 ->255.255.255.192 ----------------------------------- 11000000.10101000.00000001.00000000 -> 192.168.1.0 Las subredes posibles son: 11000000.10101000.00000001.00000000 -> 192.168.1.0/26 11000000.10101000.00000001.01000000 -> 192.168.1.64/26 11000000.10101000.00000001.10000000 -> 192.168.1.128/26 11000000.10101000.00000001.11000000 -> 192.168.1.192/26 Y su dirección se obtiene poniendo a cero todos los bits correspondientes a host
Para obtener el primer host de la subred, ponemos todos los bits de la parte de host a 0 excepto el último:
11000000.10101000.00000001.00000001 11000000.10101000.00000001.01000001 11000000.10101000.00000001.10000001 11000000.10101000.00000001.11000001
Para obtener la dirección del último host, ponemos todos los bits de la parte host a 1, excepto el último, que será 0:
11000000.10101000.00000001.00111110 11000000.10101000.00000001.01111110 11000000.10101000.00000001.10111110 11000000.10101000.00000001.11111110
Para obtener la dirección de multidifusión o broadcast, ponemos a 1 todos los bits de host:
11000000.10101000.00000001.00111111 11000000.10101000.00000001.01111111 11000000.10101000.00000001.10111111 11000000.10101000.00000001.11111111
Y para poder entender de modo humano todos estos bits, los pasamos a decimal y obtenemos la tabla de subredes:
Dpto. | Subred | Broadcast | Hosts | Máscara |
---|---|---|---|---|
1o | 192.168.1.0/26 | 192.168.1.63 | 192.168.1.1 a 192.168.1.62 | 255.255.255.192 |
2o | 192.168.1.64/26 | 192.168.1.127 | 192.168.1.65 a 192.168.1.126 | 255.255.255.192 |
3o | 192.168.1.128/26 | 192.168.1.191 | 192.168.1.129 a 192.168.1.190 | 255.255.255.192 |
4o | 192.168.1.192/26 | 192.168.1.255 | 192.168.1.193 a 192.168.1.254 | 255.255.255.192 |
Usando esta tabla podremos ubicar cualquier host en cualquiera de las subredes sin necesidad de hacer nuevos cálculos. Se trataría, pues, de un mapa ideal de nuestra red local.
Por ejemplo, para instalar un ordenador nuevo en el tercer departamento, podríamos elegir cualquier dirección IP entre la 192.168.1.129 y la 192.168.1.190 que esté disponible. Este ordenador sólo podría ver ordenadores de su subred correspondiente, de tal modo que cada departamento comparte recursos sólo con ordenadores que forman parte de esa subred.
Así, mediante el uso de máscaras de red, podremos diseñar cualquier tipo de red en nuestra casa u oficina. Por supuesto, esta tarea sencilla se puede convertir en un auténtico quebradero de cabeza cuando se trata de grandes empresas con cientos de hosts divididos en muchos departamentos, pero los cálculos que se realizan son los mismos. Si planteamos correctamente la red desde el principio, después será mucho más fácil ubicar equipos en los departamentos o redes que nos interesen.
Artículo Copyleft con estos permisos.
Fuente: Memorieta personal. Es posible que existan errores
Corrección a 26-08-2014. Había un error en la conversión a binario del decimal “180”. Indicaba que era clave B por ser 010…., lo cual es un error. Si echáis un ojo, ya está corregido ;). Los tres primero números en binario indican la clase. Buscamos dónde aparece el primer cero y ese será el indicador: 000, aparece en primera posición – Clase A; 101, aparece en segunda posición -Clase B-; 110, aparece en tercera posición -Clase C.