Protokolle, TCP und IP

„Netzwerktechnik? Bestimmt kompliziert!“

Die Netzwerktechnik ist kein „Buch mit sieben Siegeln“, auch wenn es manch ein Netzwerker gerne so verkauft.

Auf dieser Seite geht es zunächst einmal um eine generelle Einführung in das Thema.

Wie es bei mir begann

Um zu zeigen, dass niemand als Netzwerker auf die Welt kommt, schildere ich kurz meine Entwicklung auf diesem Gebiet.

Wie es begann: Commodore 64 und BTX

Wenn man mal von den BTX-Versuchen mit dem Commodore 64 absieht, war mein erster richtiger Kontakt mit der Netzwerktechnik Anfang 1994 mit Windows 3.11. Es hatte den Beinamen „Windows for Workgroups“ (WfW), auf Deutsch „Windows für Arbeitsgruppen“. Windows 3.11 brachte erstmals umfangreiche Netzwerkfunktionen für die Zusammenarbeit mehrerer Windows-Rechner mit und konnte um Microsofts zusätzliches Protokollpaket „TCP/IP-32“ erweitert werden. Damit wurde es wesentlich einfacher, mehrere Windows-Rechner in einem lokalen Netzwerk miteinander zu verbinden, um gemeinsam auf Dateien oder Drucker zuzugreifen.

Ich selbst habe mich zu der Zeit kaum mit der Thematik beschäftigt. Mein Augenmerk lag eher auf der Programmierung - „BASIC“ und „Turbo Pascal“ waren bei mir angesagt. Und dann war da natürlich die Bildbearbeitung, damals noch mit „Paint Shop Pro“.

Und die Netzwerktechnik? Nun ja, wer besaß damals schon privat mehrere Rechner, die hätten vernetzt werden können?

Ganz außen vor war ich aber nicht. Über Dozentenkollegen erfuhr ich ein wenig über die Entwicklung in Firmen. Ein Kollege gab damals Kurse zu „Novell Netware“. Das war ein sehr stabiles Betriebssystem speziell zum vernetzten Arbeiten zum Beispiel in Großraumbüros. Er hatte mehrere Jahre volle Auftragsbücher allein zu diesem Thema.

Mit Windows 3.11 kam zunächst noch keine echte Konkurrenz ins Spiel. Aber kurze Zeit später änderte sich das, als Windows NT herauskam. Es war eine auf Stabilität und professionellen Einsatz ausgerichtete Betriebssystemfamilie von Microsoft, die sowohl Arbeitsplatz- als auch Serverversionen umfasste und sich nach und nach zu einem wichtigen Standard entwickelte.

Als Windows 95 veröffentlicht wurde, nutzte ich es nur ein Jahr und wechselte 1996 zu Windows NT 4.0. Denn das lief im Gegensatz zu Windows 95 sehr stabil. Mit den mitgelieferten Diensten und Rollen hatte ich zunächst noch nichts am Hut, sie waren lediglich „interessantes Beiwerk“.

Ende 1996 setzte ich dann meinen ersten einfachen Server auf, allerdings auf und nicht mit NT. Es war erst mal nur ein lokaler FTP-Server, für den ich „War FTP Daemon“ nutzte. Später stieg ich auf den „FileZilla Server“ um. Als ich 1996 meine ersten Webseiten erstellte, testete ich sie vor dem Upload lokal mit dem Apache Webserver. Ab 1997 experimentierte ich dann auch mit Webseiten, die bei mir zu Hause aus dem Internet erreichbar waren.

Interessante Geschichte am Rande: Der Apache-Webserver entstand auf Grundlage des damals verbreiteten NCSA-Webservers. Nachdem dessen ursprüngliche Weiterentwicklung ins Stocken geraten war, sammelten mehrere Entwickler Fehlerkorrekturen und Erweiterungen in Form von Patches und entwickelten daraus ein gemeinsames Projekt. In diesem Zusammenhang verbreitete sich später das Wortspiel „a patchy server“, also ein aus vielen Patches (Flicken) zusammengesetzter Server. Auch wenn dieser Zusammenhang nachvollziehbar erscheint, soll der Name Apache offiziell auf die indigenen Völker der Apachen zurückgehen, deren Ausdauer und strategische Fähigkeiten die Entwickler bewunderten.

Viele Netzwerkkenntnisse musste ich mir über Fachbücher oder Kollegen aneignen. Oder durch Experimente à la „trial and error“. Denn das Internet in der heutigen Form oder gar KI stand mir damals nicht zur Verfügung. Tieferes Wissen in dem Bereich erlangte ich später durch meine nachgeholte Fachinformatiker-Ausbildung.

