mkdir -p work
cd work
"Ein Protokoll definiert das Format und die Reihenfolge des Nachrichtenaustausches zwischen zwei oder mehr kommunizierenden Entitäten sowie Handlungen, die beim Übertrag und/oder Empfang einer Nachricht oder anderer Ereignisse ausgeführt werden." [Seite 16, Kurose]
In einem Kommunikationsprotokoll ist die
festgelegt, damit Parteien Daten/Informationen austauschen können.
In einem Protokoll sind beispielsweise folgende Dinge geregelt:
Netzwerkprotokolle sind Kommunikationsprotokolle, die den Austausch von Daten zwischen Computern regeln.
Die Beschreibungen der Protokolle des Internets und weitere Internetstandards werden in RFC-Dokumenten (Request for Comments) festgehalten, die von der Internet Engineering Task Force (IETF) herausgegeben werden.
Die wichtigsten Kommunikationsprotokolle im Internet sind:
Meist wird der Begriff TCP/IP synonym für die Internetprotokollfamilie verwendet, die den Datenaustausch im Internet regeln. Die Internetprotokollfamilie besteht aber aus einer Vielzahl von Protokollen.
Software ist oft in Schichten organisiert, um die Komplexität in den Griff zu bekommen (vgl. Schichtenarchitektur). Das ISO/OSI-Referenzmodell beschreibt eine (idealisierte) Schichtstruktur für Computernetzwerke mit sieben Schichten.
Hier betrachten wir nur das vereinfachte TCP/IP-Referenzmodell, das in der Praxis des Internets verwendet wird:
| Schicht | Beispiel-Protokolle |
|---|---|
| Anwendungsschicht (application layer) | HTTP, FTP, SMTP, POP3 |
| Transportschicht (transport layer) | TCP, UDP, SCTP |
| Internetschicht (internet layer) | IP, ICMP |
| Netzzugangsschicht (link layer) | Ethernet, WLAN, Token Ring |
Diese Vier-Schichten-Architektur bildet die Grundlage des Internets und ist in der technischen Spezifikation RFC 1122 beschrieben.
Dabei kann eine Schicht immer nur auf die Funktionalitäten, der direkt darunterliegenden Schicht zugreifen. Der Zugriff erfolgt über die bereitgestellten (Software)-Schnittstellen entsprechend den korrespondierenden Protokollen.
Für weitere Beispiele von Protokolle in den Schichten siehe z.B. https://de.wikipedia.org/wiki/Internetprotokollfamilie#Protokollstapel
am Beispiel der Auslieferung einer Webseite:
Wenn eine Anwendung (hier ein Webserver-Programm) aufgrund einer Anfrage (getriggert von einem Webbrowser), die mit den Protokollen der Anwendungsschicht arbeitet, eine Nachricht (hier eine Webseite) versenden will, so erstellt sie zuerst die entsprechende Nachricht im entsprechenden Protokoll der Anwendungsschicht: die HTML-Webseite wird in eine HTTP-Nachricht (HyperText Transfer Protocol) eingebunden.
Die Nachricht (im HTTP-Format) wird dann über einen API-Aufruf an die darunterliegende Transportschicht-TCP weitergegeben. Die Software der Transportschicht teilt die Nachricht (in der Regel) in kleinere Stücke. Die Stücke werden dann jeweils in das entsprechenden TCP-Format eingepackt und an die Internetschicht (per API-Call) weitergegeben. Hier wird sie in der Regel weiter geteilt und die Teile werden wieder in das IP-Format eingepackt und an die Netzzugangschicht weitergereicht. Die Netzzugangsschicht übernimmt die direkte Kommunikation zwischen zwei Computern auf physikalischer Ebene (Strom bzw. elektromagnetische Wellen, wie Funkwellen oder Licht). Dazu werden die IP-Pakete in der Regel wieder weiter unterteilt und dann über den physikalischen Kanal versendet.
Auf der Empfängerseite empfängt die Netzzugangsschicht (über ein physikalisches Gerät) die einzelnen Pakete und baut diese zu IP-Paketen (wie sie ursprünglich versendet wurden) zusammen und übergibt die IP-Pakete der Internetschicht. Auf der Ebene der Internetschicht wird jetzt auf Grund der Adress(meta)information im IP-Paket entschieden, ob das IP-Paket an ein angrenzendes (physikalisches) Netz weitergereicht werden soll oder ob das IP-Paket für diesen Computer bestimmt ist. Falls es noch nicht am Zielort ist, ist der Computer (höchstwahrscheinlich) ein sogenannter Router, der IP-Pakete zwischen angrenzenden Computernetzen weiterreicht (mehr hierzu später). Dann wird das IP-Paket wieder an die Netzzugangsschicht (mit Information zu: welches physikalisches Gerät, d.h. welches Netz) weitergegeben. Und so landen die Teile des IP-Paketes in einem anderen (physikalischen) Netz. Dies geht solange weiter, bis das IP-Paket an seinem Zielort angelangt ist. Nachdem dort von der Netzzugangsschicht das IP-Paket zusammengebaut wurde, wird es an die Internetschicht weitergereicht. Die Internetschicht baut aus allen korrespondierenden IP-Paketen wieder ein TCP-Paket zusammen und reicht dieses an die Transportschicht-TCP weiter. Die TCP-Schicht empfängt so (nach und nach) alle TCP-Pakete der HTTP-Nachricht und kann somit die HTTP-Nachricht rekonstruieren und an die Anwendungsschicht weiterreichen. In unserem Fall ist die Anwendung der Webbrowser des Empfänger. Im Webbrowser kann somit z.B. die html-Webseite (oder eine HTTP-Fehlermeldung etc.) dem Nutzer angezeigt werden.
Hinweis:
Bevor der Webserver eine solche Nachricht (der Webseite) an den Rechner des Nutzers sendet, muss diese Nachricht natürlich angefordert sein. Dazu wird vom Nutzerrechner zuerst eine TCP-Verbindungsanforderung an den Server gestellt. Dieser antwortet mit einer TCP-Verbindungsbestätigung. Wenn dies so erfolgreich funktioniert hat, wird vom Nutzerrechner die html-Webseite mit dem eigentlichen HTTP GET request mit der Adresse der HTML-Seite angefordert, z.B. GET http://christianherta.de/index.html.
Internet-Anwendungssoftware nutzt in der Regel direkt die Protokolle der Anwendungsschicht, wie z.B.:
Beispiele für Kommandozeilenprogramme (Beschreibungen aus der Manpage), die mit Protokollen der Anwendungsschicht arbeiten:
wget: GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies.curl is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction.Beispiel wget zum Herunterladen einer Webseite und anzeigen des HTTP-Headers:
# Schalter -S für
# Print the headers sent by HTTP servers and responses sent by FTP servers.
wget -S http://christianherta.de/index.html
# The html-file is saved to disc
rm index.html*
Schritte:
Zuerst Übersetzen des Domainnames der Webadresse (christianherta.de) in eine IP-Adresse:
Resolving christianherta.de (christianherta.de)... 217.160.0.91
Aufbau der TCP-Verbindung:
Connecting to christianherta.de (christianherta.de)|217.160.0.91|:80... connected.
Senden des HTTP GET-Requests
HTTP request sent, awaiting response...
Der Server antwortet hier zunächst mit einer Umleitung (HTTP/1.1 302 Found, Location: http://christianherta.de/index.php), der wget automatisch folgt und die Anfrage erneut stellt.
Dann wird der Header der finalen Antwort auf stdout ausgegeben und die html-Datei index.html im Dateisystem gespeichert. Header:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-WS-Origin: available
X-WS-RateLimit-Limit: 1000
X-WS-RateLimit-Remaining: 998
Date: Mon, 15 Jun 2026 12:50:07 GMT
Server: Apache
Der HTTP-Header beinhaltet im allgemeinen Meta-Daten zur Anfrage (request) bzw. zur Antwort (response) etc., mehr siehe z.B.
Es gibt hier zwei Protokolle UDP und TCP:
UDP ist relativ einfach aufgebaut und verbindungslos.
TCP basiert auf einer Verbindung (connection) zwischen den beteiligten Rechnern:
Ein Server (Diener) ist ein Computer, der in einem Netzwerk bestimmte Dienste zur Verfügung stellt. Der Server beantwortet Anfragen, die von außen an ihn gestellt werden. Die Dienste sind typischerweise rechen- und/oder speicherintensiv, sodass Server oft leistungsfähige Rechner sind.
Typische Dienste sind:
Clients (Kunden) sind Computer, die die Dienste der Server nutzen. Dazu sendet ein Client ein Anfrage (Request) an einen Server, auf die der Server antwortet (Response).
Daneben gibt es noch den älteren Begriff Host (Gastgeber) aus der Zeit der Großrechner (1960er Jahre). Dies bezeichnet einen Computer, der im Netzwerk eingebunden ist und ggf. bestimmte Dienste zur Verfügung stellt. Host wird auch oft synonym mit dem Begriff Server eingesetzt. Aber oft wird der Begriff Host auch nur für ein am Internet angeschlossenes Endgerät verwendet.
Die Endgeräte sind in einem Netz durch Kommunikationsleitungen (communication link) und Switches/Hubs miteinander verbunden. Wenn ein Endgerät Daten an ein anderes senden will, teilt das zu sendende Endgerät die Daten in Segmente auf und fügt jeweils Header-Bytes hinzu. Diese Informationsteile (Segment und Header) werden Pakete genannt. Auf Empfängerseite werden diese wieder zu den ursprünglichen Daten zusammengesetzt.
Das Internet ist ein Netz aus Computernetzen. Die einzelnen Netze sind durch Router (physikalisch) verknüpft. So erscheint das Internet als riesiges Computernetz, obwohl es eigentlich aus vielen kleinen physikalischen Computernetzen besteht. Die Router verbinden dabei die Computernetze, d.h. mittels Router können Datenpakete Netzwerkgrenzen "überschreiten". Dies ist dann notwendig, wenn sich Sender und Empfänger eines Datenpaketes nicht im gleichen (physikalischen) Netz befinden. Oft durchquert ein Datenpaket viele unterschiedliche Netze. Dabei verbindet ein Router typischerweise nur zwei Netzwerke. Dazu ist er physikalisch in beiden Netzwerken mit jeweils einer Netzwerkschnittstelle angebunden.
Den Vorgang des Finden des Wegs von Sender zum Empfänger durch die verschiedenen Stationen (Router) wird Routing genannt. Beim Routing-Vorgang wird also der Weg des Datenpakets bestimmt. Jeder Router verwendet hierfür eine sogenannte Routing-Tabelle (routing table), in der er abhängig von der Routenwahlmethode (verwendeter Algorithmus) und der Zieladresse den nächsten Router (genauer: die IP-Adresse des nächsten Routers) auswählt, der innerhalb des Netzes direkt zu erreichen ist, mehr siehe z.B. https://www.elektronik-kompendium.de/sites/net/0810101.htm.
Die Routing-Protokolle liegen im Schichtenmodell auf der Internet-Schicht (IP-Protokoll) (entspricht der Vermittlungsschicht/Netzwerkschicht im OSI-Modell).
Die Routing-Tabellen können
ip route) oderHinweis: Routing-Tabellen bestimmen nicht nur in Routern die Regeln für die Weiterleitung der Pakete, sondern auch in "normalen" Rechnern (wohin die Pakete in Abhängigkeit der Zieladresse geschickt werden). Hier sind sie aber im Normalfall sehr einfach gehalten.
Gateways verbinden zwei Systeme, hier zwei Computernetze. Router sind somit spezielle Gateways auf der Internetschicht (bzw. Ebene 3. des OSI-Schichtmodells). Gateways können aber auch auf anderen Schichten des OSI-Modells liegen, siehe z.B. https://de.wikipedia.org/wiki/Gateway_(Informatik)#Arbeitsweise.
Dennoch wird oft der Begriff Gateway mit Router synonym verwendet.
Studieren Sie die Grundlagen der TCP/IP Protokollfamilie mit dem Linux Netzwerkkurs.
Probieren Sie das Programm traceroute aus.
Computer (mit Netzwerkgeräten bzw. Netzkarten), die am Internet angeschlossen sind, können eindeutig durch eine IP-Adresse identifiziert werden (analog zu einer Telefonnummer). In einem Computer können aber mehrere Netzwerkkarten stecken, sodass er mehrere IP-Adressen haben kann.
Es gibt zwei Adressierungsschemata:
Die IP-Adresse ihres Rechners erhalten Sie z.B. folgendermaßen:
hostname --all-ip-addresses # oder -I
Die ausgegeben IP-Adressen (private Adressen) können sich von der IP-Adresse unterscheiden, über die man von außerhalb sieht. Diese öffentliche Adresse erhält man z.B. mittels der Webseite http://ifconfig.me:
# mit curl
curl ifconfig.me # curl schreibt die heruntergeladene Datei standardmäßig nach stdout
Wenn Sie dies von zu Hause aus tun, erhalten Sie in der Regel so unterschiedliche IP-Adressen.
Erklärung: Wenn Sie sich von zuhause ins Internet einwählen, bekommt Ihr DSL- bzw. Kabelmodem eine (öffentliche) IP automatisch von Ihrem Provider zugewiesen. Das Modem arbeitet dabei in der Regel auch als Gateway/Router und übersetzt per NAT (Network Address Translation, siehe auch IP Masquerading/Port Address Translation) die internen (nicht offiziellen) IPs ihres Heimnetz auf die zugewiesene öffentliche IP (ihres Routers) und umgekehrt.
Nebenbemerkung: Mittels NAT können viele Rechner (nicht öffentlich sichtbar) gleiche IPs haben. Dies schwächt das Problem ab, dass die Anzahl der Addressen bei IPv4 begrenzt ist.
IP Adressen müssen (eigentlich) eindeutig sein, damit im Internet ein Computer bzw. seine Netzwerkkarte genau addressiert werden kann. Es gibt aber IPv4-Bereiche, die nicht offiziell vergeben werden. Diese können von (verschiedenen) lokalen Netzen genutzt werden. D.h. dass solche Computer nicht vom öffentlichen Netz durch diese IPv4-Adressen erreicht werden können.
Folgende IPv4 Adressenbereiche sind nicht offiziell vergeben:
| Addressbereich | Menge |
|---|---|
| 10.0.0.0 - 10.255.255.255 | ca. 16 Mio Adressen |
| 172.16.0.0 - 172.31.255.255 | ca. 1 Mio Adressen |
| 192.168.0.0 - 192.168.255.255 | ca. 65.500 Adressen |
Außerdem wird 127.0.0.0 bis 127.255.255.255 nicht offiziell vergeben und nur für lokale Kommunikation in einem Rechner genutzt.
127.0.0.1 wird dabei für localhost, d.h. den eigenen Rechner verwendet (siehe auch weiter unten).
Der vordere Teil einer IPv4-Adresse entspricht der Netzwerkadresse. Der hintere Teil sind die Host-Bits. Ähnlich wie bei einer Telefonnummer, bei der der vordere Teil die Stadt ausmacht. Dieser Teil ist insbesondere für das Routing relevant. Mit einer Netz(werk)maske (netmask) werden diese Bits markiert.
Netzwerkmasken dienen insbesondere auch dazu anzugeben, welche IPs über die (konfigurierten) Gateways/Router (typischerweise ein Standardgateway) und welche IPs lokal, d.h. ohne über einen Router, erreichbar sind.
Beispiel für die Netzwerkmaske 255.255.0.0 und einer IP 141.45.0.12:
Netzwerkmaske/IPv4
255 255 000 000
entspricht in Bits
11111111 11111111 00000000 00000000
d.h. die ersten 16 Bits geben das Netzwerk an. Alle IPs mit 141.45.*.* stehen für Adressen im Netzwerk. Bei Anfragen von außen auf eine Adresse 141.45.*.* wird ins Netzwerk geroutet. Interne Adressierungen auf 141.45.*.* bleiben im Netzwerk. Wird versucht eine andere IP zu erreichen, so läuft das über das Gateway (Router). Das heißt, die Datenpakete werden über das physikalische Netz an das Gateway gesendet (zusammen mit weiteren Informationen, wie der gewünschten Ziel-IP-Adresse).
Früher (vor 1993) waren die einzelnen Byte-Blöcke der Netzmaske entweder 255 oder 0. Dabei wurden verschiedene Netzklassen definiert. Seit 1993 gibt es CIDR (Classless Inter-Domain Routing).
Die Netzwerkmaske wird bei CIDR oft mit eine Suffix knapp beschrieben, für das obige Beispiel ist dies 141.45.0.12/16. Die 16 ist das Suffix, welches hier angibt, dass die ersten 16 Bits der Netzwerkmaske den Wert 1 haben. Der Rest (hinteren Bits) ist 0.
Hinweis: CIDR gibt es analog auch für IPv6.
Machen Sie sich die CIDR Notation klar. Sehen Sie sich hierzu auch das Beispiel "10.10.1.32/27" an.
Welche IPs wären für 141.50.45.12/20 im gleichen Netzwerk?
Lösung:
Suffix /20 entspricht der Netzmaske:
11111111 11111111 1111|0000 00000000
Die 45 in der IP-Adesse entspricht 00101101:
xxxxxxxx xxxxxxxx 0010|1101 xxxxxxxx
Extremfälle im gleichen Netz:
0010|0000 = 32
0010|1111 = 47
d.h.:
- 141.50.33.21 ja
- 141.50.28.250 nein
- 141.50.51.32 nein
- 141.50.210.230 nein
- 141.50.46.83 ja
- 141.50.93.83 nein
- 141.50.4.34 nein
- 141.50.40.231 ja
- 141.51.40.231 nein
Hinweis: Die Extremfälle werden auch benötigt für
bc << BOF
0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0
0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
BOF
Eine IPv4-Adresse zerfällt in einen Netz-Teil (vorne) und einen Host-Teil (hinten). Die Netzmaske (netmask) legt fest, welche Bits zum Netz gehören:
1, Host-Bits sind 0./n gibt die Anzahl der führenden 1-Bits der Netzmaske an,
d.h. die Länge des Netz-Teils in Bit.Beispiel: /24 entspricht
11111111 11111111 11111111 00000000 = 255.255.255.0
d.h. die ersten 24 Bit (3 Bytes) sind der Netz-Teil, die letzten 8 Bit der Host-Teil.
Zwei Adressen liegen im selben Netz, wenn ihr Netz-Teil übereinstimmt -- also
wenn IP AND Netzmaske für beide denselben Wert (die Netzadresse) ergibt.
In jedem (Sub-)Netz sind zwei IP-Adressen fest reserviert und werden nicht an
einzelne Rechner (Hosts) vergeben. Man erhält sie, indem man den Host-Teil der
Adresse (die Bits, die in der Netzmaske 0 sind) auf lauter 0 bzw. lauter 1
setzt.
Netzadresse (network address)
0.AND) von IP-Adresse und Netzmaske.Broadcastadresse (broadcast address)
1.Anzahl nutzbarer Host-Adressen
Da diese beiden Adressen reserviert sind, gilt bei $h$ Host-Bits:
$$ \text{nutzbare Hosts} = 2^{h} - 2 $$
141.50.45.12/20¶20 Netz-Bits, also $h = 32 - 20 = 12$ Host-Bits:
Netzmaske: 255.255.240.0 (20 Einsen, dann 12 Nullen)
Netzadresse: 141.50.32.0 (alle 12 Host-Bits = 0)
Broadcastadresse: 141.50.47.255 (alle 12 Host-Bits = 1)
nutzbare Hosts: 2^12 - 2 = 4094
Das dritte Oktett zeigt das Prinzip in Bits (die ersten 4 Bit gehören zum Netz, die letzten 4 zum Host):
Netzmaske 3. Oktett: 1111|0000 = 240
Netzadresse 3. Oktett: 0010|0000 = 32
Broadcastadresse 3. Oktett: 0010|1111 = 47
Ein großes IP-Netz (z.B. ein altes Klasse-A-Netz wie 10.0.0.0/8 mit ca. 16 Mio. Adressen) ist kein einzelnes physikalisches Netz: So viele Rechner lassen sich nicht an ein physikalisches Medium (eine Broadcast-Domäne) hängen.
Deshalb wird das Netz intern in viele kleine Subnetze zerlegt, die jeweils einem physikalischen Segment (z.B. einem LAN) entsprechen. Dazu wird die Netzmaske verlängert, d.h. ein Teil der Host-Bits wird zu Subnetz-Bits:
10.0.0.0/8 offizielles Netz (nach außen sichtbar)
|
+-- 10.1.0.0/16 Standort A
| +-- 10.1.1.0/24 ein physikalisches LAN
| +-- 10.1.2.0/24 ein weiteres LAN
+-- 10.2.0.0/16 Standort B
+-- ...
Nach außen erscheint weiterhin nur ein Netz; die feinere Unterteilung ist nur intern sichtbar.
Routing innerhalb des Netzes:
Zur Abgrenzung: Das Routing zwischen verschiedenen Netzen (Organisationen) übernimmt dagegen ein Exterior Gateway Protocol, heute BGP, das nur die aggregierten Netze (z.B. das /8) kennt.
Informieren Sie sich zu DHCP. Was ist das? Wozu dient es?
Arbeiten Sie sich weiter in die Internet-Technologie Grundlagen ein, z.B. durch Studium von:
Webquellen:
Standardlehrbücher zu Computernetzwerken: