2010-09-07 34 views
48

¿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.¿Es 0.0.0.0 una dirección IP válida?

+0

¿por qué? ¿Qué posible aplicación podría tener esto? – griegs

+0

¿Intentaste hacer ping? – hlynur

+19

Entonces, creo que esta es una pregunta legítima y está relacionada con la programación. Por ejemplo, si está almacenando una dirección IP, es posible que desee representar "sin dirección IP disponible" como cero, lo que no podría hacer si '0.0.0.0' era una dirección IP válida. –

Respuesta

0

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.

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.

+0

Se reserva para la ruta predeterminada. – jer

43

Es válido en tanto que contiene cuatro octetos, cada uno dentro del rango de 0 a 255 inclusive. Sin embargo, no es utilizable como una dirección IP real.

RFC1700(a) establece que0.0.0.0/8 (0.<anything>.<anything>.<anything>) se reserva 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).

Véase también Wikipedia entry on IPv4.


(a) Aunque este RFC ahora se considera obsoleto, todavía es correcto en términos del comportamiento determinado. 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.

+4

Puedo estar equivocado, pero de hecho es una dirección IP, está solo reservado. El hecho de que esté reservado no significa que no sea una dirección IP. –

+1

Bueno, tomé "válido" para significar usable.Sin duda es una dirección IP legal ya que cada octeto está en el rango de 0 a 255. Ajuste de respuesta para aclarar. – paxdiablo

+0

Quería asegurarme de que mi comentario anterior era correcto, así que leí un poco. RFC 1700 establece: "Hay cinco clases de direcciones IP: Clase A hasta Clase E." En RFC 790, indica que 0.rrr.rrr.rrr está bajo la "red de clase A". Por lo tanto, dado que 0.0.0.0 es una dirección Clase A, es una dirección IP. Si alguna de estas afirmaciones es incorrecta, no dude en corregirme. –

3

Se reserva como la dirección default route.

Es común ver esto a través de ipconfig cuando no se le ha asignado ninguna dirección.

+3

Estás pensando en 0.0.0.0/0, que es MUY diferente de 0.0.0.0/32. –

7

Sí, es una dirección IP pero está reservado.

0.0.0.0/8 - Direcciones en este bloque se refieren a hosts de origen en "este" 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 0.0.0.0/8 pueden ser utilizados para refieren a hosts especificados en esta red

6

El 0.0.0.0 se utiliza para enlazar todas las interfaces IPv4. Entonces, es un valor especial como 127.0.0.1.

+2

Todas las interfaces IPv4. No se enlazará a IPv6 u otros protocolos. –

1

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.

+0

puedes, pero no deberías, porque es una dirección IP que puede ser direccionado y tiene una función. –

+0

@TheSurrican Es una dirección IP que no puede ser direccionada y tiene una función. – EJP

0

por supuesto que lo 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í: http://tools.ietf.org/html/rfc1700

0

Hacer una consulta Whois de red también puede producir 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 sólo se puede utilizar como la dirección de un paquete saliente cuando un equipo está aprendiendo lo que la dirección IP que debe utilizar. Nunca se usa como una dirección de destino. Direcciones comenzando con "0" a veces se usan para transmisiones a dispositivos conectados directamente.

4

Veamos la pregunta que hace aquí el OP.

¿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 (no voy a volver a publicar enlaces wikipedia aquí ... o tal vez).

Como tal creo que paxdiablo's answer arriba es la más correcta, pero veamos el contexto de su pregunta también.

Quiero que mi programa sea capaz de almacenarla como una indicación de que ninguna dirección está en uso, pero esto no va a funcionar si es realmente válida.

Esto depende completamente de su caso de uso. Dado que este es un foro de programadores, consideremos esa perspectiva.

Si su software está almacenando direcciones de Internet reales: ubicaciones de servidor, visitantes de su sitio web, sitios de replicación/duplicación 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 sugieren que esta es una manera perfectamente válida de almacenar una dirección IP nula, vacía o faltante, si hay alguna razón que no se puede usar un valor real de null. 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.

Cuestiones relacionadas