7.Vorlesung Netzwerke



Ähnliche Dokumente
11. Foliensatz Betriebssysteme und Rechnernetze

11. Foliensatz Betriebssysteme und Rechnernetze

10.Vorlesung Grundlagen der Informatik

9. Foliensatz Computernetze

9. Foliensatz Computernetze

TCP. Transmission Control Protocol

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Die Transportprotokolle UDP und TCP

Netzwerk-Programmierung. Netzwerke.

Netzwerke. Netzwerk - Programmierung. Alexander Sczyrba. Madis Rumming.

Themen. Dienste der Transportschicht. 3-Wege-Handshake. TCP-Protokoll-Header. Real-Time-Protocol

Themen. Transportschicht. Internet TCP/UDP. Stefan Szalowski Rechnernetze Transportschicht

Vorlesung SS 2001: Sicherheit in offenen Netzen

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

Rechnernetze Übung 11. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juni 2012

Rechnernetze Übung 11

Netzwerkprotokolle. Physikalische Verbindungsebene Datenübertragungsebene

Transportschicht (Schicht 4) des Internet

Domain Name Service (DNS)

Kommunikationsnetze 1. TCP/IP-Netze 1.2 TCP. University of Applied Sciences. Kommunikationsnetze. 1. TCP/IP-Netze 1.

Das TCP/IP Schichtenmodell

15 Transportschicht (Schicht 4)

Explorationsphase Remote Root Exploit Fazit. Die Mitnick Attacke. Einleitung

Internet Protokoll. Die Funktionen von IP umfassen:

IP-Netzwerke und Protokolle

TCP/IP-Protokollfamilie

Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die Socket-Schnittstelle

Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die Socket-Schnittstelle

Vorab: Überblick TCP. Grundeigenschaften Punkt-zu-Punkt-Verbindung Streaming-Schnittstelle

Transportschicht. Einleitung Transmission Control Protocol, RFC793. Transportschicht

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

TCP-Verbindungen und Datenfluss

Transmission Control Protocol (TCP)

Kurzeinführung in TCP/IP. Sebastian Drexler

Netzwerk-Programmierung in C

ARP, ICMP, ping. Jörn Stuphorn Bielefeld, den 4. Mai Mai Universität Bielefeld Technische Fakultät

Themen. Flußkontrolle. Stefan Szalowski Rechnernetze Sicherungsschicht

Verteilte Systeme - Java Networking (Sockets) -

Systeme II. Christian Schindelhauer Sommersemester Vorlesung

Die ITU-T-Empfehlung X.25

Transportprotokolle. TCP - Transmission Control Protocol

Vorab: Überblick TCP. Grundeigenschaften Punkt-zu-Punkt-Verbindung Streaming-Schnittstelle

Beispiel TCP-/IP-Datenübertragung

UDP User Datagramm Protokoll

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn

Netzwerkprogrammierung

KOMMUNIKATIONSNETZE UND - PROTOKOLLE 6. TRANSPORTSCHICHT. KNP: 6. Transport. 1 / v5. prof. dr. Werner Winzerling

TCP/UDP. Transport Layer

Grundlagen TCP/IP. C3D2 Chaostreff Dresden. Sven Klemm

Hauptdiplomklausur Informatik März 2001: Internet Protokolle

Transportschicht. Veranstaltung. Vortragender. Rechnernetze 1. Rüdiger Busch

Referat: Netzwerkprogrammierung in Java

SCHICHTENMODELLE IM NETZWERK

Dienste der Transportschicht

Domain Name Service (DNS)

Hinweise. Weiterhin wird in dieser Veranstaltung von der IP-Version 4 ausgegangen. ITSec WS Teil 1/Wiederholung

Internetanwendungstechnik. Transportschicht. Gero Mühl

Transportprotokolle im TCP/IP- Referenzmodell

Systeme II 5. Die Transportschicht

Vorlesung: Netzwerke (TK) WS 2009/10 Kapitel 5 Ende-zu-Ende-Protokolle Session 15

UDP-, MTU- und IP- Fragmentierung

