¿Cómo funciona la división en subredes IPv4?


439

Esta es una pregunta canónica sobre subredes IPv4.

Relacionado:

¿Cómo funciona la división en subredes y cómo se hace a mano o en la cabeza? ¿Alguien puede explicar tanto conceptualmente como con varios ejemplos? Server Fault recibe muchas preguntas de tareas de subredes, por lo que podríamos usar una respuesta para señalarlas en Server Fault.

  • Si tengo una red, ¿cómo descubro cómo dividirla?
  • Si me dan una máscara de red, ¿cómo sé cuál es el rango de red para ella?
  • A veces hay una barra inclinada seguida de un número, ¿cuál es ese número?
  • A veces hay una máscara de subred, pero también una máscara comodín, parecen lo mismo pero son diferentes.
  • Alguien mencionó algo sobre saber binario para esto?

Esta respuesta en dos partes explica todo lo que quería saber sobre el cálculo de la dirección IPv4 y más.
Ron Maupin

Respuestas:


648

Las subredes IP existen para permitir que los enrutadores elijan destinos apropiados para los paquetes. Puede usar subredes IP para dividir redes más grandes por razones lógicas (cortafuegos, etc.) o por necesidad física (dominios de difusión más pequeños, etc.).

En pocas palabras, sin embargo, los enrutadores IP utilizan sus subredes IP para tomar decisiones de enrutamiento. Comprenda cómo funcionan esas decisiones y puede comprender cómo planificar subredes IP.

Contando hasta 1

Si ya domina la notación binaria (base 2), puede omitir esta sección.

Para aquellos de ustedes que quedan: ¡Qué vergüenza por no tener fluidez en la notación binaria!

Sí, eso puede ser un poco duro. Es realmente muy fácil aprender a contar en binario y aprender atajos para convertir binario a decimal y viceversa. Realmente deberías saber cómo hacerlo.

¡Contar en binario es muy simple porque solo tienes que saber contar hasta 1!

Piense en el "odómetro" de un automóvil, excepto que, a diferencia de un odómetro tradicional, cada dígito solo puede contar hasta 1 de 0. Cuando el automóvil está recién salido de fábrica, el odómetro dice "00000000".

Cuando haya conducido su primera milla, el odómetro dice "00000001". Hasta aquí todo bien.

Cuando haya conducido su segunda milla, el primer dígito del odómetro vuelve a "0" (ya que su valor máximo es "1") y el segundo dígito del odómetro pasa a "1", haciendo que el odómetro lea " 00000010 ". Esto se parece al número 10 en notación decimal, pero en realidad es 2 (el número de millas que ha conducido el automóvil hasta ahora) en notación binaria.

Cuando ha conducido la tercera milla, el odómetro lee "00000011", ya que el primer dígito del odómetro gira nuevamente. El número "11", en notación binaria, es el mismo que el número decimal 3.

Finalmente, cuando haya conducido su cuarta milla, los dos dígitos (que estaban leyendo "1" al final de la tercera milla) vuelven a la posición cero, y el tercer dígito rueda a la posición "1", dándonos " 00000100 ". Esa es la representación binaria del número decimal 4.

Puede memorizar todo eso si lo desea, pero en realidad solo necesita comprender cómo el pequeño odómetro "rueda" a medida que aumenta el número que está contando. Es exactamente lo mismo que la operación de un odómetro decimal tradicional, excepto que cada dígito solo puede ser "0" o "1" en nuestro "odómetro binario" ficticio.

Para convertir un número decimal a binario, puede mover el odómetro hacia adelante, tick por tick, contando en voz alta hasta que lo haya rodado un número de veces igual al número decimal que desea convertir a binario. Lo que se muestra en el odómetro después de todo ese enrutamiento y rotación sería la representación binaria del número decimal que contó hasta.

Como comprende cómo se mueve el odómetro hacia adelante, también comprenderá cómo se mueve hacia atrás también. Para convertir un número binario que se muestra en el odómetro a decimal, puede hacer retroceder el odómetro una marca a la vez, contando en voz alta hasta que el odómetro lea "00000000". Cuando se hace todo ese recuento y balanceo, el último número que diga en voz alta sería la representación decimal del número binario con el que comenzó el odómetro.

Convertir valores entre binario y decimal de esta manera sería muy tedioso. Podrías hacerlo, pero no sería muy eficiente. Es más fácil aprender un pequeño algoritmo para hacerlo más rápido.

Un comentario rápido: cada dígito en un número binario se conoce como un "bit". Eso es "b" de "binario" y "it" de "dígito". Un bit es un dígito binario.

Convertir un número binario como, por ejemplo, "1101011" a decimal es un proceso simple con un pequeño y práctico algoritmo.

Comience contando el número de bits en el número binario. En este caso, hay 7. Haga 7 divisiones en una hoja de papel (en su mente, en un archivo de texto, etc.) y comience a completarlas de derecha a izquierda. En el espacio de la derecha, ingrese el número "1", porque siempre comenzaremos con "1". En el siguiente espacio a la izquierda, ingrese el doble del valor en el espacio a la derecha (por lo tanto, "2" en el siguiente, "4" en el siguiente) y continúe hasta que todos los espacios estén llenos. (Terminarás memorizando estos números, que son las potencias de 2, a medida que lo hagas más y más. Estoy bien hasta 131,072 en mi cabeza, pero generalmente necesito una calculadora o papel después de eso).

Por lo tanto, debe tener lo siguiente en su papel en sus pequeñas ranuras.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

Transcriba los bits del número binario debajo de las ranuras, así:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

Ahora, agregue algunos símbolos y calcule la respuesta al problema:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

Haciendo todos los cálculos, deberías tener:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

Eso es todo. "1101011" en decimal es 107. Son solo pasos simples y matemáticas fáciles.

La conversión de decimal a binario es igual de fácil y es el mismo algoritmo básico que se ejecuta al revés.

Digamos que queremos convertir el número 218 a binario. Comenzando a la derecha de una hoja de papel, escriba el número "1". A la izquierda, duplique ese valor ("2") y continúe moviéndose hacia la izquierda del papel doblando el último valor. Si el número que está a punto de escribir es mayor que el número que se está convirtiendo, deje de escribir. de lo contrario, continúe duplicando el número anterior y escribiendo. (Convertir un gran número, como 34,157,216,092, a binario usando este algoritmo puede ser un poco tedioso, pero ciertamente es posible).

Entonces, deberías tener en tu papel:

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

Dejaste de escribir números en 128 porque duplicar 128, lo que te daría 256, sería mayor que el número que se está convirtiendo (218).

Comenzando por el número de la izquierda, escriba "218" encima de él (128) y pregúntese: "¿218 es mayor o igual que 128?" Si la respuesta es sí, marque un "1" debajo de "128". Por encima de "64", escriba el resultado de 218 menos 128 (90).

Mirando "64", pregúntese: "¿90 es mayor o igual que 64?" Es así, entonces escribirías un "1" debajo de "64", luego restarías 64 de 90 y escribirías arriba de "32" (26).

Sin embargo, cuando llegue a "32", encontrará que 32 no es mayor o igual que 26. En este caso, escriba un "0" debajo de "32", copie el número (26) de arriba 32 "a arriba" 16 "y luego continúa haciéndote la misma pregunta con el resto de los números.

Cuando haya terminado, debería tener:

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

Los números en la parte superior son solo notas utilizadas en el cálculo y no significan mucho para nosotros. En la parte inferior, sin embargo, verá un número binario "11011010". Efectivamente, 218, convertido a binario, es "11011010".

Siguiendo estos procedimientos muy simples, puede convertir binario a decimal y viceversa sin una calculadora. Las matemáticas son muy simples y las reglas se pueden memorizar con solo un poco de práctica.

División de direcciones

Piense en el enrutamiento IP como la entrega de pizza.

Cuando se le pide que entregue una pizza a "123 Main Street", es muy claro para usted, como humano, que desea ir al edificio numerado "123" en la calle llamada "Main Street". Es fácil saber que necesita ir a la cuadra 100 de Main Street porque el número de edificio está entre 100 y 199 y la mayoría de las cuadras de la ciudad están numeradas en cientos. Usted "solo sabe" cómo dividir la dirección.

Los enrutadores entregan paquetes, no pizza. Su trabajo es el mismo que el de un conductor de pizza: llevar la carga (paquetes) lo más cerca posible del destino. Un enrutador está conectado a dos o más subredes IP (para ser útil). Un enrutador debe examinar las direcciones IP de destino de los paquetes y dividir esas direcciones de destino en sus componentes "nombre de calle" y "número de edificio", al igual que el conductor de pizza, para tomar decisiones sobre la entrega.

Cada computadora (o "host") en una red IP está configurada con una dirección IP única y una máscara de subred. Esa dirección IP se puede dividir en un componente de "número de edificio" (como "123" en el ejemplo anterior) llamado "ID de host" y un componente de "nombre de la calle" (como "Calle principal" en el ejemplo anterior) llamado "Identificación de red". Para nuestros ojos humanos, es fácil ver dónde están el número de edificio y el nombre de la calle en "123 Main Street", pero es más difícil ver esa división en "10.13.216.41 con una máscara de subred de 255.255.192.0".

Los enrutadores IP "solo saben" cómo dividir las direcciones IP en estos componentes para tomar decisiones de enrutamiento. Dado que entender cómo se enrutan los paquetes IP depende de comprender este proceso, también necesitamos saber cómo dividir las direcciones IP. Afortunadamente, extraer la ID del host y la ID de la red de una dirección IP y una máscara de subred es realmente bastante fácil.

Comience escribiendo la dirección IP en binario (use una calculadora si aún no ha aprendido a hacer esto en su cabeza, pero tome nota para aprender cómo hacerlo: es muy, muy fácil e impresiona al sexo opuesto en fiestas):

      10.      13.     216.      41
00001010.00001101.11011000.00101001

Escriba también la máscara de subred en binario:

     255.     255.     192.       0
11111111.11111111.11000000.00000000

Escrito uno al lado del otro, puede ver que el punto en la máscara de subred donde el "stop" del "1" se alinea con un punto en la dirección IP. Ese es el punto en que la ID de red y la ID de host se dividen. Entonces, en este caso:

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

Los enrutadores usan la máscara de subred para "enmascarar" los bits cubiertos por 1 en la dirección IP (reemplazando los bits que no están "enmascarados" por 0) para extraer la ID de red:

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

Del mismo modo, al usar la máscara de subred para "enmascarar" los bits cubiertos por 0 en la dirección IP (reemplazando los bits que no están "enmascarados" con 0 nuevamente), un enrutador puede extraer la ID del host:

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

No es tan fácil para nuestros ojos humanos ver la "ruptura" entre la identificación de la red y la identificación del host como lo es entre el "número de edificio" y el "nombre de la calle" en las direcciones físicas durante la entrega de pizza, pero el efecto final es el mismo.

Ahora que puede dividir las direcciones IP y las máscaras de subred en ID de host e ID de red, puede enrutar IP como lo hace un enrutador.

Más terminología

Verá máscaras de subred escritas en Internet y en el resto de esta respuesta como (IP / número). Esta notación se conoce como notación de "Enrutamiento entre dominios sin clase" (CIDR). "255.255.255.0" está compuesto por 24 bits de 1 al principio, y es más rápido escribirlo como "/ 24" que como "255.255.255.0". Para convertir un número CIDR (como "/ 16") en una máscara de subred decimal con puntos, simplemente escriba ese número de 1, divídalo en grupos de 8 bits y conviértalo a decimal. (Un "/ 16" es "255.255.0.0", por ejemplo).

En los "viejos tiempos", las máscaras de subred no se especificaban, sino que se derivaban al observar ciertos bits de la dirección IP. Una dirección IP que comienza con 0 - 127, por ejemplo, tenía una máscara de subred implícita de 255.0.0.0 (llamada dirección IP de "clase A").

Estas máscaras de subred implícitas no se usan hoy en día y no recomiendo aprender más sobre ellas a menos que tenga la desgracia de lidiar con equipos muy antiguos o protocolos antiguos (como RIPv1) que no admiten direcciones IP sin clases. No voy a mencionar más estas "clases" de direcciones porque hoy no es aplicable y puede ser confuso.

Algunos dispositivos usan una notación llamada "máscaras comodín". Una "máscara comodín" no es más que una máscara de subred con todos los 0 donde habría 1 y 1 donde habría 0. La "máscara comodín" de un / 26 es:

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

Por lo general, ve "máscaras comodín" que se utilizan para hacer coincidir las ID de host en las listas de control de acceso o las reglas de firewall. No los discutiremos más aquí.

Cómo funciona un enrutador

Como he dicho antes, los enrutadores IP tienen un trabajo similar al de un repartidor de pizzas, ya que necesitan llevar su carga (paquetes) a su destino. Cuando se le presenta un paquete vinculado a la dirección 192.168.10.2, un enrutador IP debe determinar cuál de sus interfaces de red acercará mejor ese paquete a su destino.

Digamos que usted es un enrutador de IP y tiene interfaces conectadas numeradas a usted:

  • Ethernet0 - 192.168.20.1, máscara de subred / 24
  • Ethernet1 - 192.168.10.1, máscara de subred / 24

Si recibe un paquete para entregar con una dirección de destino "192.168.10.2", es bastante fácil decir (con sus ojos humanos) que el paquete debe enviarse por la interfaz Ethernet1, porque la dirección de la interfaz Ethernet1 corresponde al destino del paquete habla a. Todas las computadoras conectadas a la interfaz Ethernet1 tendrán direcciones IP que comienzan con "192.168.10.", Porque la ID de red de la dirección IP asignada a su interfaz Ethernet1 es "192.168.10.0".

Para un enrutador, este proceso de selección de ruta se realiza creando una tabla de enrutamiento y consultando la tabla cada vez que se entrega un paquete. Una tabla de enrutamiento contiene ID de red y nombres de interfaz de destino. Ya sabe cómo obtener una ID de red a partir de una dirección IP y una máscara de subred, por lo que está en camino de crear una tabla de enrutamiento. Aquí está nuestra tabla de enrutamiento para este enrutador:

  • ID de red: 192.168.20.0 (11000000.10101000.00010100.00000000) - Máscara de subred de 24 bits - Interfaz Ethernet0
  • ID de red: 192.168.10.0 (11000000.10101000.00001010.00000000) - Máscara de subred de 24 bits - Interfaz Ethernet1

Para nuestro paquete entrante con destino a "192.168.10.2", solo necesitamos convertir la dirección de ese paquete a binario (como humanos, el enrutador lo obtiene como binario del cable para empezar) e intentar hacer coincidirlo con cada dirección en nuestra ruta tabla (hasta el número de bits en la máscara de subred) hasta que coincidamos con una entrada.

  • Destino del paquete entrante: 11000000.10101000.00001010.00000010

Comparando eso con las entradas en nuestra tabla de enrutamiento:

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

La entrada para Ethernet0 coincide con los primeros 19 bits, pero luego deja de coincidir. Eso significa que no es la interfaz de destino adecuada. Puede ver que la interfaz Ethernet1 coincide con 24 bits de la dirección de destino. Ah, ja! El paquete está vinculado a la interfaz Ethernet1.

En un enrutador de la vida real, la tabla de enrutamiento se ordena de tal manera que las máscaras de subred más largas se comprueban primero para encontrar coincidencias (es decir, las rutas más específicas), y numéricamente para que tan pronto como se encuentre una coincidencia, el paquete se pueda enrutar y no son necesarios más intentos de coincidencia (lo que significa que 192.168.10.0 se enumeraría primero y 192.168.20.0 nunca se habría verificado). Aquí, estamos simplificando eso un poco. Las estructuras y algoritmos de datos sofisticados hacen enrutadores IP más rápidos, pero los algoritmos simples producirán los mismos resultados.

Rutas Estáticas

Hasta este momento, hemos hablado de que nuestro enrutador hipotético tiene redes conectadas directamente a él. Obviamente, así no es cómo funciona realmente el mundo. En la analogía de conducir pizza, a veces el conductor no puede ingresar más al edificio que la recepción, y tiene que entregar la pizza a otra persona para que la entregue al destinatario final (suspenda su incredulidad y tenga paciencia conmigo mientras Estiro mi analogía, por favor).

