Por qué aprender subnetting desde los bits
Casi todos los métodos rápidos de subnetting (tablas memorizadas, "números mágicos", reglas de los 256) funcionan bien hasta que el caso se sale del molde: un prefijo que corta en el segundo octeto, una IP que cae justo en el límite de un bloque, una máscara escrita de forma poco habitual. En esos momentos, la única forma confiable de llegar al resultado es volver a lo que realmente hace un router: comparar bits. Esta guía arma el cálculo completo desde cero, con dos ejemplos resueltos y un método para dividir una red en varias subredes. Al final, cada atajo se vuelve una consecuencia lógica y no una regla para memorizar.
Una IPv4 son 32 bits en grupos de 8
Una dirección como 192.168.10.77 es solo una forma cómoda de escribir un número de 32 bits. Cada uno de los cuatro números separados por puntos es un octeto: 8 bits que pueden valer entre 0 y 255. Para pasar un octeto a binario basta con conocer el peso de cada posición:
| Posición del bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| Peso | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Se recorre la tabla de izquierda a derecha y se pone un 1 cada vez que el peso "entra" en lo que queda del número. Para 77: 128 no entra (0); 64 sí (1, quedan 13); 32 no (0); 16 no (0); 8 sí (1, quedan 5); 4 sí (1, queda 1); 2 no (0); 1 sí (1). El resultado es 01001101. Haciendo lo mismo con los otros tres octetos, la dirección completa queda así:
192 .168 .10 .77
11000000 .10101000 .00001010 .01001101
Si se quiere comprobar una conversión, el conversor de bases muestra el mismo valor en binario agrupado en nibbles.
El prefijo es una frontera, no un número mágico
El prefijo CIDR (/26 en 192.168.10.77/26) indica cuántos bits, contando desde la izquierda, pertenecen a la red. El resto pertenece al host. Con /26, los primeros 26 bits identifican la subred y los últimos 6 identifican a cada equipo dentro de ella:
La máscara de subred es esa misma frontera escrita como dirección: 26 unos seguidos de 6 ceros. En decimal, 11111111.11111111.11111111.11000000 es 255.255.255.192. Como los unos siempre van juntos y a la izquierda, un octeto de máscara solo puede tomar nueve valores posibles:
| Bits de red en el octeto | Octeto en binario | Valor decimal | Tamaño de bloque |
|---|---|---|---|
| 0 | 00000000 | 0 | 256 |
| 1 | 10000000 | 128 | 128 |
| 2 | 11000000 | 192 | 64 |
| 3 | 11100000 | 224 | 32 |
| 4 | 11110000 | 240 | 16 |
| 5 | 11111000 | 248 | 8 |
| 6 | 11111100 | 252 | 4 |
| 7 | 11111110 | 254 | 2 |
| 8 | 11111111 | 255 | 1 |
Cualquier otro valor (por ejemplo 255.255.255.160, que en binario es 10100000) no es una máscara válida, porque tiene un cero en medio de los unos.
Ejemplo 1: 192.168.10.77/26
Dirección de red: IP AND máscara
La operación que hace un router para saber a qué red pertenece una dirección es un AND bit a bit entre la IP y la máscara: el resultado tiene un 1 solo donde ambos tienen 1. En los tres primeros octetos la máscara es 255 (todo unos), así que copian la IP tal cual. Todo el trabajo está en el cuarto octeto:
IP 77 = 01001101
Máscara 192 = 11000000
AND = 01000000 = 64
La dirección de red es 192.168.10.64. En otras palabras: se conservan los bits de red y se ponen en cero todos los bits de host.
Broadcast: red OR wildcard
El wildcard es la máscara invertida: 0.0.0.63. Un OR entre la dirección de red y el wildcard pone en uno todos los bits de host, y eso es exactamente la dirección de broadcast:
Red 64 = 01000000
Wildcard 63 = 00111111
OR = 01111111 = 127
El broadcast es 192.168.10.127. Los hosts utilizables son todos los que quedan en medio: de 192.168.10.65 a 192.168.10.126, es decir, 2⁶ − 2 = 62 hosts.
El atajo del tamaño de bloque, explicado
Con la tabla anterior aparece un atajo que llega al mismo resultado sin escribir bits: el tamaño de bloque es 256 − 192 = 64, así que las subredes /26 empiezan en los múltiplos de 64 (0, 64, 128, 192). Como 77 está entre 64 y 127, la red es .64 y el broadcast es el último valor antes del siguiente bloque, .127. El atajo funciona porque los 6 bits de host valen exactamente 64 combinaciones: cada bloque es un recorrido completo de esos bits, de todo ceros a todo unos.
Ejemplo 2: cuando la frontera cae en otro octeto (172.16.45.200/20)
Un /20 deja 20 bits de red: 8 del primer octeto, 8 del segundo y 4 del tercero. La máscara es 255.255.240.0, y el octeto "interesante" ahora es el tercero, no el cuarto.
Tercer octeto IP 45 = 00101101
Máscara 240 = 11110000
AND = 00100000 = 32
El cuarto octeto de la máscara es 0, así que en la dirección de red queda en cero. La red es 172.16.32.0. El tamaño de bloque en el tercer octeto es 256 − 240 = 16, así que esta subred abarca los valores 32 a 47 en el tercer octeto. El broadcast pone en uno todos los bits de host, los 4 del tercer octeto y los 8 del cuarto: 172.16.47.255.
| Campo | Valor |
|---|---|
| Red | 172.16.32.0 |
| Primer host | 172.16.32.1 |
| Último host | 172.16.47.254 |
| Broadcast | 172.16.47.255 |
| Hosts utilizables | 2¹² − 2 = 4094 |
Un detalle que confunde a mucha gente: 172.16.40.0 o 172.16.32.255 son direcciones de host perfectamente válidas dentro de esta subred. Que un octeto termine en 0 o en 255 no significa nada por sí solo; lo único que importa es si todos los bits de host están en cero o en uno.
Los dos ejemplos pueden comprobarse en la calculadora con los valores ya cargados: 192.168.10.77/26 y 172.16.45.200/20. La calculadora muestra además la notación binaria con la frontera del prefijo marcada.
Dividir una red en N subredes iguales
El problema inverso es igual de frecuente: se tiene 192.168.10.0/24 y se necesitan 4 subredes iguales. Cada bit que se mueve de la parte de host a la parte de red duplica la cantidad de subredes, así que hacen falta n bits tales que 2ⁿ ≥ 4. Con n = 2, el prefijo pasa de /24 a /26:
| Subred | Red | Rango de hosts | Broadcast |
|---|---|---|---|
| 1 | 192.168.10.0/26 | .1 – .62 | .63 |
| 2 | 192.168.10.64/26 | .65 – .126 | .127 |
| 3 | 192.168.10.128/26 | .129 – .190 | .191 |
| 4 | 192.168.10.192/26 | .193 – .254 | .255 |
Los dos bits "prestados" toman los valores 00, 01, 10 y 11, y eso es lo que genera los cuatro bloques. Si en lugar de 4 se necesitaran 5 subredes, 2 bits ya no son suficientes (2² = 4) y hay que tomar 3: el prefijo pasa a /27, con 8 subredes de 30 hosts cada una. Las tres que sobran quedan libres para crecer.
Cuando las subredes necesitan tamaños distintos (una de 100 hosts, otra de 50, varios enlaces de 2) dividir en partes iguales desperdicia direcciones. Para ese caso existe VLSM, que se explica paso a paso en la guía VLSM paso a paso: ejercicio resuelto.
Errores frecuentes
- Confundir la red con el primer host.
192.168.10.64identifica a la subred; no se le asigna a ningún equipo. El primer host es.65. - Olvidar restar 2. Un
/26tiene 64 direcciones pero 62 hosts. La excepción son/31(RFC 3021, enlaces punto a punto, 2 hosts) y/32(un único host). - Asumir que las redes cortan en octetos. Las clases A, B y C quedaron obsoletas con CIDR en 1993 (RFC 1519, actualizado por el RFC 4632). Un
/20o un/27son tan normales como un/24. - Escribir máscaras no contiguas. Si el octeto no está en la tabla de nueve valores, la máscara está mal escrita.
- Calcular el broadcast sumando el tamaño de bloque a la IP. El broadcast se calcula desde la red, no desde la IP del host:
64 + 64 − 1 = 127, no77 + 64.
Resumen
Toda subred IPv4 se resuelve con dos operaciones: AND con la máscara para obtener la red, OR con el wildcard para obtener el broadcast. El tamaño de bloque es un atajo para no escribir los bits, y funciona porque cada bloque recorre todas las combinaciones de los bits de host. Con eso claro, cualquier prefijo, de /8 a /30, se calcula de la misma manera.