TCP SYN Flood - Attack. Beschreibung Auswirkungen Zuordnung zu Gefährdungskategorie und Attacken-Art Gegenmaßnahmen Quellen

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering

Layer 4: Transport Layer

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014

Chapter 11 TCP. CCNA 1 version 3.0 Wolfgang Riggert,, FH Flensburg auf der Grundlage von

KN Das Internet

U3: Netzwerkprotokolle OSI-Schichtenmodell

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Rechnernetze I SS Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 7.

Vorlesung SS 2001: Sicherheit in offenen Netzen

Technische Informatik II FS 2008

Überblick. Daten- kommunikation

9. Transportprotokolle

Version: Das Versionsfeld gibt an ob es sich um IPv4 oder um IPv6 handelt.

Gruppen Di-T14 / Mi-T25

Internetanwendungstechnik. TCP/IP- und OSI-Referenzmodell. Gero Mühl

Lehrveranstaltung Rechnernetze Einschub für das Labor

Grundkurs Routing im Internet mit Übungen

Ethernet: MAC-D MAC-S Type Data FCS. Eigenschaften: 1. Kann nur im eigenen Netz eingesetzt werden 2. Keine Bestätigung des Empfangs

Transportschicht. Transmission Control Protocol, RFC793. (Fortsetzung TCP)

Transportschicht. Transmission Control Protocol (TCP) Zuverlässiger Bytestrom. 9. Kapitel Fragen des Protokolls: Ausgewählte Netzwerkprotokolle

Grundlagen der Rechnernetze. Internetworking

Praktikum zur Vorlesung Datenkommunikation. Teil I

Peer-to-Peer- Netzwerke

Netzwerktechnologien 3 VO

Netzwerke Teil 7: TCP/IP - Teil I

Programmierung mit sockets

DHCP und NTP. Jörn Stuphorn Universität Bielefeld Technische Fakultät

Transportprotokolle im TCP/IP- Referenzmodell

Rechnernetze und Internettechnologien

7 Transportprotokolle

Transkript:

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 1/36 7.Vorlesung Netzwerke Dr. Christian Baun Hochschule Darmstadt Fachbereich Informatik christian.baun@h-da.de 29.11.2011

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 2/36 Wiederholung vom letzten Mal Vermittlungsschicht Vermittlung und Weiterleitung Datagramme Verbindungslose (Datagramm-)Netzwerke Virtuelle Leitungsvermittlung Signalisierung Source Routing Routing-Protokolle/Algorithmen Distanzvektorverfahren (Bellman-Ford-Algorithmus) Link-State-Routing (Dijkstra-Algorithmus) Adressierung Adressen des Internet-Protokolls Netzklassen, Netzwerkteil und Geräteteil, Subnetze und Netzmaske Aufbau von IP-Pakten Fragmentieren Diagnose und Fehlermeldungen ICMP

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 3/36 Heute Transportschicht Ports und Portnummern, Sockets User Datagram Protocol (UDP) Aufbau von UDP-Datagrammen Verbindungslose Kommunikation mit Sockets Transmission Control Protocol (TCP) Aufbau von TCP-Paketen Verbindungsorientierte Kommunikation mit Sockets TCP-Verbindungsaufbau Flusskontrolle bei TCP Verhalten von TCP beim Verlust von Paketen Denial of Service-Attacken via SYN-Flood

Transportschicht Die ersten 3 Schichten des OSI-Modells enthalten Technologien, um Computer zu verbinden und Daten auszutauschen Nun können die Hosts kommunizieren, aber es fehlen noch Protokolle zur Interprozesskommunikation Aufgabe der Transportschicht: Ende-zu-Ende-Protokolle für Prozesskommunikation bereitstellen Geräte: keine Protokolle: TCP, UDP Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 4/36

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 5/36 Eigenschaften von Transportprotokollen Einschränkungen/Nachteile von Netzwerken sind u.a. Nachrichten gehen eventuell verloren oder werden verworfen Nachrichten kommen in der falschen Reihenfolge an Mehrere Kopien einer Nachricht erreichen das Ziel Nachrichten dürfen eine bestimmte Größe nicht überschreiten Die Verzögerung des Netzwerks kann schwanken Gewünschte Eigenschaften von Transportprotokollen sind u.a. Garantierte Nachrichtenübertragung Einhaltung der Reihenfolge von Nachrichten Unterstützung beliebig großer Nachrichten Der Sender soll in der Lage sein, den Datenfluss zu kontrollieren Vergleichbar mit der Flusskontrolle in der Sicherungsschicht Gesucht: Transportportokolle, die die negativen Einschränkungen der Netzwerke in die (positiven) Eigenschaften umwandeln, die von Transportportokollen erwartet werden = UDP und TCP Zuvor klären: Ports und Sockets

