IP-Range
Este ejercicio consiste en crear una librería que nos calcule un rango de direcciones IP a partir de una dirección IP y con una dirección IP final o una mascara o una mascara corta.
Una dirección IP es una manera de identificar un dispositivo dentro de una red que utilice el protocolo IP. Una dirección IP esta formada por 4 grupos de números que van desde el 0 al 255 y están separados por puntos (192.168.0.1)
- Una dirección IP final es lo mismo que una dirección IP, pero que es mayor o menor que la dirección IP. Ejemplo: IP: 172.1.1.1 Final (Mayor) 172.1.1.244 Final (Menor) 172.1.0.1
- Una mascara tiene el mismo formato que una dirección IP, pero nos indica una red o rango de direcciones IP para una dirección. Ejemplo: IP: 192.168.0.1 MASK: 255.255.255.0 RANGE_FROM: 192.168.0.1 RANGE_TO: 192.168.0.255
- Una mascara corta es una representación de la mascara pero contando el numero de bits, es un numero que estra entre 1 y 32. Ejemplo: SHORT_MASK: 24 LONG_MASK: 255.255.255.0 In bits: 11111111.11111111.11111111.00000000 Los tres son lo mismo.
Nota: Existen ya muchas librerías que hacen esto y muchos lenguajes de programación las tienen incluidas. Si decides utilizar una de estas librerías crea tus tests y cuando veas que cumples todas las condiciones, intenta cambiar de librería para ver cuanto te cuesta, si has encapsulado la librería correctamente no debería de suponer mucho esfuerzo cambiarla y tus tests seguirán en verde sin cambiarlos.
Rango por IP final
Ejemplos:
INPUT: ip_from: 192.168.1.1 ip_to: 192.168.1.255
OUTPUT from: 192.168.1.1 to: 192.168.1.255 ___
INPUT: ip_from: 192.168.1.1 ip_to: 192.168.0.1
OUTPUT from: 192.168.0.1 to: 192.168.1.1
Rango por mascara corta
Ejemplos:
INPUT: ip_from: 192.168.1.1 short: 24
OUTPUT from: 192.168.1.1 to: 192.168.1.255 ___
INPUT: ip_from: 192.168.1.1 short: 16
OUTPUT from: 192.168.1.1 to: 192.168.255.255
Rango por mascara
Ejemplos:
INPUT: ip_from: 192.168.1.1 mask: 255.255.255.0
OUTPUT from: 192.168.1.1 to: 192.168.1.255 ___
INPUT: ip_from: 192.168.1.1 mask: 255.255.0.0
OUTPUT from: 192.168.1.1 to: 192.168.255.255