Bootstrap

IPv4

IPv4 im TCP/IP‑Protokollstapel:
Anwendung HTTP IMAP SMTP DNS
Transport TCP UDP
Internet IPv4
Netz-Zugang Ethernet Token
Bus
Token
Ring
FDDI ...

IPv4 (Internet Protocol Version 4), früher einfach IP, ist die vierte Version des Internet Protocols (IP). Es war die erste Version des Internet Protocols, welche weltweit verbreitet und eingesetzt wurde und bildet eine wichtige technische Grundlage des Internets. Es wurde in RFC 791 im Jahr 1981 definiert.

Inhaltsverzeichnis

Adressformat

IPv4 benutzt 32-Bit-Adressen, daher sind maximal 4.294.967.296 eindeutige Adressen möglich. IPv4-Adressen werden üblicherweise dezimal in vier Blöcken geschrieben, zum Beispiel 207.142.131.235. Je Block werden 8 Bit zusammengefasst; somit ergibt sich für jeden Block ein Wertebereich von 0 bis 255. Bei der Weiterentwicklung IPv6 werden 128-Bit-Adressen verwendet. Es ist aber heute (2008) noch nicht sehr verbreitet.

Eine IP-Adresse unterteilt sich in einen Netzwerkteil und einen Host-(Adressen-)teil. Rechner sind im selben IP-Netz, wenn der Netzwerkteil ihrer Adresse gleich ist – das ist eine Voraussetzung, dass diese Rechner direkt miteinander kommunizieren können. Im selben Netz darf keine Host-Adresse doppelt vergeben sein.

Für die Kommunikation zwischen unterschiedlichen Netzen wird ein Router benötigt. Den Adressteil vergibt der zuständige Administrator für jedes teilnehmende Gerät verschieden. Oft wird die Vergabe des Adressteils von einem so genannten DHCP-Server übernommen. Die Netzadresse vergibt der Besitzer oder Planer des Netzwerkes. Im Internet ist das IANA (Internet Assigned Numbers Authority) für die Vergabe der Netzadressen zuständig.

Ein typisches Netzwerk trennt die 32 Bit in einen 24-Bit-Netzwerk und einen 8-Bit-Adressteil (früher Klasse-C-Adressen). Die genaue Aufteilung zwischen Netzteil und Adressteil wird in Form der Subnetmask angegeben (zum Beispiel 255.255.255.0). Eine alternative Notation ist zum Beispiel 192.168.0.0/24; die '24' bedeutet, dass die linken 24 Bits der Subnetmask gleich 1 sind.

Netzklassen

IP-Netzklassen
Bit 0–3 4 5–7 8–15 16–23 24–31
Class A: Netze 0.0.0.0/8 bis 127.255.255.255
0 … 8-Bit-Netz 24-Bit-Host
Class B: Netze 128.0.0.0/16 bis 191.255.255.255
1 0 … 16-Bit-Netz 16-Bit-Host
Class C: Netze 192.0.0.0/24 bis 223.255.255.255
1 1 0 … 24-Bit-Netz 8-Bit-Host
Class D: Multicast-Gruppen 224.0.0.0/4 bis 239.255.255.255
1 1 1 0 28-Bit-Multicast-Gruppen-ID
Class E: Reserviert 240.0.0.0/4 bis 255.255.255.255
1 1 1 1 28 Bit reserviert für zukünftige Anwendungen

Früher gab es fest vorgeschriebene Einteilungen für Netzwerkklassen mit einer festen Länge. Diese Einteilung erwies sich allerdings als zu unflexibel, so dass man seit 1993 dazu übergegangen ist, sie bitvariabel im Classless Inter-Domain Routing-Verfahren durchzuführen. Heutzutage kann man genau genommen nicht mehr von Klasse-A/B/C-Netzwerken sprechen, allerdings ist es im allgemeinen Sprachgebrauch erhalten geblieben und viele netzwerkfähige Betriebssysteme bestimmen die Standardnetzmaske anhand der alten Klassifikation.

Die maximale Anzahl der zu vergebenen Host-Adressen in einem Netz ist

2Anzahl Bits der Hostadresse - 2

Zwei Host-Adressen fallen immer weg – die erste Adresse (zum Beispiel 192.168.0.0) bezeichnet das Netz selber, die letzte Adresse (zum Beispiel 192.168.0.255) ist für den Broadcast (alle Teilnehmer werden angesprochen) reserviert.

Mehr dazu: Netzklasse.

Besondere Netzwerkadressen

Einige Klassen von Netzwerkadressen sind für spezielle Zwecke reserviert. RFC 3330

Adressblock Verwendung Referenz
0.0.0.0/8 Aktuelles Netzwerk RFC 3330
10.0.0.0/8 Privates Netzwerk der Klasse A RFC 1918
14.0.0.0/8 Öffentliches Datennetzwerk IANA-DB
39.0.0.0/8 Reserviert RFC 1797
127.0.0.0/8 Loopback (Lokaler Computer) IANA-DB
128.0.0.0/16 Reserviert RFC 3330
169.254.0.0/16 Privates Netzwerk (link local), APIPA RFC 3927
172.16.0.0/12 Privates Netzwerk der Klasse B RFC 1918
191.255.0.0/16 Reserviert RFC 3330
192.0.0.0/24 Reserviert RFC 3330
192.0.2.0/24 Test-Netzwerke RFC 3330
192.88.99.0/24 IPv6 zu IPv4 Relay RFC 3068
192.168.0.0/16 Privates Netzwerk der Klasse C RFC 1918
198.18.0.0/15 Netzwerk-Benchmark-Tests RFC 2544
223.255.255.0/24 Reserviert RFC 3330
224.0.0.0/4 Multicasts (ehemals Klasse-D-Netzwerk) RFC 3171
240.0.0.0/4 Reserviert (ehemals Klasse-E-Netzwerk) RFC 1700
255.255.255.255 Broadcast

Lokale/Private Netzwerkadressen

IP-Adressen für lokale Netzwerke werden ausführlich im Artikel Private IP-Adresse behandelt.

Adressbereich Klassenbeschreibung größter CIDR-Block Anzahl IP-Adressen
10.0.0.0–10.255.255.255 1 Klasse-A-Netz 10.0.0.0/8 224 = 16.777.216
172.16.0.0–172.31.255.255 16 Klasse-B-Netze 172.16.0.0/12 220 = 1.048.576
192.168.0.0–192.168.255.255 256 Klasse-C-Netze 192.168.0.0/16 216 = 65.536
169.254.0.0–169.254.255.255 link local, 1 Klasse-B-Netz 169.254.0.0/16 216 = 65.536

Beispiele

Beispiel: (/24 (früher Klasse-C-Netz))

Subnetzmaske = 11111111.11111111.11111111.00000000 (255.255.255.0)
Der Besitzer legt den Netzteil auf 192.168.0 fest:
Netzteil = 11000000.10101000.00000000
Das führt zu folgender Adressverteilung:
Netzname = 11000000.10101000.00000000.00000000 (192.168.0.0)
Erste Adr. = 11000000.10101000.00000000.00000001 (192.168.0.1)
Letzte Adr. = 11000000.10101000.00000000.11111110 (192.168.0.254)
Broadcast = 11000000.10101000.00000000.11111111 (192.168.0.255)
Anzahl zu vergebende Adressen: 28 − 2 = 254

Beispiel: (Classless)

Subnetzmaske = 11111111.11111111.11111000.00000000 (255.255.248.0)
Der Besitzer legt den Netzteil auf 192.168.120 fest
(wobei im dritten Block nur die fünf höchstwertigen Bits zum Netzteil gehören):
Netzteil = 11000000.10101000.01111
Das führt zu folgender Adressverteilung:
Netzname = 11000000.10101000.01111000.00000000 (192.168.120.0)
Erste Adr. = 11000000.10101000.01111000.00000001 (192.168.120.1)
Letzte Adr. = 11000000.10101000.01111111.11111110 (192.168.127.254)
Broadcast = 11000000.10101000.01111111.11111111 (192.168.127.255)
Anzahl zu vergebende Adressen: 211 − 2 = 2046

Subnetting

Netzanteil Hostanteil Subnetzmaske Class A Subnetze Class B Subnetze Class C Subnetze
in Bit in Bit Adressanzahl von 0.0.0.0 bis … Anzahl von 128.0.0.0 bis … Anzahl von 192.0.0.0 bis … Anzahl
/8 24 224 = 16.777.216 255.0.0.0 127.0.0.0 27 = 128 - - - -
/9 23 223 = 8.388.608 255.128.0.0 127.128.0.0 256 - - - -
/10 22 222 = 4.194.304 255.192.0.0 127.192.0.0 512 - - - -
/11 21 221 = 2.097.152 255.224.0.0 127.224.0.0 1.024 - - - -
/12 20 220 = 1.048.576 255.240.0.0 127.240.0.0 2.048 - - - -
/13 19 219 = 524.288 255.248.0.0 127.248.0.0 4.096 - - - -
/14 18 218 = 262.144 255.252.0.0 127.252.0.0 8.192 - - - -
/15 17 217 = 131.072 255.254.0.0 127.254.0.0 16.384 - - - -
/16 16 216 = 65.536 255.255.0.0 127.255.0.0 32.768 191.255.0.0 26 + 8 = 16.384 - -
/17 15 215 = 32.768 255.255.128.0 127.255.128.0 65.536 191.255.128.0 32.768 - -
/18 14 214 = 16.384 255.255.192.0 127.255.192.0 131.072 191.255.192.0 65.536 - -
/19 13 213 = 8.192 255.255.224.0 127.255.224.0 262.144 191.255.224.0 131.072 - -
/20 12 212 = 4.096 255.255.240.0 127.255.240.0 524.288 191.255.240.0 262.144 - -
/21 11 211 = 2.048 255.255.248.0 127.255.248.0 1.048.576 191.255.248.0 524.288 - -
/22 10 210 = 1.024 255.255.252.0 127.255.252.0 2.097.152 191.255.252.0 1.048.576 - -
/23 9 29 = 512 255.255.254.0 127.255.254.0 4.194.304 191.255.254.0 2.097.152 - -
/24 8 28 = 256 255.255.255.0 127.255.255.0 8.388.608 191.255.255.0 4.194.304 223.255.255.0 25 + 8 + 8 = 2.097.152
/25 7 27 = 128 255.255.255.128 127.255.255.128 16.777.216 191.255.255.128 8.388.608 223.255.255.128 4.194.304
/26 6 26 = 64 255.255.255.192 127.255.255.192 33.554.432 191.255.255.192 16.777.216 223.255.255.223 8.388.608
/27 5 25 = 32 255.255.255.224 127.255.255.224 67.108.864 191.255.255.224 33.554.432 223.255.255.224 16.777.216
/28 4 24 = 16 255.255.255.240 127.255.255.240 134.217.728 191.255.255.240 67.108.864 223.255.255.240 33.554.432
/29 3 23 = 8 255.255.255.248 127.255.255.248 268.435.456 191.255.255.248 134.217.728 223.255.255.248 67.108.864
/30 2 22 = 4 255.255.255.252 127.255.255.252 536.870.912 191.255.255.252 268.435.456 223.255.255.252 134.217.728

Beispiele Subnetting

192.0.0.0/29–192.0.0.248/29 (Maske: 255.255.255.248)
Lfd. Nr. Netz Netzbereiche
von bis
1. 192.0.0.0 192.0.0.7
2. 192.0.0.8 192.0.0.15
3. 192.0.0.16 192.0.0.23
4. bis 15.
16. 192.0.0.120 192.0.0.127
17. 192.0.0.128 192.0.0.135
18. bis 30.
31. 192.0.0.240 192.0.0.247
32. 192.0.0.248 192.0.0.255
10.0.0.0/22–10.255.252.0/22 (Maske: 255.255.252.0)
Lfd. Nr. Netz Netzbereiche
von bis
1. 10.0.0.0 10.0.3.255
2. 10.0.4.0 10.0.7.255
3. 10.0.8.0 10.0.11.255
4. bis 63.
64. 10.0.252.0 10.0.255.255
65. 10.1.0.0 10.1.3.255
66. bis 16.382.
16.383. 10.255.248.0 10.255.251.255
28 + 6 = 16.384. 10.255.252.0 10.255.255.255

