Internet¶
- inter (lateinisch) = zwischen
- Internet: Vernetzung zwischen Computernetzen
Netzwerkprotokolle¶
In einem Kommunikationsprotokoll ist die
- Syntax
- Semantik und
- Synchronisation der Kommunikation
festgelegt, damit Parteien Daten/Informationen austauschen können.
In einem Protokoll sind beispielsweise folgende Dinge geregelt:
- Wie beginnt eine Nachricht? Wie endet eine Nachricht?
- Wie ist die Nachricht formatiert?
- Wen adressiert die Nachricht?
- Was passiert im Fehlerfall?
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.
"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 aderer Ereignisse ausgeführt werden." [Seite 16, Kurose]
Internetprotokollfamilie¶
Die wichtigsten Kommunikationsprotokolle im Internet sind:
- TCP: Transmission Control Protokoll
- IP: Internet Protocoll
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.
TCP/IP Schichtmodell¶
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 (internet layer) | IP, ICMP |
Netzzugangsschicht (link layer) | Ethernet, WLAN, Token Ring |
Diese vier Schichtenarchitektur 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 darunterliegende 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
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 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 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 (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 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 HTTP-Nachricht und kann so 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
.
Anwendungsschicht¶
Internet-Anwendungssoftware nutzt in der Regel direkt die Protokolle der Anwendungsschicht, wie z.B.:
- Webbrowser: HTTP, HTTPS
- Email-Programme: SMTP, POP3
- FTP-Clients bzw. Server: FTP (file transfer)
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
--2022-12-01 17:46:28-- http://christianherta.de/index.html Resolving christianherta.de (christianherta.de)... 217.160.0.91 Connecting to christianherta.de (christianherta.de)|217.160.0.91|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 302 Found Content-Type: text/html; charset=iso-8859-1 Content-Length: 218 Connection: keep-alive Keep-Alive: timeout=15 Date: Thu, 01 Dec 2022 16:46:28 GMT Server: Apache Location: http://christianherta.de/index.php Location: http://christianherta.de/index.php [following] --2022-12-01 17:46:28-- http://christianherta.de/index.php Reusing existing connection to christianherta.de:80. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=15 Date: Thu, 01 Dec 2022 16:46:28 GMT Server: Apache Length: unspecified [text/html] Saving to: ‘index.html’ index.html [ <=> ] 184,24K --.-KB/s in 0,1s 2022-12-01 17:46:29 (1,68 MB/s) - ‘index.html’ saved [188657]
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...
Dann wird der Header 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 Keep-Alive: timeout=15 Date: Thu, 01 Dec 2022 16:46:28 GMT Server: Apache
Der HTTP-Header beinhaltet im allgemeinen Meta-Daten zur Anfrage (request) bzw. zur Antwort (response) etc., mehr siehe z.B.
Client-Server Modell¶
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:
- Retrieval (Suche) in Datenbanken.
- Zugriff und Speicher auf Dateisysteme oder Emails.
- Numerische Berechungen.
- Ausliefern von Webseiten.
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.
Kommunikation in einem Computernetz¶
Die Endgeräte sind in einen Netz durch Kommunikationseitungen (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üglichen Daten zusammengesetzt.
Routing¶
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 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 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
- statisch manuell von den Administrierenden angelegt werden (z.B. mit dem Befehl
ip route
) oder - dynamisch im Austausch mit den angrenzenden Routern automatisch angepasst werden.
Hinweis: 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.
Gateway¶
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.
Aufgabe (dringend empfohlen)¶
Studieren bzw. Wiederholen Sie die Grundlagen der TCP/IP Protokollfamilie mit dem Linux Netzwerkkurs.
Aufgabe (optional)¶
Probieren Sie das Programm traceroute
aus.
IP Adressen¶
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:
- IPv4: 32bit-Adresse (4 Bytes), jedes Byte wird typischweise als Dezimalzahl (von 0 bis 255) geschrieben. Die einzelnen Bytes sind mit Punkten getrennt, z.B. $91.65.98.254$.
- IPv6: 64bit-Adresse. Da die 32bit Adressen nicht ausreichen für alle an das Internet angeschlossenen Rechner, wurde ein neues Adresssierungsschema entworfen.
Die IP-Adresse ihres Rechners erhalten Sie z.B. folgendermaßen:
hostname --all-ip-addresses # oder -I
192.168.178.22 172.17.0.1 2a02:8109:a0c0:4694:7003:7dda:888f:6316 2a02:8109:a0c0:4694:3561:d126:a69f:4ac8
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.
95.90.246.89 95.90.246.89
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 (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.
Nicht offizielle IPv4 Adressen¶
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).
Netzwerkmasken¶
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.
Aufgabe¶
Machen Sie sich die CIDR Notation klar. Sehen Sie sich hierzu auch das Beispiel "10.10.1.32/27" an.
Aufgabe¶
Welche IPs wären für 141.50.45.12/20 im gleichen Netzwerk?
- 141.50.33.21
- 141.50.28.250
- 141.50.51.32
- 141.50.210.230
- 141.50.46.83
- 141.50.93.83
- 141.50.4.34
- 141.50.40.231
- 141.51.40.231
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
- 141.50.32.0 IP Netz-Adresse
- 141.50.47.255 IP Broadcastadresse. Mit dieser IP werden Nachrichten an alle Rechner des Netzes gesendet.
Recherche-Aufgabe¶
Informieren Sie sich zu DHCP. Was ist das? Wozu dient es?
Literatur und Links¶
Webquellen:
- https://www.linux-praxis.de/linux-netzwerkkurs
- https://www.grund-wissen.de/linux/netzwerk/
- Peter Balog, TCP/IP Client Server Architektur: https://embsys.technikum-wien.at/staff/balog/documents/course-material/tcpip_client-server-architecture.pdf
- http://www.netzmafia.de/skripten/netze/netz8.html
- https://www.elektronik-kompendium.de/sites/net/index.htm
Standardlehrbücher zu Computernetzwerken:
- [Kurose] J. Kurose, K. Ross: Computernetzwerke, 6., aktualisierte Auflage, Pearson Studium 2014
- Andrew S. Tanenbaum / Prof. David J. Wetherall: Computernetzwerke, 5., aktualisierte Auflage, Pearson Studium 2012