Comencemos llamando a nuestro enrutador de los ejemplos anteriores "Enrutador A". Ya conoce la tabla de enrutamiento de RouterA como:

  • ID de red: 192.168.20.0 (11000000.10101000.00010100.00000000) - máscara de subred / 24 - Router de interfaz A-Ethernet0
  • ID de red: 192.168.10.0 (11000000.10101000.00001010.00000000) - máscara de subred / 24 - Router de interfaz A-Ethernet1

Supongamos que hay otro enrutador, "Enrutador B", con las direcciones IP 192.168.10.254/24 y 192.168.30.1/24 asignadas a sus interfaces Ethernet0 y Ethernet1. Tiene la siguiente tabla de enrutamiento:

  • ID de red: 192.168.10.0 (11000000.10101000.00001010.00000000) - máscara de subred / 24 - Router de interfaz B-Ethernet0
  • ID de red: 192.168.30.0 (11000000.10101000.00011110.00000000) - máscara de subred / 24 - Router de interfaz B-Ethernet1

En un bonito arte ASCII, la red se ve así:

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

Puede ver que el enrutador B sabe cómo "llegar" a una red, 192.168.30.0/24, de lo que el enrutador A no sabe nada.

Suponga que una PC con la dirección IP 192.168.20.13 conectada a la red conectada a la interfaz Ethernet0 del enrutador A envía un paquete al enrutador A para su entrega. Nuestro paquete hipotético está destinado a la dirección IP 192.168.30.46, que es un dispositivo conectado a la red conectada a la interfaz Ethernet1 del enrutador B.

Con la tabla de enrutamiento que se muestra arriba, ninguna entrada en la tabla de enrutamiento del enrutador A coincide con el destino 192.168.30.46, por lo que el enrutador A devolverá el paquete a la PC emisora ​​con el mensaje "Red de destino inalcanzable".

Para que el Enrutador A "sepa" de la existencia de la red 192.168.30.0/24, agregamos la siguiente entrada a la tabla de enrutamiento en el Enrutador A:

  • ID de red: 192.168.30.0 (11000000.10101000.00011110.00000000) - máscara de subred / 24 - Accesible a través de 192.168.10.254

De esta manera, el enrutador A tiene una entrada en la tabla de enrutamiento que coincide con el destino 192.168.30.46 de nuestro paquete de ejemplo. Esta entrada de la tabla de enrutamiento dice efectivamente "Si obtiene un paquete vinculado a 192.168.30.0/24, envíelo a 192.168.10.254 porque él sabe cómo lidiar con él". Esta es la acción análoga de "entregar la pizza en la recepción" que mencioné anteriormente: pasar el paquete a otra persona que sepa cómo acercarlo a su destino.

Agregar una entrada a una tabla de enrutamiento "a mano" se conoce como agregar una "ruta estática".

Si el enrutador B desea entregar paquetes a la red de máscara de subred 192.168.20.0 255.255.255.0, también necesitará una entrada en su tabla de enrutamiento:

  • ID de red: 192.168.20.0 (11000000.10101000.00010100.00000000) - máscara de subred / 24 - Accesible a través de: 192.168.10.1 (dirección IP del enrutador A en la red 192.168.10.0)

Esto crearía una ruta para la entrega entre la red 192.168.30.0/24 y la red 192.168.20.0/24 a través de la red 192.168.10.0/24 entre estos enrutadores.

Siempre debe asegurarse de que los enrutadores en ambos lados de dicha "red intersticial" tengan una entrada en la tabla de enrutamiento para la red "lejana". Si el enrutador B en nuestro ejemplo no tuviera una entrada en la tabla de enrutamiento para la red "lejana" 192.168.20.0/24 conectada al enrutador A, nuestro paquete hipotético de la PC en 192.168.20.13 llegaría al dispositivo de destino en 192.168.30.46, pero cualquier respuesta que 192.168.30.46 intentara devolver sería devuelta por el enrutador B como "Red de destino inalcanzable". La comunicación unidireccional generalmente no es deseable. Siempre asegúrese de pensar en el tráfico que fluye en ambas direcciones cuando piensa en la comunicación en las redes de computadoras.

Puede obtener mucho kilometraje de las rutas estáticas. Los protocolos de enrutamiento dinámico como EIGRP, RIP, etc., en realidad no son más que una forma para que los enrutadores intercambien información de enrutamiento entre sí que, de hecho, podría configurarse con rutas estáticas. Sin embargo, una gran ventaja de usar protocolos de enrutamiento dinámico sobre rutas estáticas es que los protocolos de enrutamiento dinámico pueden cambiar dinámicamente la tabla de enrutamiento en función de las condiciones de la red (utilización de ancho de banda, una interfaz "bajando", etc.) y, como tal, usando una dinámica El protocolo de enrutamiento puede dar como resultado una configuración que "enruta" fallas o cuellos de botella en la infraestructura de red. (Sin embargo, los protocolos de enrutamiento dinámico están FUERA del alcance de esta respuesta).

No puedes llegar desde aquí

En el caso de nuestro enrutador de ejemplo A, ¿qué sucede cuando entra un paquete con destino a "172.16.31.92"?

Mirando la tabla de enrutamiento del enrutador A, ni la interfaz de destino ni la ruta estática coinciden con los primeros 24 bits de 172.18.31.92 (que es 10101100.00010000.00011111.01011100, por cierto).

Como ya sabemos, el enrutador A devolvería el paquete al remitente a través de un mensaje "Red de destino inalcanzable".

Digamos que hay otro enrutador (enrutador C) en la dirección "192.168.20.254". ¡El enrutador C tiene una conexión a Internet!

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

Sería bueno si el enrutador A pudiera enrutar paquetes que no coinciden con ninguna interfaz local hasta el enrutador C de modo que el enrutador C pueda enviarlos a Internet. Ingrese la ruta de "puerta de enlace predeterminada".

Agregue una entrada al final de nuestra tabla de enrutamiento como esta:

  • ID de red: 0.0.0.0 (00000000.00000000.00000000.00000000) - máscara de subred / 0 - Enrutador de destino: 192.168.20.254

Cuando intentamos hacer coincidir "172.16.31.92" con cada entrada en la tabla de enrutamiento, terminamos presionando esta nueva entrada. Es un poco desconcertante, al principio. Estamos buscando unir cero bits de la dirección de destino con ... espera ... ¿qué? Coincidencia de bits cero? Entonces, no estamos buscando una pareja en absoluto. Esta entrada de la tabla de enrutamiento dice, básicamente, "Si llega aquí, en lugar de darse por vencido en la entrega, envíe el paquete al enrutador al 192.168.20.254 y déjelo manejarlo".

192.168.20.254 es un destino al que SABEMOS cómo entregar un paquete. Cuando se enfrenta a un paquete con destino a un destino para el que no tenemos una entrada específica en la tabla de enrutamiento, esta entrada de "puerta de enlace predeterminada" siempre coincidirá (ya que coincide con cero bits de la dirección de destino) y nos da un lugar de "último recurso" que podemos Enviar paquetes para la entrega. A veces escuchará la puerta de enlace predeterminada llamada "puerta de acceso de último recurso".

Para que una ruta de puerta de enlace predeterminada sea efectiva, debe referirse a un enrutador al que se pueda acceder utilizando las otras entradas en la tabla de enrutamiento. Si intentó especificar una puerta de enlace predeterminada de 192.168.50.254 en el enrutador A, por ejemplo, la entrega a dicha puerta de enlace predeterminada fallaría. 192.168.50.254 no es una dirección que el enrutador A sepa cómo entregar paquetes para usar cualquiera de las otras rutas en su tabla de enrutamiento, por lo que dicha dirección sería ineficaz como una puerta de enlace predeterminada. Esto se puede establecer de manera concisa: la puerta de enlace predeterminada debe establecerse en una dirección ya accesible mediante otra ruta en la tabla de enrutamiento.

Los enrutadores reales generalmente almacenan la puerta de enlace predeterminada como la última ruta en su tabla de enrutamiento de modo que coincida con los paquetes después de que no hayan podido coincidir con todas las demás entradas de la tabla.

