Grundlagen
Schichtenmodelle
Netzwerkkommunikation findet auf verschiedenen Ebenen statt. Auf der untersten Ebene geht es nur um physikalische Dinge. In einer Ebene darüber geht es um die Vermittlung der Pakete zum Ziel und die Anwendungsschicht interessiert sich nur für den Datenaustausch von Client und Server. Wie die Ebenen voneinander abgegrenzt werden, beschreiben die Schichtenmodelle.Netzwerk-Topologie
Unter der Topologie eines Netzwerks versteht man die physische oder logische Anordnung und Verbindung zwischen den Hosts. Es gibt folgende Konzepte:Datenaustausch im Local Area Network (LAN)
Für den Austausch von Paketen im LAN werden die Daten in Pakete gepackt und an den Zielrechner gesandt. Als Adresse und Absender dienen die Hardware-Adressen der Netzwerkadapter.Ethernet Paketaufbau
Das Paket enthält Absender, Ziel und die Daten.MAC- (Media Access Control) oder Hardware-Adresse
Die Hardware-Adresse ist sechs Bytes groß, wird vom Hersteller vergeben und ist weltweit eindeutig.Der Bus und die Kollision
Das klassische Ether war ein Koaxialkabel, von dem jeder Host einen Abgriff hatte. Damit handelte es sich ganz eindeutig um einen Bus. Pakete können durch Kollision zerstört werden, wenn zwei Sender gleichzeitig auf den Bus zugreifen.Übertragungsfehler erkennen: CRC
Übertragungsfehler können erkannt werden. Dazu dient die CRC als Prüfsumme. Sie wird im Paket mitversandt und vom Empfänger auf Korrektheit geprüft.WLAN
Durch einen Access Point gehört ein WLAN auch mit zum LAN. Grundsätzlich verwendet auch dieses MACs und Ethernetpakete, nur im Detail gibt es ein paar Unterschiede.Netzwerkgeräte auf Ethernet-Ebene
Hub, Repeater und Bridge erweitern nur das LAN, ohne eine eigene Kontrolle auf die Pakete auszuüben. Sie erweitern also nur das LAN.Internet Protocol (IP)
Auf der nächsten Ebene geht es darum, Datenpakete aus dem LAN in die weite Welt zu tragen. Das erreicht man durch eigene IP-Pakete mit IP-Adressen.
Routing
Die IP-Adressen haben gegenüber den MAC-Adressen den Vorteil, dass sie nach Netzwerken strukturiert sind. Man weiß, ob das Paket in dieses LAN gehört oder über den Router hinaustransportiert wird - mit etwas Intelligenz sogar über welchen Router.
IP-Pakete in Ethernetpaketen transportieren
IP-Adressen ermöglichen es zwar, Datenpakete um die Welt zu jagen, allerdings benötigen Sie für den Transport innerhalb des Netzwerks ein Ethernetpaket, das an eine MAC-Adresse versandt wird. Zu diesem Zweck wird das komplette IP-Paket in den Datenbereich (Payload) eines Ethernetpakets gesteckt.
+----------+------+------+-----------------------------------------------+-----+ | Präambel | MAC- | MAC- | LAN-Paket-Daten enthalten IP-Paket | CRC | | | Ziel | Abs. | +---------+---------+-----------------------+ | | | | | | | IP-Ziel | IP-Abs. | Daten | | | | | | | +---------+---------+-----------------------+ | | +----------+------+------+-----------------------------------------------+-----+
Gehört das IP-Paket nicht in das aktuelle Netzwerk, wird es dennoch per Ethernetpaket an die MAC-Adresse des Routers gesandt. Dieser wird das IP-Paket dem Ethernetpaket entnehmen und in ein neues Ethernetpaket einwickeln, das auf dem Zielnetz weitergesandt wird.
Der Router
Der Router ist das wichtigste Netzwerkgerät der IP-Schicht. Ein Router hat typischerweise zwei Interfaces und leitet IP-Pakete zwischen verschiedenen Netzwerken weiter.
- Default-Route
- Statische Routing-Tabellen
- Dynamisches Routing
- Tunneling durch verschlüsselten Kanal
- Weiterleiten von Paketen: Forwarding
- Fragmentierung
IPv4
- IPv4-Pakete
- Vergabe der IP-Adressen
- Netz- und Hostanteil
- DHCP: Netzwerkweite Verteilung der IP-Adresse, Gateway und DNS
- NAT
- ARP: Aus IPv4-Adresse die MAC-Adresse ermitteln
IPv6
- IPv6-Pakete
- Auto-Adress Konfiguration und DCHPv6
- NDP: IPv6 zu MAC
- Umgang mit IPv6-Paketen bei IPv4-Routern
Der Datentransport zwischen Prozessen
Eigentlich kommunizieren keine Hosts, sondern Programme auf den Hosts. Der Web-Browser (Firefox) ist ein Programm, das eine Verbindung zu einem Web-Server-Programm (Apache) aufnimmt. So stellt sich die Frage, wie das Programm Firefox auf meinem Arbeitsplatz Kontakt zu dem Webserver-Programm Apache der Hochschule Flensburg aufnimmt, um von ihm die Lieferung der Webseite anzufordern.Port und Socket
Der Programmierer verwendet Sockets für die Kommunikation über das Netzwerk, die sich ähnlich behandeln lassen wie Datei-Handles. Um ein Programm auf einem Host ansprechen zu können, benötigt man eine eindeutige Nummer, den Port. Server haben feste Ports unter 1024, Clients wechselnde Ports aus dem Bereich darüber.Transmission Control Protocol (TCP) ordnet Pakete
Die meisten Netzwerk-Anwendungen benötigen verlässliche Datenverbindungen. TCP garantiert, dass alle Pakete ankommen und auch in der richtigen Reihenfolge. Dazu muss allerdings Aufwand in Kauf genommen werden, was die Übertragung langsamer macht.User Datagram Protocol (UDP) fire and forget
Insbesondere bei Mulitmedia-Streams oder Telefon (VoIP) ist die Geschwindigkeit wesentlich wichtiger als der Verlust eines Pakets. Für solche Zwecke ist UDP gedacht.Anwendungsschicht
Domain Name Service (DNS)
Der Domain Name Service (DNS) setzt Namen wie www.willemer.de in IP-Adressen um.
HTTP: Der Webserver
- Das Protokoll HTTP
- Die URL
- HTTP Request-Methoden
- HTTP Response
- Authentifizierung
- Web Caching
- Cookies
SMTP: E-Mail
- Die SMTP-Kommandos
- Das Versenden einer Mail auf Protokollebene
- Authentifizierung
- Sicherheit
- Relay
- POP3 und IMAP
Routing mit IP-Adresse und Port
Der Router arbeitet standardmäßig anhand der IP-Adressen und leitet IP-Adressen zu anderen Netzwerken weiter. Die Portnummer (unter Einbeziehung des Transportprotokolls) ermöglicht weitere Steuerungen, die für Firewalls und NAT verwendet werden.Firewall
Eine Firewall schützt ein lokales Netzwerk gegenüber dem Internet, indem es die gewünschten Pakete durchlässt, unerwünschte Pakete aber blockiert oder zurückweist.Die Firewall hat zur Unterscheidung lediglich die IP-Adressen, die Ports für Sender und Empfänger und das Transportprotokoll (TCP oder UDP). Damit lässt sich aber bereits viel anfangen, da der Port eines Servers in der Regel ein well known port ist. Beispiel:
- Sender innerhalb des LAN, Port größer als 1023, Empfänger im Internet,
Port ist 80 oder 443
Ein lokaler Benutzer surft. - Sender außerhalb des LAN, Port größer als 1023, Empfänger im LAN,
Port ist 80 oder 443
Ein Außenstehender greift auf den Intranet-Surfer zu.
Masquerading und NAT
Ein naher Verwandter der Firewall ist NAT. Auch NAT sorgt dafür, dass Zugriffe von außen schwierig werden.LAN-Zugriff von außen: Port-Forwarding
In manchen Fällen soll ein Server aus dem lokalen Netzwerk von außen erreichbar sein. Prinzipiell wird das durch NAT unterbunden. Wenn man es doch will, leitet der Router einen seiner Ports an einen Host im lokalen Netzwerk weiter.Sicherheit
Ziele und Angriffe
Die Ziele der Netzwerksicherheit umfassen die kryptograischen Ziele Vertraulichkeit, Integrität, Authentizität und daraus abgeleitete Ziele Verbindlichkeit und Zurechenbarkeit.Darüber hinaus ist ein wichtiges Ziel die Verfügbarkeit (Availability), die allerdings nicht mit kryptografischen Mitteln gesichert werden kann.
- Integrität (Integrity): Der Inhalt der Kommunikation kann nicht unentdeckt verändert werden.
- Verfügbarkeit (Availability): Die Kommunikation funktioniert.
- Verbindlichkeit, Nichtabstreitbarkeit (Non-Repudiation)
- Authentizität (Authenticity): Die Identität des Kommunkationspartners ist gewährleistet.
- Zurechenbarkeit (Accountability)
Angriffe gegen das Ziel der Verfügbarkeit bezeichnet man als Denial-of-Service (DoS).
Kerckhoffsches Prinzip
Einen wesentlichen Grundsatz beschreibt das Kerckhoffsche Prinzip, dass ein Verfahren nie geheim gehalten werden kann, sondern nur auf der Geheimhaltung des Schlüssels basiert.Transport Layer Security (TLS) und Secure Sockets Layer (SSL)
Wie der Name schon andeutet, ist TLS, der Nachfahre von SSL, auf der Transportschicht angesiedelt, also auf der Basis der Sockets der Anwendungen. Damit ermöglicht es den Netzwerkanwendungen eine Verschlüsselung ihrer Nachrichten auf der Leitung.TLS wird von mehreren Netzwerkanwendungen verwendet. Am bekanntesten dürften HTTPS zur Verschlüsselung von Web-Seitenübertragungen, beispielsweise beim Online-Banking sein.
TLS verwendet für die Umsetzung der Verschlüsselung auf eine Reihe von kryptografischen Verfahren. Da nicht gewährleistet ist, dass alle Teilnehmer an der Kommunikation die neuesten Verfahren beherrschen, beginnt die Kommunikation per TLS mit der Suche nach den bestmöglichen Verfahren. Dies wird als SSL/TLS-Handshake bezeichnet.
Zertifikate, Authentifizierung und Integrität
Die Basis einer vertrauensvollen Zusammenarbeit ist die Sicherheit, dass der Partner wirklich der ist, für den er sich ausgibt. Für diese (und andere Zwecke) gibt es Zertifikate, die auf asymmetrischen Schlüsseln basieren.Bei asymmetrischen Verfahren werden zwei Schlüssel verwendet, die sich dadurch auszeichnen, dass der eine nur das entschlüsseln kann, was der jeweils andere verschlüsselt hat.
Wenn man dem Bild eines Türschlosses verwendet, bedeutet das, dass der eine Schlüssel das Schloß nur einmal nach links drehen kann, während der andere nur einmal nach rechts drehen kann.
Der Besitzer der Schlüssel wird den einen für sich geheim halten und den zweiten frei verteilen. Das geschieht insbesondere bei Zertifikaten. Sie werden von den Dienstanbietern offen abgeboten und bei Bedarf gern zugesendet.
Asymmetrische Verschlüsselung
Versendet jemand eine Nachricht, die mit dem öffentlichen Schlüssel verschlüsselt wurde, kann diese nur der Besitzer des privaten Schlüssels entschlüsseln und lesen. Damit ist gewährleistet, dass niemand die Nachricht lesen kann, außer dem Empfänger.Digitale Signatur
Versendet der Besitzer eines privaten Schlüssels beliebige damit verschlüsselte Daten, kann der Empfänger sicher sein, dass es sich bei dem Versender um den Besitzer handelt, wenn er die Daten mit dem öffentlichen Schlüssel entschlüsseln kann.Anstatt irgendetwas zu verschlüsseln, kann der Besitzer eine Hash-Funktion wie SHA über den versendeten Text bilden und diesen verschlüsseln. Auf diese Weise ist es nur noch sehr schwer möglich, den Text zu ändern, ohne dass der Empfänger es merkt.
Zertifikate
Die Kommunikation zwischen zwei Partnern, die jeweils ein asymmetrisches Schlüsselpaar verwenden, ist sicher. So kann ein Web-Server einen öffentlichen Schlüssel, einem Zertifikat, zur Verfügung stellen, um damit eine verschlüsselte Übertragung zu ermöglichen. Dabei entsteht das Problem, dass man nicht sicher weiß, ob der Web-Server wirklich der Web-Server ist, für den man ihn gemeinhin hält.Der Client (also der Browser) könnte nun eine Liste aller öffentlichen Zertifikate der Welt mit sich führen, aber das wäre nicht praktikabel. Stattdessen gibt man den Browsern eine Liste der öffentlichen Schlüssel von CA-Stellen mit. Jeder Web-Server, der seine Authentizität beweisen will, muss nun sein Zertifikat der CA-Stelle vorlegen, der es mit seinem privaten Schlüssel bearbeitet. So kann die Echtheit mit dem öffentlichen Schlüssel der CA geprüft werden.
Zertifikat im Browser ansehen
Wenn eine Website ein Zertifikat besitzt, steht neben der Adresszeile ein Symbol mit einem grünen Schloss. Das bedeutet:- Der Web-Server bietet ein Zertifikat an.
- Der Web-Server wird dieses für die Verschüsselung verwenden.
- Der Browser hat in seiner Zertifikatsliste ein öffentliches CA-Zertifkat, das auf die CA-Legitimierung des Web-Server-Zertifikats passt.
Symmetrische Verschlüsselung
Nachdem sich alle so gut kennen, können sie über die asymmetrische Verschlüsselung eine Zufallszahl bestimmen, die im weiteren für die symmetrische Verschlüsselung verwendet wird.Die symmetrische Verschlüsselung hat den Vorzug, sehr viel schneller zu sein. Zu den bekanntesten Verfahren der symmetrischen Verschlüsselung gehört AES.