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.
[wpb-feature-product title=”Recomendados”]
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
<https://informaticacoslada.com/subnetting-subredes-mascaras-de-red> post.
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
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 192.168.1.0 y el
de la red (no la subred) es 192.168.1.0, 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 -> 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
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 192.168.1.1
00111110 -> último host de la primera subred 192.168.1.62
01000001 -> primer host de la segunda subred 192.168.1.65
01111110 -> último host de la segunda subred 192.168.1.126
Como ves, las IPs que se asignan a los host no se pisan entre sí y las
reservadas quedan reservadas:
Primera subred: 192.168.1.0
Segunda subred: 192.168.1.64
Tercera subred: 192.168.1.128
Cuarta subred: 192.168.1.192
Las direcciones de broadcast:
192.168.1.62
192.168.1.127
[…] 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 host 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!