Ports (1/2) Jede Anwendung, die die Transportportokolle TCP oder UDP nutzt, hat eine Portnummer Diese gibt an, welcher Dienst auf dem Quell-Host angesprochen wird Bei TCP und UDP ist die Portnummer 16 Bit groß (0 bis 65535) Portnummern können im Prinzip beliebig vergeben werden Es gibt Konventionen, welche Standardanwendungen welche Ports nutzen Portnummer Dienst Beschreibung 21 FTP Dateitransfer 22 SSH Verschlüsselte Terminalemulation (Secure Shell) 23 Telnet Terminalemulation 25 SMTP E-Mail-Versand 53 DNS Auflösung von Domainnamen in IP-Adressen 67 DHCP Zuweisung der Netzwerkkonfiguration an Clients 80 HTTP Webserver 110 POP3 Client-Zugriff für E-Mail-Server 143 IMAP Client-Zugriff für E-Mail-Server 443 HTTPS Webserver (verschlüsselt) 993 IMAPS Client-Zugriff für E-Mail-Server (verschlüsselt) 995 POP3S Client-Zugriff für E-Mail-Server (verschlüsselt) Die Tabelle enthält nur eine kleine Auswahl bekannter Portnummern Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 6/36

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 7/36 Ports (2/2) Die Portnummern sind in 3 Gruppen unterteilt: 0 bis 1023 (Well Known Ports) Sind fest zugeordnet und allgemein bekannt 1024 bis 49151 (Registered Ports) Können sich Anwendungsentwickler für eigene Protokolle registrieren 49152 bis 65535 (Private Ports) Sind nicht registriert Unter Linux/UNIX existiert die Datei /etc/services Hier ist die Zuordnung von Anwendungen zu Portnummern festgelegt Unter Windows: \WINNT\SYSTEM32\ETC\SERVICES

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 8/36 Sockets Sockets sind die plattformunabhängige, standardisierte Schnittstelle zwischen der Implementierung der Netzwerkprotokolle im Betriebssystem und den Anwendungen Ein Socket besteht aus einem Port mit einer IP-Adresse Man unterscheidet zwischen Stream Sockets und Datagram Sockets Stream Sockets = TCP Datagram Sockets = UDP Übersicht der Sockets unter Linux/UNIX: netstat -n Alternativen zu Sockets in der Interprozesskommunikation Pipes, Message Queues und gemeinsamer Speicher (Shared Memory)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 9/36 User Datagram Protocol (UDP) Verbindungsloses Transportprotokoll Datenübertragungen finden ohne vorherigen Verbindungsaufbau statt Einfacheres Protokoll als das verbindungsorientierte TCP Nur für die Adressierung zuständig Keine Sicherung der Datenübertragung Übertragungen werden nicht vom Empfänger beim Sender bestätigt Daten können/dürfen verloren gehen UDP ist u.a. für Videoübertragungen optimal Geht bei TCP ein Paket (Bild) verloren, wird es neu angefordert Es käme zu Aussetzern bzw. ein Wiedergabepuffer wäre notwendig Bei UDP wäre nur ein Bild verloren oder die Qualität kurzzeitig schlechter Maximale Größe eines UDP-Datagramms: 65.535 Byte Das Länge-Feld des UDP-Headers ist 16 Bit groß Maximal darstellbare Zahl mit 16 Bit = 65.535 So große UDP-Datagramme werden von IP aber fragmentiert übertragen

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 10/36 Aufbau von UDP-Datagrammen (1/2) Datagramm hat im OSI-Modell unterschiedliche Bezeichnungen OSI-Schicht Schicht 4 (Transportschicht) Schicht 3 (Vermittlungsschicht) Schicht 2 (Sicherungsschicht) Datagrammbezeichnung Datensegment Datenpaket (IP-Paket) Datenrahmen (Frame) Für die Übertragung von UDP-Paketen ist das Internet Protokoll (IP) vorgesehen Das IP-Protokoll setzt vor jedes UDP-Paket einen weiteren Header (den IP-Header)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 11/36 Aufbau von UDP-Datagrammen (2/2) Der UDP-Header besteht aus 4 Datenfeldern (je 16 Bit) Felder im Header eines UDP-Datagramms Quell-Port Die Port-Nummer des sendenden Prozesses Ist notwendig, wenn der Empfänger auf das Paket antworten soll Kann frei bleiben (Wert 0), wenn keine Antwort notwendig ist Ziel-Port des Prozesses, der das Paket empfangen soll Länge des kompletten Datagramms (Header und Nutzdaten) Prüfsumme über (Header und Nutzdaten)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 12/36 Aufbau von UDP-Datagrammen Zudem wird noch ein Pseudo-Header erzeugt, aber nicht übertragen Die Felder des Pseudo-Headers werden nicht übertragen, gehen aber in die Prüfsumme mit ein

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 13/36 Verbindungslose Kommunikation mit Sockets UDP Client Socket erstellen (socket) Daten senden (sendto) und empfangen (recvfrom) Socket schließen (close) Server Socket erstellen (socket) Socket an einen Port binden (bind) Daten senden (sendto) und empfangen (recvfrom) Socket schließen (close)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 14/36 Sockets via UDP Beispiel (Server) #!/ usr /bin /env python # -*- coding : iso -8859-15 -*- # Server : Empfängt eine Nachricht via UDP import socket # Modul socket importieren # Stellvertretend für alle Schnittstellen des Hosts HOST = # = alle Schnittstellen PORT = 50000 # Portnummer von Server # Socket erzeugen und Socket Deskriptor zurückliefern sd = socket. socket ( socket.af_inet, socket. SOCK_DGRAM ) try : sd. bind (HOST, PORT ) # Socket an Port binden while True : data = sd. recvfrom (1024) # Daten empfangen print Empfangen :, repr ( data ) # Empfangene Daten ausgeben finally : sd. close () # Socket schließen

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 15/36 Sockets via UDP Beispiel (Client) #!/ usr /bin /env python # -*- coding : iso -8859-15 -*- # Client : Schickt eine Nachricht via UDP import socket # Modul socket importieren HOST = localhost # Hostname von Server PORT = 50000 # Portnummer von Server MESSAGE = Hallo Welt # Nachricht # Socket erzeugen und Socket Deskriptor zurückliefern sd = socket. socket ( socket.af_inet, socket. SOCK_DGRAM ) sd. sendto (MESSAGE, (HOST, PORT )) # Nachricht an Socket senden sd. close () # Socket schließen

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 16/36 Transmission Control Protocol (TCP) Verbindungsorientiertes Transportprotokoll Eine TCP-Verbindung wird wie eine Datei geöffnet und geschlossen und man kann die Position im Datenstrom bestimmen Genau wie man bei einer Datei wird die Position der Lese- oder Schreibposition angeben Garantiert, dass Pakete vollständig und in der richtigen Reihenfolge ihr Ziel erreichen Erweitert das IP-Protokoll um die Zuverlässigkeit, die für viele Anwendungen gewünscht bzw. notwendig ist Meist genutztes Transportprotokoll in IP-Netzen Wegen der hohen Verbreitung wird anstatt vom IP-Protokoll häufig einfach von TCP/IP gesprochen Neben den Nutzdaten existiert auch bei TCP-Paketen ein Header Im Gegensatz zu UDP-Datagrammen ist der Header von TCP-Paketen deutlich komplexer

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 17/36 Daten in Pakete verpacken Zu übertragende Daten werden in kleine Einheiten unterteilt Ein Paket kann maximal 64 kb Daten enthalten Üblich sind kleinere Pakete (z.b. 1.500 Byte oder 4 kb) TCP- und IP-Header umfassen ca. 40 Byte Bei einer Paketgröße von mehreren kb ist der Anteil der Header gering

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 18/36 Arbeitsweise von TCP (1/2) Jedes gesendete TCP-Paket hat eine eindeutige Folgenummer (Sequenznummer), die die Position seines ersten Bytes im Byte-Strom der Verbindung angibt Anhand dieser Nummer kann die Reihenfolge der Segmente korrigiert und doppelt angekommene Segmente können aussortiert werden Die Länge des Segments ist aus dem IP-Header bekannt So können Lücken im Datenstrom entdeckt werden, und der Empfänger kann verlorengegangene Segmente neu anfordern Beim Öffnen einer TCP-Verbindung (Dreiwege-Handshake) tauschen beide Kommunikationspartner Kontrollinformationen aus So ist sichergestellt, dass der jeweilige Partner existiert und Daten annehmen kann

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 19/36 Arbeitsweise von TCP (2/2) Dazu schickt der Client ein Paket mit der Aufforderung, die Folgenummern zu synchronisieren Das einleitende Paket mit gesetztem SYN-Bit (Synchronize) gibt die Anfangs-Sequenznummer des Clients bekannt Die Anfangs-Sequenznummer wird zufällig bestimmt Bei allen nachfolgenden Paketen ist das ACK-Bit (Acknowledge) gesetzt Das ACK-Bit ist mit einer Quittung gleichzusetzen Der Server antwortet mit ACK, SYN und gibt auch seine Anfangs-Sequenznummer für Übertragungen in die Gegenrichtung an Der Client bestätigt mit ACK und die Verbindung ist aufgebaut Nun können Daten über die Verbindung ausgetauscht werden Diese Art des Austausches von Kontrollinformationen, bei der jede Seite die Aktionen der Gegenseite bestätigen muss, ehe sie wirksam werden, nennt man Dreiwege-Handshake

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 20/36 TCP-Verbindungsaufbau (Dreiwege-Handshake) Der Server wartet passiv auf eine ankommende Verbindung Funktionen listen und accept 1 Client führt connect aus, sendet ein TCP-Paket mit SYN=1, ACK=0 und FIN=0 und wartet auf die Antwort = Synchronize 2 Läuft am Port ein Serverprozess, der die Verbindung annimmt, sendet er als Bestätigung ein TCP-Paket mit SYN=1, ACK=1 und FIN=0 = Synchronize Acknowledge 3 Client bestätigt mit einem TCP-Paket mit SYN=0, ACK=1 und FIN=0 und die Verbindung ist hergestellt = Acknowledge Die Anfangs-Sequenznummern (x und y) werden zufällig bestimmt Beim Verbindungsaufbau werden keine Nutzdaten ausgetauscht!

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 21/36 TCP-Datenübertragung Im Beispiel haben x und y zu Beginn des Dreiwege-Handshake die Werte 100 und 500 Nach Abschluss des Dreiwege-Handshake und zu Beginn der Datenübertragung haben x und y die Werte 101 und 501 1 Client übertragt 1000 Byte Nutzdaten 2 Server bestätigt mit ACK=1 die empfangenen Nutzdaten und bestätigt mit der Ack-Nummer das letzte empfangene Byte 3 Client übertragt weitere 1000 Byte Nutzdaten 4 Server bestätigt mit ACK=1 die empfangenen Nutzdaten und bestätigt mit der Ack-Nummer das letzte empfangene Byte Im Beispiel zählt der Server seine Seq-Nummer nicht hoch, weil er keine Nutzdaten an den Client übertragt

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 22/36 TCP-Verbindungsabbau Der geregelte Verbindungsabbau ist dem Verbindungsaufbau ähnlich Statt des SYN-Bit kommt das FIN-Bit zum Einsatz, welches anzeigt, dass keine Daten mehr vom Sender kommen werden Funktion close 1 Client sendet den Abbauwunsch mit SYN=0, ACK=1 und FIN=1 und wartet auf die Antwort 2 Server sendet eine Bestätigung mit SYN=0, ACK=1 und FIN=0 3 Server sendet den Abbauwunsch mit SYN=0, ACK=1 und FIN=1 und wartet auf die Antwort 4 Client sendet eine Bestätigung mit SYN=0, ACK=1 und FIN=0 Merke: Der Empfang eines FIN zählt Ack hoch Beim Verbindungsabbau werden keine Nutzdaten ausgetauscht!