Protokolle in der IT

In der IT kann dieser Begriff zwei Bedeutungen haben, genau wie in der Realität:

Mitschrift

Regelwerk

Internet-Protokoll (IP)

Das „Internet Protocol“ (IP) gehört zu den grundlegenden Protokollen der Internetprotokollfamilie und bildet eine wesentliche Grundlage des heutigen Internets.

Den Ablauf von IP kann man sich am besten so vorstellen: Gehen wir davon aus, dass Sie sich etwas bestellt haben, das aus mehreren Teillieferungen besteht. Diese kommen über verschiedene Lieferanten und nehmen unterschiedliche Wege. An jeder Zwischenstation wird auf die Zieladresse geschaut und dann individuell entschieden, an welche Folgestation die Teillieferung gesendet wird. So kann jedes Paket völlig unterschiedliche Wege zu Ihnen nehmen.

Beim Datenversand mit IP werden Dateien in viele kleine Datenpakete unterteilt, die jeweils Zusatzinformationen mitbekommen. Auf seinem Weg durch das Internet wird ein Datenpaket von Router zu Router weitergereicht. Jeder Router entscheidet anhand seiner Informationen, an welchen nächsten Router das Paket übergeben wird. Ändert sich die Netzsituation, können die nachfolgenden Pakete deshalb einen anderen Weg zum Ziel nehmen.

IP dient hauptsächlich der Adressierung und Weiterleitung von Datagrammen – das sind Datenpakete, die ohne vorherigen Verbindungsaufbau versendet werden – zwischen verschiedenen Netzwerken. Anders ausgedrückt: Allein mit IP gibt es keine Empfangsgarantie. Um noch mal den Vergleich mit dem Postversand zu bemühen: Die Teillieferungen werden Ihnen einfach vor die Tür gestellt, eine Empfangskonstrolle gibt es nicht.

Für viele Anwendungen arbeitet IP mit TCP zusammen, das unter anderem die Reihenfolge, Vollständigkeit und zuverlässige Übertragung der Daten kontrolliert. Hier kann man sich die Funktion ähnlich wie beim mittlerweile aus der Mode gekommenen Fax vorstellen: Man erhält zwei Seiten, die mit „Seite 1 von 3“ und „Seite 3 von 3“ beschriftet sind. Allein aus dieser Information können Sie schlussfolgern, dass Seite 2 fehlt und sie beim Absender nachfordern.

Aber IP kann auch mit anderen Protokollen zusammenarbeiten. Beispielsweise mit UDP, das häufig beim Streaming oder Gaming verwendet wird, wenn eine geringe Verzögerung wichtiger ist als die nachträgliche Übertragung jedes verlorenen Datenpakets. Oder mit ICMP, das unter anderem bei „ping“ für Echo-Anfragen und die dazugehörigen Antworten verwendet wird.

Arbeiten mehrere Protokolle zusammen, wie beispielsweise TCP/IP, nennt man das auch einen „Protokoll-Stack“.

Für diejenigen, die in der Ausbildung schon etwas weiter sind:
IP arbeitet auf Schicht 3 des OSI-Modells, das ist die Vermittlungsschicht.
TCP hingegen arbeitet auf Schicht 4 des OSI-Modells, das ist die Transportschicht.
An späterer Stelle wird noch genauer auf das OSI-Modell eingegangen.

Verbindungslos und verbindungsorientiert

An dieser Stelle sollte auch erwähnt werden, dass Netzwerkprotokolle in die Gruppen „verbindungsorientierte“ und „verbindungslose“ Protokolle unterschieden werden:

Vergleich zwischen UDP und TCP anhand einer Paketdienst-Analogie
Links: abstellen und weiterfahren. Rechts: Übergabe mit Bestätigung.

IP-Adressen

IP-Adressen dienen der Identifikation eines Ziels in einem Netzwerk. Dieses muss nicht zwangsläufig ein einzelnes Gerät sein. Durch Verfahren wie NAT können mehrere Geräte gegenüber dem Internet unter derselben öffentlichen IP-Adresse auftreten. Innerhalb ihres lokalen Netzwerks besitzen sie jedoch normalerweise jeweils eine eigene Adresse. Umgekehrt kann aber auch ein einzelnes Gerät mehrere IP-Adressen für unterschiedliche Zwecke besitzen.

Generell kann man sich die IP-Adresse wie die Postanschrift einer Person vorstellen. Ist die bekannt, ist der Weg der Postsendung zum Ziel egal.