Paketlänge

Ein IP-Paket besteht aus einem Header und den eigentlichen Daten. Der Datenteil enthält in der Regel ein weiteres Protokoll, meist TCP, UDP oder ICMP. Die maximale Länge eines IP-Pakets beträgt 65535 Bytes (216-1), die maximale Datenlänge 65515 Byte (Paketlänge - minimale Headerlänge von 20 Byte). Normalerweise beschränkt der Sender die Paketlänge auf diejenige des zugrundeliegenden Mediums. Bei Ethernet beträgt die so genannte MTU (Maximum Transmission Unit) 1500 Bytes, da ein Ethernet-Datenblock maximal 1518 Bytes lang sein darf und 18 Bytes vom Ethernet selbst belegt werden. Für IP (Header und Daten) stehen also nur 1500 Bytes zur Verfügung. Deshalb ist die Länge von IP-Paketen oft auf 1500 Bytes festgesetzt.

Routing

IPv4 unterscheidet nicht zwischen Endgeräten (Hosts) und Vermittlungsgeräten (Router). Jeder Computer und jedes Gerät kann gleichzeitig Endpunkt und Router sein. Ein Router verbindet dabei verschiedene Netzwerke. Die Gesamtheit aller über Router verbundenen Netzwerke bildet das Internet (siehe auch Internetworking).

IPv4 ist für LANs und WANs gleichermaßen geeignet. Ein Paket kann verschiedene Netzwerke vom Sender zum Empfänger durchlaufen, die Netzwerke sind durch Router verbunden. Anhand von Routingtabellen, die jeder Router individuell pflegt, wird der Netzwerkteil einem Zielnetzwerk 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 Netzwerks auch alternativ geroutet werden. Jedes Paket wird dabei einzeln geroutet, was zu einer erhöhten Ausfallsicherheit führt.

Beim Routing über IP können daher

Wird TCP auf IP aufgesetzt (d. h. die Daten jedes IP-Pakets enthalten ein TCP-Paket, aufgeteilt in TCP-Header und Daten), so wird neben dem Aufheben der Längenbeschränkung auch der Paketverlust durch Wiederholung korrigiert. Doppelte Pakete werden erkannt und verworfen. Die Kombination TCP mit IP stellt dabei eine zuverlässige bidirektionale Verbindung eines Datenstroms dar.

ICMP

Hauptartikel: Internet Control Message Protocol

IP ist eng verknüpft mit dem ICMP-Protokoll, 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. Wichtig ist zum Beispiel die ICMP Source-Quench-Mitteilung, die den Sender über das Verwerfen von Paketen aufgrund einer Überlastung eines Routers informiert. Da jedes IP-Paket die Quell-Adresse enthält, können Informationen an den Sender zurück übermittelt werden. Dieser kann nach einem Source-Quench die Paketsendefrequenz verringern und so die Notwendigkeit eines weiteren Verwerfens minimieren oder vermeiden.

ICMP kann zusammen mit dem Don't-Fragment-Bit des IP-Pakets auch eingesetzt werden, um die maximale Paketgröße MTU eines Übertragungsweges zu ermitteln (so genannte PMTU Path Maximum Transmission Unit). Dies ist die MTU desjenigen Netzwerkes mit der kleinsten MTU aller passierten Netzwerke. Dadurch kann auf Fragmentierung verzichtet werden, wenn der Sender nur Pakete mit der maximalen Größe der PMTU erzeugt.

IPv4 auf Ethernet