TCP - Vereinfachter endlicher Automat CLOSED: Anfangspunkt. Noch keine Verbindung LISTEN: Warten auf SYN-Nachricht SYN-SENT: SYN gesendet. Warten auf SYN und ACK SYN-RECEIVED: Mit SYN und ACK auf SYN geantwortet. Warten auf ACK ESTABLISHED: Die TCP-Verbindung ist aufgebaut und Daten können ausgetauscht werden CLOSE-WAIT: FIN empfangen. Lokale Anwendung muss noch mit ACK antworten LAST-ACK: ACK wurde bereits gesendet. Nun wird noch FIN gesendet FIN-WAIT-1: FIN gesendet. Auf ACK warten FIN-WAIT-2: ACK empfangen. Warten auf FIN CLOSING: FIN empfangen und ACK zurückgesendet TIME-WAIT: Verbindung ist geschlossen Quelle: http://www.tcpipguide.com/free/t_tcpoperationaloverviewandthetcpfinitestatemachinef-2.htm Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 23/36

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 24/36 Flusskontrolle bei TCP

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 25/36 Verhalten von TCP beim Verlust von Paketen (Szenario 1)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 26/36 Verhalten von TCP beim Verlust von Paketen (Szenario 2)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 27/36 Aufbau von TCP-Paketen Die Felder des Pseudo-Headers werden nicht übertragen, gehen aber in die Prüfsumme mit ein

