Weiter geht es mit der Schicht 4, der Transportschicht, in Teil 3 meiner Reihe zum ISO/OSI-Modell in der fünfundachzigsten Episode des Anwendungsentwickler-Podcasts.
TL;DR
Auf OSI-Schicht 4, der Transportschicht, erreiche ich über Ports einen bestimmten Dienst auf einem Rechner. TCP überträgt Daten zuverlässig und stellt ihre Reihenfolge mithilfe von Sequenznummern wieder her; eine Verbindung beginnt mit dem Three-Way-Handshake aus SYN, SYN-ACK und ACK. UDP arbeitet verbindungslos und mit weniger Steuerdaten, etwa bei digitaler Telefonie. Für deine Prüfung und beim Einrichten einer Firewall brauchst du die gängigen Ports, weil darüber einzelne Dienste freigegeben oder gesperrt werden können.
Kapitelmarken
[00:00:01] Einstieg in die Transportschicht des OSI-Modells
[00:01:14] Aufgaben, Segmente und Datagramme
[00:03:11] Ports und Ende-zu-Ende-Kommunikation
[00:04:51] Standardports und Schreibweise
[00:06:52] Ports in Prüfung und Praxis
[00:07:31] Gängige Protokolle und ihre Ports
[00:08:08] E-Mails mit POP3 und IMAP abrufen
[00:09:13] HTTPS, Windows-Freigaben und die Datei services
[00:11:00] Eigenschaften von TCP und UDP
[00:12:46] UDP für Telefonie und Streaming
[00:13:36] Steuerdaten in Segmenten und Datagrammen
[00:14:25] Paketreihenfolge und TCP-Sequenznummern
[00:16:15] Firewalls als Paketfilter auf Schicht 3 und 4
[00:18:38] Antworten erkennen und gefälschte Pakete abwehren
[00:20:16] TCP-Verbindungen mit dem Three-Way-Handshake aufbauen
[00:24:27] SYN und ACK als Flags im TCP-Header
[00:26:01] Verbindungen mit FIN beenden und TCP-Overhead
[00:27:26] Rückblick und Ausblick auf die weiteren OSI-Schichten
[00:30:44] Prüfungsvorbereitung und weiterführende Quellen
[00:31:22] Newsletter, Social Media und Kontakt
Inhalt
4: Transportschicht (Transport Layer)
Wie kommen auch große Datenmengen vollständig und in der korrekten Reihenfolge beim richtigen Dienst des Empfängers an?
Einheit: Segment bzw. Datagramm
Zusätzliche Informationen: Ports, Ende-zu-Ende-Kommunikation möglich
Hardware: Firewall, siehe Anwendungsschicht
Protokolle: TCP, UDP
Sonstiges
Three-Way-Handshake: SYN - SYN/ACK - ACK
Wichtige Protokolle und Ports: Telnet (23), FTP (21), SSH (22), SMTP (25), HTTP (80), POP3 (110), IMAP (143), SMB (137-139), HTTPS (443), Doom (666) ;-)
Literaturempfehlungen
*
Links
Permalink zu dieser Podcast-Episode
RSS-Feed des Podcasts
OSI-Modell
Das OSI-Referenzmodell
Zusammenfassung
Dienste über Ports erreichen
Wenn ich auf einem Server einen Webdienst und einen Maildienst betreibe, können beide über dieselbe IP-Adresse erreichbar sein. Jeder Dienst lauscht auf einem eigenen Port, sodass du gezielt mit dem gewünschten Programm kommunizieren kannst. Diese Kommunikation zwischen Diensten auf dem sendenden und empfangenden Rechner heißt Ende-zu-Ende-Kommunikation.
Die Transportschicht, auf Englisch Transport Layer, ist Schicht 4 des OSI-Modells. Sie setzt auf Schicht 3 auf, auf der IP für die Adressen und das Routing zuständig ist. Auf Schicht 4 kommen Quellport und Zielport hinzu. Die beiden zentralen Protokolle heißen TCP und UDP. Bei TCP heißt die Dateneinheit Segment, bei UDP Datagramm.
Ein Port wird mit 16 Bit dargestellt, wodurch 65.536 mögliche Werte entstehen. Bei einer IPv4-Adresse kannst du ihn mit einem Doppelpunkt anhängen, etwa 1.2.3.4:80. Für viele Dienste gibt es festgelegte Standardports, die als Well-Known Ports bekannt sind. Wenn ein Webdienst auf einem abweichenden Port läuft, musst du diesen in der URL angeben.
Ports für deine Prüfung und die Praxis
In meinen Lernzielkontrollen frage ich gängige Ports ab, weil du sie auch bei praktischen Prüfungsaufgaben brauchst. Sollst du beispielsweise HTTP durch eine Firewall lassen, musst du den zugehörigen Port kennen.
| Port | Protokoll oder Dienst | Wofür du ihn brauchst |
| --- | --- | --- |
| 21 | FTP | Dateien übertragen |
| 22 | SSH | Eine entfernte Verbindung zu einem Server herstellen |
| 25 | SMTP | E-Mails versenden beziehungsweise an einen Mailserver übermitteln |
| 53 | DNS | Namen in IP-Adressen auflösen und umgekehrt |
| 80 | HTTP | Webseiten abrufen |
| 110 | POP3 | E-Mails vom Server herunterladen |
| 143 | IMAP | Auf E-Mails zugreifen, die auf dem Server verbleiben |
| 443 | HTTPS | Webseiten verschlüsselt abrufen |
| 137 bis 139 | Windows-Freigaben | Auf Freigaben zugreifen, etwa mit Samba |
Mit IMAP bleiben die E-Mails auf dem Server verfügbar, sodass du sie von deinem Laptop und deinem Handy aus lesen kannst. Bei einer URL mit https:// verwendet der Browser automatisch Port 443.
Die Datei services enthält Zuordnungen zwischen Ports und Diensten. Dort findest du auch Port 666, den id Software für das Netzwerkspiel Doom reserviert hat.
Daten mit TCP übertragen
Wenn ich eine TCP-Verbindung zu einem Server aufbaue, kann ich darüber Daten senden und Antworten empfangen. TCP, ausgeschrieben Transmission Control Protocol, arbeitet verbindungsorientiert und sorgt dafür, dass die übertragenen Daten vollständig und in der richtigen Reihenfolge bereitstehen. Fehlende Daten können erneut angefordert werden.
IP-Pakete können unterwegs unterschiedliche Routen nehmen. Dadurch kann ein später abgeschicktes Paket früher eintreffen. Im TCP-Header stehen Sequenznummern, mit denen der empfangende Rechner die Reihenfolge wiederherstellen und fehlende Daten erkennen kann. Diese Nummern werden entsprechend der übertragenen Nutzdaten weitergezählt.
Die Steuerdaten im Header und die zusätzlichen Nachrichten beim Aufbauen einer Verbindung verursachen Overhead. TCP kommt zum Einsatz, wenn die Daten zuverlässig übertragen werden sollen.
Datagramme mit UDP senden
Bei einem digitalen Telefongespräch möchte ich die Sprache ohne lange Wartezeiten übertragen. Erneut gesendete Daten und das Warten auf fehlende Teile können den Gesprächsfluss verzögern. Für solche Anwendungen wird UDP, das User Datagram Protocol, eingesetzt; als weiteres Beispiel werden Streamingdienste genannt.
UDP arbeitet verbindungslos und mit wenigen Steuerdaten. Das Protokoll garantiert weder, dass sämtliche Daten eintreffen, noch deren Reihenfolge. Falls eine Anwendung diese Eigenschaften braucht, muss sie selbst dafür sorgen. Ein UDP-Datagramm enthält die Nutzdaten und die Ports, mit denen die beteiligten Dienste angesprochen werden.
Eine TCP-Verbindung aufbauen
Bevor ich über TCP kommuniziere, wird die Verbindung mit dem Three-Way-Handshake hergestellt:
Der Client sendet SYN an den Server. SYN steht für Synchronize.
Der Server antwortet mit SYN-ACK, um die Anfrage zu bestätigen und sich ebenfalls abzugleichen.
Der Client bestätigt diese Antwort mit ACK. Die Abkürzung steht für Acknowledgement.
Die letzte Nachricht bestätigt dem Server, dass seine Antwort den Client erreicht hat. Auch beim Aufbauen einer Verbindung können Pakete verloren gehen.
SYN und ACK sind Flags im TCP-Header, die als einzelne Bits gesetzt werden. Bei SYN-ACK sind beide Bits gesetzt. Das FIN-Flag dient dazu, eine Verbindung zu schließen. Auch beim Beenden wird durch Nachrichten und Bestätigungen dafür gesorgt, dass die Gegenseite davon erfährt. Den genauen Aufbau des Headers kannst du in einem Buch oder einem passenden Artikel nachlesen.
Netzwerkverkehr mit einer Firewall filtern
Wenn ich einen öffentlich erreichbaren Webserver betreibe, kann ich eingehenden HTTP-Verkehr auf Port 80 erlauben. Für einen Mailserver kann ich SMTP auf Port 25 freigeben. Solche Regeln lassen sich über die IP-Adressen und Ports festlegen.
Eine Firewall kann als Software oder Hardware eingehenden und ausgehenden Netzwerkverkehr filtern. Ein einfacher Paketfilter prüft die Quelladresse und die Zieladresse anhand vorgegebener Regeln. Damit arbeitet er auf Schicht 3. Sobald Ports in die Entscheidung einfließen, bezieht er Schicht 4 ein. Gesperrte Pakete werden beispielsweise verworfen, sodass sie die andere Seite nicht erreichen.
Rufe ich aus meinem Netzwerk eine Webseite auf, muss die Antwort des Webservers wieder hineingelassen werden. Eine Firewall kann sich dazu merken, welche Kommunikation von innen begonnen wurde, und eingehende Antworten zuordnen. Ein:e Angreifer:in kann Pakete fälschen, damit sie wie Antworten aussehen. Die Firewall muss prüfen, ob sie zu einer erlaubten Anfrage gehören.
Transkription der gesamten Episode
Automatisch erzeugte Transkription der Episode
[0:01] Herzlich Willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker
[0:08] für Anwendungsentwicklung. In dieser Episode geht es weiter mit Schicht 4 des OSI-Modells. Viel Spaß!
[0:20] Hallo und herzlich Willkommen zur 85. Episode des Anwendungsentwickler-Podcasts.
[0:27] Mein Name ist Stefan Macke und heute geht es ohne groß umzuschweifen direkt weiter mit dem ISO-OSI-Modell,
[0:35] was wir bei der letzten Episode letzte Woche verlassen haben auf Schicht 3.
[0:41] Das war die Schicht, wo wir zum ersten Mal mit dem IP-Protokoll in Berührung gekommen sind,
[0:46] wo wir also logische Adressen jetzt nutzen können, um unsere Ziele in unserem Netzwerk erreichen zu können.
[0:53] Und diese Woche setzen wir direkt auf der Schicht 3 auf mit Schicht 4, und zwar der Transportschicht.
[0:59] Diesmal auf Englisch auch passenderweise Transport Layer, da muss man sich jetzt also nicht wieder drei verschiedene oder zwei immer nur Begriffe merken,
[1:06] sondern Transport Layer und Transportschicht, das kann man ja nun wirklich 1 zu 1 übersetzen.
[1:10] Okay, auf jeden Fall, was passiert in dieser Schicht 4 jetzt?
[1:14] Ich habe das mal so ein bisschen überschrieben mit, wie kommen auch große Datenmengen vollständig
[1:19] und in der korrekten Reihenfolge beim richtigen Dienst des Empfängers an.
[1:23] Da ist jetzt schon einiges drin, was wir vielleicht einmal durchgehen sollten.
[1:27] Wir fangen aber, wie bei den anderen Schichten auch, nochmal einmal mit der Einheit an, mit der wir hier arbeiten.
[1:33] Und das sind jetzt gleich zwei verschiedene, die da möglich sind auf der Schicht 4,
...