Grundlagen TCP/IP
In einem Netzwerk wird ein Protokoll benötigt, das die Übertragung in diesem Netzwerk regelt. Mit dem Protokoll wird festgelegt, wie die Übertragung auf- und abgebaut wird, und wie die zu übertragenden Daten ausgetauscht werden. Ebenso wird festgelegt, was im Fehlerfall passieren soll. Mit einem standardisierten Protokoll können die unterschiedlichsten Systeme miteinander verbunden werden.
Als Netzwerk-Protokoll kommt heute fast ausschließlich TCP/IP (Transmission Control Protocol / Internet Protocol) zum Einsatz. Die Grundlagen wurden schon in den 1970er Jahren in den USA entwickelt. Der Siegeszug begann mit der Implementierung des Protokolls im Unix-Derivat 4.2 BSD.
1982 wurde das TCP/IP-Protokoll vom Verteidigungsministerium der USA zum Standard für die Vernetzung von militärischen Rechnersystemen erklärt.
Die Übertragung von Daten erfolgt in einem TCP/IP-Netzwerk in sogenannten Paketen. Diese Pakete enthalten neben den Nutzdaten auch die Absender-Information, den Empfänger des Paketes, den Ziel- und Sendeport und eine Prüfsumme, damit die Übertragung des Paketes auf Fehler geprüft werden kann.
Man unterscheidet bei den Paketen zwischen den verbindungslosen (UDP) und den verbindungsorientierten (TCP) Paketen. Bei TCP-Paketen wird zwischen den beteiligten Systemen eine Netzwerk-Verbindung aufgebaut. Über diese Verbindung werden dann Pakete übertragen. Wird bei der Übertragung ein Fehler festgestellt, so kann der Empfänger das Paket erneut anfordern.
Bei UDP-Paketen wird das Paket vom Absender losgeschickt, ohne die Garantie, dass das Paket beim Empfänger ankommt. Auch die Reihenfolge, in der die Pakete beim Empfänger ankommen ist nicht festgelegt, da kein etablierter Transportkanal genutzt wird. Die Anwendung, die mit UDP arbeitet muss daher selber die Korrektheit der empfangenen Pakete prüfen.
Der Zielport bestimmt, vereinfacht gesagt, auf der Empfängerseite das Programm, das dieses Paket verarbeiten kann. Ein Webserver empfängt seine Datenpakete standardgemäß über den Port 80, ein DNS-Server hört den Port 53 ab. Dadurch können verschiedene Dienste auf dem gleichen System laufen und unter der gleichen IP-Adresse erreichbar sein.
IP-Adressen
Damit die Geräte im Netzwerk miteinander kommunizieren können, benötigen sie eine eindeutige Adresse, unter der sie von anderen Geräten erreichbar sind. Zusätzlich benötigen sie ebenfalls die Information, welche Adressen zu einem Netzwerk gehören.
Zur Adressierung der Geräte werden in TCP/IP-Netzwerken IP-Adressen genutzt. Diese sind 32 Bit große Zahlen, welche normalerweise nicht als Binärzahl (z.B. 01110110 00111100 11010011 01010101) sondern in gepunkteter Dezimalnotation (118.60.211.85) aufgeschrieben werden. Die Trennung erfolgt dabei an den Byte-Grenzen (1 Byte = 8 Bits).
Die IP-Adressen werden in Klassen eingeteilt, der Wert des ersten Bytes der IP-Adresse gibt die Adress-Klasse an:
Adress-Klasse | Erstes Byte | Bytes / Netzadresse | Bytes / Hostadresse | Adress-Format | Anzahl Hosts |
Klasse A | 1-126 | 1 | 3 | N.H.H.H | 16,7 Millionen |
Klasse B | 128-191 | 2 | 2 | N.N.H.H | 65.535 |
Klasse C | 192-223 | 3 | 1 | N.N.N.H | 254 |
Klasse D | 224-239 | Multicast-Adressen | |||
Klasse E | 240-254 | Experimentelle Adressen bzw. zukünftige Nutzung | |||
(N = Netzwerk, H= Host) |
Über die Netzwerk-Klassen A – C kann der Host also ermitteln, zu welchem Netzwerk er gehört. Nur die Hosts, die zu dem gleichen Netzwerk gehören können untereinander kommunizieren. Ein Host mit der IP-Adresse 10.5.34.7 gehört zum Klasse A Netzwerk 10.0.0.0 und kann mit allen Host im Bereich von 10.0.0.1 bis 10.255.255.254 direkt kommunizieren.
Innerhalb eines Netzes fällt den Adressen .0 und .255 (in diesem Fall den Adressen 10.0.0.0 und 10.255.255.255) jeweils eine besondere Aufgabe zu. Die erste Adresse im Netzwerk entspricht der Netzwerkadresse und die letzte Adresse im Netzwerk ist die Broadcast-Adresse. Alle Pakete, die an die Broadcast-Adresse gesendet werden, werden von allen Host im Netzwerk empfangen und verarbeitet.
Im Gegensatz dazu werden die Pakete sonst vom Host explizit an eine IP-Adresse gesendet, und auch nur dort verarbeitet. Dies ist der normale Unicast-Traffic, also eine Punkt-zu-Punkt Kommunikation.
Die Broadcast-Pakte hingegen werden an alle Host gleichzeitig gesendet.
Wer die Tabelle oben aufmerksam gelesen hat, dem wird aufgefallen sein, dass das Klasse A Netzwerk 127.0.0.0 dort nicht aufgeführt wird. Dieses Netz ist nur lokal innerhalb eines Gerätes nutzbar, die Adresse 127.0.0.1 entspricht dem Host selbst. Dadurch ist ein auf dem Host laufender Netzwerkdienst auf dieselbe Weise erreichbar wie ein entferntes System. Diese Adresse heißt auch localhost.
Es gibt weitere reservierte Blöcke von IP-Adressen. Dazu gehören das Klasse A Netz 10.0.0.0, die Klasse B Netze von 172.16.0.0 bis 172. 31.255.255 und die Klasse C Netze von 192.168.0.0 bis 192.168.255.255.
Diese Netze sind ausschließlich für die private Nutzung vorgesehen. IP-Pakete, die eine Absender- oder Empfängeradresse aus diesem Bereich haben, werden im Internet nicht weitergeleitet.
Ein weiterer reservierter Block ist das Klasse B Netz 169.254.0.0, auch unter dem Namen APIPA oder Zeroconf bekannt. Wird ein Computer mit dem Netzwerk verbunden, so versucht er von einem DHCP-Server eine IP-Adresse zu beziehen. Wenn dieser Versuch fehlschlägt, so konfiguriert der Computer seine Netzwerkschnittstelle mit einer pseudo-zufälligen Adresse aus dem Bereich 169.254.1.0 – 169.254.254.255.
Diese Adressen werden ebenfalls im Internet nicht weitergeleitet.
Subnetzmaske
Die Aufteilung der IP-Adressen in Netzwerkklassen hat sich mit der Zeit als zu unflexibel herausgestellt. Daher wurde zusätzlich die Subnetzmaske eingeführt, die zusammen mit der Netzwerkadresse den Netz- und den Hostanteil festlegt. In einem Klasse-A-Netzwerk ist die Netzwerkmaske 255.0.0.0, in einem Klasse-B-Netz 255.255.0.0 und in einem Klasse-C-Netz 255.255.255.0. Mit Hilfe der Subnetzmaske kann nun ein Netzwerk in beliebige Teilnetze aufgeteilt werden.
Anhand der Subnetz-Maske kann der Host das Netz ermitteln, in dem er angeschlossen wurde. Schreibt man die Subnetzmaske in der binären Schreibweise, so sind alle Bits, die zur Ermittelung des Netzwerk-Anteils benötigt werden auf „1“ gesetzt:
255.255.255.0 = 11111111.11111111.11111111.00000000
255.255.0.0 = 11111111.11111111.00000000.00000000
255.255.255.240 = 111111111.11111111.11111111.11110000
In einem Netz mit der Subnetzmaske 255.255.255.240 können also nur noch insgesamt 16 Host adressiert werden, da für den Hostanteil nur noch 4 Bit zur Verfügung stehen (2^4). Insgesamt sind sogar nur 14 Hosts möglich, da für das Netz eine Adresse benötigt wird und auch die Broadcast-Adresse abgezogen werden muss.
Die Flexibilität bei der Vergabe von IP-Adressen und besonders von Netzwerken wird dadurch allerdings deutlich erhöht.