Planificación urbana y enrutamiento IP

Romper una subred IP en subredes IP más pequeñas es como la planificación urbana. En la planificación urbana, la zonificación se utiliza para adaptarse a las características naturales del paisaje (ríos, lagos, etc.), para influir en los flujos de tráfico entre diferentes partes de la ciudad y para segregar diferentes tipos de uso del suelo (industrial, residencial, etc.) . La división en subredes de IP es muy parecida.

Existen tres razones principales por las que se subredes una red:

  • Es posible que desee comunicarse a través de diferentes medios de comunicación. Si tiene una conexión WAN T1 entre dos edificios, se pueden colocar enrutadores IP en los extremos de estas conexiones para facilitar la comunicación a través de la T1. Las redes en cada extremo (y posiblemente la red "intersticial" en el propio T1) se asignarían a subredes IP únicas para que los enrutadores puedan tomar decisiones sobre qué tráfico debe enviarse a través de la línea T1.

  • En una red Ethernet, puede usar subredes para limitar la cantidad de tráfico de difusión en una parte determinada de la red. Los protocolos de la capa de aplicación utilizan la capacidad de transmisión de Ethernet para fines muy útiles. Sin embargo, a medida que obtiene más y más hosts empaquetados en la misma red Ethernet, el porcentaje de tráfico de transmisión por cable (o aire, en Ethernet inalámbrica) puede aumentar hasta el punto de crear problemas para la entrega de tráfico no transmitido. (En los viejos tiempos, el tráfico de transmisión podría abrumar la CPU de los hosts al obligarlos a examinar cada paquete de transmisión. Eso es menos probable hoy en día.) El tráfico excesivo en Ethernet conmutada también puede venir en forma de "inundación de tramas a destinos desconocidos". Esta condición es causada por un conmutador Ethernet que no puede realizar un seguimiento de todos los destinos de la red y es la razón por la cual las redes Ethernet conmutadas no pueden escalar a un número infinito de hosts. El efecto de la inundación de tramas a destinos desconocidos es similar al efecto del exceso de tráfico de difusión, a efectos de subredes.

  • Es posible que desee "vigilar" los tipos de tráfico que fluyen entre diferentes grupos de hosts. Quizás tenga dispositivos de servidor de impresión y solo desee que las computadoras del servidor de cola de impresión autorizadas les envíen trabajos. Al limitar el tráfico que se permite que fluya al dispositivo de subred del servidor de impresión, los usuarios no pueden configurar sus PC para hablar directamente con los dispositivos del servidor de impresión para evitar la contabilidad de impresión. Puede colocar los dispositivos del servidor de impresión en una subred para ellos solos y crear una regla en el enrutador o firewall conectado a esa subred para controlar la lista de hosts autorizados para enviar tráfico a los dispositivos del servidor de impresión. (Tanto los enrutadores como los cortafuegos generalmente pueden tomar decisiones sobre cómo o si entregar un paquete en función de las direcciones de origen y destino del paquete. Los cortafuegos suelen ser una subespecie de enrutador con una personalidad obsesiva. Pueden estar muy, muy preocupados por la carga útil de los paquetes, mientras que los enrutadores generalmente ignoran las cargas útiles y solo entregan los paquetes).

Al planificar una ciudad, puede planificar cómo se cruzan las calles entre sí, y puede usar calles de un solo giro, unidireccionales y sin salida para influir en los flujos de tráfico. Es posible que desee que Main Street tenga 30 cuadras de largo, con cada bloque que tenga hasta 99 edificios cada uno. Es bastante fácil planificar la numeración de sus calles de manera que cada bloque en Main Street tenga un rango de números de calles que aumente en 100 para cada bloque. Es muy fácil saber cuál debería ser el "número inicial" en cada bloque posterior.

Al planificar las subredes IP, le preocupa construir el número correcto de subredes (calles) con el número correcto de ID de host disponibles (números de construcción) y usar enrutadores para conectar las subredes entre sí (intersecciones). Las reglas sobre las direcciones de origen y destino permitidas especificadas en los enrutadores pueden controlar aún más el flujo de tráfico. Los cortafuegos pueden actuar como policías de tráfico obsesivos.

A los fines de esta respuesta, la construcción de nuestras subredes es nuestra única gran preocupación. En lugar de trabajar en decimal, como lo haría con la planificación urbana, trabaja en binario para describir los límites de cada subred.

Continúa en: ¿Cómo funciona la división en subredes IPv4?

(Sí ... alcanzamos el tamaño máximo de una respuesta (30000 caracteres)).


13
@Joseph: Es una conferencia que he dado demasiadas veces por mi propio bien. > sonríe <Veré tu sección binaria. Odio enseñar sobre matemáticas (que es realmente lo que es entender el binario: contar en la base 2) porque no soy muy bueno en eso.
Evan Anderson el

2
Mi único problema con la ruptura de la respuesta es que uno debe comprender por qué existe la división en subredes (enrutamiento IP) antes de poder comprender cómo dividir efectivamente una red IP en subredes. Nunca he encontrado una buena manera de discutir un tema aislado del otro. (Realmente, diseñar una red IP con VLSM es algo natural y "tiene sentido" después de comprender el enrutamiento IP ...)
Evan Anderson el

28
No lo rompas
Joseph Kern el

3
+1 para la publicación más completa que se haya visto en serverfault
Scott Lundberg

3
Votado a favor aunque solo sea por la metáfora del cuentakilómetros. Ahora sé cómo explicar cómo funciona el binario para las personas.
phuzion

142

Viene de: ¿Cómo funciona la división en subredes IPv4?

Su ISP le proporciona al rango la ID de red 192.168.40.0/24 (11000000.10101000.00101000.00000000). Sabe que le gustaría usar un dispositivo de firewall / enrutador para limitar la comunicación entre diferentes partes de su red (servidores, computadoras cliente, equipos de red) y, como tal, le gustaría dividir estas diversas partes de su red en subredes IP (que el dispositivo de firewall / enrutador puede enrutar).

Tienes:

  • 12 computadoras de servidor, pero puede obtener hasta un 50% más
  • 9 interruptores
  • 97 computadoras cliente, pero puede obtener más

¿Cuál es una buena manera de dividir 192.168.40.0/24 en estas piezas?

Pensando en potencias iguales de dos, y trabajando con la mayor cantidad de dispositivos posibles, puede llegar a:

  • 18 computadoras de servidor: la siguiente potencia más grande de dos es 32
  • 9 interruptores: la siguiente potencia más grande de dos es 16
  • 97 computadoras cliente - La siguiente potencia más grande de dos es 128

En una subred IP determinada, hay dos direcciones reservadas que no se pueden usar como direcciones IP de dispositivo válidas: la dirección con todos los ceros en la parte de ID de host y la dirección con todas las partes en la parte de ID de host. Como tal, para cualquier subred IP dada, el número de direcciones de host disponibles es de dos a la potencia de la cantidad de 32 menos el número de bits en la máscara de subred, menos 2. Entonces, en el caso de 192.168.40.0/24 puede ver que la máscara de subred tiene 24 bits. Eso deja 8 bits disponibles para las ID de host. Sabemos que la potencia del 2 al 8 es 256, lo que significa que 256 combinaciones posibles de bits caben en una ranura de 8 bits de ancho. Dado que las combinaciones "11111111" y "00000000" de esos 8 bits no están permitidas para las ID de host, eso nos deja con 254 posibles hosts que se pueden asignar en la red 192.168.40.0/24.

De esos 254 hosts, parece que podemos adaptar las computadoras cliente, los conmutadores y las computadoras de servidor en ese espacio, ¿verdad? Intentemos.

Tiene 8 bits de máscara de subred para "jugar" (los 8 bits restantes de la dirección IP 192.168.40.0/24 no están cubiertos por la máscara de subred proporcionada por su ISP). Tenemos que encontrar una manera de usar esos 8 bits para crear una cantidad de ID de red únicas que puedan acomodar los dispositivos anteriores.