Felder im Header von TCP-Paketen (1/3) Quell-Port Port-Nummer des sendenden Prozesses Ziel-Port Port-Nummer des Prozesses, der das Paket empfangen soll Sequenznummer Die Folgenummer des aktuellen Pakets Ack-Nummer Nummer des nächsten erwarteten Pakets Ack-Nummer = Sequenznummer + 1 TCP-Header-Länge Länge des TCP-Headers in 32-Bit-Worten Damit weiß der Empfänger, wo die Nutzdaten im TCP-Paket anfangen Reserviert (6 Bit) Für zukünftige (?!) Nutzung reserviertes Feld Hat den Wert 0 Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 28/36

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 29/36 Felder im Header von TCP-Paketen (2/3) URG = Urgent Pointer (1 Bit) Wird auf den Wert 1 gesetzt, wenn der Urgent-Zeiger verwendet wird ACK = Acknowledge (1 Bit) Zeigt an, das die Bestätigungsnummer gültig ist PSH = PUSH (1 Bit) Wird dieses Flag gesetzt, soll der Protokollstack des Betriebssystems das Paket sofort übertragen, anstatt zu warten bis der Sendepuffer voll ist RST = Reset (1 Bit) Anforderung die Verbindung zurückzusetzen SYN = Synchronize (1 Bit) Synchronisation der Verbindungsnummer anweisen Wird beim Verbindungsaufbau gemacht

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 30/36 Felder im Header von TCP-Paketen (3/3) FIN Wird verwendet, um eine Verbindung abzubauen Empfangsfenster Größe des Empfangsfensters zur Flusskontrolle Prüfsumme Prüfsumme über Header und Nutzdaten Urgent-Zeiger Zeigt auf wichtige Nachrichten Optionen und Füllbits (Vielfaches von 32 Bit, wird mit 0-Bits aufgefüllt) Zusatzinformationen Eine mögliche Option ist die maximale Länge eines TCP-Pakets

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 31/36 Verbindungsorientierte Kommunikation mit Sockets TCP Client Socket erstellen (socket) Client mit Server-Socket verbinden (connect) Daten senden (send) und empfangen (recv) Socket schließen (close) Server Socket erstellen (socket) Socket an einen Port binden (bind) Socket empfangsbereit machen (listen) Richtete eine Warteschlange für Verbindungen mit Clients ein Server akzeptiert Verbindungen (accept) Daten senden (send) und empfangen (recv) Socket schließen (close)

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 32/36 Sockets via TCP Beispiel (Server) #!/ usr /bin /env python # -*- coding : iso -8859-15 -*- # Echo Server via TCP import socket # Modul socket importieren HOST = # = alle Schnittstellen PORT = 50007 # Portnummer von Server # Socket erzeugen und Socket Deskriptor zurückliefern sd = socket. socket ( socket.af_inet, socket. SOCK_STREAM ) sd. bind (HOST, PORT ) # Socket an Port binden sd. listen (1) # Socket empfangsbereit machen # Max. Anzahl Verbindungen = 1 conn, addr = sd. accept () # Socket akzeptiert Verbindungen print Connected by, addr while 1: # Endlosschleife data = conn. recv (1024) # Daten empfangen if not data : break # Endlosschleife abbrechen conn. send ( data ) # Empfangene Daten zurücksenden conn. close () # Socket schließen

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 33/36 Sockets via TCP Beispiel (Client) #!/ usr /bin /env python # -*- coding : iso -8859-15 -*- # Echo Client via UDP import socket # Modul socket importieren HOST = localhost # Hostname von Server PORT = 50007 # Portnummer von Server # Socket erzeugen und Socket Deskriptor zurückliefern sd = socket. socket ( socket.af_inet, socket. SOCK_STREAM ) sd. connect (HOST, PORT ) # Mit Server - Socket verbinden sd. send ( Hello, world ) # Daten senden data = sd. recv (1024) # Daten empfangen sd. close () # Socket schließen print Empfangen :, repr ( data ) # Empfangene Daten ausgeben

