Mo–Fr: 09:00–17:00 Sa–So: geschlossen
03578 310535 info@formality.de
FORMALITY Deutschland 01917 Kamenz
IPv6 Compression & Shortener
IPv6 Kompression & Kurzschreibweise (Shorten IPv6)
Die Darstellung von IPv6-Adressen kann aufgrund ihrer Länge von 128 Bit (32 Hexadezimalzeichen) sehr unübersichtlich sein. Um die Handhabung zu erleichtern, wurden im RFC 5952 Standards definiert, wie diese Adressen ohne Informationsverlust gekürzt werden können.
Die Kompression basiert im Wesentlichen auf zwei Regeln: Erstens können führende Nullen (Leading Zeros) innerhalb eines jeden 16-Bit-Blocks entfernt werden. Zweitens darf eine aufeinanderfolgende Sequenz von Null-Blöcken einmalig durch ein doppeltes Doppelpunkt-Symbol (::) ersetzt werden (Zero Compression).
Es ist wichtig zu beachten, dass die "doppelte Doppelpunkt"-Regel nur einmal pro Adresse angewendet werden darf, um die Eindeutigkeit bei der Rekonstruktion (Expansion) zu gewährleisten. Würde man sie mehrfach verwenden, wäre nicht mehr klar, wie viele Null-Blöcke an welcher Stelle fehlen.
Kompression-Beispiele (Compression Examples):
- Loopback:
0000:0000:0000:0000:0000:0000:0000:0001→::1 - Unspecified:
0000:0000:0000:0000:0000:0000:0000:0000→:: - Link-local:
fe80:0000:0000:0000:0000:0000:0000:0001→fe80::1 - Default Gateway:
2001:0db8:0000:0000:0000:0000:0000:0001→2001:db8::1
IPv6 Compressor & Shortener
Geben Sie eine vollständige IPv6-Adresse ein, um sie auf die kürzestmögliche Form zu komprimieren.
Code-Beispiele für Entwickler (Kompression)
In den meisten Sprachen ist die komprimierte Form der Standard beim Parsen und Ausgeben von IPv6-Objekten:
Python
import ipaddress
# Die Standard-String-Konvertierung komprimiert automatisch
ip = ipaddress.IPv6Address('2001:0db8:0000:0000:0000:0000:0000:0001')
print(str(ip))
# Ergebnis: 2001:db8::1JavaScript (Node.js)
const net = require('net');
// net.formatIPv6 normalisiert und kürzt die Adresse
const compressed = net.formatIPv6("2001:0db8:0000:0000:0000:0000:0000:0001");
console.log(compressed);
// Ergebnis: 2001:db8::1PHP
$ip = "2001:0db8:0000:0000:0000:0000:0000:0001";
// inet_ntop in Kombination mit inet_pton liefert die kürzeste Form
echo inet_ntop(inet_pton($ip));
// Ergebnis: 2001:db8::1C# (.NET)
using System.Net;
// ToString() nutzt bei IPv6 standardmäßig die RFC 5952 Kompression
string compressed = IPAddress.Parse("2001:0db8:0000:0000:0000:0000:0000:0001").ToString();
// Ergebnis: 2001:db8::1Java
import java.net.InetAddress;
// getHostAddress() gibt die Adresse in der komprimierten Form zurück
InetAddress ip = InetAddress.getByName("2001:0db8:0000:0000:0000:0000:0000:0001");
System.out.println(ip.getHostAddress());
// Ergebnis: 2001:db8::1PowerShell
# Das IPAddress-Objekt kürzt die Anzeige automatisch
$ip = [System.Net.IPAddress]::Parse("2001:0db8:0000:0000:0000:0000:0000:0001")
$ip.IPAddressToString
# Ergebnis: 2001:db8::1Go (Golang)
import ( "net"; "fmt" )
// String() Methode eines net.IP Objekts nutzt die Kurzform
ip := net.ParseIP("2001:0db8:0000:0000:0000:0000:0000:0001")
fmt.Println(ip.String())
// Ergebnis: 2001:db8::1