::ffff:
ist ein Subnetzpräfix für IPv4-Adressen (32 Bit), die in einem IPv6-Bereich (128 Bit) platziert sind. IPv6 besteht aus zwei Teilen, dem Subnetzpräfix und dem Schnittstellensuffix. Jedes ist 64 Bit lang oder 4 Gruppen mit 4 Hexadezimalzeichen.
In IPv6 können Sie führende Nullen entfernen und dann aufeinanderfolgende Nullen entfernen. Dies bedeutet , dass diese Adresse ::ffff:
tatsächlich 0000:0000:ffff:0000
als IPv4-zu-IPv6-Subnetzpräfix bezeichnet wurde, sodass jeder IPv6-Prozessor versteht, dass er mit einer IPv4-Adresse arbeitet, und damit umgehen kann entsprechend.
In naher Zukunft werden alle IP-Adressen IPv6 sein. Dies liegt daran, dass wir im IPv4-Adressraum fast keine Zahlen mehr haben (4,2 Milliarden, abzüglich etwas Speicherplatz für verschiedene Zwecke).
IPv6 bietet viel mehr Platz. "340 Undecillion sollten für jeden ausreichen" - Bill Gates spricht über IPv6.
Es ist wichtig, IP-Adressen mithilfe des IPv6-Namespace zu adressieren und diese daher ::ffff:
in Ihren Code aufzunehmen, da in Zukunft echte hexadezimale Daten zwischen diesen Doppelpunkten vorhanden sein werden. Wenn Sie es aus ästhetischen Gründen entfernen, wird Ihr Code beschädigt, wenn er zu einem IPv6-Netzwerk wechselt oder mit einer IPv6-Adresse konfrontiert wird.
In einigen Netzwerken wird derzeit IPv6 ausgeführt, und Sie werden bald mit IPv6-IP-Adressen konfrontiert. Machen Sie jetzt den Sprung oder riskieren Sie, Ihren Code in Zukunft zu brechen.
Die TL; DR (kurze) Version der Sache lautet: Alles funktioniert gut. Ändern Sie es nicht, es ist die IPv6-Version einer IPv4-Adresse.
Wenn Sie Ihren Code mit IPv6 kompatibel machen möchten, müssen Sie nur nach dem ::ffff:
Präfix suchen. Wenn es vorhanden ist, entfernen Sie es und verarbeiten Sie den Rest als IPv4. Wenn ::ffff:
es nicht vorhanden ist, handelt es sich um eine IPv6-Adresse und muss als solche verarbeitet werden. Sie können überprüfen, ob Punkte in der Zeichenfolge enthalten sind. Wenn ja, handelt es sich um IPv4.
Denken Sie an alles außer an Anpassungen, die Sie an IP-Adressen vornehmen müssen. Sie zeichnen nur die IP auf, oder? Es wird für den Parser und die Protokollaggregate wichtig sein, dies ::ffff:127.0.0.1
in Zukunft zu erwarten . Wenn Sie eine IP nicht ändern müssen, lassen Sie sie einfach so, wie Sie sie erhalten.
req.ip
oderreq.ips
?