Ejemplo:
IP: 128.42.5.4
En binario: 10000000 00101010 00000101 00000100
Subred: 255.255.248.0
¿Cómo podrías determinar los números de prefijo, red, subred y host?
Convierta la representación decimal con puntos de la máscara de red a binario. A continuación, cuente el número de bits contiguos de 1, empezando por el bit más significativo del primer octeto (es decir, el lado izquierdo del número binario).
255.255.248.0 in binary: 11111111 11111111 11111000 00000000
-----------------------------------
I counted twenty-one 1s -------> /21
El prefijo de 128.42.5.4 con una máscara de red 255.255.248.0 es /21.
La dirección de red es el AND lógico de los respectivos bits en la representación binaria de la dirección IP y la máscara de red. Alinee los bits en ambas direcciones, y realice un AND lógico en cada par de los respectivos bits. A continuación, convierta los octetos individuales del resultado de nuevo a decimal.
Tabla de verdad del AND lógico:
AND lógico]1
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
255.255.248.0 in binary: 11111111 11111111 11111000 00000000
----------------------------------- [Logical AND]
10000000 00101010 00000000 00000000 ------> 128.42.0.0
Como puede ver, la dirección de red de 128.42.5.4/21 es 128.42.0.0
La dirección de difusión convierte todos los bits del host en 1s...
Recuerda que nuestra dirección IP en decimal es:
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
La máscara de red es:
255.255.248.0 in binary: 11111111 11111111 11111000 00000000
Esto significa que nuestros bits de host son los últimos 11 bits de la dirección IP, porque encontramos la máscara de host invirtiendo la máscara de red:
Host bit mask : 00000000 00000000 00000hhh hhhhhhhh
Para calcular la dirección de difusión, forzamos que todos los bits del host sean 1s:
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
Host bit mask : 00000000 00000000 00000hhh hhhhhhhh
----------------------------------- [Force host bits]
10000000 00101010 00000111 11111111 ----> 128.42.7.255
No ha dado suficiente información para calcular subredes para esta red; como regla general se construyen subredes reasignando algunos de los bits de host como bits de red para cada subred. Muchas veces no hay una sola forma correcta de crear una subred en un bloque... dependiendo de sus restricciones, podría haber varias formas válidas de crear una subred en un bloque de direcciones.
Supongamos que dividimos 128.42.0.0/21 en 4 subredes que deben contener al menos 100 hosts cada una...
En este ejemplo, sabemos que se necesita al menos un prefijo /25 para contener 100 hosts; yo elegí un /24 porque cae en un límite de octetos. Observe que la dirección de red de cada subred toma prestados los bits de host del bloque de red principal.
¿Cómo sé que necesito al menos una longitud de máscara /25 para 100 hosts? Calcule el prefijo retrocediendo en el número de bits de host requeridos para contener 100 hosts. Se necesitan 7 bits de host para contener 100 hosts. Oficialmente esto se calcula con:
Bits de host = Log2(Número de hosts) = Log2(100) = 6,643
Como las direcciones IPv4 tienen 32 bits de ancho, y estamos utilizando los bits del host (es decir, los bits menos significativos), basta con restar 7 a 32 para calcular el prefijo de subred mínimo para cada subred... 32 - 7 = 25.
Como sólo queremos cuatro subredes de todo el bloque 128.42.0.0/21, podríamos utilizar subredes /23. Elegí /23 porque necesitamos 4 subredes... es decir, dos bits extra añadidos a la máscara de red.
Esta es una respuesta igualmente válida a la restricción, usando /23 subredes de 128.42.0.0/21...
Esto es lo que ya hemos hecho arriba... simplemente reutilizar la máscara de host del trabajo que hicimos cuando calculamos la dirección de broadcast de 128.42.5.4/21... Esta vez usaré 1s en lugar de h
, porque necesitamos realizar un AND lógico en la dirección de red de nuevo.
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
Host bit mask : 00000000 00000000 00000111 11111111
----------------------------------- [Logical AND]
00000000 00000000 00000101 00000100 -----> 0.0.5.4
Para encontrar el número máximo de hosts, mira el número de bits binarios en el número de host anterior. La forma más fácil de hacerlo es restar la longitud de la máscara de red de 32 (número de bits en una dirección IPv4). Esto te da el número de bits del host en la dirección. En ese punto...
Número máximo de hosts = 2**(32 - longitud de la máscara de red) - 2
La razón por la que restamos 2 arriba es porque los números de host all-ones y all-zeros están reservados. El número de host all-zeros es el número de red; el número de host all-ones es la dirección de difusión.
Utilizando el ejemplo de la subred 128.42.0.0/21, el número de hosts es...
Número máximo de hosts = 2**(32 - 21) - 2 = 2048 - 2 = 2046
Supongamos que alguien nos da dos direcciones IP y espera que encontremos la máscara de red más larga que las contenga a ambas; por ejemplo, qué pasa si tenemos:
Lo más fácil es convertir ambas a binario y buscar la cadena de bits de red más larga de la parte izquierda de la dirección.
128.42.5.17 in binary: 10000000 00101010 00000101 00010001
128.42.5.67 in binary: 10000000 00101010 00000101 01000011
^ ^ ^
| | |
+--------- Network ---------+Host-+
(All bits are the same) Bits
En este caso, la máscara de red máxima (máscara de host mínima) sería /25
NOTA: Si intentas empezar por el lado derecho, no te dejes engañar sólo porque encuentres una columna de bits coincidentes; podría haber bits no coincidentes más allá de esos bits coincidentes. Sinceramente, lo más seguro es empezar por el lado izquierdo.
La respuesta anterior da en el clavo perfectamente. Sin embargo, cuando empecé, me costó unos cuantos ejemplos diferentes de un par de fuentes para que realmente me diera en el clavo. Por lo tanto, si te interesan otros ejemplos, escribí unas cuantas entradas en el blog sobre el tema - http://www.oznetnerd.com/category/subnetting/
Administradores, si este post se considera spam, por favor, siéntanse libres de borrarlo.
Edición: Según la sugerencia de YLearn' intentaré extraer las partes relevantes de la primera parte de mi serie, sin pegar toda la entrada aquí.
Usemos 195.70.16.159/30 como ejemplo.
Como es un /30, sabemos que la parte del host va a estar en el cuarto octeto. Convirtámoslo en binario:
128 64 32 16 8 4 2 1
SN SN SN SN SN SN H H
1 0 0 1 1 1 1 1
Ahora para saber la dirección de red todo lo que hacemos es sumar los bits de SN que tienen un 1 debajo, juntos. (128 + 16 + 8 + 4 = 156).
Al sumar este 156 a los tres primeros octetos de la dirección, nos queda la Dirección de red 195.70.16.156.
Ahora, como sabemos que la primera dirección utilizable es siempre la Dirección de Red más uno, sólo tenemos que realizar el siguiente cálculo: (156 + 1 = 157).
Esto nos da una Primera Dirección Utilizable de 195.70.16.157.
Ahora vamos a saltarnos la última dirección utilizable por un momento y encontrar la dirección de difusión. Para saber cuál es, todo lo que tenemos que hacer es sumar todos los bits H (independientemente de si son un 1 o un 0) y luego añadir este número a la Dirección de Red. (2 + 1 + 156 = 159).
Esto nos da una Dirección de Difusión de 195.70.16.159.
Y por último, vamos a calcular la última dirección utilizable. Este proceso es similar al de encontrar la primera dirección utilizable, sin embargo, en lugar de sumar uno a la dirección de red, en realidad restamos uno de la dirección de difusión. (159 - 1 = 158).
Esto nos da una Última Dirección Utilizable de 195.70.16.158.
¡Y ahí lo tenemos! Nuestro temaplte está completo. Para una fácil referencia, aquí está de nuevo:
Como atajo, también puedes utilizar esta fórmula. Funciona en subredes de cualquier tamaño:
Ejemplo:
IP: 128.42.5.4
En binario: 10000000 00101010 00000101 00000100
Subred: 255.255.248.0
¿Cómo podrías determinar los números de prefijo, red, subred y host?
32768 16384 8192 4096 2048 1024 512 256 ----> Binary
128 192 224 240 248 252 254 255 ----> Sunet Mask
/17 /18 /19 /20 /21 /22 /23 /24 ----> CIDR
32766 16382 8190 3094 2046 1022 510 254 ----> Host
128 64 32 16 8 4 2 1 ----> Binary
128 192 224 240 248 252 254 255 ----> Sunet Mask
/25 /26 /27 /28 /29 /30 /31 /32 ----> CIDR
126 62 30 14 6 2 * - ----> Host
128 64 32 16 8 4 2 1
10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001
Example
Network=192.168.1.0 /24;
Network Address with Subnet mask = 192.168.1.0 subnet 255.255.255.0
Ip address range 192.168.1.0----192.168.1.255
Fist available ip address 192.168.1.1;
Last available ip address 192.168.1.254;
Broadcast address = 192.168.1.255;
254 Host
Network=192.168.1.0 /25;
Network Address with Subnet mask = 192.168.1.0 subnet 255.255.255.128
Ip address range 192.168.1.0----192.168.1.128
Fist available ip address 192.168.1.1;
Last available ip address 192.168.1.126;
Broadcast address = 192.168.1.127;
126 Hosts
When the CIDR increased ex. /24. /25. the network will divided by the
binary number.
/25 increase network 0-128| 128- 256 | you will have 2 Networks
/26 increase network 0-64 | 64 - 128 | 128-192 | 192-256 you will have 4 Networks
.
.
.
/32......