0.0.0.0 è un indirizzo IP valido?

0.0.0.0 è un indirizzo IP valido? Voglio che il mio programma sia in grado di memorizzarlo come un’indicazione che nessun indirizzo è in uso, ma questo non funzionerà se è effettivamente valido.

È valido in quanto contiene quattro ottetti, ognuno compreso nell’intervallo compreso tra 0 e 255 inclusi. Tuttavia, non è utilizzabile come un vero indirizzo IP.

RFC1700 (a) afferma che 0.0.0.0/8 ( 0... Qualsiasi 0... Qualsiasi 0... ) è riservato solo come indirizzo di origine. Puoi entrare in una situazione in cui sembra che tu abbia questo indirizzo, ma di solito è perché non ti è stato assegnato alcun indirizzo (per DHCP, ad esempio).

Vedi anche la voce di Wikipedia su IPv4 .


(a) Sebbene questo RFC sia ora considerato obsoleto, è ancora corretto in termini di comportamento dato. La sua sostituzione, https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml , ha ancora lo stesso testo che specifica l’uso dell’indirizzo 0.0.0.0.

Sì, è un indirizzo IP ma è riservato.

0.0.0.0/8 – Gli indirizzi in questo blocco si riferiscono agli host di origine su questa “rete”. L’indirizzo 0.0.0.0/32 può essere utilizzato come indirizzo sorgente per questo host su questa rete; altri indirizzi all’interno di 0.0.0.0/8 possono essere utilizzati per fare riferimento a host specificati su questa rete

Diamo un’occhiata alla domanda che viene posta qui dall’OP.

0.0.0.0 è un indirizzo IP valido?

Sì. Questo è tecnicamente un indirizzo IP valido, e le altre risposte descrivono molti vari usi di esso (non ho intenzione di ripubblicare i collegamenti di wikipedia qui … o forse lo sono).

In quanto tale, credo che la risposta di paxdiablo sopra sia la più corretta, ma lascia anche guardare il contesto della tua domanda.

Voglio che il mio programma sia in grado di memorizzarlo come un’indicazione che nessun indirizzo è in uso, ma questo non funzionerà se è effettivamente valido.

Questo dipende interamente dal tuo caso d’uso. Dato che questo è un forum per programmatori, consideriamo questa prospettiva.

Se il tuo software sta memorizzando gli indirizzi Internet effettivi – posizioni dei server, visitatori del tuo sito web, siti di replica / mirror o di backup, servizio Web o server di database ecc. – allora questo sarà perfettamente valido. Nessuna macchina su Internet avrà mai questo indirizzo assegnato, né potrà mai risolvere una connessione valida.

Se invece si sta scrivendo il firewall o il firmware del router, allora questo indirizzo assume un significato speciale; rotta predefinita, accetta qualsiasi sorgente / destinazione IP, blocca tutti i sorgenti / destinazioni IP, fall-catch-all-catch, ecc. come delineato da tutti gli altri. Tuttavia, vorrei precisare che, se si sta codificando su questo livello, si dovrebbe avere una comprensione abbastanza buona dei protocolli di rete in modo da non aver bisogno di porre questa domanda in primo luogo.

Pertanto assumerò che la maggior parte delle persone che visualizzano questa domanda rientrino nella prima categoria e suggeriscono che questo è un modo perfettamente valido per archiviare un indirizzo IP nullo, vuoto o mancante , se c’è qualche ragione per cui un valore null effettivo non può essere Usato. Anche se trascuri il controllo della validazione e il tuo software prova a connettersi a questo indirizzo IP, semplicemente non sarà in grado di stabilire una connessione.

0.0.0.0 è utilizzato per colbind tutte le interfacce IPv4. Quindi è un valore speciale proprio come 127.0.0.1 .

È riservato come indirizzo di instradamento predefinito .

È comune vederlo tramite ipconfig quando non ti è stato assegnato alcun indirizzo.

Puoi utilizzarlo nella tua applicazione per rappresentare che non ha un indirizzo IP, Microsoft usa anche 0.0.0.0 quando la macchina non ha un indirizzo IP.

gli scenari “validi” discussi sopra dipendono dagli scenari specifici in cui non hanno nulla a che fare con la tua applicazione.

a tutti gli effetti, sì. Ciascuno dei quattro numeri separati dal periodo ha un valore compreso tra 0 e 255, quindi 0.0.0.0 è tecnicamente valido.

Non penso che ci sarebbe qualcuno al mondo che in realtà ha quell’IP.

EDIT: ok, è riservato per il percorso predefinito, ma è ancora valido.

ovviamente è. tuttavia non sarà valido per un singolo host su una rete. è nell’intervallo di trasmissione per la rete locale. leggi qui: http://tools.ietf.org/html/rfc1700

Fare una query Whois di rete può anche produrre un output che è abbastanza utile.
Esempio:
http://whois.arin.net/rest/nets;q=0.0.0.0?showDetails=true

Commento: l’indirizzo 0.0.0.0 può essere utilizzato solo come indirizzo di un pacchetto in uscita quando un computer sta imparando quale indirizzo IP deve utilizzare. Non è mai usato come indirizzo di destinazione. Indirizzi che iniziano con “0”. a volte vengono utilizzati per le trasmissioni ai dispositivi collegati direttamente.