networking - scanner - ¿Es 0.0.0.0 una dirección IP válida?
local network ip (9)
¿Es 0.0.0.0 una dirección IP válida? Quiero que mi programa pueda almacenarlo como una indicación de que no hay ninguna dirección en uso, pero esto no funcionará si es realmente válida.
El 0.0.0.0
se usa para enlazar todas las interfaces IPv4. Entonces, es un valor especial como 127.0.0.1
.
Es válido en la medida en que contiene cuatro octetos, cada uno dentro del rango de 0 a 255 inclusive. Sin embargo, no se puede usar como una dirección IP real.
RFC1700 (a) establece que 0.0.0.0/8
( 0.<anything>.<anything>.<anything>
) está reservado como una dirección de origen solamente. Puede entrar en una situación en la que parece que tiene esta dirección, pero normalmente es porque no se le ha asignado ninguna dirección (por DHCP, por ejemplo).
Ver también la entrada de Wikipedia en IPv4 .
(a) Aunque este RFC ahora se considera obsoleto, sigue siendo correcto en términos del comportamiento dado. Su reemplazo, https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml , todavía tiene el mismo texto que detalla el uso de la dirección 0.0.0.0.
Está reservado como la dirección de ruta predeterminada .
Es común ver esto a través de ipconfig cuando no se le ha asignado ninguna dirección.
Hacer una consulta Whois de red también puede generar resultados que son bastante útiles.
Ejemplo:
http://whois.arin.net/rest/nets;q=0.0.0.0?showDetails=true
Comentario: la dirección 0.0.0.0 solo puede usarse como la dirección de un paquete saliente cuando una computadora está aprendiendo qué dirección IP debe usar. Nunca se usa como una dirección de destino. Direcciones comenzando con "0" a veces se usan para transmisiones a dispositivos conectados directamente.
Puede usarlo en su aplicación para representar que no tiene una dirección IP, Microsoft también usa 0.0.0.0 cuando la máquina no tiene una dirección IP.
los escenarios "Válidos" mencionados anteriormente dependen de los escenarios específicos en los que no tienen nada que ver con su aplicación.
Sí, es una dirección IP pero está reservada.
0.0.0.0/8 - Las direcciones en este bloque se refieren a servidores de origen en "esta" red. La dirección 0.0.0.0/32 se puede usar como una dirección de origen para este host en esta red; otras direcciones dentro de 0.0.0.0/8 pueden usarse para referirse a hosts especificados en esta red
Veamos la pregunta que hace el PO.
¿Es 0.0.0.0 una dirección IP válida?
Sí. Esta es técnicamente una dirección IP válida, y las otras respuestas describen muchos usos diferentes de ella (no voy a volver a publicar enlaces de wikipedia aquí ... o tal vez lo estoy).
Como tal, creo que la respuesta de paxdiablo anterior es la más correcta, pero veamos el contexto de tu pregunta también.
Quiero que mi programa pueda almacenarlo como una indicación de que no hay ninguna dirección en uso, pero esto no funcionará si es realmente válida.
Esto depende completamente de tu caso de uso. Dado que este es un foro de programadores, consideremos esa perspectiva.
Si su software almacena direcciones de Internet reales (ubicaciones de servidores, visitantes de su sitio web, sitios de replicación / copia de seguridad o de respaldo, servicio web o servidores de bases de datos, etc.), esto será perfectamente válido. Ninguna máquina en Internet tendrá asignada esta dirección, ni se resolverá con una conexión válida.
Si, por otro lado, está escribiendo firmware de firewall o enrutador, esta dirección adquiere un significado especial; ruta predeterminada, acepte cualquier fuente / destino de IP, bloquee toda la fuente / destino de IP, catch-trough catch-all, etc., tal como lo describen todos los demás. Sin embargo, permítanme señalar que si está codificando en este nivel, debe comprender lo suficiente los protocolos de red para no tener que hacer esta pregunta en primer lugar.
Por lo tanto, voy a suponer que la mayoría de las personas que ven esta pregunta pertenecen a la primera categoría, y sugiero que esta es una manera perfectamente válida de almacenar una dirección IP nula, vacía o faltante , si hay alguna razón por la cual un valor null
real no puede ser usado. Incluso si descuida la verificación de validación y su software intenta conectarse a esta dirección IP, simplemente no podrá establecer una conexión.
para todos los efectos, sí. Cada uno de los cuatro números separados por el período tiene un valor que va de 0 a 255, por lo que 0.0.0.0 es técnicamente válido.
Sin embargo, no creo que haya nadie en el mundo que realmente tenga esa IP.
EDITAR: está bien, está reservado para la ruta predeterminada, pero sigue siendo válido.
por supuesto que es. sin embargo, no será válido para un solo host en una red. está en el rango de transmisión para la red local. lea aquí: RFC1700