Anders als die MAC-Hardwareadresse ist eine IP-Adresse nicht für ein bestimmtes Gerät festgeschrieben und kann jederzeit nachträglich verändert werden.
(Jaaaaa ... ich weiß, dass dies nur die Theorie ist, die die IHK in der Prüfung hören will. Natürlich kann man auch MAC-Adressen mit entsprechenden Mitteln nachträglich verändern.)

IPv4

Heute sind zwei IP-Versionen gebräuchlich: Das ältere IPv4 und das neuere IPv6. Es findet zwar ein Umstieg statt, dieser geschieht aber nicht von heute auf morgen. Daher werden ITler noch längere Zeit mit beiden Versionen parallel zu tun haben.

In der Anfangszeit des Internets hat der ursprüngliche IP-Adressaufbau völlig ausgereicht, um genügend Adressen für alle Netzwerkgeräte zu generieren.

Eine IPv4-Adresse besteht aus vier Bereichen, die jeweils durch einen Punkt getrennt werden. In jedem der Bereiche ist ein Wert von 0 bis 255 möglich, es gibt also 256 Möglichkeiten.

So könnte eine IPv4-Adresse aussehen:

192 . 168 . 0 . 1

Man kann eine IPv4-Adresse auch binär darstellen. Dann entspricht jeder der Bereiche einem Wert von 00000000 (dezimal 0) bis 11111111 (dezimal 255). Daraus wird deutlich, dass ein dezimaler Wert größer 255 in einer IPv4-Adresse nicht möglich ist.

Es gibt in jedem Bereich acht binäre Stellen, deswegen spricht man in diesem Zusammenhang auch von einem Oktett.

Die oben dezimal geschriebene Adresse würde mit vier binären Oktetten dargestellt so aussehen:

11000000 . 10101000 . 00000000 . 00000001

Die komplette Adresse hat eine Länge von viermal acht Bit, insgesamt also 32 Bit.

32 Bit ergeben 232 Möglichkeiten. Das bedeutet, dass insgesamt 4.294.967.296 unterschiedliche Adressen darstellbar sind. Nicht alle diese Adressen stehen jedoch als weltweit frei vergebbare öffentliche Geräteadressen zur Verfügung.

Über vier Milliarden unterschiedliche Adressen (einschließlich der reservierten), das erschien damals außerordentlich groß. Immerhin entsprach es zu Zeiten der IPv4-Einführung in etwa der menschlichen Weltbevölkerung. Zu der Zeit waren Computer aufgrund ihrer Größe und relativ geringen Leistung noch nicht so weit verbreitet. Bei der ursprünglichen Planung war jedoch noch nicht absehbar, wie klein und leistungsfähig Computer in Zukunft sein und wie viele Geräte sich später einmal dauerhaft oder gleichzeitig mit Netzwerken verbinden würden.

Heute besitzt fast jeder Mensch - wo auch immer auf der Welt (und selbst auf der Raumstation ISS) - mindestens ein Gerät mit einer Internetverbindung. Gab es damals nur vereinzelt mal einen PC mit Internetanschluss in einem Haushalt, so ist es heute selbstverständlich, dass so gut wie jeder gleich mehrere Netzwerkgeräte parallel benutzt: Handy, PC, Laptop, Fernseher, Bordcomputer im Auto, Smart-Home-Geräte usw.

Daraus ergibt sich das Problem, dass das alte System nicht mehr ausreichend Adressen bietet. Selbst mit Tricksereien, auf die an anderer Stelle noch eingegangen wird, reicht der mögliche Adresspool auf absehbare Zeit nicht mehr aus.

Subnetzmaske

Wer schon einmal eine IPv4-Konfiguration durchgeführt oder zumindest mal zugeschaut hat, dem sollte aufgefallen sein, dass unterhalb der IP-Adresse oftmals noch eine weitere Angabe in dieser Art existiert:

255 . 255 . 255 . 0

Dies ist die sogenannte Subnetzmaske, die dem Rechner wesentliche Informationen zu der angegebenen IP-Adresse mitteilt. Um es besser zu verstehen, sollte man wissen, dass auch diese Angabe nur für uns Menschen dezimal dargestellt wird. Der Computer benötigt wieder eine Binärdarstellung. Das ergäbe für das obige Beispiel eine Kette von 24 Einsen und 8 Nullen:

11111111 . 11111111 . 11111111 . 00000000

Durch die bitweise Verknüpfung der IP-Adresse mit der Subnetzmaske lässt sich erkennen, welcher Teil der Adresse den Netzanteil beschreibt und welcher Teil innerhalb dieses Netzes zur Adressierung verwendet wird.

Aber damit verlassen wir die Einleitung, die weiteren Details werden an anderer Stelle erläutert.

Teilnehmer untersucht mit einer transparenten Subnetzmaske eine IPv4-Adresse
Die Subnetzmaske trennt Netzanteil (blau) und Hostanteil (gelb) einer IPv4-Adresse.

Eine wichtige Sache muss allerdings noch erwähnt werden:
Wird eine Subnetzmaske binär dargestellt, stehen bei den heute üblichen Subnetzmasken zunächst zusammenhängend die Einsen und anschließend die Nullen.
Einen „Mischmasch“ mit sich abwechselnden Einsen und Nullen (wie es bei IP-Adressen normal ist), kann es bei heute gebräuchlichen Subnetzmasken nicht geben!

IPv6

Unter anderem aufgrund knapper werdender IPv4-Adressen hat man sich darauf geeinigt, auf das weiterentwickelte IPv6 umzusteigen. Mit der Version 6 des Internet-Protokolls stehen einem neben einigen Verbesserungen/Erweiterungen deutlich mehr Adressen zur Verfügung.

Der Aufbau einer IPv6-Adresse basiert auf dem hexadezimalen Zahlensystem. Dabei werden die Ziffern von 0 bis 9 verwendet, wie in unserem Dezimalsystem auch. Aber dann geht es einstellig mit den Buchstaben a bis f weiter, bevor eine Zahl zweistellig wird. Man kann also einstellig 16 verschiedene Zustände darstellen: 0 bis 9 und dann weiter a bis f.

So könnte eine IPv6-Adresse aussehen:

2001:0db8:85a3:34c7:cafe:8a2e:0370:7344

Eine IPv6-Adresse besteht aus acht vierstelligen Bereichen, wovon jeder hexadezimal dargestellt 65.536 Möglichkeiten bietet. In jedem der acht Bereiche ist ein Wert von 0000 (entspricht dezimal 0) bis ffff (entspricht dezimal 65.535) möglich.

Würde man eine IPv6-Adresse binär darstellen, hätte man 128 Stellen. Denn eine hexadezimale Stelle bietet 16 Möglichkeiten (von 0 bis 15). Das entspricht binär vier Bit. Da ein Segment einer IPv6-Adresse aus vier Hexadezimalstellen besteht, entspricht das 16 Bit. Und es gibt insgesamt acht Segmente, somit 128 Bit.

Was für eine spätere Umwandlungsaufgabe von IPv4 nach IPv6 noch wichtig sein wird:
Jeder 16-Bit-Block einer IPv6-Adresse besitzt dieselbe Bitlänge wie zwei IPv4-Oktette mit jeweils acht Bit.

Bei 128 Bit sind in Kombination rund 340 Sextillionen eindeutige Adressen möglich. Das entspricht näherungsweise einer 34 mit 37 nachfolgenden Nullen! Damit werden wir auf absehbare Zeit ausreichend IP-Adressen zur Verfügung haben, um zumindest theoretisch jedes einzelne Netzwerkgerät auf der Welt dauerhaft mit einer festen IP-Adresse zu versehen.

Reicht IPv6 wirklich?

In einem früheren Kurs meinte ein Teilnehmer: „Herr Schiefer, in ein paar Jahren muss man sich wieder etwas Neues ausdenken, dann reicht es wieder nicht. Bei IPv4 hat man auch mal gesagt, es würde ewig reichen.“

Grundsätzlich ist etwas Skepsis nie verkehrt, zumal die technische Entwicklung nicht immer linear verläuft. Eine Zeit lang entwickelt sich die Technik in vorhersehbaren Bahnen. Aber zwischendurch werden immer wieder mal Entdeckungen oder Erfindungen gemacht, die plötzlich einen neuen Schub bringen.

Aber in diesem Fall kann man ziemlich sicher davon ausgehen, dass die Adressen lange Zeit ausreichen werden.

Zum Vergleich:

Die gesamte Erdoberfläche einschließlich aller Ozeane entspricht rund 510.000.000 km².

IPv4 bietet mit 32 Bit insgesamt 232 Möglichkeiten, das sind exakt 4.294.967.296 Adressen. Würde man diese etwas über 4 Milliarden Adressen über die gesamte Erdoberfläche mitsamt der Ozeane verteilen, käme man auf 8,4 Adressen je Quadratkilometer.

