IPv4 (Internet Protocol Version 4), vor der Entwicklung vonIPv6 auch einfachIP, ist die vierte Version desInternet Protocols (IP). Es war die erste Version des Internet Protocols, welche weltweit verbreitet und eingesetzt wurde, und bildet als Teil derInternetprotokollfamilie eine wichtige technische Grundlage desInternets. Es wurde inRFC 791 im Jahr 1981 definiert[1] und stellt einenInternetstandard derInternet Engineering Task Force dar. IPv4 verwendet 32 Bit langeIP-Adressen.
IPv4 wurde als Teil derInternetprotokollfamilie für dasArpanet entwickelt und kam darin ab 1983 zum Einsatz. Damals waren nur einige hundert Rechner an das Netz angeschlossen. Das Arpanet entwickelte sich zumInternet und überschritt 1989 die Grenze von 100.000 Rechnern. Durch seine Verbreitung im Internet hat IPv4 schließlich auchLAN-Protokolle wieDECnet oderIPX verdrängt.NetWare,AppleTalk undNetBIOS wurden als neue Versionen hervorgebracht, die auf IP aufsetzen.
Am Anfang der 1990er Jahre war erkennbar, dass IP-Adressen bald knapp würden, da die damals üblicheNetzklassen-basierte Adressvergabe erheblichen Verschnitt verursachte. Als kurzfristige Lösung wurde 1993Classless Inter-Domain Routing eingeführt, das eine deutlich effizientere Adressvergabe ermöglichte. Eine weitere kurzfristige Lösung war das 1994 eingeführteNetwork Address Translation (NAT), das die Wiederverwendung von IP-Adressen ermöglichte.[2] In der VarianteNetwork Address Port Translation (NAPT) ermöglichte es die gleichzeitige Mehrfachverwendung von IP-Adressen. Mit diesen Maßnahmen konnte der Adressbedarf soweit gedämpft werden, dass der Adressraum trotz immensen Wachstums des Internets erst in den 2010er Jahren knapp wurde (siehe AbschnittAdressknappheit).
Als langfristige Lösung der Adressknappheit sollte ein neues Protokoll mit größerem Adressraum entwickelt werden. Dies führte zuerst zur Entwicklung des experimentellen ProtokollsTP/IX, das die Versionsnummer 7 trug und 1993 veröffentlicht wurde.[3] TP/IX sollte dabei einen 64-Bit-Adressbereich unterstützen, wurde dann aber zugunsten vonIPv6 verworfen. Die erste Fassung von IPv6 wurde 1995 veröffentlicht und verwendete einen 128-Bit-Adressraum.[4] Die Versionsnummer 5 wurde nicht für einen IPv4-Nachfolger verwendet, da sie bereits 1990 durch das experimentelleInternet Stream Protocol Version 2 (ST2) belegt war, einem fürStreaming optimierten Protokoll.[5]
IPv4 benutzt 32-Bit-Adressen, wodurch ein Adressraum von knapp 4,3 Milliarden Adressen zur Verfügung steht. IPv4-Adressen werden meist inDezimalpunktschreibweise dargestellt: vierOktetts (je 8 Bit) werden durch Punkt getrennt mit vier Zahlen von 0 bis 255 dargestellt.
Beispiel:192.0.2.155
Eine IPv4-Adresse kann indezimal,binär,oktal undhexadezimal sowohl in der Punkt- als auch in der Nichtpunktnotation dargestellt werden. Eine führende Null zeigt eine Oktalzahl an. Daher dürfen in der Dezimalpunktschreibweise ein- und zweistellige Zahlen nicht auf ein gleichförmiges Längenformat gebracht werden (also nicht: 192.000.002.155).
Jedes der vier Oktette besteht aus 8 Bit und stellt somit 28 = 256 verschiedene Werte dar. Daraus ergibt sich eine Gesamtzahl von 256 × 256 × 256 × 256 = 2564 = 232 = 4.294.967.296 IPv4-Adressen.
Eine IP-Adresse besteht aus einem Netzanteil und einem Hostanteil. Der Netzanteil identifiziert einTeilnetz, der Hostanteil identifiziert ein Gerät (Host) innerhalb eines Teilnetzes.
Die genaue Aufteilung zwischen Netzanteil und Hostanteil wird durch eineSubnetzmaske festgelegt, beispielsweise 255.255.255.0, was in binärer Darstellung 11111111.11111111.11111111.00000000 entspricht. Die Bits der Subnetzmaske, die „1“ lauten, legen die Stellen der IP-Adresse fest, die zum Netzanteil gehören. Alle restlichen Stellen der IP-Adresse, die entsprechend in der Subnetzmaske auf „0“ gesetzt sind, gehören zum Hostanteil. In derCIDR-Notation wird die Länge des Netzanteils durch die Anzahl Bits angegeben und mit Schrägstrich getrennt als Suffix an die IP-Adresse angehängt, beispielsweise /24. Somit ist der Netzanteil 24 Bits lang, was der Subnetzmaske 255.255.255.0 entspricht. Die übrigen 8 Bits gehören somit zum Hostanteil.
Beispiel:
dezimal
binär
IP-Adresse
192.0.2
.155
→
11000000.00000000.00000010
.10011011
Subnetzmaske
255.255.255
.0
→
11111111.11111111.11111111
.00000000
Netzanteil
Hostanteil
Netzanteil
Hostanteil
CIDR-Notation
192.0.2.155/24
Die Unterscheidung zwischen Netzanteil und Hostanteil ist erforderlich für die Entscheidung, ob sich eine Zieladresse in demselbenlokalen Netz oder in einem anderen Netz befindet. Wenn der Netzanteil identisch ist, können die Endgeräte innerhalb einerBroadcast-Domäne direkt miteinander kommunizieren, beispielsweise perEthernet oderWLAN. Im selben Teilnetz darf der Hostanteil nicht mehrfach vergeben sein, da es ansonsten zu einem IP-Adresskonflikt kommt. Für jedes Endgerät vergibt der zuständigeNetzwerkadministrator den Hostanteil eindeutig durch eine manuelle oder automatischeIP-Adresszuweisung.
Ein Netz kann in weitere Teil- oder Subnetze unterteilt werden. Dies erfolgt, indem ein oder mehrerehochwertige Bits des Hostanteils zur Unterscheidung des Subnetzes verwendet werden. Innerhalb eines Subnetzes wird die Subnetzmaske angepasst, um den verkleinerten Hostanteil widerzuspiegeln. Subnetting wird zurSegmentierung von Netzen verwendet. Für die Kommunikation zwischen den Subnetzen ist ein Router erforderlich.
Beispiel:
Netzadresse (CIDR)
Subnetzmaske
Adressbereich
Netz-,Subnetz- undHostanteil (binär)
Netz
192.0.2.0/24
255.255.255.0
192.0.2.0 – 192.0.2.255
11000000.00000000.00000010.xxxxxxxx
Subnetz
192.0.2.0/25
255.255.255.128
192.0.2.0 – 192.0.2.127
11000000.00000000.00000010.0xxxxxxx
Subnetz
192.0.2.128/26
255.255.255.192
192.0.2.128 – 192.0.2.191
11000000.00000000.00000010.10xxxxxx
Subnetz
192.0.2.192/26
255.255.255.192
192.0.2.192 – 192.0.2.255
11000000.00000000.00000010.11xxxxxx
Nach außen hin wird das Netz beim Routing als ein Ganzes adressiert. Die innere Unterteilung in Subnetze ist nicht direkt ersichtlich. Das Gegenteil von Subnetting istSupernetting und beschreibt die Zusammenfassung von mehreren angrenzenden Netzadressen in einer gemeinsamen Route. Der Zweck ist die Minimierung von Einträgen in einerRoutingtabelle. Supernetting wird beiClassless Inter-Domain Routing als Routenaggregation bezeichnet.
Historische Netzklassen (nicht mehr in Gebrauch seit 1993)
Ursprünglich gab es fest vorgeschriebene Einteilungen für Netzklassen mit einer festen Länge des Netzanteils. Die Größe des Netzanteils ergab sich aus den ersten Bits der Adresse; eine Subnetzmaske musste nicht angegeben werden. Da diese Einteilung sehr unflexibel ist, wird seit 1993 ausschließlich das VerfahrenClassless Inter-Domain Routing angewandt, welches bitvariable Netzmasken ermöglicht. Obwohl das Konzept von Netzklassen seitdem nicht mehr im Einsatz ist, blieb der Begriff der Netzklasse über Jahre verbreitet. Hierbei steht „Klasse A“ für ein Netz der CIDR-Präfixlänge /8, „Klasse B“ für /16 und „Klasse C“ für /24. Die ursprüngliche Zuordnung zu festgelegten Adressbereichen wird für gewöhnlich ignoriert, sodass diese Begrifflichkeit nicht mit dem ursprünglichen Konzept der Netzklassen konform ist.
Die jeweils erste und letzte Adresse eines Subnetzes haben eine besondere Bedeutung und stehen üblicherweise nicht zur Vergabe an Hosts zur Verfügung. Die maximale Anzahl der zu vergebenen Hostadressen in einem Netz beträgt somit effektiv:
2Anzahl Bits der Hostadresse − 2.
Diese Einschränkung geht auf die Praxis zurück, Adressen mit „0“ an allen Stellen als „dieses Netz“ und Adressen mit „1“ an allen Stellen als „alle Hosts“ zu interpretieren.[6] Die erste Adresse eines Subnetzes (zum Beispiel192.0.2.0) bezeichnet das Netz selbst. Die letzte Adresse (zum Beispiel192.0.2.255) bezeichnet dieBroadcast-Adresse, unter der alle Hosts im Netz angesprochen werden können. Ein Versuch, diese Einschränkung aufzuheben, hat sich nicht durchgesetzt,[7] sodass auch heute noch in praktisch jedem Netz beide Adressen reserviert sind. Gängig ist außerdem, dasDefault Gateway auf die zweite oder die vorletzte IP-Adresse im Netz zu legen (zum Beispiel192.0.2.1 oder192.0.2.254), wobei es dafür keinerlei Vorgaben gibt.
Bestimmte IP-Adressbereiche stehen zur freien Verfügung und können ohne vorherige Registrierung für private Netze verwendet werden. Im Internet werden diese IP-Adressbereiche nicht geroutet. Historisch befand sich jeder der Adressbereiche in einer anderen Netzklasse. Aus Gewohnheitsgründen ist es gängig für Subnetze im Adressblock 172.16.0.0/12 die Präfixlänge /16 und im Adressblock 192.168.0.0/16 die Präfixlänge /24 zu verwenden. Eine Vorgabe existiert diesbezüglich nicht.
Ein IP-Paket besteht aus einemHeader und den eigentlichenNutzdaten. Der IPv4-Header ist normalerweise 20 Bytes lang, kann aber durch zusätzliche Optionen in jeweils 4-Byte-Schritten auf bis zu 60 Bytes verlängert werden. Die Optionen sind größtenteils ungenutzt und IPv4-Pakete mit Optionen werden oft blockiert.[19]
IPv4 dient als Grundlage, um darüber andere Protokolle zu transportieren. In dem Datenteil eines IP-Pakets werden der Header, die Nutzdaten und ein eventuellerTrailer eines anderen Netzwerkprotokollsgekapselt. Typische Beispiele sindTCP,UDP oderICMP. Um welches Protokoll es sich handelt, wird durch eine Nummer imProtokoll-Feld des IP-Headers festgelegt. DieInternet Assigned Numbers Authority verwaltet eine Liste der registrierten Protokollnummern.[20]
Die maximale Länge eines IP-Pakets beträgt 65535 Bytes (216−1) und die maximale Datenlänge 65515 Bytes (Paketlänge – minimale Headerlänge von 20 Byte). Die Paketlänge wird jedoch normalerweise von dem zugrundeliegenden Netzwerkprotokoll aufNetzzugangsschicht weiter eingeschränkt, woraus sich eine für das Netz spezifische maximale IP-Paketlänge ergibt, dieMaximum Transmission Unit (MTU) genannt wird. BeiEthernet beispielsweise beträgt die MTU 1500 Bytes. Die MTU reduziert sich, wenn ein IP-Paket über einenTunnel oder einVirtual Private Network transportiert wird. Die minimaleFrame-Länge von Ethernet hat hingegen keine Auswirkung auf IPv4, da durch das Längenfeld im IPv4-Header ein beliebig kurzes IPv4-Paket transportiert werden kann, selbst wenn der Ethernet-Frame mit Nullbytes aufgefüllt werden muss.
Eine spezielle Bedeutung kommt in modernen Implementierungen dem früheren FeldType of Service (ToS) im zweiten Oktett des IPv4-Headers zu. Ursprünglich diente dieses Feld bei der Vermittlung eines Datenpaketes als Entscheidungshilfe für die beteiligten Router bei der Wahl der Übertragungsparameter. In modernen Implementierungen wird dieses Feld im Zusammenhang mit dernetwork congestion avoidance (Vermeidung von Überlastungen) verwendet. Das ToS-Feld wurde durch das DS-Feld (differentiated services) ersetzt, dessen erste sechs Bits alsdifferentiated services code point (DSCP) und dessen letzte beiden Bits alsexplicit congestion notification (ECN) benutzt werden.
IPv4 unterscheidet nicht zwischen Endgeräten (Hosts) und Vermittlungsgeräten (Router). Jeder Computer und jedes Gerät kann gleichzeitig Endpunkt und Router sein. EinRouter verbindet dabei verschiedene Netze. Die Gesamtheit aller über Router verbundenen Netze bildet das Internet (siehe auchInternetworking).
IPv4 ist fürLANs undWANs gleichermaßen geeignet. Ein Paket kann verschiedene Netze vom Sender zum Empfänger durchlaufen, die Netze sind durch Router verbunden. Anhand vonRoutingtabellen, die jeder Router individuell pflegt, wird der Netzteil einem Zielnetz zugeordnet. Die Einträge in die Routingtabelle können dabei statisch oder über Routingprotokolle dynamisch erfolgen. Die Routingprotokolle dürfen dabei sogar auf IP aufsetzen.
Bei Überlastung eines Netzwerks oder einem anderen Fehler darf ein Router Pakete auch verwerfen. Pakete desselben Senders können bei Ausfall eines Netzes auch alternativ „geroutet“ werden. Jedes Paket wird dabei einzeln „geroutet“, was zu einer erhöhten Ausfallsicherheit führt.
WirdTCP auf IP aufgesetzt (d. h. die Daten jedes IP-Pakets enthalten ein TCP-Paket, aufgeteilt inTCP-Header und Daten), so wird neben dem Aufheben der Längenbeschränkung auch derPaketverlust durch Wiederholung korrigiert. Doppelte Pakete werden erkannt und verworfen. Die Kombination TCP mit IP stellt dabei eine zuverlässige bidirektionale Verbindung eines Datenstroms dar.
Auf dem Weg vom Sender zum Empfänger kann es vorkommen, dass ein IP-Paket ein Netz durchlaufen muss, bei dem das Paket länger ist als die vom Netz maximal unterstützte Paketlänge (MTU). In einem solchen Fall kann der Router entweder eine Fehlermeldung zurücksenden (siehe Abschnitt#ICMP) oder das Paket in Fragmente aufteilen und in separaten IP-Paketen weiter versenden. Jedes der Fragmente trägt dieselbe Identifikationsnummer im Header, mit denen der Empfänger eine Zusammensetzung vornehmen kann. Die Fragmentierung erfolgt in folgenden Schritten:
Aufteilen der Nutzdaten an einer 8-Byte-Grenze (das letzte Fragment enthält dann nicht unbedingt ein Vielfaches von 8 Byte Daten).
Kopieren der IP-Headerdaten des Originalpakets in die neuen Header der Fragmente.
Setzen des Felds „More Fragments“ auf den Wert 1 bei allen bis auf das letzte Fragment.
Beim letzten Fragment wird der Wert von „More Fragments“ aus dem Originalpaket kopiert. Im Regelfall ist der Wert 0, kann aber auch 1 sein, falls das Originalpaket bereits ein Fragment ist.
Setzen der Längen-Felder und des Fragment-Offsets in den Headern. Das Fragment-Offset gibt die Position eines Datenfragments im Originalpaket an (als Vielfaches von 8 Bytes).
Um ein Paket wieder zusammenzusetzen, kombiniert der Empfänger alle Fragmente, welche die gleiche Identifikationsnummer, den gleichen Absender, Empfänger und das gleiche Protokoll haben. Die Reihenfolge der Fragmente ergibt sich aus dem jeweiligen Fragment-Offset im Header. Das letzte Fragment erkennt der Empfänger daran, dass das Feld „More Fragments“ auf 0 gesetzt ist.
IP ist eng verknüpft mit dem Internet Control Message Protocol (ICMP), das zur Fehlersuche und Steuerung eingesetzt wird. ICMP setzt auf IP auf, das heißt ein ICMP-Paket wird im Datenteil eines IP-Pakets abgelegt. Eine IP-Implementierung enthält stets auch eine ICMP-Implementierung. ICMP besteht aus verschiedenen Pakettypen, die unterschiedlichen Funktionen dienen. Ein prominentes Beispiel sind „Echo Request“ und „Echo Reply“, was für das DiagnosewerkzeugPing verwendet wird. AuchTraceroute verwendet ICMP.
ICMP kann zusammen mit demDon’t-Fragment-Bit des IP-Pakets auch eingesetzt werden, um die maximale Paketgröße eines Übertragungsweges zu einer Zieladresse zu ermitteln. Dies wird alsPath MTU Discovery bezeichnet und ermittelt die kleinsteMTU aller passierten Netze. Dadurch kann auf IP-Fragmentierung verzichtet werden, wenn der Sender nur Pakete mit der maximalen Größe der PMTU erzeugt.
IPv4 kann auf verschiedeneÜbertragungsmedien und Protokolle in derNetzzugangsschicht aufsetzen, zum Beispiel dasPoint-to-Point Protocol oderSerial Line Internet Protocol. In lokalen Netzen wird überwiegendEthernet oderWLAN eingesetzt. Beide verwenden eine 48 Bit langeMAC-Adresse zur Adressierung vonNetzwerkkarten. Ein Sender muss die MAC-Adresse des Ziels kennen, bevor ein IP-Paket gesendet werden kann. Um für eine gegebene IP-Adresse des Ziels die zugehörige MAC-Adresse zu ermitteln, wird dasAddress Resolution Protocol (ARP) verwendet. Unbekannte MAC-Adressen fragt der Sender mittels einer ARP-Anfrage an, die er alsBroadcast an alle Netzwerkgeräte im lokalen Netz sendet. Das Ziel sendet daraufhin eine ARP-Antwort zurück, die die gesuchte MAC-Adresse enthält. Die Kommunikationsteilnehmer speichern die gelernten Zuordnungen von IP-Adresse zu MAC-Adresse in einemCache zwischen.
Anzahl verfügbarer IPv4-Adressblöcke zwischen 1995 und 2015
Aufgrund des unvorhergesehenen Wachstums des Internets herrscht heute Adressknappheit. Im Januar 2011 teilte dieIANA der asiatisch-pazifischenRegional Internet RegistryAPNIC die letzten zwei /8-Adressblöcke nach der regulären Vergabepraxis zu.[21] Gemäß einer Vereinbarung aus dem Jahr 2009[22] wurde am 3. Februar 2011 schließlich der verbliebene Adressraum gleichmäßig auf die regionalen Adressvergabestellen verteilt: jeweils ein /8-Adressblock pro Vergabestelle.[23][24] Seitdem hat die IANA auf der globalen Ebene keine weiteren /8-Adressblöcke mehr zu vergeben.
Auf der regionalen Ebene verschärften die Regional Internet Registrys ihre Vergabepraktiken, um aus dem letzten /8-Adressblock möglichst lange schöpfen zu können. Bei der APNIC traten diese am 15. April 2011 in Kraft, da die zuvor erhaltenen beiden /8-Adressblöcke bereits nach drei Monaten aufgebraucht waren.[25] Am 14. September 2012 folgte dannRIPE NCC mit der letzten regulären Zuteilung in der Region Europa/Naher Osten.[26] Mit der neuen Vergabepraxis hatten APNIC- und RIPE-NCC-Mitglieder jeweils nur noch Anspruch auf Zuteilung eines /22-Adressbereichs, selbst wenn sie einen größeren Bedarf nachweisen konnten.[27][28]
Am 25. November 2019 hat RIPE NCC ihren /8-Adressblock endgültig aufgebraucht. Seitdem werden nur noch /24-Kleinstblöcke per Warteliste aus Rückläufern vergeben.[29]
Die historische Entwicklung des Internets wirft ein weiteres Problem auf: Durch die mit der Zeit mehrmals geänderte Vergabepraxis von Adressen des IPv4-Adressraums ist dieser inzwischen stark fragmentiert, d. h., häufig gehören mehrere nicht zusammenhängende Adressbereiche zur gleichen organisatorischen Instanz. Dies führt in Verbindung mit der heutigenRoutingstrategie (Classless Inter-Domain Routing) zu langenRoutingtabellen, auf welcheSpeicher undProzessoren derRouter im Kernbereich des Internets ausgelegt werden müssen. Zudem erfordert IPv4 von Routern, Prüfsummen jedes weitergeleiteten Pakets neu zu berechnen, was eine weitere Prozessorbelastung darstellt.
Weil die IPv4-Adressen auszugehen drohten, wurdeIPv6 als 128-Bit-Adressen entwickelt. Diese werden in achthexadezimale 4er-Gruppen dargestellt und die Gruppen durch Doppelpunkte getrennt. Damit können 2128 = 65.5368 ≈ 340 Sextillionen IPv6-Adressen vergeben werden, eine extrem hohe Zahl. Zusätzlich wurde die Systematik der Adress-Struktur wesentlich verbessert.