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 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, SCRP |
Internetschicht | IP, ICMP |
Netzzugangsschicht | Ethernet, WLAN, Token Ring |
Dabei kann eine Schicht immer nur auf die Funktionalitäten, der direkt darunterliegende Schicht zugreifen. Der Zugriff erfolgt über die bereitgestellten (Software)-Schnittstellen entsprechend den Protokollen.
Für weitere Protokolle in den Schichten siehe z.B. https://de.wikipedia.org/wiki/Internetprotokollfamilie#Protokollstapel
Die Rolle und das Zusammenspiel der Schichten wird im Folgenden an der Auslieferung einer Webseite verdeutlicht:
Wenn eine Anwendung (hier ein Webserver-Programm), die mit den Protokollen der Anwendungsschicht arbeitet, eine Nachricht (hier eine Webseite) versenden will, so erstellt sie zuerst die entsprechende Nachricht im entsprechnen 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 teilte 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 versendet) zusammen und übergibt die IP-Pakete der Internetschicht. Auf der Ebene der Internetschicht wird jetzt auf Grund der Address(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 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 welches physikalisches Gerät, d.h. welches Netz) weitergegeben. Und so landet 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 korresponierenden 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 ursprünglichen HTTP-Nachricht und kann so die ursprüngliche 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: Die (vorherige) Anfrage des Nutzers an den Webserver, dass er eine Webseite ansehen will, wird analog (in der Regel) über einen sogenannten HTTP GET request durchgeführt.
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
# Herunterladen einer Webseite und anzeigen des HTTP-Headers
# -S
# Print the headers sent by HTTP servers and responses sent by FTP servers.
wget -S http://christianherta.de
# The html-file is saved to disc
Der HTTP-Header beinhaltet Meta-Daten zur Anfrage (request) bzw. zur Antwort (response) etc., mehr siehe z.B.
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 bestimmte Dienste zur Verfügung stellt. Host wird auch oft synonym mit dem Begriff Server verwendet.
Das Internet 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 Netzgrenzen "ü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 Empä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 dem 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 Verbindungschicht 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). Computernetz-Gateway 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/Wiederholen Sie die Grundlagen der TCP/IP Protokollfamilie mit dem Linux Netzwerkkurs.
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 per standard nach stdout
echo
# oder per wget
wget -O - -q ifconfig.me
# -O - output in Datei "-" ("-" steht für stdout)
# -q oder --quiet Turn off Wget's output.
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 arbeit dabei in der Regel auch als Gateway/Router und übersetzt per NAT (Network Adress Translation, siehe auch IP Masquerading/Port Adress Translation) die interen 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. das 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. Ä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 142.45.*.* stehen für Adressen im Netzwerk. Bei Anfragen von außen auf eine Adresse 142.45.*.* wird ins Netzwerk geroutet. Interne Adressierungen auf 142.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.45.45.12/20 im gleichen Netzwerk?
Informieren Sie sich zu DHCP. Was ist das? Wozu dient es?
Umfangreiches Standardlehrbuch zu Computernetzwerken: