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 [Link] 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:
[Link] = 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:[Link] Difus.:[Link] Másc:[Link]
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:
[Link]
[Link]
[Link]
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 [Link]
180 es 101, o clase B, máscara de red [Link]
192 es 110, o clase C, máscara de red [Link]
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 [Link] 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 [Link].
[Link] con máscara [Link]
Para montar 3 subredes se requieren 2bits = 2²=4 totales, de las que usaremos
3.
Pasamos la máscara a binario:
[Link] = 11111111.11111111.11111111.00000000
Tomamos dos bits de la parte hosts:
11111111.11111111.11111111.11000000 = [Link]
En esta ocasión no necesitamos saber a qué subred pertenece la
dirección IP [Link],
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 ->[Link]
11111111.11111111.11111111.11000000 ->[Link]
-----------------------------------
11000000.10101000.00000001.00000000 -> [Link]
Las subredes posibles son:
11000000.10101000.00000001.00000000 -> [Link]/26
11000000.10101000.00000001.01000000 -> [Link]/26
11000000.10101000.00000001.10000000 -> [Link]/26
11000000.10101000.00000001.11000000 -> [Link]/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
.
[Link] [Link] a [Link]
1o [Link]/26
3 [Link] 92
[Link]
[Link]/2 [Link] a [Link]
2o
6 27 [Link] 92
6
[Link]
[Link]/ [Link] 9a [Link]
3o
26 91 [Link] 92
0
[Link]
[Link]/ [Link] 3a [Link]
4o
26 55 [Link] 92
4
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 [Link] y la
[Link] 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.
Nos llega un aviso de un alumno de Grado Medio SMR del IES Luis Braille
indicando que hay un error en el artículo:
————— mensaje —————
Hola, soy estudiante de SMR, acabe en vuestra web buscando una duda sobre
lo que estamos dando ahora en clase, en uno de los módulos, mi duda era
sobre subnetting, pero he encontrado un error en vuestra explicación en este
<[Link] post.
Las subredes posibles son:
11000000.10101000.00000001.00000000 -> [Link]/26
11000000.10101000.00000001.01000000 -> [Link]/26
11000000.10101000.00000001.10000000 -> [Link]/26
11000000.10101000.00000001.11000000 -> [Link]/26
Con 2 bit para la subred sólo se pueden hacer 2 subredes, hay que descartar
las direcciones 00 y 11 por que hay conflicto con la dirección de red o de
broadcast de la red (de la red superior), no sé si me explico, en la
primera subred que habéis puesto como identificador de red [Link] y el
de la red (no la subred) es [Link], o al menos así me lo han explicado.
Si no es un error y es algo que aun no hemos dado en clase, siento las
molestias, pero me parecía importante decirlo ya que vuestro enlace sale
el segundo (después de una calculadora de ips) al buscar “subnetting” en
google y estoy seguro de que mucha gente lo leerá y si es un error, no
puedo decir que sea el único, ya que solo he leído la parte que me tenia en
duda (que la verdad, no encontré, era sobre subredes dentro de subredes).
————— fin de mensaje——-
Como no puede ser de otro modo, tenemos que agradecer al estudiante por su
apunte y porque me obliga a revisar y recordar el post 😉
La respuesta que le enviamos es:
—————- 8< -------------------------------- Ya tengo lo que da lugar a la confusión.
Mira: Las subredes posibles son: 11000000.10101000.00000001.00000000 ->
[Link]/26
11000000.10101000.00000001.01000000 -> [Link]/26
11000000.10101000.00000001.10000000 -> [Link]/26
11000000.10101000.00000001.11000000 -> [Link]/26
Y su dirección se obtiene poniendo a cero todos los bits
correspondientes a host
Ahí tienes las direcciones de las subredes. Respecto a los hosts o IPs
disponibles para asignar a host debes tener en cuenta que lo que tomas
son los últimos bits, es decir, eliminas los dos primeros del último
octeto y te quedas con los 6 bist restantes:
00000001 -> primer host de la primera subred [Link]
00111110 -> último host de la primera subred [Link]
01000001 -> primer host de la segunda subred [Link]
01111110 -> último host de la segunda subred [Link]
Como ves, las IPs que se asignan a los hosts no se pisan entre sí y las
reservadas quedan reservadas:
Primera subred: [Link]
Segunda subred: [Link]
Tercera subred: [Link]
Cuarta subred: [Link]
Las direcciones de broadcast:
[Link]
[Link]
[…] y así con todos
—————- 8< ---------------------- Entiendo que todo viene porque sí hay una
dirección de red que coincide con la dirección de subred (la primera) pero eso
no es problema porque para el sistema da lo mismo red que subred siempre
que los hosts no pisen una dirección de subred o broadcast existente. Como
siempre, escribo la respuesta de cabeza y los que me conocen ya sabe cómo la
tengo, así que, por favor, cualquier error, hacedmelo saber para no liar a la
gente 😉 Saludos