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


Esto es un Pregunta canónica sobre las subredes IPv4.

Relacionado:

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

  • Si tengo una red, ¿cómo me imagino? ¿Cómo dividirlo?
  • Si me dan una máscara de red, ¿cómo puedo Saber para que sirve la red. ¿eso?
  • A veces hay una barra seguida Por un número, ¿cuál es ese número?
  • A veces hay una máscara de subred, pero también una máscara de comodín, ¿parecen lo mismo pero son diferentes?
  • ¿Alguien mencionó algo sobre saber binario para esto?

422
2017-08-04 15:51


origen




Respuestas:


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

Sin embargo, en pocas palabras, 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 ser fluido en la notación binaria!

Sí, eso puede ser un poco duro. Es realmente 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 tan simple porque solo debes saber cómo 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 desde 0. Cuando el automóvil sale de fábrica, el odómetro lee "00000000".

Cuando ha recorrido su primera milla, el odómetro lee "00000001". Hasta ahora tan bueno.

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

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

Finalmente, cuando haya recorrido su cuarta milla, ambos dígitos (que estaban leyendo "1" al final de la tercera milla) retroceden a la posición cero, y el tercer dígito se enrolla a la posición "1", lo que nos da " 00000100 ". Esa es la representación binaria del número decimal 4.

Puedes memorizar todo eso si quieres, pero solo necesitas entenderlo. cómo el pequeño odómetro "se da vuelta" a medida que aumenta el número que está contando. Es exactamente igual a 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 hacer avanzar el odómetro, marcar por tic, contar en voz alta hasta que lo haya hecho un número de veces igual al número decimal que desea convertir en binario. Cualquier cosa que se muestre en el odómetro después de todo ese couting y rolling sería la representación binaria del número decimal que contó hasta.

Como entiendes cómo avanza el odómetro, también entenderás cómo se desplaza hacia atrás. Para convertir un número binario mostrado en el odómetro de nuevo a decimal, puede hacer retroceder el odómetro una vez por vez, contando en voz alta hasta que el odómetro muestre "00000000". Cuando haya terminado todo el conteo 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.

La conversión de 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 lado rápido: cada dígito en un número binario se conoce como "bit". Eso es "b" de "binario" y "it" de "dígito". Un bit es un dígito binario.

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

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 llenarlas de derecha a izquierda. En la ranura más a la derecha, ingrese el número "1", porque siempre comenzaremos con "1". En la siguiente ranura a la izquierda ingrese el doble del valor en la ranura a la derecha (entonces, "2" en la siguiente, "4" en la siguiente) y continúe hasta que todas las ranuras estén llenas. (Terminarás memorizando estos números, que son los poderes de 2, a medida que haces esto cada vez más. Estoy bien hasta 131,072 en mi cabeza, pero luego necesito una calculadora o un 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 llegar a:

 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.

Convertir decimal a binario es igual de fácil y es el mismo algoritmo básico, ejecutado en reversa.

Digamos que queremos convertir el número 218 a binario. Comenzando por la derecha de una hoja de papel, escriba el número "1". A la izquierda, doble ese valor (entonces, "2") y continúe moviéndose hacia la izquierda del papel, duplicando 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 número grande, 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    |

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

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

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

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

Cuando hayas terminado, deberías 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, ves un número binario "11011010". Efectivamente, 218, convertido a binario, es "11011010".

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

Dividir direcciones

Piense en el enrutamiento de IP como la entrega de pizza.

Cuando se le pide que entregue una pizza a "123 Main Street", como humano, tiene muy claro que desea ir al edificio con el número "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 están numeradas en cientos. Usted "sólo 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: obtener la carga (paquetes) lo más cerca posible del destino. Un enrutador está conectado a dos o más subredes IP (para ser de alguna utilidad). Un enrutador debe examinar las direcciones IP de destino de los paquetes y dividir esas direcciones de destino en sus componentes de "nombre de calle" y "número de construcción", al igual que el controlador 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 "número de construcción" (como "123" en el ejemplo anterior) llamado "ID de host" y un componente "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 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 estas partes componentes para tomar decisiones de enrutamiento. Desde que entendemos cómo se enrutan los paquetes IP para entender este proceso, también necesitamos saber cómo dividir las direcciones IP. Afortunadamente, extraer la identificación del host y la identificación de la red de una dirección IP y una máscara de subred es bastante fácil.

Comience escribiendo la dirección IP en binario (use una calculadora si no ha aprendido a hacer esto mentalmente todavía, pero anote cómo hacerlo) es realmente 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 "" se detiene "el" 1 "se alinea" con un punto en la dirección IP. Ese es el punto en el que el ID de red y el 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 por 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 el "quiebre" entre la ID de red y la ID de 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 la 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 "Classless Inter-Domain Routing" (CIDR). "255.255.255.0" se compone de 24 bits de 1 al principio, y es más rápido escribir eso 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 en 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 (denominada dirección IP "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 mala suerte de tratar con equipos muy antiguos o protocolos antiguos (como RIPv1) que no admiten direccionamiento IP sin clase. No voy a mencionar estas "clases" de direcciones porque no son aplicables hoy en día y pueden ser confusas.

Algunos dispositivos usan una notación llamada "máscaras de comodín". Una "máscara de 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 de comodín" de un / 26 es:

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

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

Cómo funciona un enrutador

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

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

  • 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 de "192.168.10.2", es bastante fácil decir (a simple vista) que el paquete debe enviarse a la interfaz Ethernet1, porque la dirección de la interfaz Ethernet1 corresponde al destino del paquete. dirección. 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 construir 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 seres humanos, para empezar, el enrutador lo obtiene como binario fuera del cable) e intentar que coincida con cada dirección de nuestro enrutamiento 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 la primera multa de 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 ha El paquete está vinculado a la interfaz Ethernet1.

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

Rutas estáticas

Hasta este punto, hemos hablado de nuestro enrutador hipotético como tener redes conectadas directamente a él. Eso no es, obviamente, cómo realmente funciona el mundo. En la analogía de la conducción de pizzas, a veces al conductor no se le permite ingresar al edificio más allá de la recepción, y tiene que entregar la pizza a otra persona para que la envíe 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 conoces la tabla de enrutamiento de RouterA como:

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

Supongamos que hay otro enrutador, "Router 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 - Interface RouterB-Ethernet0
  • ID de red: 192.168.30.0 (11000000.10101000.00011110.00000000) - máscara de subred / 24 - Interface RouterB-Ethernet1

En el arte bonito 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, sobre el cual el enrutador A no sabe nada.

Supongamos 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 Router B.

Con la tabla de enrutamiento que se muestra arriba, ninguna de las entradas 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 al PC emisor con el mensaje "Red de destino inalcanzable".

Para que el enrutador A sea "consciente" 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 de 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 con destino a 192.168.30.0/24, envíelo a 192.168.10.254 porque sabe cómo manejarlo". 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 255.155.2055.0 192.168.20.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 "extremo lejano". Si el enrutador B en nuestro ejemplo no tenía una entrada de la tabla de enrutamiento para la red 192.168.20.0/24 del "extremo lejano" adjunta al enrutador A, nuestro paquete hipotético desde la PC al 192.168.20.13 haría llegue al dispositivo de destino al 192.168.30.46, pero el enrutador B devolverá cualquier respuesta que intente enviar 192.168.30.46 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 ambos Instrucciones cuando piensas en la comunicación en redes informáticas.

Puede obtener una gran cantidad de 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 en que los enrutadores intercambian información de enrutamiento entre sí que, de hecho, podrían 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 dinamicamente cambie la tabla de enrutamiento en función de las condiciones de la red (uso de ancho de banda, una interfaz "decreciente", etc.) y, como tal, el uso de un protocolo de enrutamiento dinámico puede dar como resultado una configuración que "rute" las fallas o cuellos de botella en la infraestructura de la red. (Los protocolos de enrutamiento dinámico son CAMINO fuera del alcance de esta respuesta, sin embargo.)

No puedes llegar desde aquí

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

En cuanto a 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.0001111.01011100, BTW).

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

Digamos que hay otro enrutador (Router C) sentado en la dirección "192.168.20.254". Router 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 coincidan con ninguna interfaz local hasta el enrutador C, de manera que el enrutador C pueda enviarlos a Internet. Introduzca 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 golpeando esta nueva entrada. Es un poco desconcertante, al principio. Estamos buscando hacer coincidir los bits cero de la dirección de destino con ... esperar ... ¿qué? ¿Haciendo coincidir los bits cero? Por lo tanto, no estamos buscando un partido en absoluto. Básicamente, esta entrada de la tabla de enrutamiento dice: "Si llegas aquí, en lugar de renunciar a la entrega, envía el paquete al enrutador al 192.168.20.254 y deja que lo maneje".

192.168.20.254 es un destino que nosotros HACER Saber como entregar un paquete a. Cuando nos enfrentamos a un paquete con destino a un destino para el que no tenemos una entrada específica de 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 su entrega. A veces escuchará la puerta de enlace predeterminada llamada "puerta de enlace de último recurso".

Para que una ruta de acceso predeterminada sea efectiva, debe referirse a un enrutador al que se pueda acceder utilizando las otras entradas en la tabla de enrutamiento. Si intentara 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 no sería efectiva como puerta de enlace predeterminada. Esto se puede expresar de manera concisa: la puerta de enlace predeterminada debe establecerse en una dirección que ya sea accesible mediante el uso de otra ruta en la tabla de enrutamiento.

Los enrutadores reales suelen almacenar 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 coincidan con todas las demás entradas de la tabla.

Urbanismo y enrutamiento IP

Romper una subred IP en subredes IP más pequeñas es 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 IP es realmente muy parecida.

Hay tres razones principales por las que subordinaría una red:

  • Es posible que desee comunicarse a través de diferentes medios de comunicación a diferencia. Si tiene una conexión T1 WAN entre dos enrutadores IP de edificios, podría colocarlos en los extremos de estas conexiones para facilitar la comunicación a través del T1. Las redes en cada extremo (y posiblemente la red "intersticial" en el propio T1) se asignarán 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 utilizar la división en subredes para limitar la cantidad de tráfico de difusión en una parte determinada de la red. Los protocolos de nivel de aplicación utilizan la capacidad de transmisión de Ethernet con 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 difusión en el cable (o aire, en Ethernet inalámbrico) puede aumentar hasta el punto de crear problemas para la entrega de tráfico no de difusión. (En los viejos tiempos, el tráfico de difusión podría abrumar la CPU de los hosts al obligarlos a examinar cada paquete de difusión. Eso es menos probable en la actualidad). El tráfico excesivo en Ethernet conmutada también puede venir en forma de "inundación de tramas a destinos desconocidos". Esta condición se debe a que un conmutador Ethernet no puede realizar un seguimiento de cada destino en la red y es la razón por la que las redes Ethernet conmutadas no pueden escalar a un número infinito de hosts. El efecto de la inundación de tramas en destinos desconocidos es similar al efecto del exceso de tráfico de difusión, a los efectos de la división en subredes.

  • Es posible que desee "controlar" 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 autorizadas del servidor de cola de impresión les envíen trabajos. Al limitar el tráfico permitido a la subred del dispositivo 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 todos los dispositivos del servidor de impresión en una subred y crear una regla en el enrutador o firewall conectado a esa subred para controlar la lista de hosts permitidos para enviar tráfico a los dispositivos del servidor de impresión. (Normalmente, tanto los enrutadores como los cortafuegos pueden tomar decisiones sobre cómo o si entregar un paquete según las direcciones de origen y destino del paquete. Los cortafuegos suelen ser una subespecie de enrutador con una personalidad obsesiva. Pueden ser muy, muy preocupados la carga útil de los paquetes, mientras que los enrutadores normalmente ignoran las cargas útiles y simplemente entregan los paquetes.)

Al planificar una ciudad, puede planificar cómo las calles se intersecan unas con otras, y pueden usar calles de un solo sentido, de un solo sentido o de callejón sin salida para influir en los flujos de tráfico. Es posible que desee que Main Street tenga una longitud de 30 cuadras, cada una de las cuales tiene hasta 99 edificios cada una. Es bastante fácil planificar la numeración de las calles, de modo que cada bloque en Main Street tenga un número de calles que aumenta en 100 por cada bloque. Es muy fácil saber cuál debe ser el "número inicial" en cada bloque subsiguiente.

Al planificar subredes IP, le interesa construir la cantidad correcta 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.

Para los propósitos de esta respuesta, construir nuestras subredes es nuestra única preocupación importante. 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.

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

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


631
2017-08-04 15:58



