Estoy trabajando en un cambio en una aplicación Java EE que se autenticaría en función de la dirección IP del usuario utilizando ServletRequest.getRemoteAddr . Almacenamos rangos de direcciones IP (FROM_IP y TO_IP) en una base de datos y el sistema se autenticaría solo si la dirección IP de un usuario cae en un rango.
Ahora, los evaluadores han señalado que el dígito 0 (cero) no debe permitirse en los valores FROM_IP y TO_IP (en ningún lugar). Tenga en cuenta que esta es una aplicación orientada a Internet, por lo que solo obtendremos direcciones IP públicas.
¿Tienen razón los evaluadores al sugerir esa validación? ¿Por qué no podemos tener cero en el rango de valores como en 167.23.0.1 - 167.23.255.255?
ip
authentication
ip-address
ipv4
Ritesh
fuente
fuente
Respuestas:
No, son completamente incorrectos.
De hecho, esta es una dirección IP válida:
192.168.24.0
Como es
167.23.0.1
.La separación de la dirección IP en segmentos punteados es una conveniencia puramente humana para la visualización. Es mucho más fácil de recordar
192.168.1.42
que3232235818
.Lo que le importa a las computadoras es la separación (máscara de red). No es válido tener una dirección de host con la sección de host de la dirección configurada completamente en 0 o 1.
Entonces, 192.168.24.0 siempre que la máscara de red sea tal que algunos bits se establezcan en la parte del host. Ver los siguientes cálculos:
En este caso, la parte de la dirección (lado derecho) tiene 2 bits establecidos. Esta es una dirección de host válida en la subred 192.168.0.0/16.
En este caso, la parte de la dirección tiene 10 bits establecidos y 6 bits sin establecer. Esta es otra dirección de host válida en la misma subred.
En este caso, la parte de la dirección tiene cero bits establecidos. Esta no es una dirección de host válida en la red 192.168.24.0/24.
fuente
ping 2130706432
oping 017700000001
(sí, incluso en Windows). Puede que te sorprendas por los resultados.192.168.0.257
es incorrecto, pero192.168.257
es una representación correcta de192.168.1.1
(como es192.11010305
). Verinet_aton(3)
.A menos que esté malentendido, sus evaluadores están completamente equivocados. Las direcciones IP válidas ciertamente pueden tener un 0 en ellas.
fuente
En general: No, no importa si hay un 0 en la dirección o no.
Sin embargo, hay algo de verdad en lo que dicen sus evaluadores. En algunos casos, el equipo de red viejo o roto no funcionará correctamente en direcciones con 0 en los últimos octests. Esto se debe a las viejas reglas de enrutamiento con clase. En el enrutamiento Classfull, puede distinguir la máscara de red desde el primer octeto de la dirección. Si el equipo sigue las reglas de enrutamiento con clase, es probable que maneje una dirección como 200.100.1.0/16 de forma incorrecta.
fuente
Digamos que necesita 510 direcciones IP en un rango y su dirección de red es 192.1.1.0, tendría una subred / 23, de las cuales una de las direcciones IP de su host es una dirección IP .0, sus evaluadores están equivocados si la dirección .0 es una dirección de host Si tiene una red / 24, sería correcto decir que estuvo mal.
fuente
Para proporcionar una respuesta muy simple: uno o más ceros en una dirección IP son perfectamente válidos para las direcciones de host siempre que esas direcciones no sean la red o la dirección de difusión.
Las direcciones de red y difusión son direcciones IP válidas, simplemente no pueden ser utilizadas por los hosts.
fuente