Ziel des Angriffs: Dienste oder Server unerreichbar machen Ein Client sendet die Verbindungsanfrage (Synchronize), antwortet aber nicht mit Acknowledge auf die Bestätigung (Synchronize Acknowledge) des Servers Der Server wartet einige Zeit auf die Bestätigung des Clients Es könnten ja Netzwerkprobleme vorliegen und die Bestätigung noch ankommen Während dieser Zeit werden die Client-Adresse und der Status der unvollständigen Verbindung im Speicher des Netzwerkstacks gehalten Durch ein Fluten des Servers mit solchen Verbindungsanfragen wird der Speicher des Netzwerkstacks komplett gefüllt = Der Server kann dann keine neuen Verbindungen mehr aufbauen Der Speicherverbrauch auf dem Server kann so groß werden, dass dieser komplett funktionsunfähig wird und abstürzt Sinnvolle Gegenmaßnahme: Echtzeitanalyse des Netzwerks durch intelligente Firewalls Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 34/36 Denial of Service-Attacken via SYN-Flood

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 35/36 Übung 1 Gegeben sei folgendes Time- Sequence-Diagramm (Größenangaben sind Vielfache von 1.024 Byte) Beschreiben Sie die Bedeutung der ersten 3 Segmente die hier ausgetauscht werden, gehen sie dabei auf alle Felder ein, die im Time-Sequence- Diagramm aufgeführt sind Quelle: http://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2002-ws/internetprotokolle/uebungen/blatt3l.html

Dr. Christian Baun 7.Vorlesung Netzwerke Hochschule Darmstadt WS1112 36/36 Übung 2 System A möchte 7 Byte übertragen und dann die Verbindung geordnet beenden Annotieren sie die Grafik entsprechend Verwenden sie dabei die gleiche Notation wie für die ersten 5 Segmente Gehen Sie davon aus, dass System B alle Daten sofort aus den Puffern entfernt Quelle: http://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2002-ws/internetprotokolle/uebungen/blatt3l.html