@Joseph: es una conferencia que he dado muchas veces por mi propio bien. > sonrisa <voy a mirar tu sección binaria. No me gusta enseñar matemáticas (lo que realmente es lo que entender binario es contar en la base 2) porque no soy muy bueno en eso. - Evan Anderson
Mi único problema con la ruptura de la respuesta es que hay que entender por qué la división en subredes existe (Enrutamiento IP) antes de poder entender cómo dividir efectivamente una red IP en subredes. Nunca he encontrado una buena manera de discutir un tema aislado del otro. (En realidad, diseñar una red IP con VLSM es algo natural y "tiene sentido" después de entender el enrutamiento IP ...) - Evan Anderson
No lo rompas. - Joseph Kern
+1 para la publicación más completa jamás vista en serverfault - Scott Lundberg
Upvoted aunque solo sea por la metáfora del odómetro. Ahora sé cómo explicar cómo funciona el binario a las personas. - phuzion


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

Su ISP le ofrece el rango de ID de red 192.168.40.0/24 (11000000.10101000.00101000.00000000). Usted 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, desea romper estas diversas partes de su red. en subredes IP (entre las que se puede enrutar el firewall / dispositivo enrutador).

Tienes:

  • 12 servidores, 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 dada, hay dos direcciones reservadas que no se pueden usar como direcciones IP válidas del dispositivo: la dirección con todos los ceros en la parte de ID de host y la dirección con todas las de la parte de ID de host. Como tal, para cualquier subred IP dada, el número de direcciones de host disponibles es 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 Se puede ver que la máscara de subred tiene 24 bits. Eso deja 8 bits disponibles para ID de host. Sabemos que 2 a la 8ª potencia 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 son permitidas para las ID de host, eso nos deja con 254 hosts posibles que se pueden asignar en la red 192.168.40.0/24.

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