Jetzt spielen wir das Spiel noch einmal mit IPv6. Wie oben beschrieben, besteht eine IPv6-Adresse binär dargestellt aus 128 Bit. Das bedeutet 2128 Möglichkeiten und somit etwas über 340 Sextillionen Adressen. Exakt sind es 340.282.366.920.938.463.463.374.607.431.768.211.456, das ist eine Zahl mit 39 Stellen!
(„Auswendig lernen – wird in der nächsten Lernzielkontrolle abgefragt!“)

Würde man die gesamte Erdoberfläche einschließlich der Ozeane in Quadratmillimeter aufteilen und sämtliche rechnerisch möglichen IPv6-Adressen gleichmäßig darüber verteilen, entfielen auf jeden Quadratmillimeter ungefähr 667 Billiarden Adressen!

Und was meinen Sie jetzt? Ob das erst einmal reicht?

Teilnehmer sucht mit Fernrohr in einem Ruderboot nach IPv4- und IPv6-Adressen
IPv4 wirkt überschaubar, IPv6 eher wie ein Ozean voller Möglichkeiten.

IPv6-Kürzungsregeln

IPv6-Adressen sind mit insgesamt 32 hexadezimalen Stellen plus sieben Doppelpunkten ziemlich lang. Dadurch entsteht mehr Schreib- beziehungsweise Tipparbeit als bei einer dezimal dargestellten IPv4-Adresse, die maximal aus zwölf Ziffern und drei Punkten besteht.

Daher gibt es nach RFC 5952 unter bestimmten Voraussetzungen die Möglichkeit zur Kürzung einer IPv6-Adresse.

Die Regeln

In jedem Segment werden führende Nullen weggelassen.
Führende Nullen dienen nur dem Auffüllen und haben in Bezug auf die Wertigkeit keine Bedeutung.
Wir kennen das von der Datumsdarstellung: 01.05. oder 1.5. – beides meint den ersten Mai.
Auch bei Geldbeträgen spielt es keine Rolle, ob 500 € oder 0500 € überwiesen werden.
Nur bei der binären Darstellung von IPv4-Oktetten ist das Auffüllen auf 8 Stellen zur besseren Erfassbarkeit nötig, beispielsweise 00000001.

Einzelne Segmente aus vier Nullen werden auf eine Null gekürzt, sie dürfen nicht zu zwei Doppelpunkten verkürzt werden.
Das ist eigentlich identisch zur ersten Regel, denn die drei führenden Nullen werden entfernt.

Gibt es eine Kette aus mehreren Nuller-Segmenten, wird diese Kette zu zwei Doppelpunkten zusammengefasst.
Dabei sind zwei Dinge zu beachten:
Einmal darf diese Art der Kürzung nur einmal vorgenommen werden, sonst kann man die komplette Adresse nicht mehr eindeutig zurückwandeln.
Und dann muss bei Vorkommen mehrerer solcher Ketten vorrangig die mit den meisten Nuller-Segmenten durch zwei Doppelpunkte ersetzt werden. Haben zwei Ketten dieselbe Länge, wird die erste von links gewählt.
Bei allen weiteren Nuller-Segmenten greift wieder die erste Regel: Führende Nullen wegstreichen.

Ein Beispiel

Gegeben ist folgende Adresse:

2001:0db8:85a3:0000:0000:8a2e:0000:7344

Alle führenden Nullen werden entfernt:

2001:db8:85a3:0:0:8a2e:0:7344

Die Kette aus Nuller-Segmenten wird zu zwei Doppelpunkten zusammengefasst:

2001:db8:85a3::8a2e:0:7344

Damit ist die bestmögliche Kürzung erledigt.

Die Anwendung der IPv6-Kürzungsregeln kann aber auch gravierendere Folgen haben. Dafür schauen wir uns mal die Loopback-Adresse an, die immer auf den eigenen Rechner verweist. Unter IPv4 lautet sie 127.0.0.1 und wird auch „Localhost“ genannt.
Ausgeschrieben sieht ihr IPv6-Gegenstück so aus:

0000:0000:0000:0000:0000:0000:0000:0001

Wer hat schon Lust, diese Adresse immer auszuschreiben?
Also Schritt 1 – Entfernung der führenden Nullen:

0:0:0:0:0:0:0:1

Und jetzt die Kette zusammenhängender Nuller-Segmente auf zwei Doppelpunkte reduzieren:

::1

Nun sieht die Adresse doch gleich viel übersichtlicher aus, oder?

Teilnehmer beobachtet den A.h.a.-Abkürzungshilfsautomaten bei der Arbeit
A.h.a. = „Abkürzungshilfsautomat“: 3 Zeichen, wo zuvor noch 39 Zeichen waren.