Comience con la red más grande: las computadoras cliente. Usted sabe que la siguiente potencia más grande de dos del número de dispositivos posibles es 128. El número 128, en binario, es "10000000". Afortunadamente para nosotros, eso encaja en la ranura de 8 bits que tenemos libre (si no fuera así, eso sería una indicación de que nuestra subred inicial es demasiado pequeña para acomodar todos nuestros dispositivos).

Tomemos nuestra ID de red, según lo provisto por nuestro ISP, y agreguemos un solo bit de máscara de subred, dividiéndola en dos redes:

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

Mira eso hasta que tenga sentido. Aumentamos la máscara de subred en un bit de longitud, haciendo que la ID de la red cubra un bit que se hubiera utilizado para la ID del host. Como ese bit puede ser cero o uno, hemos dividido efectivamente nuestra red 192.168.40.0 en dos redes. La primera dirección IP válida en la red 192.168.40.0/25 será la primera ID de host con un "1" en el bit más a la derecha:

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid host in the 192.168.40.0/25 network

El primer host válido en la red 192.168.40.128 será, asimismo, el primer ID de host con un "1" en el bit más a la derecha:

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/25 network

El último host válido en cada red será la ID del host con cada bit, excepto el bit más a la derecha establecido en "1":

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.128/25 network

Entonces, de esta manera, hemos creado una red lo suficientemente grande como para contener nuestras computadoras cliente, y una segunda red a la que luego podemos aplicar el mismo principio para dividirla en redes aún más pequeñas. Hagamos una nota:

  • Computadoras cliente - 192.168.40.0/25 - IP válidas: 192.168.40.1 - 192.168.40.126

Ahora, para desglosar la segunda red de nuestros servidores y conmutadores, hacemos lo mismo.

Tenemos 12 computadoras de servidor, pero podríamos comprar hasta 6 más. Planifiquemos el 18, que nos deja la siguiente potencia más alta de 2 como 32. En binario, 32 es "100000", que tiene 6 bits de longitud. Nos quedan 7 bits de máscara de subred en 192.168.40.128/25, por lo que tenemos suficientes bits para continuar "jugando". Agregar un poco más de máscara de subred nos da dos redes más:

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.192/26 network

Entonces, ahora hemos dividido 192.168.40.128/25 en dos redes más, cada una de las cuales tiene 26 bits de máscara de subred, o un total de 62 posibles ID de host-- 2 ^ (32 - 26) - 2.

¡Eso significa que ambas redes tienen suficientes direcciones para nuestros servidores y conmutadores! Hagamos notas:

  • Servidores - 192.168.40.128/26 - IP válidas: 192.168.40.129 - 192.168.40.190
  • Conmutadores - 192.168.40.192/26 - IP válidas: 192.168.40.193 - 192.168.40.254

Esta técnica se denomina enmascaramiento de subred de longitud variable (VLSM) y, si se aplica correctamente, hace que los "enrutadores centrales" tengan tablas de enrutamiento más pequeñas (a través de un proceso llamado "resumen de ruta"). En el caso de nuestro ISP en este ejemplo, pueden desconocer por completo cómo hemos dividido en subredes 192.168.40.0/24. Si su enrutador tiene un paquete vinculado a 192.168.40.206 (uno de nuestros conmutadores), solo necesitan saber cómo pasarlo a nuestro enrutador (ya que 192.168.40.206 coincide con el id. De red y la máscara de subred 192.168.40.0/24 en la tabla de enrutamiento de su enrutador ) y nuestro enrutador lo llevará al destino. Esto mantiene nuestras rutas de subred fuera de sus tablas de enrutamiento. (Estoy simplificando aquí, pero entiendes la idea).

Puede planificar redes muy grandes geográficamente de la misma manera. Siempre que realice la "planificación urbana" correcta desde el principio (anticipando el número de hosts en cada subred con cierta precisión y con la vista puesta en el futuro), puede crear una gran jerarquía de enrutamiento que, en los enrutadores centrales ", resume "a un número muy pequeño de rutas. Como vimos anteriormente, cuantas más rutas haya en la tabla de enrutamiento de un enrutador, más lento será su trabajo. Diseñar una red IP con VLSM y mantener pequeñas las tablas de enrutamiento es una buena cosa (tm).

El irrealismo de los ejemplos

El mundo ficticio en esta respuesta es, obviamente, ficticio. Por lo general, puede hacer subredes en Ethernet conmutada moderna con más hosts que 254 (depende del perfil de tráfico). Como se ha señalado en los comentarios, el uso de redes / 24 entre enrutadores no es coherente con Real Life (tm). Es un lindo ejemplo, pero es un desperdicio de espacio de direcciones. Por lo general, a / 30 o a / 31 (consulte http://www.faqs.org/rfcs/rfc3021.html para obtener detalles sobre cómo funciona / 31, están fuera del alcance de esta respuesta) se utiliza la red en enlaces que son estrictamente punto a punto entre dos enrutadores.


Pequeño error: el código justo después de "El último host válido ..." vuelve a llamarlo "el primer host válido". Supongo que aún debería decir "último".
JoeCool1986

@ JoeCool1986 - Buena captura.
Evan Anderson

2
Voy a votar esta respuesta para asegurarme de que dos respuestas se mantengan en orden.
l46kok

En la parte donde creas dos subredes desde 192.168.40.128 y creas una ID de red de 192.168.40.192, ¿de dónde vino el 192?
user6607

@ user6607 Las subredes se cuentan al revés (sin espacios). Por ejemplo, la primera subred 0se representa como 00000000. La segunda subred es 128así 10000000y la tercera subred 192se representa como 11000000, etc. Simplemente siga contando hacia atrás para encontrar nuevas subredes.
Joseph Kern el

76

Subred

Sub-netting no es difícil pero puede ser intimidante. Entonces, comencemos con el paso más simple posible. Aprendiendo a contar en binario.

Binario

Binary es un sistema de conteo de base 2. Consta de solo dos números (1 y 0). El conteo procede de esta manera.

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

Entonces, si solo imagina que cada 1 es un marcador de posición para un valor (todos los valores binarios son potencias de dos)

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

Entonces ... 100000 = 32. Y 10000000 = 128. Y 11111111 = 255.

Cuando digo: "Tengo una máscara de subred de 255.255.255.0", realmente quiero decir, "Tengo una máscara de subred de 11111111.11111111.11111111.00000000". Usamos subredes como una mano corta.

Los puntos en la dirección, se separan cada 8 dígitos binarios (un octeto). Es por eso que IPv4 se conoce como un espacio de direcciones de 32 bits (8 * 4).

¿Por qué subred?

Las direcciones IPv4 (192.168.1.1) son escasas. La subred nos brinda una forma de aumentar la cantidad de redes (o hosts) disponibles. Esto es por razones administrativas y razones técnicas.

Cada dirección IP se divide en dos partes separadas, la red y el host. Por defecto, una dirección de Clase C (192.168.1.1) usa los primeros 3 octetos (192.168.1) para la porción de red de la dirección. y el 4to octeto (.1) como la porción del anfitrión.

De forma predeterminada, una dirección IP y una máscara de subred para una dirección de Clase C se ve así

IP     192.168.1.1 
Subnet 255.255.255.0

En binario como este

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Mira el ejemplo binario de nuevo. ¿Te das cuenta de cómo dije que los primeros tres octetos se usan para la red? ¿Te das cuenta de que la parte de la red son todas? Eso es todo lo que es la subred. Vamos a ampliar

Dado que tengo un solo octeto para mi porción de host (en el ejemplo anterior). SOLO puedo tener 256 hosts (256 es el valor máximo de un octeto, contando desde 0). Pero hay otro pequeño truco: debes restar 2 direcciones de host de las disponibles (actualmente 256). La primera dirección en el rango será para la red (192.168.1.0) y la última dirección en el rango será la transmisión (192.168.1.255). Entonces realmente tiene 254 direcciones disponibles para hosts en una red.

Un caso de estudio

Digamos que te di la siguiente hoja de papel.

Create 4 networks with 192.168.1.0/24.

Echemos un vistazo a esto. El / 24 se llama notación CIDR. En lugar de hacer referencia al 255.255.255.0, solo hacemos referencia a los bits que necesitamos para la red. En este caso, necesitamos 24 bits (3 * 8) de una dirección de 32 bits. Escribiendo esto en binario

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

A continuación, sabemos que necesitamos determinar cuántas subredes necesitamos. Parece 4. Como necesitamos crear más redes (actualmente solo tenemos una), volteemos algunos bits

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

Ahora que nos hemos decidido por un / 26, comencemos a asignar hosts. Un poco de matemática simple:

32(bits) - 26(bits) = 6(bits) for host addresses.

Tenemos 6 bits para asignar en cada red para hosts. Recordando que necesitamos restar 2 para cada red.

h = host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

Ahora tenemos que averiguar a dónde van los anfitriones. De vuelta al binario!

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

De esta manera puede calcular toda la subred.

Comodines Una máscara de comodín es una máscara de subred invertida.

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

Promover, adicional

Google para los términos 'superredes' y 'VLSM (máscara de subred de longitud variable)', para temas más avanzados.

Ahora puedo ver que tardé demasiado en responder ... suspiro


1
"Dado que tengo un solo octeto para mi porción de host (en el ejemplo anterior). SOLO puedo tener 255 hosts (255 es el valor máximo de un octeto). Pero hay otro pequeño truco: debes restar 2 direcciones de host de los disponibles (actualmente 255). La primera dirección en el rango será para la red (192.168.1.0) y la última dirección en el rango será la transmisión (192.168.1.255). Entonces realmente tiene 253 direcciones disponibles para hosts en una red. "... Esto es incorrecto.
joeqwerty

1
Hay 256 valores posibles para el octeto: 0 a 255, para un total de 256. 256 -2 (red y direcciones de difusión) = 254 posibles direcciones de host.
joeqwerty

Ups ¡Gracias! :-) Desactivado por uno, no tengo idea de cómo logré esa hazaña en particular.
Joseph Kern el