IPv4 kann auf vielen verschiedenen Medien aufsetzen, zum Beispiel auf serielle Schnittstellen (PPP oder SLIP), Satellitenverbindungen usw. Im LAN-Bereich wird heute fast immer Ethernet eingesetzt. Ethernet verwaltet eigene 48-Bit-Adressen. Wenn IP über Ethernet gesendet wird, wird ein 14 (oder bei VLAN 18) Byte großer Ethernet-Header vor dem IP-Header gesendet. Nach den Daten folgt eine 32-Bit-CRC-Prüfsumme. Neben der maximalen Paketlänge von 1522 (bzw. 1518) Bytes kann Ethernet keine kleineren Pakete als 64 Bytes übertragen, so dass zu kurze IP-Pakete (Datenlänge kleiner als 46 Bytes) mit Nullbytes erweitert werden (so genanntes Padding). Die Länge im IP-Header gibt dann Auskunft über die tatsächliche Paketgröße.

Im Ethernet hat jede Netzwerkkarte ihre eigene herstellerbezogene 48-Bit-Adresse, zusätzlich gibt es eine Ethernet-Broadcastadresse. Ein Sender muss die Ethernetadresse der Zielnetzwerkkarte kennen, bevor ein IP-Paket gesendet werden kann. Dazu wird das ARP-Protokoll (Address Resolution Protocol) verwendet. Jeder Rechner verwaltet einen ARP-Cache, in dem er ihm bekannte Zuordnungen von Ethernet-Kartenadressen speichert. Unbekannte Adressen erfährt er über das ARP-Protokoll mittels einer Anfrage (ARP-Request) über einen Ethernet-Broadcast, die der zugehörige Empfänger beantwortet (ARP-Reply).

Header-Format

Der IPv4-Header ist normalerweise 20 Bytes lang. Bei Übertragung auf Basis von Ethernet folgt er dem Ethernet-Typfeld, das für IP-Pakete auf 080016 festgelegt ist. Auf anderen Übertragungsmedien und Protokollen kann der Header auch der erste Eintrag sein.

IPv4 bietet verschiedene, größtenteils ungenutzte Optionen, die den Header bis auf 60 Bytes (in 4-Byte-Schritten) verlängern können.

0–3 4–7 8–11 12–15 16–18 19–23 24–27 28–31
Version IHL Type of Service Länge
Identifikation Flags Fragment-Offset
TTL Protokoll Prüfsumme
Quell-IP-Adresse
Ziel-IP-Adresse
evtl. Optionen …

Eine spezielle Bedeutung kommt in modernen Implementierungen dem Feld Type of Service 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 der Vermeidung von Überlastungen verwendet.

Fragmentierung

Auf dem Weg vom Sender zum Empfänger kann es vorkommen, dass ein Datagramm ein Netz durchlaufen muss, welches nur kleine Datagramme unterstützt. Jedes Datagramm erhält vom Sender eine Kennung (Identification). Stellt ein Router auf dem Weg zum Ziel fest, dass das Datagramm für das nächste Teilnetz zu groß ist, so kann er es in zwei Fragmente aufteilen. Dazu sind folgende Schritte notwendig:

Das Fragmentieren in n > 2 Fragmente funktioniert entsprechend.

Um ein Paket wieder zusammen zu setzen, kombiniert der Empfänger alle Fragmente, welche die gleiche Kennung (Identifikation), den gleichen Absender, Empfänger und das gleiche Protokoll haben. Dabei erkennt er das erste Fragment daran, dass Fragment-Offset den Wert 0 hat. Das jeweils nächste Fragment erkennt er ebenfalls am Fragment-Offset und das letzte Fragment daran, dass more-fragments den Wert 0 hat.

Höhere Protokolle

IPv4 ist ein geroutetes Protokoll (Schicht 2 im TCP/IP-Referenzmodell/Schicht 3 im ISO/OSI-Modell). Auf IPv4 werden weitere Protokolle aufgesetzt, das heißt in den Datenteil des IP-Pakets werden die Header, Daten und eventuelle Trailer der oberen Protokolle eingefügt (Protokollstapel). Eine Liste der registrierten Protokolle findet sich in Unix-artigen Betriebssystemen unter /etc/protocols.