Tiene 8 bits de máscara de subred para "jugar con" (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 serie 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 próxima potencia mayor de dos de la cantidad 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 gratis (si no fuera así, sería una indicación de que nuestra subred de inicio es demasiado pequeña para acomodar todos nuestros dispositivos).

Tomemos nuestra ID de red, tal como la proporciona 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 sobre eso hasta que tenga sentido. Incrementamos la máscara de subred en un bit de longitud, haciendo que la ID de la red cubra un bit que se habría utilizado para la ID del host. Dado que 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 también será 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á el ID de 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 albergar las computadoras de nuestros clientes, y una segunda red a la que luego podemos aplicar el mismo principio para dividirnos en redes aún más pequeñas. Vamos a hacer una nota:

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

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

Tenemos 12 computadoras de servidor, pero podríamos comprar hasta 6 más. Vamos a planear 18, lo 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, así que tenemos suficientes bits para continuar "jugando". Agregar un bit 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 ID de host posibles: 2 ^ (32 - 26) - 2.

¡Eso significa que ambas redes tienen direcciones suficientes para nuestros servidores y conmutadores! Tomemos 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 rutas"). 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 con destino a 192.168.40.206 (uno de nuestros conmutadores), solo necesitan saberlo para pasarlo a nuestro enrutador (ya que 192.168.40.206 coincide con la identificación 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)

Puedes planificar redes muy geográficamente grandes de la misma manera. Siempre y cuando haga la "planificación urbana" correcta en la delantera (anticipando la cantidad de hosts en cada subred con cierta precisión y mirando hacia el futuro), puede crear una gran jerarquía de enrutamiento que, en los enrutadores centrales, "resume "a un número muy reducido de rutas. Como vimos anteriormente, cuantas más rutas haya en la tabla de enrutamiento de un enrutador, más lento realizará su trabajo. Diseñar una red IP con VLSM y mantener las tablas de enrutamiento pequeñas es algo bueno (tm).

El irrealismo de los ejemplos.

El mundo ficticio en esta respuesta es, obviamente, ficticio. Normalmente, 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 / 24 redes entre enrutadores no es compatible con Real Life (tm). Es un buen ejemplo, pero es un desperdicio de espacio de direcciones. Típicamente, un / 30 o un / 31 (ver http://www.faqs.org/rfcs/rfc3021.html para detalles sobre cómo funciona / 31's (están fuera del alcance de esta respuesta, por supuesto) la red se usa en enlaces que son estrictamente punto a punto entre dos enrutadores.


137
2017-08-04 15:53



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 todavía debería decir "último". - JoeCool1986
@ JoeCool1986 - Buena captura. - Evan Anderson
Voy a votar esta respuesta para asegurarme de que dos respuestas se mantengan en orden. - l46kok
En la parte en la que creas dos subredes de 192.168.40.128 y creas una ID de red de 192.168.40.192, ¿de dónde provienen los 192? - user6607
@ user6607 Las subredes se cuentan al revés (sin espacios). Por ejemplo la primera subred 0 se representa como 00000000. La segunda subred es 128 asi que 10000000 y la tercera subred 192 se representa como 11000000, etc. Simplemente siga contando hacia atrás para encontrar nuevas subredes. - Joseph Kern


Subredes

La sub-red no es difícil pero puede ser intimidante. Así que vamos a empezar con el paso más simple posible. Aprendiendo a contar en binario.

Binario

Binario es un sistema de conteo de base 2. Consta de sólo 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 imaginas 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 las subredes como una mano corta.

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

¿Por qué Subnet?

Las direcciones IPv4 (192.168.1.1) son escasas. La subred nos permite aumentar la cantidad de redes (o hosts) disponibles. Esto es por razones administrativas y 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.

Por defecto, 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 asi

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Mira el ejemplo binario otra vez. ¿Observe cómo dije que los primeros tres octetos se usan para la red? Observe cómo la porción de la red es todos unos? Eso es todo lo que es la sub-red. Vamos a ampliar.

Dado que tengo un solo octeto para mi parte del 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: necesita 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 el siguiente trozo 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 averiguar cuántas subredes necesitamos. Se ve como 4. Dado que necesitamos crear más redes (actualmente solo tenemos una), podemos voltear 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 hemos decidido un / 26, comencemos a asignar hosts. Un poco de matemáticas simples:

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

Tenemos 6bits para asignar en cada red para los 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 forma podrás calcular la subred completa.

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

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

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


73
2017-08-04 15:12



"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: debe 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). Así que realmente tiene 253 direcciones disponibles para hosts en una red. "... Esto es incorrecto. - joeqwerty
Hay 256 valores posibles para el octeto: 0 a 255, para un total de 256. 256 -2 (direcciones de red y difusión) = 254 direcciones de host posibles. - joeqwerty
Ups. ¡Gracias! :-) Apagado por uno, no tengo idea de cómo logré esa hazaña en particular. - Joseph Kern
-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 aún se enseñaron a principios de la década de 2000 en el CCNA y en la mayoría de los cursos de nivel universitario. - Joseph Kern


Una breve lección de historia: originalmente, las direcciones IPv4 de unidifusión se dividieron en 3 clases, cada una con una longitud de máscara 'predeterminada' asociada (denominada 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 podría 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, quedó claro que este enfoque tenía sus problemas. Para nombrar solo tres:

En un mundo con clase, todas las subredes. tenía tener una máscara de / 8, / 16 o / 24. Esto significaba que la subred más pequeña que podía configurarse era una / 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 inútil, particularmente en enlaces punto a punto con solo dos enrutadores conectados a ellos.

Incluso después de que se relajó esta restricción, los protocolos de enrutamiento anteriores (por ejemplo, RIPv1) no anunció la longitud de la máscara asociada con un prefijo de 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 a usar la máscara con clase. Por ejemplo, si desea utilizar la red 172.16.0.0 para enlaces entre enrutadores con / 30 máscaras, todos 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 cada vez más memoria; esto fue / es conocido como la 'explosión de la tabla de enrutamiento'. Si un proveedor tuviera 16 redes contiguas / 24, por ejemplo, necesitarían anunciar los 16 prefijos, en lugar de un único resumen que cubriera todo el rango.

Dos refinamientos relacionados nos permitió 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 el número de hosts / enrutadores que se adjuntarían a ellas.

CIDR toma VLSM y lo extiende a la inversa; 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 división en subredes: una máscara de subred tiene una longitud de 32 bits. La longitud de la máscara indica cuántos bits identifican la parte de la 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, asumiendo que toda la red 10.0.0.0/8 se divide en subredes en / 24s, habrá 65536 (2 ^ 16) subredes dentro de este rango. (Suponiendo que la plataforma que está utilizando admite números de subred de 0 y 255. Consulte la subred 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 transmisión dirigida a la subred). Esto deja 254 direcciones IP utilizables en esta subred. ((2 ^ 8) - 2)


31



En realidad hubo 5 clases. - dbasnett
Es cierto, pero, ¿realmente necesitamos entrar en el direccionamiento de clase E reservado y multidifusión para una pregunta de "introducción a la división en subredes"? :) - Murali Suriar
Trajiste la historia a una pregunta de introducción ... Luego la dejaste incompleta. No estoy seguro de cuál es peor. - Chris S


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 nertwork 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 es lo que ICANN reparte cuando solicita un rango de IP de red. Si no lo tuviéramos, nadie podría decir la diferencia entre mi red y AT&T. Entonces, mientras 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 mía para dar a las máquinas que quiera.

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

En el pasado, esto se conocía como una red de clase C. (la clase B utilizó 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 nomenclatura ha pasado de moda. Fue reemplazado por el concepto llamado CIDR. CIDR pone explícitamente la cantidad de bits para sus hosts después de la barra diagonal. Por lo tanto, mi ejemplo anterior (la clase C) ahora se conoce como CIDR / 24.

Esto nos da un poco más de flexibilidad, antes, si tuviera 300 hosts para administrar, ¡necesitaría una red de clase B! Ahora, solo 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 fuera, pero si tengo una interna, o si estoy rentando 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 pequeña porción de las direcciones IP disponibles. Hasta que obtengamos IPv6, esto es bastante importante.


Sin embargo ... aunque sé que un / 24 CIDR es el equivalente de la antigua red de Clase C, y un / 16 es una clase B y un / 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 8 bits para los hosts (y 24 bits para la red), entonces sé que un / 23 me da un bit adicional que duplica el número de hosts.


6



-1 Lo sentimos, pero mencionar clases fuera de una referencia "histórica" ​​es inapropiado en estos días. No se "pasaron de moda", ya que fueron rechazados oficialmente por RFC 1519 en 1993. Son confusos, ya que todos ellos causan un montón de ideas erróneas. - Chris S
Algunas implementaciones de protocolos de enrutamiento dinámico se resumen a lo largo de los límites con clase, por lo que aún es útil conocerlos. - Ben


Si bien lo anterior es correcto (lo siento, TL; DR), el cálculo de subredes sigue causando muchos problemas a muchos administradores de red. En realidad, hay una forma muy sencilla de realizar el cálculo de subred, puede hacer la mayor parte de su mente y hay muy poco que tenga que memorizar. Para la mayoría de las aplicaciones, ni siquiera es necesario entender la representación binaria, aunque es útil para una comprensión completa de la división en subredes. Aquí solo discutiré IPv4; IPv6 está fuera del alcance de esta discusión.

Recuerda esto:

Hay tres cosas clave que recordar: todas las subredes se basan en potencias de dos, y hay dos números clave: 256 y 32. Más sobre esto 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 las potencias de 2 es fácil: cada incremento 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


3



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 a la red local, usaría un marco 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 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 debe determinar quién responde a él. Un paquete destinado a ser recogido por un dispositivo local (switch u otra computadora en la LAN) tiene que verse diferente a un paquete que va a 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 elimina 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


También siento que al menos debería haber una mención de los NAT, porque se usan tan comúnmente en las redes modernas en lugar de las subredes, debido al agotamiento de las direcciones IPv4, entre otras cosas. (Además, cuando estaba aprendiendo por primera vez acerca de las subredes, estaba muy confundido en cuanto a cómo se relacionan las subredes 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 direcciones 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 está hecha transparentemente En nodos capaces de 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 a él. La IP pública del router es 10.9.20.21/24, y la IP de los dispositivos (IP privadas) son A: 192.168.0.2, B: 192.168.0.3 y el del enrutador es R: 192.168.0.1. Asi si A quiere 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 IP a R(que sería la puerta de enlace predeterminada) con la IP de origen 192.168.0.2, puerto src (por ejemplo) 14567y la IP de destino: 10.9.24.5 (Aunque el puerto es en realidad una parte del encabezado TCP).
  2. El enrutador (que es capaz de NAT) mapea el puerto 14567 al dispositivo A y cambia la fuente en el paquete IP para 10.9.20.21(que es la IP pública del router). Esto contrasta con la división en subredes descrita anteriormente, donde los paquetes IP en realidad nunca se cambian.
  3. S recibe la serie de paquetes TCP (con src IP: 10.9.20.21, src Puerto: 14567) y enviar paquetes de respuesta con esos valores en los campos de destino.
  4. R comprueba el puerto de destino, que es 14567 y reenvía el paquete a A.
  5. A recibe el paquete de respuesta.

En la situación anterior, si B intentado abrir una conexión en el mismo puerto de origen (14567), sería mapeado a un puerto diferente por R(y el puerto en el paquete saliente cambiado) antes de enviar a 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 usar 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 de NAT utilizada anteriormente.

1