Las direcciones IPv4 tienen 32 bits de ancho y, por lo tanto, el tamaño del espacio de direcciones es 2 32 o 4,294,967,296. Sin embargo, esto es solo un límite superior teórico. No es una representación precisa de todas las direcciones que realmente se pueden usar en Internet público.
Para los propósitos de este desafío, se supone que todo direccionamiento es con clase . En realidad, la subdivisión con clase del espacio de direcciones ha sido reemplazada por CIDR (enrutamiento entre dominios sin clase y VLSM (enmascaramiento de subred de longitud variable) , pero esto se ignora para este desafío.
Según el esquema de direcciones con clase, hay 3 clases:
- Clase A -
0.0.0.0
a127.255.255.255
con/8
longitud de máscara de red - Clase B -
128.0.0.0
a191.255.255.255
con/16
longitud de máscara de red - Clase C -
192.0.0.0
a223.255.255.255
con/24
longitud de máscara de red
Las clases D (multidifusión) y E (reservada) también se definen, pero no se utilizan para direcciones públicas de unidifusión.
Cada clase se subdivide en redes según la máscara de red para esa clase.
Por 3.0.0.0
lo tanto, es un ejemplo de una red de clase A. La longitud de máscara de red de clase A es 8, por lo que el espacio de direcciones completa para esta red es 3.0.0.0
a 3.255.255.255
. Sin embargo, la primera dirección ( 3.0.0.0
) está reservada como la dirección de red y la última dirección ( 3.255.255.255
) está reservada como la dirección de difusión para esa red. Por lo tanto, el rango real de direcciones utilizables es 3.0.0.1
a 3.255.255.254
2 24 - 2 (= 16,777,214) direcciones totales.
Del mismo modo, 200.20.30.0
es un ejemplo de una red de clase C. La longitud de máscara de red para la clase C es 24, por lo que el espacio de dirección completa para esta red es 200.20.30.0
a 200.20.30.255
. Extracción de las hojas direcciones de red y transmisión de la gama real de direcciones utilizable es 200.20.30.1
a 200.20.30.254
que es de 2 8 - 2 (= 254) direcciones en total.
Existen otras limitaciones en los rangos de direcciones que pueden usarse para unidifusión pública. De acuerdo con RFC 6890 , los rangos no permitidos son:
0.0.0.0/8
- Redes locales10.0.0.0/8
- Uso privado100.64.0.0/10
- Espacio de direcciones compartidas127.0.0.0/8
- Loopback169.254.0.0/16
- Enlace local172.16.0.0/12
- Uso privado192.0.0.0/24
- Asignaciones de protocolo IETF192.0.2.0/24
- Reservado para su uso en la documentación192.88.99.0/24
- 6to4 Relay Anycast192.168.0.0/16
- Uso privado198.18.0.0/15
- Benchmarking198.51.100.0/24
- Reservado para su uso en la documentación203.0.113.0/24
- Reservado para su uso en la documentación
Tenga en cuenta que la lista anterior usa máscaras de red VLSR para especificar eficientemente un rango. En todos los casos menos uno, la longitud de la máscara dada tiene una especificidad menor o igual que la longitud de la máscara con clase normal para el inicio del rango. Por lo tanto, cada uno de estos rangos de VLSR es equivalente a una o más redes con clase. Por ejemplo 172.16.0.0/12
es equivalente a las redes de clase B 172.16.0.0
a 172.31.0.0
o el intervalo de direcciones 172.16.0.0
a 172.31.255.255
.
La excepción a esta regla es el 100.64.0.0/10
rango VLSR, que es más específico que el 100.0.0.0
rango Clase A que lo contiene . Por 100.0.0.0
lo tanto , se manejará como otros rangos de Clase A con la excepción de que tiene un agujero de 4,194,304 direcciones en el medio. Las direcciones válidas en este rango de Clase A serán 100.0.0.0
a 100.63.255.255
y 100.128.0.0
a 100.255.255.254
, un total de 2 24 - 2 22 - 2 (= 12582910) direcciones en total.
El objetivo de este desafío es generar todas las direcciones IPv4 de unidifusión de Clase A, B y C que pueden asignarse de manera válida a un host de Internet público (es decir, excluyendo las detalladas anteriormente).
No se dará ninguna entrada y no se debe esperar.
La salida puede ser de cualquier forma conveniente para su idioma, por ejemplo, matriz, lista, cadena delimitada. Las direcciones deben enviarse en formato decimal con puntos estándar.
El orden de salida no importa.
Las incorporaciones que proporcionan específicamente los rangos de direcciones requeridos no están permitidas. Del mismo modo, no se permiten los métodos para inspeccionar dinámicamente una tabla de enrutamiento BGP (u otro protocolo) para Internet público.
La dirección numéricamente más baja será 1.0.0.1
y la numéricamente más alta será 223.255.255.254
.
Este desafío es similar a Imprimir todas las direcciones IPv6 , pero debido a las restricciones debería requerir una implementación no trivialmente diferente.
fuente
@echo off
, también.