1
-1 Lo siento, pero no ha habido "Clases" desde RFC 1519 en 1993, nadie debería hablar de ellas fuera de un contexto histórico. Son confusos y causan muchos conceptos erróneos.
Chris S

Chris, probablemente tengas razón, pero las clases se impartieron hasta principios de la década de 2000 en el CCNA y en la mayoría de los cursos de pregrado.
Joseph Kern

34

Una breve lección de historia: originalmente, las direcciones IPv4 de unidifusión se dividían en 3 clases, cada una con una longitud de máscara 'predeterminada' asociada (llamada máscara de subred con clase)

  • Clase A: Cualquier cosa en el rango 1.0.0.0 -> 127.255.255.255. Máscara de subred con clase de 255.0.0.0 (/ 8 en notación CIDR)
  • Clase B: Cualquier cosa en el rango 128.0.0.0 -> 191.255.255.255. Máscara de subred con clase de 255.255.0.0 (/ 16 en notación CIDR)
  • Clase C: Cualquier cosa en el rango 192.0.0.0 -> 223.255.255.255. Máscara de subred con clase de 255.255.255.0 (/ 24 en notación CIDR)

La idea era que a las organizaciones de diferentes tamaños se les pudiera asignar una clase diferente de dirección IP, para hacer un uso eficiente del espacio de direcciones IP.

Sin embargo, a medida que las redes IP crecieron, se hizo evidente que este enfoque tenía sus problemas. Por nombrar solo tres:

En un mundo con clase, todas las subredes tenían que tener una máscara de / 8, / 16 o / 24. Esto significaba que la subred más pequeña que se podía configurar era un / 24, que permitía 254 direcciones de host (.0 y .255 se reservaban como la red y las direcciones de difusión, respectivamente). Esto fue tremendamente derrochador, particularmente en enlaces punto a punto con solo dos enrutadores conectados a ellos.

Incluso después de que esta restricción se relajó, los protocolos de enrutamiento anteriores (por ejemplo, RIPv1 ) no anunciaban la longitud de la máscara asociada con un prefijo IP. En ausencia de una máscara específica, usaría la máscara de una interfaz conectada directamente en la misma red con clase, o recurriría al uso de la máscara con clase. Por ejemplo, si desea utilizar la red 172.16.0.0 para enlaces entre enrutadores con máscaras / 30, todas las subredes de 172.16.0.0 - 172.16.255.255 tendrían que tener una máscara / 30 (16384 subredes, cada una con 2 direcciones IP utilizables) )

Las tablas de enrutamiento de los enrutadores de Internet comenzaron a ocupar más y más memoria; esto fue / se conoce como la "explosión de la tabla de enrutamiento". Si un proveedor tuviera 16 redes contiguas / 24, por ejemplo, necesitaría anunciar los 16 prefijos, en lugar de un resumen único que cubriera todo el rango.

Dos refinamientos relacionados nos permitieron ir más allá de las limitaciones anteriores.

  1. Máscaras de subred de longitud variable (VLSM)
  2. CIDR (enrutamiento entre dominios sin clase)

VLSM se refiere a la capacidad de un protocolo de enrutamiento para admitir diferentes máscaras de subred dentro de la misma red con clase. Por ejemplo:

192.168.1.0/24

Podría dividirse en:

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

Lo que permitió un uso mucho más eficiente del espacio de direcciones; las subredes podrían dimensionarse correctamente para la cantidad de hosts / enrutadores que se les adjuntaría.

CIDR toma VLSM y lo extiende al revés; Además de dividir una única red con clase en subredes más pequeñas, CIDR permite la agregación de múltiples redes con clase en un solo resumen. Por ejemplo, las siguientes redes de clase B (/ 16):

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

Se puede agregar / resumir con un solo prefijo:

172.16.0.0/14

En términos de subredes: una máscara de subred tiene 32 bits de longitud. La longitud de la máscara indica cuántos bits identifican la porción de red de la dirección. Por ejemplo:

10.1.1.0/24
  • La máscara de subred con clase es / 8
  • La máscara de subred real es / 24
  • Se han "prestado" 16 bits (24-8) para el uso de subredes.

Esto significa que, suponiendo que toda la red 10.0.0.0/8 esté dividida en subredes en / 24s, habrá 65536 (2 ^ 16) subredes dentro de este rango. (Esto supone que la plataforma que está utilizando admite números de subred de 0 y 255. Consulte la subred de IP de Cisco cero).

Quedan 8 bits en la 'porción de host' de la dirección. Esto significa que hay 256 direcciones IP disponibles (2 ^ 8), de las cuales 2 están reservadas (10.1.1.0 es la dirección de red, 10.1.1.255 es la dirección de difusión dirigida por subred). Esto deja 254 direcciones IP utilizables en esta subred. ((2 ^ 8) - 2)


44
En realidad hubo 5 clases.
dbasnett

55
Es cierto, pero ¿realmente necesitamos entrar en el direccionamiento de clase E reservado y de multidifusión para una pregunta de 'introducción a subredes'? :)
Murali Suriar

2
Trajiste la historia a una pregunta introductoria ... Luego la dejaste incompleta. No estoy seguro de cuál es peor.
Chris S

7

Rangos de red: las redes siempre están referenciadas por 2 números: uno para determinar la red y otro para determinar qué computadora (o host) está en esa red. Como cada dirección de red tiene una longitud de 32 bits, ambos números deben caber en estos 32 bits.

La numeración de la red es importante, ya que esto es lo que ICANN entrega cuando solicita un rango de IP de red. Si no lo tuviéramos, nadie podría notar la diferencia entre mi red y AT & Ts. Entonces, aunque estos números deben ser únicos, nadie más quiere asignar números a los hosts que están en mi red. De ahí la división: la primera parte es administrada por la gente de la red, la segunda parte es toda mía para dar a las máquinas que quiera.

El número de red no está fijado en un cierto número de bits; por ejemplo, si tuviera solo 200 máquinas para administrarme, estaría perfectamente satisfecho con un número de red que usara 24 bits, dejándome solo 8 bits para mí. - que es suficiente para hasta 255 hosts. Como el número de red usa 24 bits, podemos tener muchos de ellos, lo que significa que muchas personas pueden tener sus propias redes.

En el pasado, esto se denominaba red de clase C. (la clase B usó 16 bits para el número de red, y la clase A usó 8 bits, por lo que solo existen unas pocas redes de clase A).

Hoy en día, esta convención de nombres ha pasado de moda. Fue reemplazado por el concepto llamado CIDR. CIDR pone explícitamente el número de bits para sus hosts después de la barra inclinada. Entonces mi ejemplo anterior (la clase C) ahora se conoce como CIDR / 24.

Esto nos da un poco más de flexibilidad, antes de que si tuviera que administrar 300 hosts, ¡necesitaría una red de clase B! Ahora, puedo obtener un / 23 CIDR, así que tengo 9 bits para mí y 23 bits para el número de red. Es posible que ICANN no tenga este tipo de redes, pero si tengo una interna, o si estoy alquilando una red parcial de un ISP, esto hace que sea más fácil de administrar, especialmente porque todos sus clientes pueden recibir un / 29 (dejándome. . 3 bits o un máximo de 8 máquinas) que permite que más personas tengan su propia porción de las direcciones IP disponibles. Hasta que tengamos IPv6, esto es bastante importante.


Sin embargo ... aunque sé que un / 24 CIDR es el equivalente de la antigua red de Clase C, y a / 16 es clase B y a / 8 es una clase A ... todavía estoy perplejo tratando de calcular un / 22 en mi cabeza. Afortunadamente, hay herramientas que hacen esto por mí :)

Sin embargo, si sabe que un / 24 es de 8 bits para los hosts (y 24 bits para la red), entonces sé que un / 23 me da un bit adicional que duplica la cantidad de hosts.


-1 Lo siento, pero mencionar clases fuera de una referencia "histórica" ​​es inapropiado en estos días. No se "pasaron de moda", fueron despreciados oficialmente por el RFC 1519 en 1993. Son confusos y causan un montón de ideas falsas.
Chris S

Algunas implementaciones de protocolos de enrutamiento dinámico resumen a lo largo de los límites con clase, por lo que sigue siendo útil conocerlos.
Ben

5

Plantearé y responderé algunas preguntas relacionadas en el camino:

  • ¿Por qué ves 255.255.255.0tan a menudo?
  • ¿Por qué 192.168.0.1?
  • ¿Por qué 127.0.0.1?

¿Por qué números tan extraños: 255, 192, 168, 127?


Decimal con puntos de 8 + 8 + 8 + 8 bits

Las direcciones de Internet como 194.60.38.10 usan notación decimal con puntos para dividir 32 bits en 8 + 8 + 8 + 8 bits. El decimal con puntos significa convertir cada número a binario y luego rellenarlo con 0's.

Por ejemplo .60.→ 60 = 32 + 16 + 8 + 4 → 111100.00111100..

Entonces 194.60.38.10 es decimal con puntos para la dirección 4 × 8 = 32 bits 11000010.00111100.00100110.00001010, ya que 38 → 100110, 10 → 1010, y así sucesivamente. 194 requiere los 8 bits; El resto está acolchado.

acolchado

Una vez que piense en 255, 192 y 127 en binario de 8 bits, puede comprender más fácilmente por qué ciertos números decimales son tan comunes:

  • 255 = 11111111
  • 192 = 11000000
  • 127 = _1111111
  • 128 = 10000000

Estos números decimales representan bloques de 8 bits visualmente convenientes, como ■■■■■■■■, ■ □□□□□□□ y □ ■■■■■■■. Así que nunca has visto 256 = 2⁹ debido al límite de 8 bits, y 127 = 128−1 = 2⁸ − 1 es el cambio de bits de una potencia de dos, y las potencias de dos están 10………00000en binario.

  • 168 = 10101000

Máscaras de subred: lo que es mío es mío + lo que es tuyo es tuyo

Las máscaras de subred luego dividen cada dirección de Internet de 32 bits en una ID de red y una ID de host. Mientras que las direcciones de Internet pueden tener cualquier combinación de 1 y 0, las máscaras de subred comienzan con solo 1 y terminan con solo 0.

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□ subnet

Apagar los primeros 8 + 8 + 8 = 24 bits y eliminar los 8 bits finales es una forma de dividir la IP ■■ □□□□ ■ □ | □□ ■■■■ □□ | □□ ■ □□ ■ ■ □ | □□□□ ■ □ ■ □ en dos piezas:

■■□□□□■□|□□■■■■□□|□□■□□■■□          network
                             □□□□■□■□ host

Si el propietario de la subred (digamos OmniCorp ) quisiera más IP internas, podría comprar más (digamos 8 + 8 = 16 bits) del lado derecho de la red, así:

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□ subnet
■■□□□□■□ □□■■■■□□                    network
                   □□■□□■■□ □□□□■□■□ host

Claramente, hay una compensación dentro del espacio de direcciones de 32 bits = 2³² = 4,294,967,296 opciones: si compra más ID de red (lado izquierdo), su red interna tiene más ID de host (lado derecho) para asignar.

Por lo tanto, las personas baratas tienen una máscara de subred de

255.255.255.0 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □ □AGURORGOGOGOGOGOGOGOAAAAA.

Incluso las personas más baratas tienen

255.255.255.128 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■ □ □ourgotgotgot□□

o 255.255.255.192 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■■ □ □ourgourmentourgotgment.

Según el folklore, en realidad no era Roger Miller, sino un humilde administrador de sistemas con una máscara 255.255.255.254 que originalmente escribió King of the Road , sustituyendo "No tengo una subred grande" por "No tengo cigarrillos". ".

Fumo mis cigarrillos hasta el trasero

(¿Por qué las máscaras de los humildes están llenas de números tan altos? Porque, como el narrador de Miller, las máscaras de subred cuentan todas las cosas que no tienes).


¿Qué significa la barra inclinada final después de una IP? (por ejemplo, 194.60.38.10/24)

Dado que las máscaras de subred (que dividen "las suyas" de "las nuestras") siempre comienzan con las 1"s", y dado que odiamos resumir los poderes de dos incluso más de lo que odiamos imaginar los poderes de dos en primer lugar, alguien inventó CIDR (la barra después de una IP).

194.60.38.10/24 significa "la submáscara tiene 24 unidades, luego el resto son ceros", entonces

■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □ □AGURGORGOGOGOGOGOGOGOORGO con 8 + 8 + 8 bits pertenecientes a "ellos" y 8 bits perteneciente a "nosotros".

Revertir el himno del vagabundo arriba,

  • /31 es el compositor
  • /24es de clase media ( 255.255.255.0= ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □ □ourc-ourgencyxilourgency ° símbolos
  • /16 es rico ■■■■■■■■ | ■■■■■■■■ | □ □outourgotgotxilourgotour ° iber ° ° ° ° ° ° ° s °
  • /8 es súper rico ■■■■■■■■ | □□□□□□□ inex | □□□□□□rilla inex |
  • /1o /0sería la IANA o algo así.





† Uso bc -l; obase=10; 60por ejemplo.


¿Qué relación con la respuesta tienen las imágenes? ¿Es solo centrarse en la respuesta? :)
simhumileco

4

Si bien lo anterior es correcto (lo siento, TL; DR), el cálculo de subredes todavía causa mucho dolor a muchos administradores de red. En realidad, hay una manera muy fácil de hacer un cálculo de subred, puede hacer la mayor parte en su mente y hay muy poco que memorizar. Para la mayoría de las aplicaciones, ni siquiera es necesario comprender la representación binaria, aunque es útil para comprender completamente las subredes. Aquí solo hablaré sobre IPv4; IPv6 está fuera del alcance de esta discusión.

Recuerda esto:

Hay tres cosas clave para recordar: todas las subredes se basan en potencias de dos, y hay dos números clave: 256 y 32. Más sobre eso más adelante.

Primero, veamos una tabla que contiene potencias de 2:

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

Calcular potencias de 2 es fácil: cada aumento de enteros en la potencia duplica el resultado. 1 + 1 = 2, 2 + 2 = 4, 4 + 4 = 8, 8 + 8 = 16, y así sucesivamente. El número total de direcciones en una subred siempre debe ser una potencia de 2 .

Como cada octeto de una subred IPv4 sube a 256, 256 es un número muy importante y forma la base para el resto de las matemáticas.

