Netzwerke_1

Computernetze: Internet - Einführung

Teil 1: Grundlagen

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.

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 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.

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

In [13]:
# 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
--2021-12-03 11:09:50--  http://christianherta.de/
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 200 OK
  Content-Type: text/html; charset=UTF-8
  Transfer-Encoding: chunked
  Connection: keep-alive
  Keep-Alive: timeout=15
  Date: Fri, 03 Dec 2021 10:09:50 GMT
  Server: Apache
Length: unspecified [text/html]
Saving to: ‘index.html.5’

index.html.5            [ <=>                ] 184,16K  --.-KB/s    in 0,1s    

2021-12-03 11:09:50 (1,77 MB/s) - ‘index.html.5’ saved [188583]

Der HTTP-Header beinhaltet 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 bestimmte Dienste zur Verfügung stellt. Host wird auch oft synonym mit dem Begriff Server verwendet.

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 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

  • 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 (wichtig!)

Studieren/Wiederholen Sie die Grundlagen der TCP/IP Protokollfamilie mit dem Linux Netzwerkkurs.

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:

In [7]:
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:

In [6]:
# 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 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.45.45.12/20 im gleichen Netzwerk?

  • 141.45.33.21
  • 141.45.28.250
  • 141.45.51.32
  • 141.45.210.230
  • 141.45.93.83
  • 141.45.4.34
  • 141.45.40.231

Recherche-Aufgabe

Informieren Sie sich zu DHCP. Was ist das? Wozu dient es?

Umfangreiches Standardlehrbuch zu Computernetzwerken:

  • Andrew S. Tanenbaum / Prof. David J. Wetherall: Computernetzwerke, 5., aktualisierte Auflage, Pearson Studium 2012