TCP

Werbung
Verlässliche Verteilte Systeme 1
Angewandte IT-Robustheit und IT-Sicherheit
Vorlesung im Wintersemester 2004/2005
Dipl.­Inform. Martin Mink
Lehr­ und Forschungsgebiet Informatik 4
Crashkurs TCP/IP­Netzwerke
(basierend auf der Vorlesung „Datenkommunikation“ WS03/04)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
1
Übersicht
●
Kurze Geschichte des Internet
●
TCP/IP
–
Internet Protocol (IP)
–
Transmission Control Protocol (TCP)
–
User Datagram Protocol (UDP)
●
Werbung
●
Netzwerk­Sniffen
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
2
ARPANET – Vorläufer des
Internet
XDS
940
Stanford Research
Institute (SRI)
ARPANET
(Dezember 1969)
IMP
IBM
360/75
DEC
PDP­10
IMP
IMP
University of
California Santa
Barbara (UCSB)
Finanzierung durch ARPA (Advanced Research Project Agency, mit militärischen Interessen)
University
of Utah
IMP
XDS
1­7
California
University of California
Los Angeles (UCLA)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
3
Entwicklung des Internets
• derzeit sind etwas 200 Millionen Hosts an das Internet angeschlossen
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
4
TCP/IP und das OSIReferenzmodell
Anwendungsebene
(Application Layer)
Anwendungsebene
Darstellungsebene
(Presentation Layer)
Sitzungsebene
(Session Layer)
Transportebene
(Transport Layer)
Transportebene (TCP/UDP)
Netzwerkebene
(Network Layer)
Internetebene (IP)
Sicherungsebene
(Data Link Layer)
Bitebene
(Physical Layer)
ISO/OSI
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
Host­to­Network­Ebene
TCP/IP
5
Die TCP/IP Protocol Suite
HTTP
Protokolle
Telnet
SMTP
DNS
Ethernet
ICMP
Token Ring
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
SNMP
TFTP
IP
ARP
Token Bus
Application Layer
Transport Layer
UDP
TCP
IGMP
Netze
FTP
RAR
P
Wireless LAN
Internet Layer
Host­to­network Layer
6
IP-Paket
32 Bits (4 Bytes)
Versi
on
IHL
Type of
Service
Identification
Time to Live
Protocol
Total Length
DM
FF
Fragment Offset
Header Checksum
IP Header, normalerweise 20 Bytes
Source Address
Destination Address
Options (variable, 0­40 Byte)
DATA (variable)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
Paddin
g
Header
Data
7
Der IP-Header (Auswahl)
• Version: IP­Versionsnummer (mehrere IP­Versionen gleichzeitig einsetzbar)
• Type of Service: wird von Routern ignoriert
• Total Length: Länge des gesamten Datagramms (in Byte, ≤ 216­1 = 65535 Bytes)
• Time­to­Live (TTL): Lebenszeit von Datagrammen begrenzen auf maximal 255 Hops (verhindert endloses Kreisen von Paketen im Netz). Der Zähler wird bei jedem Hop verringert, bei 0 wird das Datagramm verworfen.
• DF: Don't Fragment: Paket soll nicht fragmentiert werden (kann dann evtl. nicht jeden möglichen Weg im Netz nehmen).
• MF: More Fragments. "1" ­ es folgen weitere Fragmente. "0" ­ letztes Fragment eines Datagramms)
• Fragment Offset: Folgenummern der Fragmente eines Datagramms.
• Protocol: welches Transportprotokoll wird im Datenteil verwendet (UDP, TCP, ...)? • Header Checksum: Muss bei jedem Hop neu berechnet werden (da sich TTL ändert)
• Source Address / Destination Address: Netz­ und Hostnummern von sendendem und empfangenden Rechner. Diese Information benutzen die Router zur Wegebestimmung.
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
8
IP-Adressierung
• Eindeutige IP­Adresse für jeden Host und für jeden Router.
• IP­Adressen sind 32 Bit lang und werden im Source Address­ sowie im Destination Address­
Bereich von IP­Paketen verwendet.
• Die IP­Adresse ist hierarchisch strukturiert und netzbezogen, d.h. Maschinen mit Anschluss an mehrere Netze haben mehrere IP­Adressen.
• Struktur der Adresse: Netzwerk­Adresse für physikalisches Netz (z.B. 137.226.0.0) und Rechner­Adresse für einen Host (z.B. 137.226.12.221)
32 Bits
126 Netze
224 Hosts adressierbar
(ab 1.0.0.0)
Class
A
0 Network
B
10
C
110
D
1110
Multicast­Adresse
E
1111
Für künftige Nutzung reserviert
16383 Netze
216 Hosts
(ab 128.0.0.0)
Host
Network
Host
Network
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
Host
2097151 Netze (LANs)
256 Hosts
(ab 192.0.0.0)
9
IP-Subnetze
Problem: Class C­Netze sind sehr klein, Class B­Netze oft aber schon wieder zu groß. Daher gibt es die Möglichkeit, ein durch die IP­Adresse identifiziertes Netz in sogenannte Subnetze zu zerlegen.
Beispiele für Subnetze: Subnetz­Maske 255.255.255.0
Ethernet A 128.10.1.0
Rest
des
Aller
Verkehr
für 128.10.0.0
128.10.1.3
Router
128.10.1.8
Ethernet A
Host
128.10.1.70
Ethernet A
Host
128.10.1.26
Ethernet A
Host
128.10.2.1
Internet
Ethernet B 128.10.2.0
128.10.2.3
Ethernet B
Host
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
128.10.2.133 128.10.2.18
Ethernet B
Host
Ethernet B
Host
10
IP-Subnetze
●
mit einer IP­Netzwerk­Adresse können mehrere physikalische Netze adressiert werden
●
einige Bits der Rechner­Adresse werden als Netzwerk­ID genutzt
●
eine Subnetz­Maske identifiziert die „missbrauchten“ Bits
Class B­
Adresse
Subnetz­
Maske
Network
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
10
●
●
Host
Network
Subnet
Host
alle Hosts eines Netzes sollten die gleiche Subnetz­Maske haben
Router können durch Kombination einer IP­Adresse und einer Subnetz­
Maske ermitteln, in welches Teilnetz ein Paket geschickt werden muss.
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
11
Classless Inter-Domain
Routing
Problem: starre Klasseneinteilung
Abhilfe: Classless Inter­Domain Routing (CIDR)
Trennung von starrer Klasseneinteilung durch Ersetzen der festen Klassen durch Netzwerk­
Präfixe variabler Länge
• Beispiel: 137.250.3/17: Die ersten 17 Bit der IP­Adresse werden für die Netzwerk­
Identifikation verwendet
• Einsatz in Verbindung mit Routing: Backbone­Router, z.B. an Transatlantik­Link, betrachtet z.B. nur die ersten 13 Bit; dadurch kleine Routing­Tabellen, wenig Rechenaufwand
• Router eines ISP betrachtet z.B. nur die ersten 15 Bit
• Router in Firmennetz betrachtet z.B. nur die ersten 25 Bit
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
12
NAT – Network Address
Translation
• Nur Router, die an die Außenwelt angeschlossen sind, benötigen eine globale Adresse
• Vergabe einer einzigen (oder einiger weniger) IP­Adressen an eine Firma
• Intern verwendet jeder Rechner eine eigene IP­Adresse. Dazu sind '
private'
Adressbereiche reserviert worden, die jeder innerhalb seiner eigenen Netze verwenden darf und die nie im Internet geroutet werden:
10.255.255.255
• 10.0.0.0 ­
172.31.255.255
• 172.16.0.0 ­
­
192.168.255.255
• 192.168.0.0
• Bei Verlassen des eigenen Netzes findet eine Adressumsetzung statt
• Problem: wie kann die Rückübersetzung in die interne IP­Adresse stattfinden?
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
13
NAT – Network Address
Translation
Protokoll
Port (lokal)
IP (lokal)
Port (global)
IP (global)
IP (Ziel)
Port (Ziel)
TCP
1066
10.0.0.1
1066
198.60.42.12
137.226.12.221
21
TCP
1500
10.5.3.7
1500
198.60.42.12
207.17.4.21
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
14
IP Version 6
• Dramatisch anwachsender Bedarf für neue IP­Adressen
• keine Unterstützung von Mobilität, Sicherheitsmechanismen, Echtzeitanwendungen
• Verbesserungend durch Ipv6
– 128­Bit­Adressen (8 Gruppen zu je 4 Hexadezimal­Zahlen)
– Anycast Address: Erreiche irgendeinen von mehreren
– Authentifizierung und Privacy
– Einfacher Header: keine Optionen, Protocol, Fragmentierung, Checksum
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
15
IPv6 Header
• Version: IP Version Nummer. • Priority: 4 Bit für Priorität. 1 ­ News, 4 ­ FTP, 6 ­ Telnet, 8 bis 15 ­ Echtzeitverkehr.
• FlowLabel: virtuelle Verbindung mit bestimmten Merkmalen/Anforderungen
• PayloadLen: Paketlänge nach dem 40­Byte­
Header
• NextHeader: 8­Bit­Selektor. Gibt den Typ des folgenden Erweiterungs­Headers an (oder den Transport­Header)
• HopLimit: Wird bei jedem Knoten dekrementiert. Bei Null wird das Paket verworfen
• SourceAddress: Die Adresse des ursprünglichen Senders des Pakets • DestinationAddress: Die Adresse des Empfängers (nicht unbedingt das endgültige Ziel, wenn es einen Optional Routing Header gibt)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
1
4
8
Version (4)
Priority (4)
PayloadLen (16)
16
24
32
FlowLabel (24)
NextHeader (8)
HopLimit (8)
SourceAddress (128)
DestinationAddress (128)
NextHeader/Data
Das Präfix einer Adresse charakterisiert geographische Bereiche, Provider, lokale interne Bereiche, ...
16
Routing
• wichtigste Funktionalität auf Schicht 3
• Jeder Router führt eine Tabelle, die angibt, welche Ausgangsleitung für ein bestimmtes Ziel gewählt werden muss.
1
Nach Ziel ... Über Leitung ...
2
3
A
B
C
D
2
1
2
3
• Die Routingtabellen können statisch vorgegeben sein; besser ist es jedoch, sie ständig an die aktuelle Netzsituation anzupassen.
• Bei verbindungsloser Kommunikation muss das Routing für jedes Paket durchgeführt werden. Dabei kann die Wegwahl von Paket zu Paket anders ausfallen.
• Bei virtuellen Verbindungen wird nur einmal geroutet, dafür sind die Routing­Tabellen umfangreicher
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
17
Routing (2)
Aufgabe: „günstigsten“ Weg vom Sender zum Empfänger bestimmen
• kurze Antwortzeit
• hoher Durchsatz
• Vermeidung lokaler Überlastsituationen
• Sicherheitsanforderungen
• kürzester Weg
• immer Konflikt zwischen Fairness und Optimum
Routingtabellen in den einzelnen Knoten
• eindimensional — Entscheidung hängt nur vom Zielknoten ab
• zweidimensional — Entscheidung hängt vom Sende­und Zielknoten ab
S E
A
L
C/B
Sender
C
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
A/B
B Empfänger
18
Routing (3)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
19
ICMP - Internet Control
Message Protocol
Steuerprotokoll der Ebene 3 für Fehler­ und Kontrollnachrichten.
Type/Code gibt die Art der Nachricht an, z.B.:
0
3
4
11
12
15/16
30
Destination unreachable
(Paket kann nicht zugestellt werden)
Echo Request/Reply
(Zustandsabfrage, z.B. beim ping)
Source Quench
(Choke­Paket, Bitte um Reduktion der Datenrate)
Time exceeded for Datagram (TTL hat 0 erreicht, das Paket wird verworfen)
Parameter Problem on Datagram
(Ein Header­Feld ist falsch ausgefüllt)
Information Request/Reply
Traceroute
(Der Netzwerkpfad wird nachverfolgt)
Host
Router
ICMP Reply
ICMP Request
Host
ICMP Message
ICMP Request: Zustandsabfrage
ICMP Reply: Antwort darauf
ICMP Message: Übermittlung von Zustandsinformationen und Kontrollnachrichten
Router
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
20
TCP und UDP - Die
Transportschicht
verbindungsorientiert
HTTP
FTP
Telnet
verbindungslos
SMTP
DNS
Ethernet
ICMP
TFTP
IP
Token Ring
ARP
Token Bus
Application Layer
Transport Layer
UDP
TCP
IGMP
SNMP
RAR
P
Wireless LAN
Internet Layer
Host­to­network Layer
TCP (Transmission Control Protocol): Zuverlässig, verbindungsorientiert.
UDP (User Datagram Protocol): „best effort“, verbindungslos.
Stellen eine Kommunikation zwischen Anwendungsprozessen bereit.
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
21
Eigenschaften von TCP
•
•
•
•
Verbindungsorientiert und zuverlässig (fehlerfrei, reihenfolgetreu, ohne Duplikate)
Fehlerbehandlung, Quittierung, Flusskontrolle (Sliding­Window­Verfahren)
Segmentierung (max. Segmentgröße 64 KByte)
Adressierung der Applikation über Portnummern (16­Bit­Adresse)
Routing Information
Virtual Terminal
World Wide Web
File Transfer
Electronic Mail
FTP
telnet
SMTP
http
BGP
255
20 / 21 23 25 80 179
well­known (TCP) Ports
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
RFC 1700
22
Der TCP-Header
Bit Position
0
8
16
Source Port
• 20 Byte Header
31
Destination Port
Sequence Number
• zzgl. Optionen
• dann folgen bis zu 65.495 Datenbytes
24
Acknowledgement Number
HL
Res.
6 Flags
Window Size
Checksum
Urgent Pointer
Padding
Options
Data
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
23
Der TCP-Header (Auswahl)
• Source­ und Destination­Port: Port­Nummer von Sender bzw. Empfänger
• Sequence Number/Acknowledgement Number: Segmente haben eine eigene 32 Bit Sequenz­ und Bestätigungsnummer für den Fenstermechanismus zur Flusskontrolle (Sliding Window).
• Die Bestätigungsnummer gibt das nächste erwartete Byte an!
• HL: Wie bei IP verfügt auch der TCP­Header über eine Angabe seiner Länge. Die Angabe erfolgt in 32­Bit­Worten.
• Window Size: Größe des Pufferspeichers für die Verbindung. Zeigt an, wie viele Dateneinheiten der Empfänger gleichzeitig speichern kann. Hierdurch wird das Fenster der Flusskontrolle angepasst.
• Flags (u.a.):
• ACK: Bestätigungsfeld, für den Fall, dass eine Quittung mitgesendet wird.
• SYN: auf 1 gesetzt beim Aufbau einer Verbindung
• FIN: auf 1 gesetzt beim Abbau einer Verbindung
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
24
TCP: 3-Wege-Handshake
Client
Server
SYN, SEQ=x
, ACK=x+1
SYN, SEQ=y
ACK=y+1, SE
Q=x+1
• Der Server wartet mittels LISTEN und ACCEPT auf eingehende Verbindungswünsche.
• Der Client startet unter Angabe von IP­Adresse, Portnummer und maximal akzeptabler Segment­
Größe eine CONNECT­Operation.
• CONNECT sendet ein SYN.
• Ist der Destination Port der CONNECT­Anfrage identisch zu der Port­Nummer, auf der der Server wartet, wird die Verbindung akzeptiert, andernfalls mit RST abgelehnt.
• Der Server schickt seinerseits das SYN zum Client und bestätigt zugleich den Erhalt des ersten SYN­
Segments.
• Der Client schickt eine Bestätigung des SYN­
Segments des Servers. Damit ist die Verbindung aufgebaut.
Three­Way­Handshake
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
25
Flusskontrolle – Sliding
Window
Initial window
• Sender sendet entsprechend der Fenstergröße (Bytes)
• Fenster wird um n Bytes versetzt, sobald ein ACK für n Bytes eingetroffen ist
• Ausnahme: Dringende Daten (URGENT­Flag) werden sofort gesendet
1
2
3
4
5
6
7
8
9
10
9
10
Segment 1, 2 und 3 acknowledged
• Besonderheit: die Fenstergröße kann während der Übertragungsphase geändert werden
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
Window slides
1
2
3
4
5
6
7
8
26
TCP-Überlastalgorithmus
Congestion Avoidance, Herantasten an die maximale Kapazität
Überlast vermutet, reduziere den Datenverkehr
Gehe vorsichtiger an den nächsten Versuch heran
Slow Start, Schnelle Ausnutzung der freien Kapazität
Beginne mit einem Segment
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
27
Das User Datagram Protocol
(UDP)
Prinzip: „ Keep it simple!“
•
8 Byte Header
•
Wie IP: verbindungslos und unzuverlässig
•
geringe Zuverlässigkeit, aber schneller Austausch von Informationen
•
keine Bestätigung der Pakete auf der UDP­Schicht, fehlerhafte Pakete werden schlicht und einfach verworfen. Weiterhin sind Duplikation, Reihenfolgevertauschung, Paketverlust möglich.
•
die Checksumme bietet die einzige Möglichkeit, die Pakete auf Übertragungsfehler zu testen
•
Möglich: ACKs und Neuübertragungen werden von der Anwendung selbst übernommen.
•
Nutzung für Multicast (nicht möglich bei TCP)
Warum überhaupt UDP?
Erst die Hinzunahme eines Ports zu einer Netzwerkadresse kennzeichnet eine Kommunikation eindeutig.
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
28
UDP-Header
Bit Positon
0
8
16
24
Source Port
Destination Port
Message Length
Checksum
31
Data
•
•
•
•
Adressierung der Applikationen über Portnummern
Message­Length gibt die Gesamtlänge (Header + Daten) in 32 Bit Worten an
Checksum (optional!) – IP hat keine Checksumme für den Datenteil, daher kann sie hier eine sinnvolle Ergänzung sein. Ablauf der Berechnung wie bei TCP
Daten werden bei Bedarf auf eine gerade Bytezahl aufgefüllt (da Message Length in 32 Bit Worten angegeben wird)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
29
PenTesting Praktikum
●
Planspiel professionelles Penetration­Testing
●
Kundenaquise ist erfolgt, wir machen:
–
Vertragsgestaltung
–
PenTest
–
Bericht
–
Paper
●
Ab Januar 2005 bis ca. Ende April
●
Hoher Zeitaufwand
●
Bewerbungen bitte per Email an dornseif@informatik, Subject „PenTest“, Deadline: 16.12., 10 Uhr
–
Angabe von vorhandener Erfahrung
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
30
Netzwerk-Sniffen
●
Daten vom Netzwerk lesen ist nicht schwer
–
●
schlecht für unverschlüsselte Daten (z.B. Passwörter)
Tools
–
tcpdump (klassisch)
–
(t)etherreal (neu)
–
dsniff (Kollektion von Tools)
Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke
31
Herunterladen