2010-09-07 17 views
48

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.0.0.0.0 è un indirizzo IP valido?

+0

perché? quale possibile applicazione potrebbe avere? – griegs

+0

Hai provato a eseguire il ping? – hlynur

+19

Quindi, penso che questa sia una domanda legittima ed è legata alla programmazione. Ad esempio, se si sta memorizzando un indirizzo IP, si potrebbe voler rappresentare "nessun indirizzo IP disponibile" come zero, cosa che non si potrebbe fare se '0.0.0.0' fosse un indirizzo IP valido. –

risposta

0

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 sia qualcuno al mondo che ha effettivamente quell'IP.

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

+0

È riservato per il percorso predefinito. – jer

43

È valido in quanto contiene quattro ottetti, ciascuno compreso tra 0 e 255 inclusi. Tuttavia, non è utilizzabile come indirizzo IP reale.

RFC1700(a) afferma che 0.0.0.0/8 (0.<anything>.<anything>.<anything>) è riservata come solo un 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).

Vedere anche Wikipedia entry on IPv4.


(a) Sebbene questa RFC è ora considerato obsoleto, è ancora corretta in termini di comportamento determinato. 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.

+4

Potrei sbagliarmi, ma in realtà è un indirizzo IP: è solo riservato. Solo perché è riservato non significa che non sia un indirizzo IP. –

+1

Bene, ho preso "valido" per significare utilizzabile.È sicuramente un indirizzo IP legale poiché ognuno degli ottetti è compreso tra 0 e 255. Regolazione della risposta per chiarire. – paxdiablo

+0

Volevo assicurarmi che il mio commento precedente fosse corretto, quindi ho fatto qualche lettura. RFC 1700 afferma: "Esistono cinque classi di indirizzi IP: dalla Classe A alla Classe E." In RFC 790, afferma che 0.rrr.rrr.rrr si trova nella "Classe A Network". Pertanto, poiché 0.0.0.0 è un indirizzo di classe A, è un indirizzo IP. Se una qualsiasi di queste affermazioni è sbagliata, sentitevi liberi di correggermi. –

3

È riservato come indirizzo default route.

È comune vedere questo tramite ipconfig quando nessun indirizzo è stato assegnato a voi.

+3

Stai pensando a 0.0.0.0/0 che è MOLTO diverso da 0.0.0.0/32 –

7

Sì, è un indirizzo IP ma è riservato.

0.0.0.0/8 - indirizzi in questo blocco si riferiscono a host di origine su "questa" rete . L'indirizzo 0.0.0.0/32 può essere utilizzato come indirizzo di origine per questo host su questa rete; altri indirizzi all'interno 0.0.0.0/8 possono essere utilizzati per riferiscono agli host specificati su questa rete

6

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

+2

Tutte le interfacce IPv4.Non si legherà a IPv6 o altri protocolli. –

1

È possibile utilizzarlo nell'applicazione per indicare che non ha un indirizzo IP, Microsoft usa anche 0.0.0.0 quando la macchina non ha un indirizzo IP.

gli scenari "validi" di cui sopra sono dipendenti dagli scenari specifici in cui non hanno nulla a che fare con l'applicazione.

+0

puoi ma non dovresti perché è un indirizzo ip che può essere indirizzato e ha una funzione –

+0

@TheSurrican È un indirizzo IP che non può essere indirizzato e ha una funzione. – EJP

0

ovviamente lo è. 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

0

Fare una query Whois di rete può anche produrre un output che è molto 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 l'indirizzo di un pacchetto in uscita quando un computer sta imparando quale indirizzo IP si dovrebbe usare. Non è mai usato come indirizzo di destinazione. Indirizzi che iniziano con "0". a volte vengono utilizzati per le trasmissioni ai dispositivi collegati direttamente.

4

Consente di esaminare la 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 link wikipedia qui ... o forse lo sono).

Come tale, ritengo che paxdiablo's answer sia il più corretto, ma consente di esaminare anche il contesto della domanda.

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

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

Se il software sta memorizzando gli indirizzi Internet effettivi - posizioni dei server, visitatori del sito Web, siti di replica/mirror o di backup, servizio Web o server di database, ecc. - 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, 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.

Quindi presumo che la maggior parte delle persone che visualizzano questa domanda rientrino nella prima categoria e suggeriscono che questo è un modo perfettamente valido di memorizzare un indirizzo IP nullo, vuoto o mancante, se c'è qualche motivo che non è possibile utilizzare un valore effettivo null. 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.