Neben dem erwähnten ICMP wird TCP verwendet, das TCP/IP zusammen mit IP den Namen gegeben hat. TCP ist ein verbindungsorientiertes Protokoll, das einen byteorientierten, bidirektionalen, zuverlässigen Datenstrom zur Verfügung stellt. Es wird im WAN-Bereich praktisch für alle Arten von Daten- und Informationsübertragungen eingesetzt.

UDP, ein paketorientiertes Protokoll, setzt ebenfalls auf IP auf. Es ist ein einfaches Protokoll, das die Paketeigenschaften von IP im wesentlichen beibehält (verbindungslos, unzuverlässig, Verdoppelung etc.). TCP und UDP fügen IP eine Prüfsumme über die Daten (die Prüfsumme im IP-Header prüft nur die Headerdaten) und als Quell- und Zielport jeweils eine 16-Bit-Zahl hinzu. Diese Ports bilden zusammen mit der jeweiligen Quell- und Zieladresse im IP-Paket so genannte Endpunkte. Prozesse kommunizieren über diese Endpunkte. TCP baut eine Verbindung nicht zwischen IP-Adressen, sondern zwischen zwei Endpunkten auf. Die weiteren Protokolle setzen alle entweder auf TCP oder auf UDP auf. Ein wichtiges Protokoll ist das Domain Name System DNS, das eine Umsetzung von Rechnernamen zu IP-Adressen erlaubt. Es überträgt Informationen normalerweise über UDP, der Abgleich zwischen zwei DNS-Servern kann aber auch das TCP-Protokoll verwenden. Die Ports teilen sich auf in:

Vergangenheit und Zukunft

Eine Schätzung geht davon aus, dass die IANA im Januar 2011 die letzten IPv4-Adressen an die Regional Internet Registries vergeben wird[1] und dass diese dann ca. ein Jahr später der Internetgemeinde keine Adressen mehr bereitstellen werden.

Das IPv4-Protokoll hat lange nahezu unverändert überlebt. Ab 1983 wurde die IP-Protokoll-Familie als einzige Protokollfamilie für das ARPAnet übernommen, das dann später zum Internet wurde. Damals waren nur einige hundert Rechner an das Netz angeschlossen. 1989 wurde die Grenze von 100.000 Rechnern überschritten, und im gleichen Jahr der Backbone auf 1,5 MBit/s aufgerüstet. Anfang der 1990er-Jahre war erkennbar, dass die IP-Adressen bald knapp würden. Dies führte zuerst zur Entwicklung eines Entwurfes für einen Standard mit der Versionsnummer 7 (TP/IX), der dann aber zu Gunsten von IPv6 verworfen wurde. TP/IX sollte dabei einen 64-Bit-Adressbereich unterstützen. Die Versionsnummer 5 wurde 1995 für das Internet Stream Protocol Version 2 (ST2) benutzt, das nicht als IPv4-Nachfolger geplant war, sondern als gleichzeitig benutzbares, für Streaming optimiertes Protokoll. Mittlerweile ist das Projekt jedoch eingestellt. Einige Eigenschaften, wie Fragmentierung, werden nicht mehr benötigt, da sie für die heutigen schnellen Netze zu aufwändig sind. Path Maximum Transmission Unit Discovery löst dieses Problem. IPv4 scheint auch in nächster Zukunft noch das allgemein verwendete Protokoll im Internet zu bleiben. Schließlich hat IP auch die konkurrierenden LAN-Protokolle wie DECnet verdrängt. Netware, AppleTalk und NetBIOS wurden als neue Versionen hervorgebracht, die auf IP aufsetzen.

Siehe auch

Quellen

  1. heise online: OECD-Mitgliedsländer wollen bei IPv6 mehr Dampf machen (18. Juni 2008)

Links