::ffff:
è un prefisso di sottorete per indirizzi IPv4 (32 bit) posizionati all'interno di uno spazio IPv6 (128 bit). IPv6 è suddiviso in due parti, il prefisso subnet e il suffisso dell'interfaccia. Ognuno è lungo 64 bit o 4 gruppi di 4 caratteri esadecimali.
In IPv6, si è permesso di eliminare zeri iniziali, e quindi rimuovere zeri consecutivi, cioè ::ffff:
traduce effettivamente 0000:0000:ffff:0000
, questo indirizzo è stato designato come IPv4 a IPv6 prefisso di sottorete, quindi qualsiasi processore IPv6 capirà che funzioni con un indirizzo IPv4 e gestirlo di conseguenza.
Nel prossimo futuro, gli indirizzi IP saranno tutti IPv6, questo perché siamo quasi fuori dai numeri (4,2 miliardi, meno un po 'di spazio per scopi diversi) nello spazio degli indirizzi IPv4.
IPv6 consente uno spazio molto più grande. "340 undecillion dovrebbe essere sufficienti per chiunque" - Bill Gates parla su IPv6.
E 'importante cominciare ad affrontare gli indirizzi IP utilizzando lo spazio dei nomi IPv6 e quindi includere il ::ffff:
nel codice perché in futuro ci saranno dati reali esadecimali tra questi due punti. Se lo spogliamo per motivi estetici, il tuo codice si interromperà quando passerà a una rete IPv6 o sarà confrontato con un indirizzo IPv6.
Alcune reti eseguono attualmente IPv6 e presto ci si troverà ad affrontare gli indirizzi IP IPv6; fare il salto ora o rischiare di rompere il codice in futuro.
La versione TL; DR (breve) della questione è: tutto funziona correttamente. Non alterarlo, è la versione IPv6 di un indirizzo IPv4.
Se si vuole rendere il codice compatibile con IPv6, tutto quello che dovete fare è controllare per il prefisso ::ffff:
...se esiste, rimuoverlo ed elaborare il resto come IPv4 ... se ::ffff:
non esiste, è un indirizzo IPv6 e deve essere elaborato come tale. È possibile ricontrollare se ci sono periodi nella stringa, in tal caso è IPv4.
Ricorda che per tutto, tranne le regolazioni che devi apportare agli indirizzi IP, stai registrando solo l'IP, giusto? Sarà importante analizzare e registrare gli aggregati per aspettarsi ::ffff:127.0.01
e simili in futuro. A meno che non sia necessario modificare un IP, lascialo come ciò che ricevi.
Quindi, cosa stai usando 'req.ip' o' req.ips'? –
'req.ip', ho appena provato' req.ips' come test. Non sono sicuro di cosa stia causando il prefisso ':: ffff:'. – rockerBOO
http://stackoverflow.com/q/5861107/1700321, http://en.wikipedia.org/wiki/IPv6_address#Presentation 'Notazione punteggiata quad. –