Dimensionar la subred

Comenzaremos con una pregunta fácil: "¿cuántas direcciones hay en una subred si la máscara es 255.255.255.248?" Ignoraremos los primeros tres octetos por ahora y miraremos el último. Aquí es lo fácil que es: restar 248 de 256. 256 menos 248 es igual a 8. Hay 8 direcciones disponibles (incluidas la red y las direcciones de difusión). Lo contrario también funciona: "si quiero tener una subred con 16 direcciones, ¿cuál será la máscara de subred?" 256 menos 16 es igual a 240. La máscara de subred será 255.255.255.248.

Ahora, si queremos expandirnos más allá de 256 direcciones (históricamente, una "clase C"), se vuelve un poco más complicado: si nuestro último octeto es 0 y nuestro tercer octeto es, digamos, 240, (255.255.240.0) entonces hacemos los cálculos en el tercer octeto y encontramos que habría 16 direcciones. Entonces multiplicamos 16 por 256 (el número de direcciones en el último octeto) para obtener 4,096. Si los dos últimos octetos son 0 (por ejemplo, 255.240.0.0), tomamos el resultado de la resta del segundo octeto (diremos que es 16 nuevamente), multiplicamos pero 256 (direcciones en el tercer octeto), multiplicamos nuevamente por 256 (direcciones en el último octeto) para obtener 1.048.576 direcciones. ¡Tan fácil como eso! (Bien, lo contrario es un poco más difícil. Si queremos una subred con 1,048,576 direcciones, tendremos que dividir ese número por 256 un par de veces para obtener un número que podamos restar de 256).

Dirección de red

Ahora que sabemos cómo calcular la máscara de subred, ¿cómo podemos determinar cuál es la dirección de red? Eso es fácil: siempre es un múltiplo de la cantidad de direcciones en nuestra subred. Entonces, si tenemos 16 direcciones en nuestra subred, las posibles direcciones de red serán 0, 16, 32, 48, 64 y así sucesivamente hasta 240. (Tenga en cuenta que 0 es un múltiplo válido de cualquier número, ya que cualquier número multiplicado por 0 es igual a 0.)

Y, por supuesto, la dirección de transmisión será la última dirección del alcance. Entonces, si tenemos 16 direcciones en nuestra subred, y hemos elegido una dirección de red de 10.3.54.64, la dirección de transmisión será (64 + 16-1 = 79) 10.3.54.79.

Notación CIDR

Entonces, ¿qué tal la notación CIDR? ¿Cómo traducir eso desde y hacia una máscara de subred de estilo IPv4?

¿Recuerdas nuestros poderes de dos? Bueno, ahora tenemos otro número clave para recordar además de 256: 32. Recuerde, la notación CIDR describe el número de bits significativos en la dirección IPv4, y hay 32 bits en una dirección IPv4, 8 por cada octeto. Entonces, si tenemos una máscara de subred de 255.255.255.240, son 16 direcciones. Si miramos nuestra tabla de "potencias de 2" arriba, vemos que 16 es dos a la cuarta potencia (2 ^ 4). Entonces restamos ese número de potencia - 4 - de 32 y obtenemos 28. Nuestra notación CIDR para una máscara de subred de 255.255.255.240, nuestra notación CIDR es / 28.

Y si se nos da un CIDR de / 28, restamos eso (28) de 32 para obtener 4; elevar 2 a esa (4ta) potencia (2 ^ 4) para obtener 16; luego reste eso (16) de 256 para obtener 240; o 255.255.255.240.


gracias. Pero todavía estoy confuso sobre cómo la PC usa la máscara de subred. Cuando una aplicación en una PC quiere enviar datos, la encapsula en un paquete. ¿La máscara de subred determina cómo se encapsula un paquete? Por ejemplo, si la PC quería enviar un paquete en la red local, usaría un marco de ethernet en.wikipedia.org/wiki/Ethernet_frame y si quisiera fuera de la red, usaría un paquete tcp en.wikipedia.org/wiki / ... ?
aquagremlin

Básicamente, no sé CÓMO una PC determina a dónde enviar sus datos. La red ethernet es como un bus: va a todas partes. Poner un paquete a través del conector ethernet de una PC es un evento genérico, por lo tanto, el paquete en sí mismo debe determinar quién responde. Un paquete destinado a ser recogido por un dispositivo local (conmutador u otra PC en el LAN) debe verse diferente a un paquete que será recogido por un enrutador.
aquagremlin

Esto sucede en una capa debajo de TCP. Cada dispositivo tiene una dirección de hardware (MAC) que está asociada con una dirección IP en la tabla ARP de cada dispositivo. Esto se construye a través del descubrimiento. Cuando un paquete está destinado a un host en la red local, se etiqueta con el MAC para el dispositivo de destino. Cuando un paquete está destinado a un host remoto, se etiqueta con el MAC para el enrutador en la red local. A medida que pasa a través del enrutador, el MAC se despoja y luego se etiqueta con el MAC del enrutador del siguiente salto. La subred simplemente define el alcance de la red local. (Esa es la versión simple de <500 caracteres.)
Jonathan J

2

También siento que al menos debería mencionarse los NAT, porque se usan con tanta frecuencia en redes modernas en lugar de subredes, debido al agotamiento de la dirección IPv4, entre otras cosas. (Además, cuando aprendí por primera vez acerca de las subredes, estaba muy confundido sobre cómo las subredes se relacionan con las redes creadas por los enrutadores WiFi).

NAT (traducción de direcciones de red) es una técnica (comúnmente) utilizada para crear redes privadas mediante la asignación de un espacio de direcciones (IP: puerto) a otro. Principalmente, esto se usa para crear una red privada de múltiples IP privadas detrás de una dirección pública, por ejemplo, en enrutadores Wifi, por organizaciones (como una universidad o una corporación), o, a veces, por ISP.

La traducción de la dirección real se realiza de forma transparente en nodos con capacidad NAT, generalmente enrutadores. Puede ser de muchas formas, cono completo, dirección restringida, puerto restringido, etc. o una combinación de estos, que dicta cómo se pueden iniciar las conexiones a través del nodo.

Los detalles completos se pueden encontrar en Wikipedia , pero, por ejemplo, considere un enrutador Wifi con 2 dispositivos conectados. La IP pública del enrutador es 10.9.20.21/24, y la IP de los dispositivos (IP privadas) son A: 192.168.0.2, B: 192.168.0.3y la del enrutador es R: 192.168.0.1. Por lo tanto, si Adesea conectarse al servidor S: 10.9.24.5/24, (que en realidad está en una subred diferente con el enrutador aquí):

  1. A envía un paquete de IP a R(que sería la puerta de enlace predeterminada) con la IP de origen 192.168.0.2, el puerto src (por ejemplo) 14567y la IP de destino: 10.9.24.5(aunque el puerto es realmente una parte del encabezado TCP).
  2. El enrutador (que tiene capacidad NAT) asigna el puerto 14567al dispositivo Ay cambia la fuente del paquete IP a 10.9.20.21(que es la IP pública del enrutador). Esto está en contraste con las subredes descritas anteriormente, donde los paquetes IP en realidad nunca se cambian .
  3. Srecibe la serie de paquetes TCP (con src IP:, 10.9.20.21src Port:) 14567y envía paquetes de respuesta con esos valores en los campos de destino.
  4. Rcomprueba el puerto de destino, que es 14567y reenvía el paquete A.
  5. A recibe el paquete de respuesta.

En la situación anterior, si Bintenta abrir una conexión en el mismo puerto de origen ( 14567), se correlacionaría con un puerto diferente R(y el puerto en el paquete saliente cambió) antes de enviarlo S. Es decir, también habría traducción de puertos en lugar de solo IP.

Dos cosas a tener en cuenta aquí:

  1. Debido a esta traducción de direcciones, a menudo no es posible iniciar una conexión a dispositivos en la red privada sin utilizar algunas técnicas especiales.
  2. La restricción en el total de conexiones TCP desde el mismo dispositivo a un servidor (65536 = 2 ^ 16) ahora se aplica colectivamente a todos los dispositivos detrás de NAT, en la forma NAT utilizada anteriormente.