CIDR para Dummies

46

Entiendo qué es CIDR y para qué se utiliza, pero aún no puedo entender cómo calcularlo en mi cabeza. ¿Alguien puede dar una explicación tipo "para tontos" con ejemplos?

Mover
fuente
3
También vea esta pregunta para la pregunta exhaustiva de subredes.
Zoredache

Respuestas:

78

CIDR (enrutamiento entre dominios sin clase, pronunciado "kidder" o "sidra" - ¡agregue su propia variante local a los comentarios!) Es un sistema que define la parte de red de una dirección IP (generalmente la gente piensa en esto como una máscara de subred) . La razón por la que es "sin clase" es porque permite una manera de romper las redes IP de manera más flexible que su clase base.

Cuando las redes IP se definieron por primera vez, las IP tenían clases basadas en su prefijo binario:

Class    Binary Prefix    Range                       Network Bits
A        0*               0.0.0.0-127.255.255.255     8
B        10*              128.0.0.0-191.255.255.255   16
C        110*             192.0.0.0-223.255.255.255   24
D        1110*            224.0.0.0-239.255.255.255
E        1111*            240.0.0.0-255.255.255.255

(Tenga en cuenta que esta es la fuente de personas que se refieren a / 24 como una "clase C", aunque esa no es una comparación estrictamente verdadera porque una clase C necesitaba tener un prefijo específico)

Estos prefijos binarios se usaron para enrutar grandes porciones de espacio IP alrededor. Esto fue ineficiente porque resultó en la asignación de grandes bloques a organizaciones que no necesariamente los necesitaban, y también porque la Clase C solo podía asignarse en incrementos de 24 bits, lo que significa que las tablas de enrutamiento podrían volverse innecesariamente grandes a medida que se enrutaban múltiples Clase C El mismo lugar.

CIDR se definió para permitir la aplicación de máscaras de subred de longitud variable (VLSM) a las redes. A medida que se aplica el nombre, los grupos de direcciones o redes pueden dividirse en grupos que no tienen una relación directa con la "clase" natural a la que pertenecen.

La premisa básica de VLSM es proporcionar el recuento del número de bits de red en una red. Dado que una dirección IPv4 es un número entero de 32 bits, el VLSM siempre estará entre 0 y 32 (aunque no estoy seguro en qué instancia podría tener una máscara de longitud 0).

La forma más fácil de comenzar a calcular VLSM / CIDR en su cabeza es comprender los límites "naturales" de 8 bits:

CIDR    Dotted Quad
/8      255.0.0.0
/16     255.255.0.0
/24     255.255.255.0
/32     255.255.255.255

(Por cierto, es perfectamente legal, y bastante común en las ACL, usar una máscara / 32. Simplemente significa que se refiere a una sola IP)

Una vez que los comprenda, es simple aritmética binaria moverse hacia arriba o hacia abajo para obtener el número de hosts. Por ejemplo, si un / 24 tiene 256 IP (dejemos las direcciones de red y de difusión por ahora, esa es una pregunta diferente de la teoría de redes), aumentar la subred en un bit (a / 25) reducirá el espacio del host en un bit (a 7), lo que significa que habrá 128 IP.

Aquí hay una tabla del último octeto. Esta tabla se puede cambiar a cualquier octeto para obtener el equivalente cuádruple punteado.

CIDR    Dotted Quad
/24     255.255.255.0
/25     255.255.255.128
/26     255.255.255.192
/27     255.255.255.224
/28     255.255.255.240
/29     255.255.255.248
/30     255.255.255.252
/31     255.255.255.254
/32     255.255.255.255

Como ejemplo de cambio de estos a otro octeto, / 18 (que es / 26 menos 8 bits, por lo que cambió un octeto) sería 255.255.192.0.

jj33
fuente
2
Extraño, por lo general escucho que se pronuncia "sidra"
sclarson
Estoy seguro de que es regional / organizacional. No estoy seguro de si escuché a alguien llamar a CIDR "kidder", pero sé que cuando tomé la programación de LISP hace años, la función CDR fue llamada "kidder" por mi profesor, tal vez la recogí desde allí ...
jj33
Como puntos de datos adicionales: solo escuché "sidra" y me enseñaron que CDR era "cudder". A cada uno lo suyo, supongo. :-)
Lucas
Gracias SaveTheRbtz, cambié el rango final de clase B a 191.255.255.255 y la clase C comenzó a 192.255.255.255. Extraño, tengo el prefijo binario correcto y recuerdo haber hecho los cálculos. Muchas gracias por ver eso!
jj33
2
Daría este +10 si pudiera. Es una gran explicación de CIDR / VLSM.
JamesBarnett
8

Cada octeto vale 8.

  • 255.0.0.0 / 8
  • 255.255.0.0 / 16
  • 255.255.255.0 / 24
  • 255.255.255.255 / 32

Entonces puede reducir rápidamente su subred y luego solo le preocupan los últimos 8 bits.

128, 192, 224, 240, 248, 252, 254, 255

+1  , +2 , +3 , +4 , +5 , +6 , +7 , +8
  • 255.128.0.0 = / 9
  • 255.192.0.0 = / 10
  • 255.224.0.0 = / 11
  • 255.240.0.0 = / 12
  • 255.248.0.0 = / 13
  • 255.252.0.0 = / 14
  • 255.254.0.0 = / 15

Espero que sea lo suficientemente claro

Sclarson
fuente
6

Un día (sic) tarde, ojalá no le falte un dólar. CIDR es el número de un bit contiguo en la máscara IPv4 (32 bits) que comienza en el bit más significativo.

10000000 00000000 00000000 00000000 donde 1 = bit más significativo

Las máscaras comunes son / 8, / 16, / 24 que caen en un límite de 8 bits (octeto).

11111111 00000000 00000000 00000000 = / 8 = 255.0.0.0

11111111 11111111 00000000 00000000 = / 16 = 255.255.0.0

11111111 11111111 11111111 00000000 = / 24 = 255.255.255.0

No es realmente difícil cuando no está alineado con octetos, pero requiere algunas matemáticas simples y comprensión de lo que es un octeto.

11111111 11111111 11100000 00000000 = / 19

Los primeros dos octetos de la máscara son 255.255 (/ 16 es menor que / 19). El último octeto es 0 (/ 19 es menor que / 24). Hasta ahora sabemos

11111111 11111111 11100000 00000000 = / 19 = 255.255.?.0

Al mirar cada octeto, recuerde que es un valor de 8 bits, 0 - 255.

0 0 0 0 0 0 0 0 
1
2 6 3 1
8 4 2 6 8 4 2 1

Entonces el tercer octeto (?) 11100000 es 128 + 64 + 32 = 224. Eso significa

11111111 11111111 11100000 00000000 = / 19 = 255.255.224.0

dbasnett
fuente
4

Es muy propenso a errores calcular redes no triviales a mano. Pruebe una calculadora CIDR en su lugar.

hayalci
fuente
2
¿Quién votó por esto? Estoy totalmente de acuerdo, es muy fácil calcular mal los rangos de CIDR en su cabeza, especialmente al convertir, por ejemplo, / 23 a 255.255.254.0. Utilizo el paquete 'ipcalc' en Debian para ayudarme.
Mike Pountney
2
Creo ipcalcy sipcalcson mejores opciones, pero de todos modos +1
SaveTheRbtz
2

Por el contrario, creo que es bueno entender completamente CIDR y poder hacer cálculos en su cerebro ... pero a veces desea verificar sus cálculos. Me gusta usar la calculadora de subred PHP : http://share-foo.com/SubnetCalc.php

texto alternativo

l0c0b0x
fuente