Skript zur Vorlesung - Vorlesungen

Werbung
Rechnernetze
Vorlesungsskript SS 2002
Jürgen Schönwälder
Version vom 11. Juli 2002
Fachbereich Mathematik/Informatik
Universität Osnabrück
Vorwort
Die Vorlesung Rechnernetze vermittelt grundlegendes Wissen aus dem Bereich der rechnergestützten Kommunikation. Dabei werden schwerpunktmäßig Datenkommunikationsnetze betrachtet und
insbesondere die heutzutage weit verbreiteten Internet-Technologien und die IEEE 802.x Standards
für lokale Netze.
Die Auswahl des Stoffes orientiert sich bewusst an derzeit weit verbreiteten Technologien und Protokollen. Dies geht natürlich zu Lasten von einigen durchaus technisch interessanten alternativen
Ansätzen, die sich aus verschiedenen Gründen aber nicht durchgesetzt haben. Die bewusste Beschränkung auf ausgewählte Technologien und Protokolle erlaubt es, die vorgestellten Verfahren
mehr im Detail zu behandeln. Durch die Auswahl von allgemein verfügbaren Technologien wird es
möglich, im begleitenden Übungsbetrieb praktische Erfahrungen zu sammeln, was einerseits hilft
den Stoff besser zu verstehen und andererseits sich positiv auf die allgemeine Motivation auswirkt.
Einige Teile des Skripts stammen aus der Vorlesung Einführung in Betriebssysteme und Netze“,
”
die ich im Wechsel mit Prof. Dr. M. Zitterbart an der TU Braunschweig gehalten habe. Andere Teile
basieren auf der umfangreichen Literatur, die zum Thema Rechnernetze verfügbar ist und in den
einzelnen Kapiteln referenziert wird. Für eine tiefer gehende Auseinandersetzung mit dem Stoff
ist es jedoch oftmals notwendig, sich mit den Standards selbst auseinander zusetzen. Daher gibt in
jedem Abschnitt auf die entsprechenden Standards.
Interessant ist vielleicht noch zu erwähnen, dass dieses Skript unter massivem Einsatz von Datenkommunikationsnetzen entstanden ist. Während ich in Osnabrück an diesem Skript arbeite, liegen
viele der Texte und Abbildung auf Rechnern in Braunschweig und fast schon natürlich wandern alle
Daten ständig zwischen diesen Orten und diversen Druckern und Web-Servern hin und her. Diese
Arbeitsweise wäre vor zwanzig Jahren kaum praktikabel gewesen. Vor zehn Jahren wäre es wohl
prinzipiell schon gegangen, aber man hätte sicher einiges an zusätzlichem Aufwand leisten und
an Geduld mitbringen müssen. Man darf also gespannt sein, wie sich unsere Arbeitsweisen in den
nächsten zehn oder zwanzig Jahren aufgrund der sich weiter entwickelnden Rechnernetze ändern
werden.
Bedanken möchte ich mich an dieser Stelle bei allen Studenten, die durch kritische Fragen dazu beigetragen haben, dass dieses Skript etwas weniger Fehler enthält und hoffentlich besser verständlich
geworden ist.
Jürgen Schönwälder
Inhaltsverzeichnis
1
Grundlagen
1.1 Topologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Übertragungsmedien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Einfache Leitungen . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Verdrillte Kupferleitungen . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Koaxialkabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4 Lichtwellenleiter . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5 Funkwellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Codierung digitaler Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Return-to-Zero (RZ) Codierung . . . . . . . . . . . . . . . . . . . .
1.3.2 Non-Return-to-Zero (NRZ) Codierung . . . . . . . . . . . . . . . . .
1.3.3 Differentielle Codierung . . . . . . . . . . . . . . . . . . . . . . . .
1.3.4 Manchester Codierung . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.5 Alternate Mark Inversion (AMI) Codierung . . . . . . . . . . . . . .
1.4 Fehlererkennung und -korrektur . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Fehlererkennende Codes . . . . . . . . . . . . . . . . . . . . . . . .
1.4.2 Fehlerkorrigierende Codes . . . . . . . . . . . . . . . . . . . . . . .
1.5 Medienzugang und Medienzuteilung . . . . . . . . . . . . . . . . . . . . . .
1.5.1 Frequenzmultiplex . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 Zeitmultiplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 Aloha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.4 Carrier Sense Multiple Access (CSMA) . . . . . . . . . . . . . . . .
1.5.5 Carrier Sense Multiple Access with Collision Detection (CSMA/CD)
1.5.6 Multiple Access with Collision Avoidance (MACA) . . . . . . . . .
1.5.7 Tokenverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Zusammenhangsbesonderheiten . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 Sequenznummern . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 Quittungen und Sendewiederholungen . . . . . . . . . . . . . . . . .
1.6.3 Zeitüberwachung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.4 Flusskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.5 Staukontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7 Netzwerk-Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.1 Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.2 Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.3 Namen und Adressen . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.4 ISO/OSI Schichtenmodell . . . . . . . . . . . . . . . . . . . . . . .
1.7.5 Internet Schichtenmodell . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
5
7
7
8
8
9
11
12
12
13
13
14
15
15
18
19
19
20
21
21
22
23
23
25
25
26
27
27
29
30
30
30
31
33
35
INHALTSVERZEICHNIS
1.8
2
3
4
Standardisierung . . . . . . . .
1.8.1 ISO Standardisierung . .
1.8.2 Internet Standardisierung
1.8.3 IEEE Standardisierung .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
36
37
38
Lokale Netze nach IEEE 802
2.1 Logical Link Control (IEEE 802.2) . . . . . .
2.2 Ethernet (IEEE 802.3) . . . . . . . . . . . .
2.2.1 Physikalische Schicht . . . . . . . . .
2.2.2 MAC-Schicht . . . . . . . . . . . . .
2.3 Fast-Ethernet (IEEE 802.3U) . . . . . . . . .
2.4 Gigabit-Ethernet (IEEE 802.3Z) . . . . . . .
2.5 10 Gigabit-Ethernet (IEEE 802.AE) . . . . .
2.6 Wireless LANs (IEEE 802.11) . . . . . . . .
2.7 Brücken . . . . . . . . . . . . . . . . . . . .
2.7.1 Transparente Brücken (IEEE 802.1D)
2.8 Virtuelle LANs (IEEE 802.1Q, IEEE 802.1P)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
40
40
40
41
44
44
44
44
45
47
49
Internet Netzwerkschicht
3.1 Grundlagen . . . . . . . . . . . . . . . . . . .
3.1.1 Entwicklung des Internets . . . . . . .
3.1.2 Internet Prinzipien . . . . . . . . . . .
3.1.3 Terminologie . . . . . . . . . . . . . .
3.1.4 Autonome Systeme . . . . . . . . . . .
3.1.5 Geltungsbereiche von Internet Adressen
3.2 Internet Protokoll Version 4 . . . . . . . . . . .
3.2.1 IPv4 Adressen . . . . . . . . . . . . .
3.2.2 IPv4 Paketformat . . . . . . . . . . . .
3.2.3 IPv4 Weiterleitung . . . . . . . . . . .
3.2.4 IPv4 Fehlerbehandlung (ICMPv4) . . .
3.2.5 MTU Path Discovery . . . . . . . . . .
3.2.6 IPv4 über IEEE 802.3 . . . . . . . . .
3.2.7 Adressumsetzung (ARP, RARP) . . . .
3.2.8 Automatische Konfiguration (DHCP) .
3.3 Internet Protokoll Version 6 . . . . . . . . . . .
3.3.1 IPv6 Adressen . . . . . . . . . . . . .
3.3.2 IPv6 Paketformat . . . . . . . . . . . .
3.3.3 IPv6 Erweiterungen . . . . . . . . . .
3.3.4 IPv6 Weiterleitung . . . . . . . . . . .
3.3.5 IPv6 Fehlerbehandlung (ICMPv6) . . .
3.3.6 IPv6 über IEEE 802.3 . . . . . . . . .
3.3.7 IPv6 Neighbor Discovery . . . . . . . .
3.4 Wegwahlverfahren . . . . . . . . . . . . . . .
3.4.1 Routing Information Protocol (RIP) . .
3.4.2 Open Shortest Path First (OSPF) . . . .
3.4.3 Border Gateway Protocol (BGP) . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
53
53
54
54
55
55
56
56
57
58
59
61
61
62
62
65
65
65
66
70
70
71
71
76
76
78
81
Internet Transportschicht
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
83
INHALTSVERZEICHNIS
4.1
4.2
4.3
4.4
5
Pseudo-Header . . . . . . . . . . . . . . . . .
User Datagram Protocol (UDP) . . . . . . . . .
Transmission Control Protocol (TCP) . . . . .
4.3.1 Verbindungsaufbau . . . . . . . . . . .
4.3.2 Verbindungsabbau . . . . . . . . . . .
4.3.3 Zustandsmaschine . . . . . . . . . . .
4.3.4 Flusskontrolle . . . . . . . . . . . . . .
4.3.5 Staukontrolle . . . . . . . . . . . . . .
4.3.6 Optionen . . . . . . . . . . . . . . . .
Stream Control Transmission Protocol (SCTP) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Internet Anwendungsschicht
5.1 Domain Name System (DNS) . . . . . . . . . . . . .
5.1.1 Format von Domain Namen . . . . . . . . . .
5.1.2 Resource Records . . . . . . . . . . . . . . . .
5.1.3 DNS Nachrichtenformat . . . . . . . . . . . .
5.2 Abstract Syntax Notation One (ASN.1) . . . . . . . .
5.2.1 Grundlagen . . . . . . . . . . . . . . . . . . .
5.2.2 ISO-Registrationsbaum . . . . . . . . . . . . .
5.2.3 Primitive ASN.1 Datentypen . . . . . . . . . .
5.2.4 Zusammengesetzte ASN.1 Datentypen . . . .
5.2.5 Einschränkungen von Datentypen . . . . . . .
5.2.6 ASN.1 Tags . . . . . . . . . . . . . . . . . . .
5.2.7 Beispiel für eine ASN.1 Definition . . . . . . .
5.2.8 Basic Encoding Rules (BER) . . . . . . . . . .
5.3 Simple Network Mangement Protocol (SNMP) . . . .
5.3.1 Grundlagen . . . . . . . . . . . . . . . . . . .
5.3.2 Structure of Management Information (SMIv2)
5.3.3 Grundlegende MIB Module . . . . . . . . . .
5.3.4 Protokollarchitektur . . . . . . . . . . . . . .
5.3.5 Nachrichtenformat . . . . . . . . . . . . . . .
5.4 Lightweight Directory Access Protocol (LDAP) . . . .
5.5 Augmented Backus-Naur Form (ABNF) . . . . . . . .
5.5.1 Regelnamen und Terminalsymbole . . . . . . .
5.5.2 Operatoren . . . . . . . . . . . . . . . . . . .
5.5.3 Kerndefinitionen . . . . . . . . . . . . . . . .
5.5.4 ABNF in ABNF . . . . . . . . . . . . . . . .
5.6 Simple Mail Transfer Protocol (SMTP) . . . . . . . .
5.6.1 Grundlagen . . . . . . . . . . . . . . . . . . .
5.6.2 Kommandos und Antworten . . . . . . . . . .
5.6.3 Nachrichtenköpfe . . . . . . . . . . . . . . . .
5.6.4 Multipurpose Internet Mail Extensions (MIME)
5.7 Internet Message Access Protocol (IMAP) . . . . . . .
5.7.1 Identifikation und Zustände . . . . . . . . . .
5.7.2 Zustände . . . . . . . . . . . . . . . . . . . .
5.7.3 Kommandos . . . . . . . . . . . . . . . . . .
5.7.4 Tagging . . . . . . . . . . . . . . . . . . . . .
5.7.5 Nachrichtenformat . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
84
84
85
86
87
87
88
88
88
88
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
89
89
90
91
91
95
95
96
96
97
97
97
98
101
104
104
107
111
113
116
122
123
123
123
124
125
127
127
128
131
131
134
134
134
135
136
137
INHALTSVERZEICHNIS
5.8
5.9
Hypertext Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . . . . . . . 138
File Transfer Protocol (FTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
A Packet Capturing
141
A.1 BSD Packet Filter (BPF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
A.2 libpcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
A.3 jpcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
B Fragen zur Selbstkontrolle
147
Kapitel 1
Grundlagen
Kommunikationsnetze haben sich in den letzten Jahren zu einer allgegenwärtigen Schlüsseltechnologie entwickelt und bilden die Grundlage der in der Entstehung befindlichen Informationsgesellschaft. Entsprechend hat sich die Telematik (Telekommunikation und Informatik) als ein Teilgebiet
der Informatik entwickelt, das sich mit der Kommunikation von Daten unter der Nutzung technischer Mittel über räumliche Entfernungen befasst.
Geschichte der Kommunikations- und Datennetze:
• Fackeltelegraphie (5. Jhdt v. Chr. Griechenland)
• Drahtgebundene elektrische Telegraphie (ca. 1840, Morse, USA)
• Unterseekabel London - New York (1866)
• Telefon (Bell 1876, Edison 1877)
• Öffentliche Telefonnetze (ab 1880)
• Drahtlose Telegraphie (ab 1895)
• ARPANET (vorläufer des Internet, ab 1969)
• Ethernet als erstes lokales Netz (ab 1976)
• World-Wide-Web (ab 1990)
Da es eine sehr große Vielfalt von Kommunikationsnetzen gibt, die nicht alle in einer Vorlesung
behandelt werden können, beschränkt sich dieses Skript bewusst auf die klassischen Rechnernetze (computer networks) zur Datenkommunikation. Unter Datenkommunikation versteht man den
Austausch von Daten zwischen datenverarbeitenden Geräten. Die Telekommunikation, d.h. der
Austausch von Informationen (z.B. Sprache, Video) zwischen Menschen, wird bewusst hier nicht
schwerpunktmäßig behandelt. Das Ziel dieser Vorlesung ist vielmehr die Vermittlung von grundlegendem Wissen aus dem Bereich der rechnergestützten Kommunikation.
Rechnernetze werden in der Regel konstruiert um ein oder mehrere der folgenden Ziele zu erreichen:
• Lastverbund: Ziel ist die gleichmäßige Auslastung verschiedener Betriebsmittel. Typischerweise werden dazu Spitzenlasten auf mehrere Rechner verteilt.
1
2
KAPITEL 1. GRUNDLAGEN
• Leistungsverbund: Ziel ist die Verringerung von Antwortzeiten. Dazu werden komplexe Aufgaben in wenige komplexe Teilaufgaben zerlegt, die von mehreren Rechnern bearbeitet werden können.
¨
• Kommunikationsverbund: Ziel ist die ”Ubertragung
von Informationen an verschiedene räumlich getrennte Orte. Typischerweise werden dazu elektronische Postsysteme und verteilte Informationssysteme eingesetzt.
• Datenverbund: Ziel ist der Austausch von logisch zusammenhängenden Daten zwischen örtlich getrennten Systemen. Typische Methoden sind verteilte Dateisysteme und verteilte Datenbanken.
• Wartungsverbund: Ziel ist die schnellere und billigere Wartung verschiedener Rechner. Eine
typische Realisierung ist ein zentrale und entsprechend qualifizierte Störungserkennung und
-behebung.
• Funktionsverbund: Ziel ist die Bereitstellung von speziellen Funktionen an verschiedenen
Orten. Dabei handelt es sich typischerweise um den Einsatz von Spezialrechnern.
• Kapazitätsverbund: Ziel des Kapazitätsverbunds ist die effiziente Nutzung von verfügbaren
Betriebsmitteln. Die bedeutet typischerweise die gemeinsame Nutzung von spezieller Hardund Software und die Verteilung von Aufgaben an momentan freie Rechenkapazitäten.
1.1
Topologien
Stern
Ring
Vermaschtes Netz
Bus
Liniennetz
Abbildung 1.1: Grundlegende Netztopologien
Für das Verständnis von Rechnernetzen ist normalerweise Wissen über die verwendete Topologie
notwendig. Man unterscheidet folgende grundlegende Topologien (Abbildung 1.1):
• Stern: Alle Knoten sind direkt an einem zentralen Knoten angeschlossen. Stern-Topologien
vereinfachen die Wegwahl und besitzen eine gute Ausfallsicherheit sofern der zentrale Knoten hinreichend zuverlässig ist.
3
1.1. TOPOLOGIEN
• Ring: Alle Knoten sind ringförmig miteinander verbunden. Sehr einfache Wegwahl, allerdings geringe Ausfallsicherheit und hoher Aufwand bei eventuell notwendigen Rekonfigurationen.
• Vermaschtes Netz: Jeder Knoten ist mit jedem anderen Knoten direkt verbunden. Gute Ausfallsicherheit und keine Vermittlung notwendig. Allerdings sind n(n−1)
Verbindungen bei n
2
Knoten notwendig.
• Bus: Alle Knoten sind an einem gemeinsamen Medium (Bus) angeschlossen. Insgesamt gute
Ausfallsicherheit solange der Bus funktionsbereit ist.
• Liniennetz: Konzeptionell einfache Topologie mit mittlerer Ausfallsicherheit. Die Position
im Netz beeinflusst Übertragungszeiten. Liniennetze spielen für den Spezialfall von n = 2
Knoten eine große Rolle (Punkt-zu-Punkt Verbindungen).
Aus diesen grundlegenden Topologien werden in der Regel komplexere Strukturen zusammengesetzt. Man spricht dann von gekoppelten Netzen oder einem Internet1 . Typische Realisierungen sind
sogenannte Backbone-Netze, bei denen mehrere Teilnetze durch einen Backbone miteinander verbunden werden.
Abbildung 1.2: Backbone-Netze
Typischerweise sind Backbone-Netze hierarchisch organisiert. Insbesondere in Bürogebäuden hat
sich eine strukturierte Verkabelung (structured cabling) durchgesetzt, bei der auf jeder Etage ein
(ggf. komplexes) Netzsegment realisiert wird und die einzelnen Segmente der Etagen durch ein
Backbone-Netz miteinander verbunden werden. Auf den Etagen findet man in der Regel sternförmige Netze. Müssen mehrere Gebäude miteinander vernetzt werden, so wird ein zusätzliches Netz als
Verbindung zwischen den Gebäuden realisiert. Wesentlich bei der strukturierten Verkabelung ist
die genormte Verkabelung möglichst unabhängig von der zum Einsatz kommenden Netztechnik
(anwendungsneutrale Verkabelung).
1
Im Englischen unterscheidet man zwischen einem internet (beliebiger Zusammenschluss von Netzen) und dem Internet (Zusammenschluss von Netzen unter Verwendung der Internet-Protokolle). Im deutschen ist diese feine Unterscheidung leider nicht so einfach umzusetzen.
4
KAPITEL 1. GRUNDLAGEN
Abbildung 1.3: Struktur des Hochschulnetzes der Universität Onabrück
1.2. ÜBERTRAGUNGSMEDIEN
5
Man geht derzeit von folgenden Lebensdauern aus:
• Verteilerräume und Kabelwege (20-40 Jahre)
• Lichtwellenleiter (ca. 15 Jahre)
• Kupferverkabelung (ca. 8 Jahre)
• Verkabelung sollte drei Generationen von aktiven Netzkomponenten überleben
Weitere Details finden sich in der DIN Norm EN 50173:2000 beziehungsweise in dem internationalen Standard ISO/IEC 11801.
Die Verbindung der Netzsegmente geschieht durch Koppelelemente. Man unterscheidet die folgenden Koppelelemente:
• Verstärker (Repeater) sind Koppelelemente, die im wesentlichen nur das Signal verstärken
um dadurch die Überbrückung größerer Distanzen erlauben.
• Brücken (Bridges) können Rahmen einer Familie von verwandten Netzen umwandeln und
weiterleiten.
• Router versuchen Pakete in Richtung des Ziel weiterzuleiten, wobei man sich in der Regel
innerhalb eines logischen Netzes befindet und die Weiterleitung aufgrund einer Auswertung
der Adresse realisiert ist.
• Switche leiten ebenfalls Pakete in Richtung des Ziels weiter. Im Vergleich zu Routern werden
spezielle Datenfelder des Pakets direkt zur Ermittlung der ausgehenden Netz-Schnittstelle
benutzt und es findet keine Auswertung der Adresse statt.
• Protokollkonverter (Gateways) verbinden Netze, die ähnliche Dienste mit sehr unterschiedlichen Protokollen bereitstellen. Ein Gateway versucht die Nachrichten eines Protokolls in die
Nachrichten eines anderen Protokolls zu konvertieren.
Koppelelemente können nicht strikt klassifiziert werden, da die Übergänge fließend sind. Insbesondere von Herstellern wird gern der Begriff Switch verwandt — auch wenn der für eine bestimmte
Technologie korrekte Term Bridge oder Router wäre.
Neben der physikalischen Topologie, die durch die Art der Vernetzung gegeben ist, gibt es in der
Regel weitere logische Topologien. Beispielsweise kann auf einem physikalischen Bus ein logischer
Ring existieren oder auf einem physikalischen Stern ein logisch vollständig vermaschtes Netz. Es
ist daher immer wichtig, sich über die aktuelle Betrachtungsart bewusst zu sein.
1.2
Übertragungsmedien
Die Übertragung von Daten erfolgt in einem nachrichtentechnischen Kanal wie er in Abbildung 1.4
dargestellt ist. Ein nachrichtentechnischer Kanal besteht aus einem Umformer, einem Rückformer,
einem physikalischen Medium und einer Störquelle. Das Medium überbrückt die räumliche Distanz
zwischen Quelle und Senke. Das beim Rückformer eintreffende Signal y 0 (t) ist durch den zeitlichen
Verlauf von x0 (t) und der Störgröße z 0 (t) bestimmt.
6
KAPITEL 1. GRUNDLAGEN
Quelle
Senke
Prim"ares Signal x(t)
Prim"ares Signal y(t)
Umformer
R"uckformer
Signal x’(t)
Signal y’(t)
Physikalisches Medium
St"orquelle z’(t)
Abbildung 1.4: Nachrichtentechnischer Kanal
Signale werden in einem nachrichtentechnischen Kanal durch folgende Effekte gestört:
• Dämpfung (attenuation):
Bei der Ausbreitung eines Signals nimmt die Signalstärke (Amplitude) abhängig von der
Frequenz des Signals ab. Entsprechend sind Übertragungsmedien in ihrer Länge begrenzt und
man benötigt Signalverstärker (amplifier, repeater) um die Signale über größere Strecken zu
transportieren. Die Dämpfung wird in Dezibel (dB) gemessen - das logarithmische Verhältnis
der gesendeten und empfangenen Signalstärke.
• Bandbreite (bandwidth):
Die Bandbreite eines Kanals ist in der Regel durch die Eigenschaften des Mediums oder durch
die diskrete Abtastung eines analogen Signals beschränkt. Gelegentlich wird die Bandbreite
auch künstlich beschränkt (klassische Telefone übertragen nur Schallwellen im Bereich 300600 Hz).
• Verzögerungsverzerrung (delay distortion):
Die verschiedenen Komponenten eines komplexen Signals breiten sich nicht alle mit derselben Geschwindigkeit aus. Entsprechend kommt es beim Empfänger zu einer Verzerrung
und ggf. sogar zu einer Interferenz der Signalanteile verschiedener aufeinanderfolgender Bits
(intersymbol interference).
• Rauschen (noise):
In Übertragungsmedien existiert ein Rauschen, auch wenn keine Signale gesendet werden.
Diese Rauschen wird durch verschiedene physikalische Effekte erzeugt, kann aber auch durch
die Verlegung der Leitungen bewirkt werden (z.B. Übersprechen durch elektromagnetische
Einstrahlung von anderen Leitungen, Reflektionen am Leitungsende). Nach Shannon-Hartley
gilt für die Datenrate C
S
C = W log2 1 +
N
wobei W die Bandbreite ist, S die mittlere Signalstärke und N die mittlere Rauschstärke.
Das logarithmische Verhältnis der Signalstärken
S
N
wird auch als Signal-Rausch-Abstand (signal-to-noise ratio) bezeichnet.
SN R = 10 log10
7
1.2. ÜBERTRAGUNGSMEDIEN
Die typischen Kenngrößen eines nachrichtentechnischen Kanals sind:
• Die Datenrate (Bitrate) beschreibt die übertragbare Datenmenge pro Zeiteinheit (z.B. 100
Mbit/s). Oftmals handelt es sich um theoretische Werte, die im aktuellen Betrieb nicht erreicht
werden.
• Mit dem Begriff Bitbreite bezeichnet man die Zeit, die zur Übertragung eines Bits benötigt
wird (ca. 1 Mikrosekunde für 1 Mbit/s).
• Die Verzögerung (delay) oder auch die Transferzeit ist die Zeit, die benötigt wird, um eine
Nachricht von der Quelle komplett zur Senke zu übertragen. Sie besteht wiederum aus der
Signallaufzeit (propagation delay) und der Übertragungszeit (transmission delay).
1. Bit
letztes Bit
Transferzeit
Signallaufzeit
Abbildung 1.5: Verzögerungen in einem nachrichtentechnischen Kanal
Mit diesen nachrichtentechnischen Grundlagen im Hintergrund sollen nun einige wichtige Übertragungsmedien betrachtet werden. Der Typ des Mediums ist wichtig, da dadurch die maximale
Anzahl von Bits festlegt wird, die pro Sekunde übertragen werden kann (bits per second, bps).
1.2.1
Einfache Leitungen
Einfache Leitungen bestehen aus Kupferadern, die in der Regel mit einem festen Abstand zueinander in einem Plastikmantel untergebracht sind. Derartige Leitungen eignen sich zum Anschluss
von Geräten über kurze Entfernungen (bis zu 50 Meter) und mit einer geringen Datenrate. Einfache
Leitungen sind relativ störanfällig (z.B. durch Übersprechen).
1.2.2
Verdrillte Kupferleitungen
Verdrillte Kupferleitungen (twisted pair) bestehen aus einem Adernpaar, das in sich selbst verdreht
ist. Durch das verdrillen der Leitungen verringert man die Störungsempfindlichkeit und insbesondere das Übersprechen.
Abbildung 1.6: Verdrillte Kupferleitungen (twised pair)
8
KAPITEL 1. GRUNDLAGEN
Das Telefonnetz besteht im Anschlussbereich aus verdrillten Kupferleitungen, die Frequenzen bis
zu 4 kHz über mehrere Kilometer übertragen können. Auf kürzeren Entfernung können auch Datenraten im Bereich von mehreren Millionen bps (mbps) erreicht werden. Bei Telefonleitungen liegt
die Fehlerwahrscheinlichkeit bei ca. 10−5 .
Nicht-abgeschirmte verdrillte Kupferkabel (unshielded twisted pair, UTP) der Kategorie 3 bestehen aus vier Paaren von verdrillten Leitungen, die durch einen Plastikmantel zusammengehalten
werden. Bis 1988 war eine Verkabelung von Gebäuden mit UTP Kategorie 3 Standard. Heutzutage
verwendet man UTP der Kategorie 5, bei denen die Leitungspaare öfter mitaneinander verdreht sind
und die daher eine bessere Qualität bieten.
Es existieren auch abgeschirmte verdrillte Kupferkabel (shielded twisted pair, STP), bei denen eine Abschirmung Störeinflüsse reduziert. Allerdings spielen STP-Kabel bisher eine untergeordnete
Rolle.
1.2.3
Koaxialkabel
Ein generelles Problem bei verdrillten Leitungen ist die hohe Dämpfung bei hohen Frequenzen.
Dieses Problem bekommt man durch Koaxialkabel (coaxial cable) in den Griff. Sie bestehen aus einer dicken inneren Kupferader, die von einer Isolierung und einem Metallgeflecht umgeben ist. Das
Metallgeflecht hält äußere Störungen von der inneren Leitung fern und ermöglicht die Übertragung
von hohen Frequenzen.
Isolation
Leiter
Abschirmung
Schutzmantel
Abbildung 1.7: Koaxialkabel (coaxial cable)
Mit Koaxialkabeln lassen sich Datenraten bis zu 500 mbps über einige Kilometer mit einer Fehlerwahrscheinlichkeit von 10−7 erreichen. Typische Anwendungen sind das Kabelfernsehen und
lokale Netze.
1.2.4
Lichtwellenleiter
Wesentlich höhere Datenraten als Koaxialkabel bei geringeren Fehlerwahrscheinlichkeiten liefern
Lichtwellenleiter (fibre optics) in denen Lichtwellen übertragen werden. Lichtwellenleiter beruhen
auf dem physikalischen Prinzip der Totalreflexion bzw. der Brechung des Lichts an der Grenzschicht
zweier optisch transparenter Medien mit verschiedenen Brechungszahlen.
Mantel
Kern
H"ulle
Schutzmantel
Abbildung 1.8: Lichtwellenleiter (optical fiber)
1.2. ÜBERTRAGUNGSMEDIEN
9
Ein Lichtwellenleiter besteht aus einem Kern (typischerweise Quarzglas) und einem Mantel mit
einer geringeren Brechungszahl. Ein Lichtstrahl, der auf die Stirnfläche des Faserkerns trifft, wird
entweder exakt entlang der Faserachse geführt oder beim Auftreffen auf die Grenzschicht zwischen
dem Kern und dem Mantel gebrochen und ggf. reflektiert.
Bei den Lichtwellenleitern unterscheidet man zwischen Monomode-Fasern und Multimode-Fasern:
• Multimode-Fasern haben einen relativ dicken Kern (20-50 Mikrometer Durchmesser) und
bewirken eine fortlaufende Brechung und Reflexion des Lichtsignals, was natürlich den Ausgangsimpuls verschlechtert.
• Durch eine graduelle Änderung der Brechungszahl in einer Multimode-Faser kann der Verlust
etwas verringert werden.
• Bei Monomode-Fasern ist der Kern dünner (2-10 Mikrometer) und das Signal breitet sich
entlang des Kerns aus.
Lichtwellenleiter bieten viele Vorteile:
• Lichtwellenleiter ermöglichen extrem hohe Datenraten, die derzeit in der Regel nur durch die
Wandler begrenzt sind, die elektrische Signale in optische Signale umwandeln.
• Die Dämpfung ist gering wodurch relativ große Distanzen ohne Verstärker überbrückt werden
können.
• Lichtwellenleiter sind immun gegen elektromagnetische Störungen und können daher ohne
Probleme in Umgebungen betrieben werden, in denen starke elektromagnetische Störungen
auftreten können..
• Das Abhören bzw. Anzapfen eines Lichtwellenleiters ist relativ aufwendig.
• Der Anschluss von optischen Kabel erfolgt entweder über optische Steckverbindungen oder
durch ein sauberes Trennen und Verschmelzen der Faserkerne. Die zweite Methode erzeugt
weniger Signalverluste, erfordert aber sehr viel Übung und spezielle Werkzeuge.
• Lichtwellenleiter sind sehr dünn (ein Kern hat ungefähr den Durchmesser eines menschlichen Haares). Im Vergleich zu Kupferkabeln sind Lichtwellenleiter sehr platzsparend und
wesentlich leichter.
Lichtwellenleiter werden grundsätzlich als uni-direktionale Leiter betrieben. Entsprechend werden
für einen bi-direktionalen Kanal zwei Lichtwellenleiter benötigt.
Obwohl sich Lichtwellenleiter bei großen Netzen durchgesetzt haben, werden im Zugangsbereich
weiterhin elektrische Leitungen verwendet. Der Grund hierfür ist die billigere Anschlusstechnik, da
Umwandlungen von elektrischen Signalen in optische Signale und zurück vermieden werden.
1.2.5
Funkwellen
Die drahtlose Datenübertragung hat in den letzten Jahren stark an Bedeutung zugenommen. Drahtlose Systeme sind immer dann sinnvoll, wenn die Verlegung von Kabeln unmöglich oder sehr teuer
ist oder wenn besondere Kommunikationsbedürfnisse existieren (z.B. jederzeit erreichbar zu sein).
10
KAPITEL 1. GRUNDLAGEN
f(Hz) 10 0
10 2
10 4
10 6
Radiowellen
10 8
10 10
Mikrowellen
10 12
10 14
Infrarotwellen
10 16
10 18
UV
10 20
10 22
R"ontgenwellen
10 24
Gammawellen
Lichtwellen
f(Hz)
10
4
10
6
10
8
Twisted Pair
10
10
10
12
Satelliten
10
14
10
LWL
Koaxialkabel
AM
Radio
FM
Radio
Mikrowellen
TV
Abbildung 1.9: Elektromagnetisches Spektrum nach [2]
Abbildung 1.9 zeigt die für eine Datenübertragung zur Verfügung stehenden Frequenzen des elektromagnetischen Spektrums. Nur wenige der verfügbaren Frequenzen können ohne Genehmigung
genutzt werden. Lediglich die Frequenzen im Industrial/Scientific/Medical (ISM) Band (2400-2484
GHz) können ohne Lizenzen weltweit allgemein benutzt werden.
Radiowellen
Die Eigenschaften von Radiowellen sind frequenzabhängig.
• Radiowellen mit niedrigen Frequenzen durchdringen Hindernisse relativ gut, verlieren aber
stark an Signalstärke. Niederfrequente Radiowellen folgen der Krümmung der Erde.
• Radiowellen mit höherer Frequenz sind besser gebündelt, werden aber von Hindernissen reflektiert und von Wasser (Regen) absorbiert. Höherfrequente Radiowellen verbreiten sich geradlinig, werden aber von der Ionosphere reflektiert.
• Generell müssen die verwendeten Frequenzen gut auf den Einsatzzweck abgestimmt sein, da
sonst massive Störungen auftreten können.
Mikrowellen
Mikrowellen breiten sich geradlinig aus. Mit Hilfe von Parabolantennen lassen sich die Strahlen
mit einem guten Signal-Rausch-Abstand bündeln.
• Sende und Empfangsantennen müssen genau ausgerichtet sein. Durch die Erdkrümmung sind
bei größeren Distanzen Umsetzer erforderlich.
• Mit Mikrowellen lassen sich sog. Richtfunkstrecken (line of sight) relativ billig realisieren.
• Hindernisse führen zu merkbaren Signalverlusten. Die Signalstärken sind außerdem stark
abhängig vom Wetter (Nebel/Regen absorbiert Mikrowellen).
16
1.3. CODIERUNG DIGITALER DATEN
11
Infrarotwellen
Infrarotwellen werden erfolgreich zur Kommunikation über sehr kurze Distanzen eingesetzt (Fernsteuerungen).
• Sender und Empfänger sind einfach und billig.
• Eine direkte Sicht zwischen Sender und Empfänger ist notwendig, da Hindernisse Infrarotwellen fast komplett absorbieren.
• Es sind keine Lizenzen notwendig, da Infrarotwellen Hindernisse kaum durchdringen und
dadurch automatisch in der Ausbreitung begrenzt sind.
Lichtwellen
Stark gebündelte Lichtwellen eignen sich ebenfalls zur Datenübertragung. Sie werden meist von
einem Laser erzeugt.
• Erfordern eine extrem genaue Ausrichtung von Sender und Empfänger.
• Qualität abhängig vom Wetter.
• Erfordern aufgrund der starken Fokussierung keine Lizenzen.
1.3 Codierung digitaler Daten
Die Übertragung von digitalen Daten kann entweder parallel oder seriell erfolgen. Bei der parallelen Übertragung wird ein Datenwort (in der Regel ein Byte) in einem Schritt übertragen. Dazu
müssen zwischen Quelle und Senke mehrere Verbindungen parallel geschaltet werden. Bei der seriellen Übertragung wird ein Datenwort in einzelne Bits zerlegt, die nacheinander übertragen werden.
Entsprechend wird nur eine Verbindung zwischen Quelle und Senke benötigt.
Die Anzahl der Signalparameterwechsel pro Sekunde wird als Schrittgeschwindigkeit bezeichnet
und in Baud gemessen (nach Jean Marc Baudot). Bei einem isochronen Takt entspricht die Schrittgeschwindigkeit der Taktrate. Üblich ist auch der Begriff Baudrate für die Schrittgeschwindigkeit.
Die Übertragungsgeschwindigkeit ist im Gegensatz dazu die Anzahl der übertragenen Bits pro Zeiteinheit, gemessen in Bit pro Sekunde (bps). Offenbar ist die Schrittgeschwindigkeit genau dann
gleich der Übertragungsgeschwindigkeit, wenn in jedem Schritt genau ein Bit dargestellt wird.
Es gibt verschiedene Verfahren zur Kodierung von digitalen Daten (sogenannte Leitungskodes),
wobei die folgenden Eigenschaften ein wichtige Rolle spielen:
• Taktrückgewinnung
Den Signalwerten kann neben den Daten auch der Takt des Senders entnommen werden. Die
Taktrückgewinnung ist erforderlich, wenn keine separate Taktleitung zur Verfügung steht.
Der Taktgehalt eines Codes sollte möglichst unabhängig vom Inhalt der übertragenen Daten
sein.
12
KAPITEL 1. GRUNDLAGEN
• Gleichstromanteil
Auf manchen Übertragungsstrecken darf wegen der angeschlossenen Geräte kein Gleichstrom auftreten. Diese Eigenschaft kann meist nicht absolut sondern nur im statistischen Mittel erfüllt werden.
• Resynchronisation
Der Anfang und das Ende einer Übertragung findet häufig asynchron statt. Entsprechend
muss beim Beginn bzw. Ende einer Übertragung der Anfang bzw. das Ende des Datenstroms
identifiziert werden können.
Zur Codierung der digitalen Daten finden binäre Leitungscodes (zwei verschiedene Signalwerte),
ternäre Leitungscodes (drei Signalwerte) oder Blockcodes Verwendung. Bei Blockcodes werden m
Bits als Block zusammengefasst und zu einem neuen Block der Länge n codiert.
1.3.1
Return-to-Zero (RZ) Codierung
Das Return-to-Zero Verfahren ist ein binärer Code, bei dem eine ‘1’ durch einen hohen Signalwert
und eine ‘0’ durch einen niedrigen Signalwert dargestellt wird. Eine ‘1’ wird durch einen Rechteckimpuls in der ersten Hälfte des Bitintervalls dargestellt. Danach wird in der zweiten Hälfte auf
den Grundzustand (zero) zurückgegangen.
0
1
0
0
0
1
1
high
low
Abbildung 1.10: Return-to-Zero Leitungscode
• Baudrate ist im Extremfall doppelt so hoch wie die Bitrate.
• Keine Taktgewinnung möglich bei einer Folge von ‘0’-Werten.
• Der Gleichstromanteil kann relativ hoch sein.
1.3.2
Non-Return-to-Zero (NRZ) Codierung
Das Non-Return-to-Zero Verfahren ist ebenfalls ein binärer Code, bei dem eine ‘1’ durch einen
hohen Signalwert und eine ‘0’ durch einen niedrigen Signalwert dargestellt wird. Im Gegensatz
zum Return-to-Zero Verfahren wird eine ‘1’ bzw. eine ‘0’ durch einen festen Pegelwert während
des Bitintervalls dargestellt. Signalwechsel treten nur an den Intervallgrenzen auf.
• Sehr einfach zu implementieren.
• Keine Taktrückgewinnung möglich.
• Der Gleichstromanteil kann relativ hoch sein.
13
1.3. CODIERUNG DIGITALER DATEN
0
1
0
0
0
1
1
high
low
Abbildung 1.11: Non-Return-to-Zero Leitungscode
1.3.3
Differentielle Codierung
Bei der differentiellen Codierung wird nicht der absolute Signalwert verwendet sondern der Signalwert in Abhängigkeit von der Polarität des vorhergehenden Signalwerts. Beim Non-Return-toZero Inverse (NRZ-I) Verfahren wird der jeweils entgegengesetzte Signalwert zur Darstellung einer
‘1’ verwendet. Eine ‘0’ bewirkt keinen Signalwechsel. Beim Non-Return-to-Zero Space (NRZ-S)
Verfahren findet der Signalwechsel bei einer ‘0’ statt während die ‘1’ keine Signalwertänderung
bewirkt.
0
1
0
0
0
1
1
high
low
0
1
0
0
0
1
1
high
low
Abbildung 1.12: NRZ-I und NRZ-S Leitungscodes
• Signalwechsel sind insbesondere bei Störungen einfacher zu erkennen als Signalpegel.
• Keine Taktrückgewinnung möglich.
• Der Gleichstromanteil kann relativ hoch sein.
1.3.4
Manchester Codierung
Bei der Manchester Codierung wird eine ‘1’ durch einen Signalübergang vom hohen Pegel zum
niedrigen Pegel in der Mitte des Bitintervalls dargestellt. Eine ‘0’ wird durch einen Signalübergang
vom niedrigen Pegel zum hohen Pegel in der Mitte des Bitintervalls dargestellt.
• Kombination aus NRZ codierten Daten mit einem Taktsignal.
• Mindestens ein Signalwechsel pro Bitintervall (Taktrückgewinnung).
• Erfordert eine im Verhältnis zur Bitrate doppelte Baudrate.
14
KAPITEL 1. GRUNDLAGEN
0
1
0
0
0
1
1
high
low
Abbildung 1.13: Manchester Leitungscode
• Keine Gleichstromkomponente.
• Fehlererkennung auf Signalebene (Fehlen eines erwarteten Übergangs).
• Manchester Codierung wird bei lokalen Netzen verwendet.
1.3.5
Alternate Mark Inversion (AMI) Codierung
Bei der Alternate Mark Inversion Codierung (AMI) wird eine ternäre Codierung verwendet. Eine
‘1’ wird abwechselnd durch einen positiven (+) oder einen negativen Impuls (-) dargestellt (Wechselregel). Eine ‘0’ wird durch Null-Pegel (=) dargestellt wird.
0
1
0
0
0
1
1
high
zero
low
Abbildung 1.14: AMI Leitungscode
• Keine Gleichstromkomponente.
• Taktrückgewinnung bei längeren Folgen von Nullen nicht möglich.
• AMI Codierung verwendet die Norm G.703 für die europäischen 2 Mbit/s ISDN Anschlüsse.
Als Lösung für die Taktrückgewinnung kann man für jede vierte Null ein Signal übertragen, dass
die Wechselregel verletzt. Das führt allerdings zu einer Gleichstromkomponente bei langen Folgen
von Nullen. Falls ein ’-’ zuviel gesendet wurde und die nächste Verletzung wieder ein ’-’ ergeben
würde, so wird stattdessen für vier Nullen ’+==+’ kodiert. Analog für den Fall von zu vielen ’+’
Verletzungen. Da die Verletzung der Wechselregel in diesen Fällen schon nach zwei ’==’ auftritt
kann der Empfänger den Bitstrom rekonstruieren.
15
1.4. FEHLERERKENNUNG UND -KORREKTUR
1.4 Fehlererkennung und -korrektur
Bei der Datenübertragung können verschiedene Fehler auftreten. Wir betrachten zunächst Bitfehler,
die während der Übertragung durch Störungen des Signals auftreten können.
1.4.1
Fehlererkennende Codes
Paritätsbits
Die einfachste Form der Fehlererkennung sind sogenannte Paritätsbits, die zusätzlich übertragen
werden. Bei gerader (ungerader) Parität wird die Anzahl der Einsen durch das Paritätsbit auf eine
gerade (ungerade) Anzahl ergänzt. Offensichtlich kann jede ungerade Anzahl von Bitfehlern durch
Paritätsbits erkannt werden.
Zyklische Blocksicherung
Bei der zyklischen Blocksicherung wird eine Prüfsumme über eine Bitfolge (Block) berechnet. Es
werden redundante Prüfbits am Ende eines Blocks übertragen. Zwischen Sender und Empfänger
wird vereinbart, wie diese Blockprüfzeichen zu berechnen sind. Die zyklische Blocksicherung basiert auf folgender Überlegung:
• Eine zu sendende Bitfolge bn bn−1 . . . b1 b0 wird als Polynom B(x) = bn xn + bn−1 xn−1 +
. . . + b1 x + b0 über dem Körper {0, 1} dargestellt.
• Rechenregeln: 0 + 0 = 1 + 1 = 0, 1 + 0 = 0 + 1 = 1 und 1 · 1 = 1, 0 · 0 = 0 · 1 = 1 · 0 = 0
• Ein Generatorpolynom G(x) = gr xr + . . . g1 x + g0 mit gr = 1 und g0 = 1 wird zwischen
Sender und Empfänger vereinbart.
• Übertragen wird U (x) = xr · B(x) + t(x) mit t(x) =
xr · B(x)
mod G(x).
G(x)
• Der Empfänger prüft, ob die gesamte empfangene Bitfolge durch G(x) ohne Rest teilbar ist.
• Das Verfahren ist bei geeigneter Wahl der Generatorpolynome sehr leistungsfähig.
• Grundsätzlich können Fehler, die durch G(x) ohne Rest teilbar sind, nicht erkannt werden.
• Eine effiziente Implementierung ist mit Hilfe von Schieberegistern möglich.
Beispiel für die effiziente CRC-Berechnung durch bitweise exklusiv-oder Verknüpfungen:
• Generatorpolynom G(x) = x3 + x2 + 1 (entspricht der Bitfolge 1101) und die Nachricht
M = 1001 1010 (entspricht dem Polynom B(x) = x7 + x4 + x3 + x).
• Berechnung:
16
KAPITEL 1. GRUNDLAGEN
1001 1010 000 : 1101 = 1111 1001
1101
---100 1
110 1
----10 00
11 01
----1 011
1 101
----1100
1101
---1 000
1 101
----101
• Übertragen wird die Bitfolge 1001 1010 101.
• Der Empfänger prüft die Übertragung durch folgende Berechnung:
1001 1010 101 : 1101 = 1111 1001
1101
---100 1
110 1
----10 00
11 01
----1 011
1 101
----1100
1101
---1 101
1 101
----0
• Das Ergebnis 0 zeigt an, dass kein Fehler erkannt wurde.
Beispiele für gebräuchliche Generatorpolynome:
• Das HEC Polynom G(x) = x8 + x2 + x + 1 findet im ATM Zellenkopf Verwendung.
1.4. FEHLERERKENNUNG UND -KORREKTUR
17
• Das CRC-16 Polynom G(x) = x16 + x15 + x2 + 1 entdeckt alle Einzel- und Doppelfehler,
alle Fehler mit ungerader Bitzahl, alle Fehlerbündel mit 16 oder weniger Bits und über 99%
aller Fehlerbündel mit 17 oder mehr Bits.
• Das CRC-CCITT Polynom G(x) = x16 + x15 + x5 + 1 findet im HDLC Protokoll Verwendung.
• G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
ist unter dem Namen CRC-32 bekannt und findet im Ethernet Verwendung.
Internet Prüfsumme
Im Internet findet eine andere Prüfsumme Verwendung (RFC 1071 [5], RFC 1141 [6], RFC 1624
[7]), die insbesondere für die effiziente Implementation in Software geeignet ist. Die Prüfsumme
wird über einen Datenpuffer berechnet, der aus einer geraden Anzahl von Bytes besteht. (Bei ungerader Anzahl von Bytes wird am Ende ein 0x00 Byte angefügt.) Das Prinzip des Algorithmus zeigt
folgendes Programmfragment:
uint16_t
checksum(uint16_t *buf, int count)
{
uint32_t sum = 0;
while (count--) {
sum += *buf++;
if (sum & 0xffff0000) {
sum &= 0xffff;
sum++;
}
}
return ˜(sum & 0xffff);
}
Eigenschaften der Internet Prüfsumme:
• Die Summation ist kommutativ und assoziativ und kann daher in beliebiger Reihenfolge und
in beliebigen Gruppen erfolgen.
• Die Berechnung der Prüfsumme ist unabhängig von der Byte-Ordnung (wobei allerdings die
Prüfsumme bei vertauschter“ Byte-Ordnung ebenso vertauscht ist).
”
• Auf Maschinen mit einer Wortgröße von mehr als 16 Bit kann die Berechnung parallelisiert
werden.
• Das Verfahren kann in einen Kopiervorgang der Daten integriert werden.
• Einzelne Datenfelder können aktualisiert werden, ohne die Prüfsumme komplett neu berechnen zu müssen.
• Das Verfahren ist heutzutage häufig in Assembler oder sogar in Hardware implementiert.
18
KAPITEL 1. GRUNDLAGEN
1.4.2
Fehlerkorrigierende Codes
Um Fehler nicht nur erkennen sonder auch korrigieren zu können, sind mehr redundante Informationen notwendig.
• Der Hamming-Abstand d(c1 , c2 ) zweiter Codewörter c1 ∈ C, c2 ∈ C und c1 6= c2 eines
Codes C ist definiert als die Anzahl der Bitpositionen, in denen sich die Codewörter c1 und
c2 unterscheiden.
• Der Hamming-Abstand D(C) eines Codes C ist das Minimum über die Hamming-Abstände
der Codewörter:
D(C) = min{d(c1 , c2 )|c1 ∈ C, c2 ∈ C, c1 6= c2 }
• Zur Erkennung und Korrektur von 1-Bitfehlern bei einer Wortlänge von b Bits sind r redundante Prüfbits erforderlich, wobei die Ungleichung (b + r + 1) ≤ 2r erfüllt sein muß.
Konstruktion eines Hamming-Codes:
• Die erforderlichen r Prüfbits werden an den Positionen 2i mit i ∈ {0, . . . , r − 1} untergebracht. Die Werte der Prüfbits ergeben sich aus einer exklusiv-oder Verknüpfung von jeweils
r Datenbits.
• Zur Bestimmung der Datenbits trägt man die binäre Darstellung der Bitpositionen zeilenweise in einer Matrix ein und liest diese Matrix anschließend spaltenweise aus und erhält so die
Nummern der Datenbits, aus denen sich die Prüfbits errechnen.
• Der Empfänger testet auf Fehler durch die lokale Berechnung der Prüfbits aus den Datenbits
und einem Vergleich mit den empfangenen Prüfbits.
• Weichen die Prüfbits voneinander ab, so liefert die exklusiv-oder Verknüpfung des berechneten Prüfbits mit den im Codewort enthaltenen Prüfbits die binäre Darstellung der Bitposition,
an der sich das fehlerhafte Bit befindet.
Beispiel:
c1 = d1 xor d2 xor d4
d1 an Position 3 = 011
c2 = d1 xor d3 xor d4
d2 an Position 5 = 101
c3 = d2 xor d3 xor d4
d3 an Position 6 = 110
d4 an Position 7 = 111
Abbildung 1.15: Konstruktion eines Hamming-Codes
• Wir betrachten m = 4 Datenbits d1 , d2 , d3 , d4 und r = 3 Prüfbits c1 , c2 , c3 . Das Codewort
hat entsprechend die Form c1 c2 d1 c3 d2 d3 d4 an den Bitpositionen 1 bis 7.
19
1.5. MEDIENZUGANG UND MEDIENZUTEILUNG
• Gegeben sind die Datenbits 10102 , d.h. d1 = 1, d2 = 0, d3 = 1, d4 = 0.
• Es ergeben sich die Prüfbits c1 = 1, c2 = 0, c3 = 1 und damit das Codewort 10110102 .
• Empfangen wird das Codewort 10111102 , d.h. d1 = 1, d2 = 1, d3 = 1, d4 = 0.
• Es ergeben sich die Prüfbits c1 = 0, c2 = 0, c3 = 0.
• Die Position des fehlerhaften Bits erhält man aus den Prüfbits: 1012 ⊕ 0002 = 1012 = 510 .
1.5
Medienzugang und Medienzuteilung
Oftmals werden physikalische Übertragungsmedien von mehreren Systemen gemeinsam benutzt.
In diesen Fällen ist es notwendig, den Zugang zum Medium zu regeln.
Medienzuteilung
Zeitmultiplex
vorgegebenes Raster
Frequenzmultiplex
nach Bedarf
dezentral
konkurrierend
zentral
geordnet
Abbildung 1.16: Formen der Medienzuteilung
Abbildung 1.16 zeigt verschiedene Möglichkeiten. Neben der Ausnutzung verschiedener Frequenzen besteht insbesondere die Möglichkeit, das Übertragungsmedium zeitgesteuert den einzelnen
Systemen zuzuordnen. Dies kann nach einem fest vorgegebenen Raster geschehen oder aber bedarfsgesteuert.
1.5.1
Frequenzmultiplex
Bei breitbandigen Übertragungswegen können mehrere getrennte Übertragungskanäle in unterschiedlichen Frequenzbereichen (Frequenzbändern) untergebracht werden (frequency division multiplexing, FDM).
• Die Frequenzbänder müssen nicht unbedingt gleichbreit sein.
• Zwischen den Frequenzbändern sind Schutzbänder untergebracht.
• Jeder Kanal besitzt eine bekannte feste Bandbreite (wichtig für Sprachübertragungen).
• Realisiert wird ein Frequenzmultiplex indem Bitströme auf verschiedene Trägerfrequenzen
moduliert werden, die zusammen über das gemeinsame Medium übertragen werden. Auf
Empfängerseite werden die Frequenzen getrennt und die einzelnen Bitströme rekonstruiert
(demodulation).
20
KAPITEL 1. GRUNDLAGEN
Frequenz
Kanal 1
Kanal 2
Kanal 3
Kanal 4
Kanal 5
Zeit
Abbildung 1.17: Frequenzmultiplex (frequency devision multiplexing)
• Im Zusammenhang mit optischen Leitern spricht man auch von Wellenlängenmultiplex (wave
division multiplexing, WDM), wobei hier passive optische Systeme (Prismen) zur Trennung
der Lichtwellen benutzt werden können.
1.5.2
Zeitmultiplex
Beim starren Zeitmultiplex (time division multiplexing, TDM) wird das Übertragungsmedium den
einzelnen Systemen zeitgesteuert zugeteilt.
Frequenz
Kanal 1
Kanal n
Kanal ...
Kanal 3
Kanal 2
Kanal 1
Kanal n
Kanal ...
Kanal 3
Kanal 2
Zeit
Abbildung 1.18: Zeitmultiplex (time devision multiplexing)
• Die Zeitschlitze müssen nicht unbedingt gleichbreit sein, obwohl sie das oftmals sind.
• Zwischen den zugeteilten Zeitschlitzen sind sogenannte Schutzzeiten.
• Werden die Zeitschlitze nach einer festen Reihenfolge zugeteilt, so bekommt jeder Kanal eine
bekannte feste Bandbreite mit bekannten Verzögerungen (wichtig für Sprachübertragungen).
• Realisiert wird ein starres Zeitmultiplex indem Sender und Empfänger über einen gemeinsamen Takt gesteuert Daten senden und empfangen. Kritisch ist hierbei die Stabilität des
Zeittakts.
• Als Variante kann man ein anforderungsgesteuertes Zeitmultiplex betrachten, bei dem Zeitschlitze nach Bedarf zugeteilt werden (statistical time division multiplexing, STDM). Erfordert im allgemeinen eine Übertragung einer Systemkennung in jedem Zeitschlitz.
21
1.5. MEDIENZUGANG UND MEDIENZUTEILUNG
1.5.3
Aloha
Das Aloha-Verfahren wurde in den 70er Jahren an der Universität von Hawaii entwickelt (was den
Namen erklärt). Die ursprüngliche Version (pure aloha) ist relativ einfach und für Übertragungssysteme geeignet, bei denen alle Stationen der Übertragung mithören und Kollisionen erkennen
können.
Station A:
Station B:
Station C:
Zeit
Abbildung 1.19: Pure Aloha
• Sender übertragen Daten sobald sie möchten.
• Kollisionen sind unvermeidbar, werden aber vom Sender erkannt, da er das Medium während
der Übertragung abhören kann.
• Wenn die Übertragung gestört war, dann wartet der Sender einen zufälligen Zeitraum und
wiederholt dann die Übertragung.
• Die Leistungsfähigkeit ist relativ begrenzt (in der Größenordnung von 18 % der Kanalkapazität). Grund hierfür sind mögliche Ketten von sich teilüberlagernden Datenblöcken.
Etwas bessere Auslastung erreicht man, indem man feste Zeitschlitze einführt (slotted aloha). Sender müssen den Beginn eines Zeitschlitzes abwarten, bevor sie mit der Übertragung beginnen.
Station A:
Station B:
Station C:
Zeit
Abbildung 1.20: Slotted Aloha
• Die Synchronisation lässt sich ggf. durch ein kurzes Kontrollsignal realisieren.
• Durch die Modifikation können Kollisionen nur noch beim Start einer Übertragung auftreten
und Ketten von sich teilüberlagernden Datenblöcken sind nicht mehr möglich.
• Die Leistungsfähigkeit von slotted aloha liegt bei 37 % der Kanalkapazität (deutlich besser
als pure aloha, aber immer noch nicht besonders gut).
1.5.4
Carrier Sense Multiple Access (CSMA)
Eine weitere deutliche Verbesserung von Aloha erhält man durch das Abhören des Mediums bevor eine Station zu senden beginnt. Ziel ist es, nur dann eine Übertragung zu beginnen, wenn das
Medium vermutlich frei ist.
22
KAPITEL 1. GRUNDLAGEN
Station A:
Station B:
Station C:
Zeit
Abbildung 1.21: Carrier Sense Multiple Access
• Bei einem CSMA-Verfahren besteht weiterhin die Möglichkeit einer Kollision, da sich Signale nur entsprechend der Ausbreitungsgeschwindigkeit ausbreiten und daher mehrere Stationen einen freien Kanal vorfinden können und sich dann gegenseitig behindern.
• Kollisionen ergeben sich auch, wenn sendebereite Stationen auf einen freien Kanal warten
und quasi gleichzeitig zu senden beginnen sobald der Kanal frei wird.
• Im Fall einer Kollision wird der Übertragungsversuch nach einer zufälligen Pause wiederholt.
• Bei einem 1-persistenten (1-persistent) CSMA-Verfahren sendet eine sendebereite Station
mit der Wahrscheinlichkeit 1 (also immer) wenn das Medium frei ist.
• Bei einem nicht-persistenten (non-persistent) CSMA-Verfahren warten Stationen bei einem
belegten Kanal ein zufälliges Zeitintervall bevor sie erneut prüfen, ob der Kanal frei ist.
• Bei einem p-persistenten (p-persistent) CSMA-Verfahren sendet eine sendebereite Station
nur mit der Wahrscheinlichkeit p wenn der Kanal frei ist. Mit der Wahrscheinlichkeit 1 − p
wird auf einen weiteren freien Zeitschlitz gewartet (erfordert eine Taktung des Mediums).
1.5.5
Carrier Sense Multiple Access with Collision Detection (CSMA/CD)
Eine weitere Verbesserung kann man erreichen, indem eine Station sofort beim Erkennen einer
Kollision die Übertragung abbricht.
Station A:
Station B:
Station C:
Zeit
Abbildung 1.22: Carrier Sense Multiple Access Collision Detection
• Sei τ die Zeit, die ein Signal aufgrund der Ausbreitungsgeschwindigkeit zwischen zwei maximal entfernten Stationen benötigt. Dann benötigt der Sender im schlechtesten Fall eine Zeit
von 2 · τ um sicher zu sein, dass die Übertragung kollisionsfrei abläuft.
• Im Fall einer Kollision wird der Übertragungsversuch nach einer zufälligen Pause wiederholt.
• Das CSMA/CD-Verfahren ist die Grundlage des IEEE 802.3 Protokolls (Ethernet).
23
1.5. MEDIENZUGANG UND MEDIENZUTEILUNG
1.5.6
Multiple Access with Collision Avoidance (MACA)
In einem Funknetz besteht die Möglichkeit, dass nicht alle Stationen in einer Funkzelle sich gegenseitig erreichen können. Die Verwendung von CSMA in diesem Fall ist problematisch:
• Es seien A, B und C drei Stationen in einer Funkzelle, wobei das Paar A und B miteinander
kommunizieren kann und das Paar B und C. Wenn A Daten an B überträgt, dann kann C
dies nicht beobachten und wird ausgehend von einem freien Kanal ebenfalls Daten an B
übertragen. Die Kollision findet dann beim Empfänger B statt (hidden station problem).
• Erweitert man das Beispiel um eine Station D, wobei D nur in der Reichweite von C ist.
Sendet nun Station B, so entdecken A und C einen belegten Kanal. Die Station C wird daher
nicht an Station D senden, auch wenn dies kein Problem hervorrufen würde (exposed station
problem).
Das grundlegende Problem hier ist, dass eigentlich Informationen benötigt werden, ob der Kanal
in der Umgebung des Empfängers frei ist. Ein CSMA-Verfahren liefert aber nur lokale Informationen. Das MACA-Verfahren löst dieses Problem, indem der Empfänger zunächst zu einer kurzen
Übertragung stimuliert wird.
RTS
CTS
Station A:
Station B:
Station C:
Zeit
Abbildung 1.23: Multiple Access with Collision Avoidance
• Eine sendebereite Station sendet zunächst eine kurze RTS (ready to send) Nachricht an den
Empfänger. Der Empfänger sendet daraufhin eine CTS (clear to send) Nachricht zurück an
die sendebereite Station. Alle Stationen, die entweder RTS oder CTS empfangen, dürfen für
die Dauer der folgenden Übertragung das Medium nicht benutzen.
• Kollisionen können weiterhin auftreten wenn mehrere Stationen gleichzeitig ein RTS senden.
• Im Fall einer Kollision wird der Übertragungsversuch nach einer zufälligen Pause wiederholt.
• Das MACA-Verfahren ist die Grundlage des IEEE 802.11 Protokolls (Wireless LANs).
1.5.7
Tokenverfahren
Als Alternative zu den probabilistischen Verfahren können Tokenverfahren benutzt werden, bei
denen das Senderecht durch ein spezielles umlaufendes Bitmuster (Token) weitergereicht wird.
• Tokenverfahren lassen sich sehr einfach auf einer Ring-Topologie realisieren, da die Umlaufreihenfolge durch den Ring festgelegt ist (Token Ring).
• Auf einer Bus-Topologie kann man einen logischen Ring etablieren auf dem das Token kreist
(Token Bus).
24
KAPITEL 1. GRUNDLAGEN
Station A:
Station B:
Station C:
Zeit
Abbildung 1.24: Tokenverfahren
• Prinzipieller Vorteil von Token-Verfahren ist die Garantie von Tokenumlaufzeiten und damit
ein deterministischer Zugriff auf das Medium.
• Generell ist bei Tokenverfahren darauf zu achten, dass genau ein Token im Umlauf ist. Durch
Ausfälle, Störungen oder die Inbetriebnahme von neuen Stationen darf das Token nicht verloren gehen bzw. verdoppelt werden.
• Tokenverfahren sind die Grundlage des IEEE 802.4 Protokolls (Token Bus) und des IEEE
802.5 Protokolls (Token Ring).
25
1.6. ZUSAMMENHANGSBESONDERHEITEN
1.6 Zusammenhangsbesonderheiten
Neben Bitfehlern können auch Zusammenhangsbesonderheiten zwischen Datenblöcken auftreten:
• Verlust ganzer Datenblöcke
• Ungewollte Duplizierung ganzer Datenblöcke.
• Eintreffen von Phantom-Datenblöcken.
• Vertauschung der Reihenfolge ganzer Datenblöcke während der Übertragung.
1.6.1
Sequenznummern
Die Erkennung von verlorenen oder duplizierten Datenblöcken kann durch die Einführung von
Sequenznummern erfolgen.
Sender
Empf"anger
1
1
2
3
3
4
4
5
6
6
7
5
7
8
4
8
Abbildung 1.25: Sequenznummern
• Alle Datenblöcke werden durch aufsteigende Sequenznummern nummeriert, die mit den Datenblöcken übertragen werden.
• Der Empfänger überprüft die empfangene Sequenznummer und kann dadurch Abweichungen
von der Sendereihenfolge (Überholungen, Vertauschungen, Duplikate) erkennen.
• Der Verlust einer Nachricht kann vermutet werden, wenn die Differenz der Sequenznummer der zuletzt empfangenen Nachricht zu einer noch ausstehenden so groß ist, dass eine
Verzögerung unwahrscheinlich ist.
• Problem: Die Sequenznummern können schnell wachsen und unter Umständen bei zu kleinen
Nummernbereichen schnell überlaufen.
26
KAPITEL 1. GRUNDLAGEN
1.6.2
Quittungen und Sendewiederholungen
Verluste von Datenblöcken können durch Wiederholung der Übertragung korrigiert werden, wenn
man den Sender über den Verlust informieren kann:
Sender
Empf"anger
n
n
ACK n
ACK n
n+1
n+1 (Fehler)
NACK n+1
NACK n+1
n+1
n+1
ACK n+1
ACK n+1
Abbildung 1.26: Quittungen und Sendewiederholungen
• Zur Fehlerbehebung muß der Sender über einen erkannten Fehler informiert werden, damit
der Sender eine Sendewiederholung (retransmission) veranlassen kann.
• Quittungen sind ein Nachrichtenaustausch in Gegenrichtung, um entweder den Sender über
den korrekten Empfang einer Nachricht zu informieren (positive Quittung, acknowledgement, ACK), oder um den Sender über die Entdeckung eines Fehlers zu unterrichten (negative
Quittung, negative acknowledgement, NACK).
• Selektive positive Quittungen (selective acknowledgements, SACKs) beziehen sich auf genau
eine Nachricht oder eine konkrete Menge von Nachrichten. Kumulative Quittungen beziehen
sich in der Regel auf alle Nachrichten bis zu einer angegebenen Sequenznummer.
• Selektive negative Quittungen (selective negative acknowledgements, SNACKs) beziehen
sich auf genau eine Nachricht oder eine konkrete Menge von Nachrichten. Kumulative negative Quittungen beziehen sich in der Regel auf alle Nachrichten ab einer angegebenen Sequenznummer.
• Ein Protokoll, bei dem ein Datenblock nur dann übertragen wird, wenn die Übertragung des
vorherigen Datenblocks bestätigt wurde, nennt man stop-and-go Protokoll.
• Problem: Offensichtlich ist ein stop-and-go Protokoll nicht sehr effizient bezüglich der Leitungsausnutzung wenn die Umlaufzeiten relativ lang sind.
• Problem: Quittungen können verloren gehen, was zu einer Verklemmung führen kann.
27
1.6. ZUSAMMENHANGSBESONDERHEITEN
1.6.3
Zeitüberwachung
Potentielle Verklemmungen kann man durch die Einführung einer Zeitüberwachung (timer) verhindern.
Sender
Empf"anger
n
n
ACK n
n
n
ACK n
ACK n
n+1
n+1
n+1
ACK n+1
ACK n+1
Abbildung 1.27: Zeitüberwachung
• Der Verlust von Nachrichten oder Quittungen kann nicht erkannt werden, wenn der Sender
auf die Quittung des letzten Blocks wartet, bevor er den nächsten sendet, oder wenn der
Empfänger nicht das Ende der Übertragung kennt.
• Eine Zeitüberwachung (timer) beim Sender veranlasst automatisch die Wiederholung der
letzten Nachricht, falls in einem bestimmten Zeitintervall keine Quittung eingetroffen ist.
• Prinzipiell kann auch der Empfänger eine Zeitüberwachung implementieren, die die Wiederholung der letzten Quittung einleitet, wenn bis zum Ablauf der Zeitüberwachung kein
weiterer Datenblock eingetroffen ist.
• Problem: Die Zeitüberwachung muss sich an die aktuelle Verzögerung im Netz anpassen
um einerseits unnötige Wiederholungen zu vermeiden und andererseits Verluste möglichst
schnell zu entdecken.
1.6.4
Flusskontrolle
Man kann in der Regel einen Übertragungskanal besser ausnutzen, wenn der Sender mehrere Datenblöcke senden kann bevor er auf Quittungen wartet. Dabei entsteht aber das grundlegende Problem,
dass der Sender die Sendegeschwindigkeit der Geschwindigkeit des Empfängers anpassen muss,
um einen effizienten Datenfluss zu erreichen. Idealerweise sollte der Datenfluss so gleichmäßig wie
möglich ablaufen.
28
KAPITEL 1. GRUNDLAGEN
Sender
Empf"anger
n+0
n+1
n+2
ACK n+0
n+3
ACK n+1
n+4
ACK n+2
n+5
ACK n+3
n+6
n+4
ACK n+5
n+7
n+6
ACK n+4
n+8
ACK n+7
n+9
ACK n+6
ACK n+8
n+0
ACK n+0
n+1
ACK n+1
n+2
ACK n+2
n+3
ACK n+3
n+5
ACK n+5
n+6
ACK n+6
n+4
ACK n+4
n+7
ACK n+7
n+6
ACK n+6
n+8
ACK n+8
n+9
ACK n+9
ACK n+9
Abbildung 1.28: Unbestätigte Datenblöcke erfordern Sende- und Empfangspuffer
• Wenn der Sender schneller Datenblöcke sendet als der Empfänger Datenblöcke verarbeiten
kann, dann werden beim Empfänger Empfangspuffer überlaufen und dadurch ganze Datenblöcke verloren gehen.
• Analog kann der Sender nur soviele unbestätigte Pakete versenden, wie er in seinem Sendepuffer speichern kann, da beim Ablauf einer Zeitüberwachung die Daten zur Wiederholung
verfügbar sein müssen.
Fenstertechnik
Bei der Fenstertechnik (sliding window) legt der Sender und der Empfänger ein Fenster (window)
über den zur Verfügung stehenden Sequenznummernbereich.
• Der Sender darf nur die Datenblöcke versenden, deren Sequenznummern in dem Sendefenster
liegen. Danach muss auf Quittungen gewartet werden.
• Beim Eintreffen von aufsteigenden Quittungen wird das Fenster auf dem Sequenznummernbereich verschoben (sliding).
• Der Empfänger nimmt nur Datenblöcke entgegen (und puffert sie gegebenenfalls), deren Sequenznummern in dem Empfangsfenster liegen.
• Beim Vorliegen von Datenblöcken mit aufsteigenden Sequenznummern werden die Daten zugestellt und das Empfangsfenster wird auf dem Sequenznummernbereich entsprechend verschoben.
1.6. ZUSAMMENHANGSBESONDERHEITEN
29
• Durch das Aushandeln der Fenstergrößen kann die Senderate auf die Pufferkapazität des
Empfängers eingestellt werden.
• Implementation auf der Senderseite:
– SWS (send window size):
Maximale Anzahl ausstehender Quittungen
– LAR (last ack received):
Sequenznummer des letzten in aufsteigender Reihenfolge quittierten Datenblocks
– LFS (last frame send):
Sequenznummer des letzten gesendeten Datenblocks
Offenbar gilt die Invariante LFS - LAR + 1 ≤ SWS.
• Implementation auf der Empfängerseite:
– RWS (receiver window size):
Maximale Anzahl nicht in Reihenfolge empfangener Datenblöcke
– LFA (last frame acceptable):
Sequenznummer des letzten empfangbaren Datenblocks
– NFE (next frame expected):
Sequenznummer des nächsten in Reihenfolge erwarteten Datenblocks
Offenbar gilt die Invariante LFA - NFE + 1 ≤ RWS.
Ratenbasierte Flusskontrolle
Bei der ratenbasierten Flusskontrolle darf der Sender die Datenblöcke nur mit einer nach oben
begrenzten Rate senden.
• Es existiert ein minimales Zeitintervall zwischen aufeinanderfolgenden Datenblöcken das
nicht unterschritten werden darf.
• Eine ratenbasierte Flusskontrolle vermeidet Büschel (bursts) von schnell aufeinanderfolgenden Datenpaketen.
• Sender und Empfänger müssen das minimale Zeitintervall abhängig von der maximalen
Größe der Datenblöcke und den zur Verfügung stehenden Puffern bestimmen und aushandeln.
1.6.5
Staukontrolle
Die Flusskontrolle regelt den Datenfluss zwischen Sender und Empfänger (end-to-end flow control). Innerhalb des Netzes kann es aber auch auf Zwischensystemen zu Überlastsituationen kommen, sogenannte Staus (congestion). Prinzipiell gibt es folgende Verfahren, um mit Staussituationen
umzugehen:
• Um Staus zu vermeiden können Sender und Empfänger vor dem eigentlichen Datenaustausch
auf dem Weg zwischen Sender und Empfänger genügend Pufferkapazität und Bandbreite
reservieren.
30
KAPITEL 1. GRUNDLAGEN
• Benutzt man keine Reservierungen, so können alternativ Zwischensysteme einfach Pakete
verwerfen, wobei Sender und Empfänger durch entsprechendes Quittungsspiel und Zeitüberwachungen sinnvoll reagieren müssen.
• Ein überlastetes Zwischensystem schickt spezielle Nachrichten (choke pakets), um die Überlastung anzuzeigen und den Sender um eine Reduktion der Sendegeschwindigkeit zu bitten.
1.7 Netzwerk-Architekturen
In diesem Abschnitt werden prinzipielle Architekturkonzepte von Netzwerken eingeführt. Grundlegend ist dabei die Zerlegung von komplexen Kommunikationssysteme in einfachere Teilsysteme
mit wohl definierten Schnittstellen. Die Bildung geschichteter System ist ein grundlegendes Prinzip
zur Strukturierung von Kommunikationssystemen.
1.7.1
Dienste
Die von einem Netz bereitgestellten Funktionen werden zusammen abstrakt als Dienst (service)
bezeichnet.
• Ein Dienst wird über eine Menge von Dienstprimitive (service primitives) in Anspruch genommen. Typische ISO/OSI Dienstprimitive sind:
– Anforderung eines Dienstes (request)
– Anzeige eines Dienstaufrufs (indication)
– Reaktion auf die Dienstanzeige (response)
– Bestätigung über die Erbringung eines Dienstes (confirmation)
• Die Schnittstelle, über die die Dienstprimitive in Anspruch genommen werden können, wird
als Dienstzugangspunkt (service access point, SAP) bezeichnet.
• Die Dienste werden durch sogenannte Instanzen realisiert. Instanzen auf der Schicht N eines
geschichteten Systems werden auch als N -Instanzen bezeichnet.
• Eine strikte Schichtung erfordert, dass N -Instanzen nur Dienste, die von (N − 1)-Instanzen
erbracht werden, für die Realisierung der eigenen Dienste in Anspruch nehmen.
1.7.2
Protokolle
Ein Protokoll (protocol) ist ein Satz von Funktionen, die einen definierten Kommunikationsdienst
erbringen (z.B. fehlerfreie ordnungserhaltende Übertragung von Daten zwischen zwei Stationen).
• Protokolle definieren die Formate und die Bedeutung der ausgetauschten Dateneinheiten
(protocol data units, PDUs).
• Protokolle definieren auch die Regeln nach denen die Dateneinheiten generiert bzw. verarbeitet werden müssen.
1.7. NETZWERK-ARCHITEKTUREN
31
• Die Instanziierung eines Protokolls zur Laufzeit nennt man eine Protokollinstanz. Auf einem
System können mehrere Protokollinstanzen gleichzeitig existieren.
• Für verschiedene Aufgaben stehen jeweils spezialisierte Protokolle bereit. Prinzipiell kann
auch derselbe Dienst durch verschiedene Protokolle realisiert werden.
• Die Spezifikation von Protokollen kann informal (plain english) oder formalisiert durch formale Spezifikationssprachen (Lotos, Estelle, SDL) erfolgen.
1.7.3
Namen und Adressen
Zur Identifikation von Stationen in einem Rechnernetz werden oftmals Namen und Adressen verwendet.
• Ein Name ist eine für Menschen relativ leicht lesbare Kennung eines Systems, wie z.B.
www.informatik.uni-osnabrueck.de.
• Namen sind in der Regel variabel lang und oftmals hierarchisch strukturiert.
• Eine Adresse ist eine für Maschinen relativ gut verarbeitbare Kennung eines Systems, wie
z.B. 134.169.34.192.
• Adressen haben in der Regel eine feste Länge und sind relativ kompakt.
Adressen im ISDN-Telefonnetz
Adressen im ISDN-Telefonnetz sind nach dem Standard E.164 der ITU strukturiert:
• Eine internationale ISDN-Telefonnummer besteht aus maximal 15 Ziffern, wobei die ersten
Ziffern die Länderkennzahl enthalten, gefolgt von dem nationalen Zielcode und schließlich
der Teilnehmernummer.
• An eine internationale ISDN-Telefonnummer kann sich eine bis zu 40 Ziffern lange Unternummer anschließen.
• Die Notation für internationale ISDN-Telefonnummern erfolgt durch ein + Symbol gefolgt
von den Ziffern, die durch Leerzeichen in einzelne Blöcke getrennt werden, wie z.B. die
Nummer +49 541 9692483.
Adressen im Internet
Netzwerkadressen im Internet haben abhängig vom verwendeten Protokoll (IPv4 oder IPv6) entweder eine Länge von 4 Byte oder eine Länge von 16 Byte.
• 4-Byte IPv4 Adressen werden byteweise als Dezimalzahlen notiert, wobei die einzelnen Zahlen durch Punkte voneinander getrennt sind (z.B. 134.169.34.123).
32
KAPITEL 1. GRUNDLAGEN
• 16-Byte IPv6 Adressen werden byteweise als Hexadezimalzahlen notiert, wobei die einzelnen Zahlen durch Doppelpunkte voneinander getrennt sind. Führende Nullen können weggelassen werden, z.B. 1080:0:0:0:8:800:200C:417A. Mit der speziellen Notation ::
kann eine Gruppe von aufeinanderfolgenden 0x0000 Bytepaaren abgekürzt werden, z.B.
1080::8:800:200C:417A. Für den besonderen Fall, dass eine IPv6 Adresse eine IPv4
Adresse enthält, gibt es auch noch eine gemischte Notation, bei der die IPv4 Adresse in
normaler IPv4 Notation in den letzten 4 Bytes des IPv6 Adresse untergebracht wird, z.B.
::13.1.68.3 anstatt 0:0:0:0:0:0:0D01:4403 bzw. ::0D01:4403.
Für weitere Details siehe RFC 1884 [8]. Eine weitere noch kompaktere Notation ist in RFC
1924 [9] beschrieben (lesenswert).
Adressen in IEEE 802 Netzen
Adressen in IEEE 802 Netzen, gelegentlich auch MAC-Adressen genannt, bestehen im allgemeinen
aus 6 Bytes. (Es gibt auch 2 Byte IEEE 802 Adressen, die aber wenig verbreitet sind.)
• Die übliche Notation von IEEE 802 Adressen ist eine Folge von Hexadezimalzahlen (eine
Zahl für jedes Byte der Adresse), wobei die Zahlen durch Doppelpunkte oder Bindestriche
voneinander getrennt sind, z.B. 00:D0:59:5C:03:8A oder 00-D0-59-5C-03-8A.
• Das höchste Bit einer IEEE 802 Adresse zeigt an, ob es sich um eine normale unicast Adresse (0) oder eine multicast Adresse (1) handelt. Eine broadcast Adresse, unter der sich alle
Stationen einer Domain angesprochen fühlen, besteht aus 48 gesetzten Bits.
• Das zweithöchste Bit einer IEEE 802 Adresse bestimmt, ob es sich um eine lokale Adresse
(1) oder eine globale Adresse (0) handelt. Eine lokale Adresse wird administrativ zugewiesen
und ist nur in diesem administrativen Bereich eindeutig während globale Adressen global
eindeutig sind.
• Globale IEEE 802 Adressen werden erzeugt indem die IEEE Nummernbereiche an Hersteller vergibt (identifiziert durch die ersten drei Bytes). Die Hersteller weisen dann von diesen
Nummernbereichen für jede produzierte Netzwerkkarte eine eindeutige Nummer zu.
Namen im Internet
Internet Adressen sind optimiert für technische Systeme und nicht sonderlich geeignet für Menschen. Darum werden zusätzlich Namen eingeführt, die besser an die Bedürfnisse von Menschen
angepasst sind.
• Das Domain Name System (DNS) definiert einen verteilt realisierten hierarchischen Namensraum, der insbesondere die Delegation der Namenszuweisung unterstützt.
• Oftmals spiegelt der DNS-Namensraum die organisatorische Struktur von Organisationen
wieder.
• Bei der Benutzung von Namen findet grundsätzlich eine Namensauflösung statt, bei der zu
einem Namen eine passende IP Adresse gesucht wird.
• Frage: Ist eine Internationalisierung der DNS-Namen sinnvoll? Wie könnte man das technisch
realisieren?
33
1.7. NETZWERK-ARCHITEKTUREN
virtual Root
nl
de
edu
org
net
com
biz
Toplevel
uni−osnabrueck
2nd Level
informatik
3rd Level
www
4th Level
Abbildung 1.29: Struktur der Domain Name System (DNS) Namen
1.7.4
ISO/OSI Schichtenmodell
Anwendungsprozess
Application Process
Endsystem
End System
Application
Darstellung
Presentation
Sitzung
Session
Transportsystem
Transport
Transitsystem
Netzwerk
Network
Network
Sicherung
Data Link
Data Link
Bit"ubertragung
Physical
Physical
Medium
Transport
Media
Abbildung 1.30: ISO/OSI Referenzmodell
Bitübertragungsschicht (physical layer)
• Übertragung einer Folge von Bits über ein Medium.
• Festlegung von Eigenschaften des benutzten Mediums.
• Darstellung der Werte 0 und 1 (z.B. Spannungswerte, Frequenzen).
• Synchronisation zwischen Sender und Empfänger.
Transport System
Anwendungssystem
Anwendung
Aplication System
Das ISO/OSI Schichtenmodell ist das klassische Schichtenmodell. Es wird oft als Referenz benutzt,
daher auch die Bezeichnung OSI Referenzmodell. Reale Datennetze haben in den seltensten Fällen
genau die im Referenzmodell vorgesehenen sieben Schichten.
34
KAPITEL 1. GRUNDLAGEN
• Festlegungen von Steckernormen.
Sicherungsschicht (data link layer)
• Übertragung von Bitfolgen in Rahmen (frames).
• Datenübertragung zwischen Systemen die ein gemeinsames Medium besitzen.
• Erkennung und ggf. Behebung von Übertragungsfehlern.
• Flusssteuerung zur Behandlung von Überlastsituationen.
• Realisierung meist in Hardware auf Adapterkarten.
Vermittlungsschicht (network layer)
• Bestimmung von Wegen durch das Kommunikationsnetz.
• Multiplexen von Endsystemverbindungen über eine Zwischenverbindung.
• Fehlererkennung und -behebung zwischen Endsystemen.
• Flusssteuerung zwischen Endsystemen.
• Aufteilung eines Pakets (packet) in Rahmen (frames).
Transportschicht (transport layer)
• Ende-zu-Ende Kommunikationskanäle zwischen Applikationen.
• Virtuelle Verbindungen über verbindungslose Datagrammdienste.
• Fehlererkennung und -behebung zwischen Transport-Endpunkten.
• Flusssteuerung zwischen Transport-Endpunkten.
• Unter Umständen Unterstützung verschiedener Dienstgüten.
Sitzungsschicht (session layer)
• Synchronisation und Koordination von kommunizierenden Prozessen.
• Interaktionssteuerung (Sicherungspunkte).
Darstellungsschicht (presentation layer)
• Transformation und Anpassung von unterschiedlichen Datendarstellungen.
• Serialisierung von komplexen Datenstrukturen zum Zweck der Übertragung.
• Datenkompression.
35
1.7. NETZWERK-ARCHITEKTUREN
Anwendungsschicht (application layer)
• Bereitstellung von grundlegenden anwendungsnahen Diensten.
• Beispiele: Terminalemulationen, Namensraumverwaltung, Datenbankzugriff, Netzmanagement, elektronische Nachrichtensysteme, Prozess- und Maschinensteuerung, . . .
1.7.5
Internet Schichtenmodell
Anwendungsprozess
Application Process
Endsystem
End System
Anwendung
Application
Transport
Transport
Transitsystem
Internet
Network
Internet
Subnetzwerk
Subnetwork
Subnetwork
Medium
Media
Abbildung 1.31: Internet Schichtenmodell
• Das Internet ist als Netz konzipiert, das über nahezu beliebige Kommunikationsnetze gelegt
werden kann (siehe auch insbesonders RFC 1149 [10]). Entsprechend ist die Schicht unterhalb der Internet Schicht (die im wesentlichen der ISO/OSI Netzwerkschicht entspricht)
einfach ein beliebiges Subnetzwerk.
• Das Internet-Protokoll (IP) schafft eine gemeinsame Basis auf der man über die Grenzen der
verschiedenen Netztechnologien hinweg kommunizieren kann.
• Natürlich kann auch das Internet-Protokoll selbst als Subnetzwerk fungieren — man bekommt dann sogenannte IP-Tunnel.
• Auf der Internet-Schicht gibt es im wesentlichen zwei Protokolle. Derzeit am weitesten verbreitete ist IP Version 4 (IPv4), wobei der Nachfolger IP Version 6 (IPv6) langsam an Bedeutung gewinnt.
• Bei den Internet-Protokollen steht immer auch der Wunsch nach einfacher Implementierbarkeit (ursprünglich meist in Software) im Vordergrund.
• Die Internet-Protokolle unterstützen primär Datenkommunikation (asynchron, in der Regel
nicht isochron).
• Implementationen der Internet-Protokolle sind in der Regel frei zugänglich, was deren Verbreitung unterstützt.
36
KAPITEL 1. GRUNDLAGEN
1.8 Standardisierung
Die Standardisierung von Protokollen schafft einheitliche Netzwerk-Architekturen, die eine offene (d.h. herstellerunabhängige) Kommunikation ermöglichen. Herstellerspezifische Protokolle und
Netzwerk-Architekturen (z.B. SNA, DECnet) haben an Bedeutung verloren.
Activity
Time for Standardization
Research
Investment
Time
Abbildung 1.32: Theorie der Standardisierung
Die Standardisierung selbst ist ein kritischer und in der Regel aufwendiger Prozess.
• Der Erfolg eines Standards muss man in der Anzahl der in Betrieb befindlichen interoperablen
Implementationen messen.
• Standards müssen es Geräteherstellern erlauben, ihre Produkte zu differenzieren.
• Erfolgreiche Standards erzeugen einen Markt für Produkte.
• Der richtige Zeitpunkt ist ein wichtiger Faktor für den Erfolg eines Standards.
Es gibt viele verschiedene Organisationen die Standards im Bereich der Kommunikationsnetze beschließen. Die für diese Vorlesung wichtigsten werden nun kurz vorgestellt.
1.8.1
ISO Standardisierung
• Die International Organization for Standardization (ISO) ist eine freiwillige, nicht per Staatsvertrag geregelte Organisation zur internationalen Normung.
• Die Mitglieder der ISO setzen sich aus den Normungsinstituten der einzelnen Mitgliedsländer
zusammen (ANSI für die USA, DIN für Deutschland).
• ISO-Standardisierungsmodell:
1. Entwurfsvorschlag (Draft Proposal, DP)
2. Entwurf (Draft International Standard, DIS)
3. Standard (International Standard, IS)
Die jeweiligen Übergänge bedürfen Mehrheiten bei Abstimmungen und können sich ggf.
mehrmals zyklisch wiederholen.
37
1.8. STANDARDISIERUNG
• Standards werden durch Nummern identifiziert, wobei verschiedene Revisionen durch das
Anhängen von Jahreszahlen unterschieden werden.
• Die Open Systems Interconnection (OSI) umfasst den Teil der ISO Standards, der sich mit
der Kommunikation in offenen (Kommunikations-) Systemen befasst.
1.8.2
Internet Standardisierung
Historic
Working Group
Document
(Internet Draft)
Proposed Standard
(RFC)
Historic
Draft Standard
(RFC)
Historic
Internet Standard
(RFC)
Abbildung 1.33: Prozessmodell der Internet-Standardisierung
• Die Standardisierung der Internet-Protokolle wird durch die Internet Engineering Task Force
(IETF) durchgeführt (RFC 3233 [11], RFC 2026 [12]).
• Internet-Standards werden in der Regel durch Arbeitsgruppen (working groups, WGs) ausgearbeitet, die in verschiedenen Bereichen (areas) organisiert sind.
• Jeder Bereich hat in der Regel zwei Leiter (area directors, ADs). Die Leiter aller Bereiche
zusammen bilden zusammen die Internet Engineering Steering Group (IESG), die alle Standards verabschieden muss.
• IETF-Standardisierungsmodell:
1. Vorgeschlagener Standard (Proposed Standard)
2. Vorläufiger Standard (Draft Standard)
3. Internet Standard (Standard)
Die jeweiligen Übergänge erfordern rough consensus and running code“, d.h. mehrere un”
abhängige interoperable Implementationen.
• Standards werden als Request for Comments (RFCs) publiziert. Jeder RFC hat eine eindeutige Nummer und wird nach der Publikation nie verändert. Verschiedene Versionen eines
Standards haben also verschiedene RFC Nummern. Achtung: Nicht alle RFCs sind auch
Standards!
• Das Internet Architecture Board (IAB) ist ein übergeordnetes Gremium, das sich mit längerfristigen Architekturfragen befasst.
• Parallel zur IETF existiert die Internet Research Task Force (IRTF), die sich Forschungsfragen widmet, die eventuell zukünftig zu einer Standardisierung in der IETF führen. Die IRTF
ist wiederum in Arbeitsgruppen organisiert, wobei die Leiter der Arbeitsgruppen zusammen
die Internet Research Steering Group (IRSG) bilden.
38
KAPITEL 1. GRUNDLAGEN
1.8.3
IEEE Standardisierung
Für die Standardisierung innerhalb der IEEE ist das IEEE-SA Standards Board verantwortlich. Die
bei der Arbeit an Standards generierten Dokumente werden folgenden Kategorieren zugeordnet:
• Ein Standard ist ein Dokument, das einen IEEE Standard festlegt.
• Prozeduren können in Recommended Practices beschrieben werden.
• In Guides können alternative Ansätze und zusätzliche Informationen beschrieben werden.
• Ein Trial-Use Document existiert nach der Publikation nur für einen begrenzten Zeitraum.
Ein IEEE Standardisierungsprojekt kann verschiedene Klassen von Dokumenten produzieren:
• Ein neues Dokument (New) legt einen neuen Standard fest, der keine Revision eines existierenden Standards ist.
• Ein existierender Standard kann durch ein neues Dokument (Revision) aktualisiert oder ersetzt werden.
• In einem existierenden Standard können durch ein Dokument substantielle Korrekturen vorgenommen werden (Corrigenda).
• Ein existierender Standard kann durch ein Dokument erweitert werden, wobei auch substantielle Korrekturen angebracht werden können (Amendment).
In der IEEE ist ein sogenannter Sponsor für die Durchführung und Abwicklung einer Standardisierung verantwortlich. Zunächst muss ein konkretes Projekt durch ein Project Authorization Request
(PAR) beantragt werden. Das IEEE-SA Standards Board ist das Gremium, das über die Annahme
von PARs entscheidet. Zur Begutachtung von PARs existiert ein New Standards Committee (NesCom).
Die technische Arbeit wird durch ein Abstimmungsverfahren (Ballot) abgeschlossen. Prinzipiell
sollen negative Stimmen durch entsprechende Bemühungen um Konsens vermieden werden. Nach
der Abstimmung wird der Entwurf eines Standards dem IEEE-SA Standards Board zur Verabschiedung weitergeleitet, das ihrerseits wiederum das Review Committee (RevCom) zur Begutachtung
heranzieht.
Kapitel 2
Lokale Netze nach IEEE 802
Die IEEE Standards der Serie 802.x werden seit Mitte der 80er Jahre entwickelt und dominieren seit
vielen Jahren den Bereich der lokalen Netze (local area networks, LANs) und breiten sich derzeit
auch in den Bereich der Nahbereichsnetze (metropolitan area networks, MANs) aus. Einige der
IEEE 802.x Standards wurden auch von der ISO als offizielle ISO Standards übernommen.
802.1 Management
802 Overview and Architecture
802.2 Logical Link Control
802.1 Bridging
802.3
Medium
Access
802.4
Medium
Access
802.5
Medium
Access
802.6
Medium
Access
Ethernet
Token Bus
Token Ring
DQDB
802.3
Physical
802.4
Physical
802.5
Physical
802.6
Physical
802.9
Medium
Access
802.11
Medium
Access
802.12
Medium
Access
WaveLan
802.9
Physical
802.11
Physical
802.12
Physical
Abbildung 2.1: Übersicht über die IEEE 802 Standards
Die wohl derzeit bekanntesten Standards sind das Ethernet (IEEE 802.3) und WaveLANs (IEEE
802.11). Bluetooth wurde im März 2002 als IEEE 802.15 verabschiedet.
Die IEEE 802.x Standards decken funktional die beiden untersten Schichten des ISO/OSI-Referenzmodells ab, wobei sie selbst jedoch eine weitergehende Schichteneinteilung besitzen:
• Die Logical Link Control (LLC) Schicht stellt eine Schnittstelle bereit, die für alle IEEE 802
Protokolle gleich ist. Protokolle auf der Netzwerk-Schicht (z.B. das Internet Protokoll IP)
nutzen die Dienste der LLC-Schicht.
• Die Medium Access Control (MAC) Schicht definiert das Zugriffsverfahren auf das verwendete Medium.
• Die Physikalische (PHY) Schicht beschreibt die physikalischen Eigenschaften der Übertragungsmedien.
39
40
KAPITEL 2. LOKALE NETZE NACH IEEE 802
Anwendungsprozess
Endsystem
Anwendungssystem
Anwendung
Darstellung
Sitzung
Transport
Logical Link Control (LLC)
Sicherung
Media Access Control (MAC)
Bit"ubertragung
IEEE 802
Transportsystem
Netzwerk
Physical (PHY)
Abbildung 2.2: IEEE 802 Schichten im ISO/OSI Referenzmodell
• Effektiv wurde die ISO/OSI Sicherungsschicht in zwei Schichten (LLC, MAC) unterteilt, um
verschiedenen Zugriffsverfahren mit einer gemeinsamen Schnittstelle definieren zu können.
2.1
Logical Link Control (IEEE 802.2)
...
2.2
Ethernet (IEEE 802.3)
Der IEEE 802.3 Standard ist allgemein als Ethernet1 bekannt. Die Technologie wurde in den 70er
Jahren am XEROX PARC entwickelt [?] und später mit kleinen Änderungen von der IEEE standardisiert [13]. Das klassische IEEE 802.3 Netz ist ein 1-persistentes CSMA/CD Netz mit einer
Geschwindigkeit von 1-10 Mbps. Später wurden Erweiterungen für 100 Mbps und 1000 Mbps (1
Gbps) entwickelt. Im Juni 2002 wurde eine Standard für 10 Gbps Ethernet verabschiedet.
2.2.1
Physikalische Schicht
In der Physikalischen Schicht werden die übertragungstechnischen Aspekte festgelegt. Es gibt verschiedene Übertragungsmedien:
1
Der Begriff Ethernet wird heutzutage fast synonym für die IEEE 802.3 Standards und CSMA/CD benutzt, obwohl
dies nicht wirklich korrekt ist.
41
2.2. ETHERNET (IEEE 802.3)
Name
10Base2
10Base5
10BaseT
10BaseF
2.2.2
Medium
Koaxialkabel
Koaxialkabel
Twisted Pair
Lichtwellenleiter
max. Länge
200 m
500 m
100 m
2000 m
max. Stationen
30
100
1024
1024
Bemerkungen
Bustopologie, o=0.25 in
Bustopologie, o=0.5 in
Sterntopologie
Sterntopologie
MAC-Schicht
preamble
7 Byte
start−of−frame delimiter (SFD)
1 Byte
destination MAC address
6 Byte
source MAC address
6 Byte
length / type field
2 Byte
data
(network layer packet)
64−1518 Byte
Das Ethernet-Rahmenformat ist relativ einfach:
46−1500 Byte
padding (if required)
frame check sequence (FCS)
4 Byte
Abbildung 2.3: IEEE 802.3 Rahmenformat
• Die sieben Byte lange Präambel (preamble) besteht aus dem Bitmuster 10101010. Durch die
Manchester Codierung ergibt sich eine periodische Wellenform auf die sich die Empfänger
synchronisieren.
• Das Startbyte (start-of-frame delimiter, SFD) hat das Bitmuster 10101011 und zeigt durch
die Unregelmäßigkeit den Anfang des eigentlichen Rahmen an.
• Die Ziel- und Quelladressen sind 6 Byte lange IEEE MAC-Adressen.
• Das 2-Byte Type/Length-Feld enthält entweder die Länge des Rahmens (Wert kleiner als
0x600) oder aber die Identifikation des in den Daten enthaltenen Protokolls (Wert größer
oder gleich 0x600). Die Typnummern werden von der IEEE vergeben.
• Der Datenbereich enthält die eigentlichen Daten, in der Regel ein Paket der Netzwerkschicht.
Gegebenenfalls wird das Paket noch mit Füllbytes auf die erforderliche Minimallänge gebracht.
• Am Ende des Paket befindet sich eine 4 Byte lange CRC Prüfsumme (CRC-32).
42
KAPITEL 2. LOKALE NETZE NACH IEEE 802
wait for frame to transmit
format frame for transmission
carrier sense signal on?
Y
N
wait interframe gap time
start transmission
collision detected?
Y
N
complete transmission and
set status transmission done
transmit jam sequence and
increment # attempts
attempt limit reached?
set status attempt limit exceeded
Y
N
compute and wait backoff time
Abbildung 2.4: IEEE 802.3 MAC Ablaufslogik beim Senden eines Rahmens
Bei der Übertragung eines IEEE 802.3 Rahmen wird das CSMA/CD Verfahren eingesetzt. Dabei
spielen für ein klassisches 10 Mbps LAN folgende Parameter eine Rolle:
• Die Slot-Zeit (slot time) von 512 Bitzeiten ergibt sich aus der doppelten maximale Ausbreitungsverzögerung plus etwas Sicherheit.
• Zwischen zwei aufeinanderfolgenden Rahmen muss eine Pause von 9.6 µs eingehalten werden (interframe gap).
• Die minimale Länge eines Rahmens ist 64 Byte; die maximale Länge ist 1518 Byte.
• Nach einer Kollision wird für die Dauer von 32 Bit ein Jam-Signal gesendet.
• Die Übertragung eines Rahmens wird bei Kollisionen maximal 16 mal versucht.
• Nach jeder Kollision wird eine zufällige Anzahl von Slotzeiten gewartet, bevor der Übertragungsversuch wiederholt wird. Beim n-ten Versuch wird eine gleichverteilte Zahl aus dem
Bereich 0 ≤ R < 2k gezogen, wobei sich k aus k = min(n, b) ergibt mit dem bake-off-limit
b = 10.
43
2.2. ETHERNET (IEEE 802.3)
incoming signal detected?
N
Y
set carrier sense signal on
obtain bit sync and wait for SFD
receive frame
FCS and frame size OK?
N
Y
destination address matches
own or group address?
N
Y
pass data to higher-layer
protocol entity for processing
discard frame
Abbildung 2.5: IEEE 802.3 MAC Ablaufslogik beim Empfangen eines Rahmens
Es gibt eine Reihe definierter Fehlersituationen, die von der MAC-Schicht erkannt werden sollten:
• alignment errors: Rahmen, die nicht eine integrale Anzahl von Bytes sind und den CRC-Test
nicht bestehen.
• FCS errors: Rahmen mit einer gültigen Länge, die den CRC-Test nicht bestehen.
• deferred transmissions: Rahmen, die nicht sofort übertragen werden konnten, da das Medium
belegt ist.
• single collision frames: Rahmen, die nach einer Kollision erfolgreich übertragen werden
konnten.
• multiple collision frames: Rahmen, die nach mehreren Kollisionen erfolgreich übertragen
werden konnten.
• excessive collisions: Rahmen, die nicht übertragen werden konnten, da alle Versuche zu einer
Kollision führten.
• late collisions: Kollisionen, die nach der Slotzeit nach dem Start der Übertragung erkannt
werden. Dies ist typischerweise ein Hinweis auf Kabel, die die in den Spezifikationen definierten maximalen Längen überschreiten.
• internal MAC transmit errors: Nicht näher definierte MAC-interne Fehler beim Senden.
44
KAPITEL 2. LOKALE NETZE NACH IEEE 802
• internal MAC receive errors: Nicht näher definierte MAC-interne Fehler beim Empfangen.
• carrier sense errors: Probleme beim Abhören des Carrier-Signals während einer Übertragung.
• frame too long errors: Rahmen, die die maximal erlaubte Länge der Rahmen überschreiten.
2.3
Fast-Ethernet (IEEE 802.3U)
Das klassische 10 Mbps Ethernet erlaubt eine maximale Kabellänge (inklusive möglicher Repeater)
von 2.5km, woraus sich eine maximale Ausbreitungsverzögerung (inklusive Verzögerung in den
Repeatern) von 50µs ergibt. Daraus leitet sich dann eine minimale Paketlänge von 512 Bit ab.
• Ziel bei der Entwicklung von Fast-Ethernet war eine Datenrate von 100 Mbps ohne Änderungen am Medienzugangsverfahren. Mit einer höheren Bitrate muss man entsprechend die
maximale Kabellänge reduzieren.
• Die maximale Kabellänge ist bei Fast-Ethernet auf 100m begrenzt. Diese relativ kurze Länge
ist durchaus akzeptabel, da man von einer Verkabelung durch verdrillte Kupferkabel mit
Sterntopologie ausgeht.
Da man sowohl UTP Kategorie 3 und 5 Kabel erlauben wollte, ergeben sich auf der physikalischen
Schicht einige Besonderheiten.
100Base4T
100BaseTX
100BaseFX
Twisted Pair
Twisted Pair
Fiber
?m
?m
?m
?
?
?
xxx
xxx
xxx
2.4 Gigabit-Ethernet (IEEE 802.3Z)
1000BaseL
1000BaseC
1000BaseT
Fiber
Coax
Twisted Pair
?m
?m
?m
?
?
?
xxx
xxx
xxx
2.5 10 Gigabit-Ethernet (IEEE 802.AE)
...
2.6 Wireless LANs (IEEE 802.11)
...
45
2.7. BRÜCKEN
2.7 Brücken
Mehrere IEEE 802 LANs können mit Hilfe von Brücken (bridges) verbunden werden. Dabei spielt
prinzipiell die in den jeweiligen Segmenten verwendete IEEE 802 Technologie keine Rolle.
802.11
B3
10Base5
B1
B2
10Base2
100BaseT
10Base2
802.5
Abbildung 2.6: Brücken zur Kopplung von verschiedenen LAN Segmenten
Brücken bieten einige wichtige Vorteile:
1. Verschiedene IEEE 802 LAN-Technologien können durch Brücken miteinander verbunden
werden.
2. LANs, die geographisch verteilt sind, können durch Brücken verbunden werden.
3. Die Aufteilung von überlasteten LANs in kleinere LANs kann die Leistungsfähigkeit verbessern.
4. Mit Hilfe von Brücken können Entfernungen überwunden werden, die mit einzelnen LANTechnologien nicht realisierbar wären.
5. Brücken verbessern die Robustheit, da viele Ausfälle sich nur lokal auf ein LAN auswirken.
6. Brücken können die Sicherheit verbessern, da sie einen Großteil des Verkehr auf die notwendigen LAN Segmente beschränken können.
46
KAPITEL 2. LOKALE NETZE NACH IEEE 802
Brücken arbeiten auf der IEEE 802 LLC-Schicht und können dadurch verschiedene IEEE 802 LANTechnologien überbrücken.
Network
Network
Bridge
IEEE 802.2 LLC
IEEE 802.2 LLC
IEEE 802.2 LLC
IEEE 802.3 MAC
IEEE 802.3 MAC
IEEE 802.11 MAC
IEEE 802.11 MAC
IEEE 802.3 PHY
IEEE 802.3 PHY
IEEE 802.11 PHY
IEEE 802.11 PHY
Abbildung 2.7: IEEE 802 Brücken
Obwohl konzeptionell einfach, gibt es trotzdem einige Dinge zu beachten:
• Die verschiedenen LANs werden im allgemeinen unterschiedliche Datenraten haben und entsprechend muss eine Brücke Daten puffern, wobei die Pufferkapazität natürlich endlich ist.
• Die verschiedenen LANs können unterschiedliche maximale Paketgrößen haben. Trifft nun
ein Paket an einer Brücke ein, dessen Länge die Paketgröße des Ziel-LANs übersteigt, kann
die Brücke das Paket nicht weiterleiten.
• Durch unterschiedliche Geschwindigkeiten auf verschiedenen LANs kann u.U. die Zeitüberwachung auf höheren Protokollschichten verwirrt werden, was zu vorzeitigen Wiederholungen führen kann.
• Einige LAN-Technologien unterstützen Prioritäten, die in anderen Technologien nicht vorhanden sind.
• Einige LAN-Technologien signalisieren die erfolgte Zustellung von Rahmen, was aber bei
anderen Technologien nicht als Ereignis signalisiert wird.
Es gibt zwei verschiedene Arten von Brücken.
• Transparente Brücken (transparent bridges, spanning tree bridges) benötigen keine Konfiguration und passen sich automatisch ihrer Umgebung an. Sie sind sowohl aus der Sicht der
LANs als auch aus der Sicht der Netzbetreiber vollkommen transparent. Der Preis dafür ist
jedoch, dass die zur Verfügung stehende Bandbreite nicht unbedingt optimal ausgenutzt wird.
• Source Routing Bridges erfordern, dass die sendenden Stationen zwischen Stationen am lokalen LAN und entfernten LANs unterscheiden kann. Wenn ein Paket an ein entferntes LAN
geschickt wird, muss die sendende Station den Weg ermitteln, die der Rahmen nehmen soll.
Der Vorteil hierbei ist, dass man die Bandbreite besser ausnutzen kann (unterschiedliche Wege von einem LAN zu einem anderen). Der Preis ist jedoch wesentlich höhere Komplexität
bei allen beteiligten Komponenten.
47
2.7. BRÜCKEN
Letztlich haben sich transparente Brücken durchgesetzt, so dass im folgenden nur transparente
Brücken betrachtet werden.
2.7.1
Transparente Brücken (IEEE 802.1D)
LAN-Segmente werden durch sogenannte Ports an eine transparente Brücke angeschlossen. Im einfachsten Fall hat eine Brücke genau zwei Ports — in der Regel haben heutige Brücken jedoch viele
Ports (bis zu mehreren hundert), wobei viele Brückenmodelle durch Erweiterungsmodule relativ
einfach vergrößert werden können (stackable bridges).
Forwarding
database
Port
management
software
MAC
chipset
Port 1
Station
Port
address number
Bridge
protocol
entity
Memory
buffers
MAC
chipset
Port 2
Abbildung 2.8: Interne Struktur von transparenten Brücken
Brücken können auf mehreren Ports gleichzeitig Rahmen empfangen, die dann im Speicher gepuffert werden. Generell arbeiten die Ports von transparenten Brücken im promiscuous Modus, bei dem
all Rahmen gelesen und gepuffert werden (und nicht nur die für die Brücke bestimmten Rahmen).
Intern verwaltet eine transparente Brücke eine Weiterleitungstabelle (forwarding table) von MACAdressen mit zugehörigen Portnummern.
• Wenn ein Rahmen empfangen worden ist, dann wird in der Tabelle nach einem Eintrag für
die Zieladresse gesucht.
• Wird ein passender Eintrag gefunden und die Portnummer unterscheidet sich von der Portnummer über die der Rahmen empfangen wurde, so wird der Rahmen über den im Eintrag
vermerkten Port weitergeleitet. Ist die im Eintrag vermerkte Portnummer identisch mit der
Portnummer über die der Rahmen empfangen wurde, so wird der Rahmen verworfen.
• Wird kein passender Eintrag gefunden, so wird der Rahmen an alle Ports weitergeleitet (flooding), wobei der Port über den der Rahmen empfangen wurde ausgenommen wird.
• Zusätzlich kann man in vielen Brücken spezielle Einträge in der Tabelle konfigurieren, die
eine Weiterleitung von bestimmten Adressen generell unterbinden.
48
KAPITEL 2. LOKALE NETZE NACH IEEE 802
Backward Learning
Die Weiterleitungstabelle (forwarding database) muss natürlich irgendwann erstellt werden und sich
auch dynamisch an Änderungen der Topologie anpassen können. Man löst dieses Problem, indem
eine Brücke die aktuelle Konfiguration aus den ankommenden Paketen lernt und einmal gelerntes
regelmäßig wieder vergessen wird.
• Bei der Initialisierung einer Brücke wird die Weiterleitungstabelle gelöscht.
• Empfängt eine Brücke einen Rahmen, so wird die darin enthaltene Quelladresse und die
Nummer des Ports, über den das Paket empfangen wurde, in der Weiterleitungstabelle abgelegt. Das Paket wird dann an alle anderen Ports weitergeleitet (wodurch auch die anderen
Brücken die Quelladresse kennen lernen).
• Zu jedem Eintrag in der Weiterleitungstabelle gibt es eine Zeitüberwachung. Wird ein Eintrag
für eine gewisse Zeit nicht durch neue empfangene Rahmen bestätigt, so wird der Eintrag
gelöscht (soft state).
• Das Löschen von unbenutzten Einträgen verringert die Größe der Weiterleitungstabelle und
erlaubt es auf Topologieänderungen (mit einer gewissen Verzögerung) dynamisch zu reagieren.
• Das Lernverfahren funktioniert nur dann, wenn die Topologie ein einfacher Baum ist. Existieren mehrere Pfade zwischen LAN-Segmenten, dann werden u.U. Einträge in der Weiterleitungstabelle periodisch wieder überschrieben und das Verhalten des Netzes ist nicht stabil.
Spanning Trees
Für Netze, die keine Baum-Topologie besitzen, kann mit Hilfe des Spanning Tree Protokolls ein
aufspannender Baum konstruiert werden, der dann zur Weiterleitung von Rahmen benutzt werden
kann. Zur Identifikation der Brücken werden die MAC-Adressen der Brücken zusammen mit der
Priorität der jeweiligen Brücke benutzt (bridge identifier, 8 Byte).
Das Verfahren läuft nach folgendem Schema ab:
1. Zunächst wird die Wurzel (root bridge) des aufspannenden Baums ermittelt. Die Wurzel ist
die Brücke mit der höchsten Priorität und der kleinsten Adresse. Die Wurzel wird regelmäßig
neu bestimmt/bestätigt.
2. Im nächsten Schritt werden die Kosten für alle Wege von der Wurzel zu den einzelnen Ports
auf den Brücken ermittelt (root path cost). Jeder Brücke bestimmt dann, über welchen Port
die Wurzel mit den geringsten Kosten erreicht wird (root port).
3. Sobald der root port bekannt ist, wird für jedes Segment ein Port bestimmt, über den der Verkehr in das Segment geleitet wird. Der Port und die zugehörige Brücke werden als designated
port und designated bridge bezeichnet. Die Auswahl basiert wiederum auf den Pfadkosten,
wobei die Bridge Adressen benutzt werden falls mehre Pfade mit denselben Kosten existieren.
4. Schließlich werden alle Ports blockiert, die nicht designated ports sind. Dadurch entsteht eine
aktive Topologie, die dem aufspannenden Baum entspricht.
2.8. VIRTUELLE LANS (IEEE 802.1Q, IEEE 802.1P)
49
2.8 Virtuelle LANs (IEEE 802.1Q, IEEE 802.1P)
Virtuelle LANs (virtual bridged lans, VLANs) emulieren ein virtuelles LAN auf einem komplexen
IEEE 802 Netzwerk, das durch Brücken verbunden ist.
B1
B2
B0
Abbildung 2.9: Virtuelle LANs
Mit VLANs ist es möglich, den Verkehr im IEEE 802 Netz logisch zu trennen, was folgende Vorteile
bietet:
• Eine Station in einem bestimmten VLAN sieht nur die Rahmen, die zu dem entsprechenden
VLAN gehören.
• Durch die VLANs wird die Last reduziert, insbesondere werden Rahmen an alle Stationen
(broadcasts) nur noch an die Stationen in einem gegebenen VLAN zugestellt.
• Stationen können Mitglieder in mehreren VLANs sein, was insbesondere die gemeinsame
Nutzung von Servern erlaubt.
• Durch Zuweisung zu den VLANs können Stationen unabhängig von der physikalischen Topologie in einem logisch getrennten LAN zusammenarbeiten.
Ein VLAN wird durch einen VLAN Identifier (1..4094) eindeutig identifiziert und mit Hilfe von
Brücken realisiert. Die Zuweisung von Ports zu VLANs kann auf verschiedene Arten erfolgen:
• Port-basierte VLANs: Die Ports einer Brücke werden den einzelnen VLANs administrativ
zugeordnet. Ein Port kann in der Regel an mehreren VLANs teilnehmen.
• MAC-Adressen-basierte VLANs: Die MAC-Adressen der Stationen werden den einzelnen
VLANs zugeordnet. Es ist dann egal, über welchen Port eine Station tatsächlich angeschlossen ist.
50
KAPITEL 2. LOKALE NETZE NACH IEEE 802
• Protokoll-basierte VLANs: Die von den Stationen erzeugten Rahmen werden über die nächsthöheren Protokolle den VLANs zugeordnet. Dadurch lassen sich relativ einfach VLANs für
Appletalk, IPX und IP Netze realisieren.
• Multicastgruppen-basierte VLANs: Die VLANs werden durch die Mitglieder einer IP-Multicastgruppe definiert.
7 Byte
start−of−frame delimiter (SFD)
1 Byte
destination MAC address
6 Byte
source MAC address
6 Byte
tag protocol identifier
2 Byte
priority
CFI
preamble
vlan identifier
length / type field
2 Byte
64−1522 Byte
Wenn auf einer Verbindung zwischen zwei Stationen Pakete ausgetauscht werden, die zu unterschiedlichen VLANs gehören, ist eine Kennzeichnung im Rahmen erforderlich (tagging). Dazu
wird im Fall von Ethernet-Rahmen nach den Ziel- und Quelladressen ein sogenanntes Tag (tag
header) eingefügt.
data
(network layer packet)
46−1500 Byte
padding (if required)
frame check sequence (FCS)
4 Byte
Abbildung 2.10: IEEE 802.3 Tagged Rahmenformat
• Rahmen, die von Brücken mit Tags gekennzeichnet werden, können plötzlich die maximale
Rahmenlänge überschreiten.
• Generell müssen Rahmen, die die maximale MAC Länge überschreiten, nach IEEE 802.1Q
vernichtet werden.
• Für den Fall von IEEE 802.3 Rahmen ist eine Verlängerung der Rahmen um vier Bytes erlaubt
(was die max. Rahmenlänge von 1518 Bytes auf 1522 Bytes erhöht).
2.8. VIRTUELLE LANS (IEEE 802.1Q, IEEE 802.1P)
51
• Als Ergänzung zum IEEE 802.1Q Standard für VLANs beschreibt der IEEE 802.1P Standard, wie Prioritäten durch die VLAN-Mitgliedschaft signalisiert werden können, die auch
im Ethernet benutzt werden können. Die Prioritäten werden im 3-bit Prioritätsfeld des Tags
untergebracht.
Der IEEE 802.1Q Standard definiert zusätzlich ein Generic Attribute Registration Protocol (GARP),
mit dem unter anderem Informationen über VLAN Mitgliedschaften der einzelnen Ports propagiert
werden können. Dadurch können VLAN-fähige Endsysteme Verkehr für VLANs unterdrücken, die
derzeit keine Mitglieder haben.
52
KAPITEL 2. LOKALE NETZE NACH IEEE 802
Kapitel 3
Internet Netzwerkschicht
Die Internetprotokolle haben sich auf der Netzwerkschicht im Zusammenhang mit der Datenkommunikation durchgesetzt. Die am weitesten verbreitete Version ist IP Version 4 (IPv4), während IP
Version 6 (IPv6) langsam auch praktisch an Bedeutung gewinnt. In diesem Kapitel werden beide
Protokolle vorgestellt.
3.1 Grundlagen
Zunächst einige Grundlagen, die generell zum Verständnis der Internet-Protokolle notwendig sind.
3.1.1
Entwicklung des Internets
• Die Defense Advanced Research Project Agency (DARPA) der USA startete in der Mitte der
70er Jahre Projekte zur Entwicklung von Internetworking-Technologien.
• Es entsteht das ARPANET, ein auf gemieteten Leitungen realisiertes Datagramm-Netz.
• Das ARPANET wird später zum Backbone-Netzwerk zwischen den großen amerikanischen
Universitäten.
• Anfang der 80er Jahre wird eine Implementierung der Internet-Protokolle als Teil des BSDUNIX-Betriebssystems allgemein verfügbar.
• Das BSD-UNIX definiert die Socket-Programmierschnittstelle, mit der sich relativ einfach
netzwerkfähige Applikationen entwickeln lassen.
• 1983 wird das ARPANET in das Forschungsnetz ARPANET und das militärisch genutzte
MILNET aufgeteilt.
• 1986 wird von der National Science Foundation der USA das NFSNET realisiert, was das
ARPANET ablöst.
• 1990 geht das NSFNET in das ANSNET über, das von MERIT, MCI und IBM betrieben
wird.
• Anfang der 90er Jahre wird am CERN in der Schweiz das World-Wide-Web geboren.
• Weitere Details zur Entwicklung des Internets findet man unter http://www.isoc.org/.
53
54
KAPITEL 3. INTERNET NETZWERKSCHICHT
3.1.2
Internet Prinzipien
Es gibt eine Reihe von Prinzipien, die bei der Entwicklung von Internet-Protokollen angewendet
werden [14]:
• Das erste grundlegende Prinzip ist Konnektivität (connectivity is its own reward). Konnektivität über verschiedene Übertragungstechniken hinweg ist wertvoller als die Dienste einer
bestimmten Anwendung. Erreicht wird Konnektivität durch möglichst wenige Protokolle auf
der Internet-Schicht, die möglichst wenig Anforderungen an die Übertragungstechnologien
stellen.
• Funktionen, die Wissen und Hilfe der Anwendungen erfordern, sollten an den Endpunkten
des Kommunikationsnetzes erbracht werden und nicht im Kommunikationsnetz (end-to-end
argument).
• Es gibt keine zentrale Kontrollinstanzen für das Internet.
• Adressen sollten global eindeutig Endpunkte identifizieren. Dynamische Änderungen der
Wege im Netz sollten jederzeit möglich sein ohne das sich die Identifikation der Endsysteme
ändert.
• Zwischensysteme sollten möglichst zustandslos sein. Wenn Zustandsinformationen notwendig sind, dann sollte der Zustand mit einer Zeitüberwachung versehen und nicht statisch sein
(soft state).
• Zur Sicherung der Interoperabilität sollten Implementationen liberal sein indem was sie akzeptieren und strikt indem was sie generieren. Interoperabilität ist wichtiger als Korrektheit.
3.1.3
Terminologie
Im folgenden wird die aktuelle Terminologie verwendet, wie sie in RFC 2460 [15] definiert wird.
Ältere Bücher und Dokumente verwenden nicht unbedingt diese Terminologie und entsprechend
sind unter Umständen beim Lesen von anderen Materialen mentale Abbildungen“ notwendig.
”
• Ein Node ist ein Gerät, das ein Internetprotokoll (IPv4 oder IPv6) implementiert.
• Ein Router (router) ist ein Node, der Pakete weiterleitet, die nicht an ihn selbst adressiert sind.
• Ein Host ist jeder Node, der nicht ein Router ist.
• Ein Link ist eine Kommunikationskanal, über den Nodes miteinander kommunizieren können
(z.B. Ethernet).
• Die Neighbors sind alle Nodes, die an demselben Link angeschlossen sind.
• Ein Interface ist die Schnittstelle, über die ein Node an einen Link angeschlossen ist.
• Eine IP-Adresse identifiziert ein Interface oder eine Menge von Interfaces.
• Ein IP-Paket ist eine Bitfolge bestehend aus dem IP Protokollkopf (IP header) und den Nutzdaten (payload).
3.1. GRUNDLAGEN
55
• Die Link MTU ist die maximale Paketgröße auf einem Link (link maximum transmission unit,
link MTU).
• Die Path MTU ist die maximale Paketgröße auf einem Pfad zwischen einen Quell-Node und
einem Ziel-Node (path maximum transmission unit, path MTU).
3.1.4
Autonome Systeme
Das globale Internet besteht aus einer Menge von autonomen Systemen, die miteinander verbunden
sind.
• Ein autonomes System wird durch eine Nummer (AS number) identifiziert. Der Nummernbereich ist derzeit noch auf 16 Bit begrenzt.
• Zwischen den autonomen Systemen werden IP-Pakete auf Wegen übertragen, die durch ein
Exterior Gateway Protocol etabliert werden. Die innere Struktur eines autonomen Systems
ist dafür irrelevant.
• Innerhalb eines autonomen Systems werden IP-Pakete auf Wegen übertragen, die durch ein
Interior Gateway Protocol etabliert werden.
• Praktisch bedeutete die Einführung von autonomen Systemen ein zweistufiges Routing im
Internet.
3.1.5
Geltungsbereiche von Internet Adressen
...
--------------------------------------------------------------| a node
|
|
|
|
|
|
|
|
|
|
|
| /--------------------site1--------------------\ /--site2--\ |
|
|
| /--link1--\ /--------link2--------\ /--link3--\ /--link4--\ |
|
|
| /--intf1--\ /--intf2--\ /--intf3--\ /--intf4--\ /--intf5--\ |
--------------------------------------------------------------:
|
|
|
|
:
|
|
|
|
:
|
|
|
|
(imaginary
=================
a pointa
loopback
an Ethernet
to-point
tunnel
link)
link
56
KAPITEL 3. INTERNET NETZWERKSCHICHT
3.2 Internet Protokoll Version 4
Das Internet Protokoll Version 4 (IPv4) wurde 1981 in RFC 791 [16] standardisiert und ist die Basis
des heutigen Internets. Die Spezifikation wurde in vielen Aspekten im Lauf der letzten 20 Jahre den
Erfordernissen angepasst. Die folgende Darstellung beschreibt die aktuelle Interpretation von IPv4.
3.2.1
IPv4 Adressen
Der prinzipielle Aufbau und die Darstellung von IPv4-Adressen wurde bereits im Kapitel 1 erläutert.
• IPv4-Adressen werden für die Wegewahl in einen Teil aufgeteilt, der das Netzwerk identifiziert (netid) und einen Teil, der einen Knoten im Netzwerk identifiziert (hostid).
• Die Anzahl der Bits einer IPv4-Adresse, die das Netzwerk identifiziert, wird als Adresspräfix
bezeichnet. Die heute übliche Darstellung ist als Dezimalzahl, die durch einen Schrägstrich
getrennt an die IPv4-Adresse angefügt wird (z.B. 192.0.2.0/24).
• Ältere Darstellungen benutzen eine sogenannte Netzmaske, die bitweise logisch-und verknüpft mit der Adresse den Netzwerkanteil ergibt (z.B. 192.0.2.0 & 255.255.255.0).
Nicht alle IPv4 Adressen stehen der uneingeschränkten Nutzung zur Verfügung. Einige Adressen
haben besondere Semantik oder sind für spezielle Zwecke reserviert:
Adressbereich
0.0.0.0/8
10.0.0.0/8
14.0.0.0/8
24.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.0.2.0/24
192.88.99.0/24
192.168.0.0/16
198.18.0.0/15
224.0.0.0/4
Aktuelle Nutzung
ThisNetwork
Private-Use Networks
Public-Data Networks
Cable Television Networks
Loopback
Link Local
Private-Use Networks
Test-Net / Documentation
6to4 Relay Anycast
Private-Use Networks
Network Interconnect / Device Benchmark Testing
Multicast
Referenz
[RFC1700]
[RFC1918]
[RFC1700]
[RFC1700]
[RFC1918]
[RFC3068]
[RFC1918]
[RFC2544]
[RFC3171]
• Adressen für private Netze, die nicht im globalen Internet benutzt werden, können nach RFC
1918 [17] aus den Bereichen 10.0.0.0/8 und 192.168.0.0/16 gewählt werden.
• Test-Adressen bzw. Adressen, die in Dokumentationen verwendet werden, können aus dem
Bereich 192.0.2.0/24 entnommen werden.
• Die spezielle Adresse 0.0.0.0 identifiziert einen Sender, der noch nicht vollständig konfiguriert ist.
• Die spezielle Adresse 127.0.0.1 identifiziert den lokalen Knoten selbst (loopback).
• Die spezielle Adresse 255.255.255.255 erzeugt einen lokalen Broadcast.
3.2. INTERNET PROTOKOLL VERSION 4
3.2.2
57
IPv4 Paketformat
IPv4-Pakete haben nach RFC 791 [16] folgenden Aufbau:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service|
Total Length
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identification
|Flags|
Fragment Offset
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live |
Protocol
|
Header Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Destination Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options
|
Padding
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Version enthält die Versionsnummer (4).
• Die Länge des Protokollkopfs ist im Feld Internet Header Length (IHL) vermerkt.
Die Länge wird in der Anzahl von 4 Byte Worten gezählt. Die minimale Länge ist 5 (entspricht 20 Byte), die maximale Länge ist 15 (entspricht 60 Byte).
• Die Interpretation des Type of Service (TOS) Felds hat sich im Lauf der Zeit verändert. Nach der aktuellen Interpretation enthält das TOS-Byte einen Differentiated Services
Code Point (DSCP) sowie Bits zur expliziten Benachrichtigung über Stausituationen (explicit
congestion notification, ECN) [18, 19, 20].
0
1
2
3
4
5
6
7
+-----+-----+-----+-----+-----+-----+-----+-----+
|
DS FIELD, DSCP
| ECN FIELD |
+-----+-----+-----+-----+-----+-----+-----+-----+
• Die Länge des gesamten IP-Pakets (inklusive Protokollkopf) in Bytes ist im Feld Total
Length untergebracht. IPv4-Pakete können entsprechend maximal 65535 Byte lang sein.
• Die Felder Identification, Flags und Fragment Offset unterstützen die Fragmentierung und Reassemblierung von IPv4-Paketen. Das Feld Identification enthält
für alle Fragmente eines IP-Pakets denselben Wert. Das Feld Fragment Offset enthält
die relative Position eines Fragments (gemessen in 64 Bit Worten) des originalen IPv4-Pakets.
Die Flagge More Fragements (MF) ist gesetzt, wenn weitere Fragmente folgen. Mit der
Flagge Don’t Fragment (DF) kann angezeigt werden, das ein IPv4-Paket nicht fragmentiert werden darf. Man beachte, dass Fragmente weiter fragmentiert werden können.
• Das Feld Time to Live (TTL) wird benutzt, um die Lebensdauer eines IPv4-Pakets zu
begrenzen. Praktisch wird das Feld von jedem Router decrementiert und beim Erreichen von
0 wird das Paket vernichtet.
58
KAPITEL 3. INTERNET NETZWERKSCHICHT
• Das Feld Protocol enthält die Identifikation des nächsthöheren Protokolls.
• Die Header Checksum enthält eine Internet-Prüfsumme, gebildet über den Protokollkopf.
• Die Felder Source Address und Destination Address enthalten die Quell- und
Zieladresse.
• Es gibt eine Reihe von Optionen, mit der die Weiterleitung von Paketen beeinflusst oder die
Weiterleitung protokolliert werden kann. Praktisch sind die meisten Optionen von geringer
Bedeutung, da der verfügbare Platz von 40 Byte für Optionen in der Regel zu klein ist.
3.2.3
IPv4 Weiterleitung
Jeder Node hat eine Tabelle, nach der IPv4-Pakete zum Ziel weitergeleitet werden (forwarding
table, forwarding information base) [21].
• Die Weiterleitungstabelle realisiert eine Abbildung des Netzwerkpräfix auf den nächsten Node (next hop) und auf das zu benutzende Interface.
• Weiterleitungstabellen können sehr groß werden.
• Für jedes IP-Paket muss der Eintrag mit dem längsten übereinstimmenden Netzwerkpräfix
ermittelt werden (longest matching network prefix).
• Durch geeignete Darstellungen der Weiterleitungstabellen als Bäume kann die Suchzeit begrenzt werden.
Das folgende Beispiel zeigt an einem einfachen Netz den Aufbau und Inhalt von Weiterleitungstabellen:
R1
Prefix
0.0.0.0/0
134.169.34.0/24
134.169.0.0/16
H1
134.169.2.1
Next Hop
134.169.2.1
134.169.246.34
134.169.9.10
Interface
eth0
eth0
eth0
134.169.9.10
134.169.0.0/16
134.169.246.34
Prefix
0.0.0.0/0
134.169.0.0/16
134.169.34.0/24
Next Hop
134.169.2.1
134.169.246.34
134.169.34.12
Interface
eth0
eth0
eth1
H2
R2
134.169.34.12
Prefix
0.0.0.0/0
134.169.34.0/24
Next Hop
134.169.34.12
134.169.34.1
Interface
eth0
eth0
134.169.34.1
134.169.34.0/24
Abbildung 3.1: Beispiel für IPv4 Weiterleitung
Variationen und Erweiterungen des grundlegenden Modells:
• Jeder Knoten besitzt mehrere Weiterleitungstabellen wobei Informationen aus dem empfangenden IP Paket benutzt werden, um die eigentliche Weiterleitungstabelle auszuwählen (z.B.
TOS).
3.2. INTERNET PROTOKOLL VERSION 4
59
• Die Weiterleitungstabellen werden nicht zentral in einem Router gehalten, sondern in jedem
Interface. Mit diesem Ansatz ist es möglich, das Suchen in der Tabelle zu parallelisieren.
• Eine andere Maßnahme zur Leistungssteigerung ist die Verwaltung von Caches für häufig
genutzte Zieladressen.
• Bei sehr großen Tabellen ist eine Implementierung der Tabelle durch eine Baumstruktur sinnvoll, damit der Aufwand im wesentlichen nur noch von der Verteilung und Länge der Präfixe
abhängt und nicht von der Tabellengröße [22].
3.2.4
IPv4 Fehlerbehandlung (ICMPv4)
Das Internet Control Message Protocol (ICMP) ist in RFC 792 [23] definiert und hat die Aufgabe,
sendende Knoten über aufgetretene Fehler zu unterrichten. Es definiert außerdem Nachrichten, mit
denen einfache Tests realisiert werden können. Die ICMP-Nachrichten werden in der Nutzlast eines
IP Datagramms transportiert.
Im folgenden wird eine Auswahl der ICMP Nachrichtenformate dargestellt. Generell werden ICMPNachrichten durch eine eigene Prüfsumme über die ICMP-Nachricht gegen Fehler gesichert.
Echo Request/Reply
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identifier
|
Sequence Number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Data ...
+-+-+-+-+• Ein Echo-Request (Type = 8, Code = 0) fordert den Zielrechner auf, ein Echo-Reply (Type =
0, Code = 0) zu schicken.
• Die Felder Identifier und Sequence Number werden vom Sender benutzt, um eintreffende Antworten den vorausgegangenen Anfragen zuordnen zu können.
• Im Datenteil können Daten abgelegt werden, die zusätzliche Statusinformationen beinhalten
oder das Paket auf eine bestimmte Größe bringen.
Unreachable Destinations
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
60
KAPITEL 3. INTERNET NETZWERKSCHICHT
|
unused
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Internet Header + 64 bits of Original Data Datagram
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Type hat bei allen Nachrichten den Wert 3.
• Das Feld Code bestimmt näher, warum das Ziel nicht erreicht werden kann:
0
Net Unreachable
1
Host Unreachable
2
Protocol Unreachable
3
Port Unreachable
4
Fragmentation Needed and Don’t Fragment was Set
5
Source Route Failed
6
Destination Network Unknown
7
Destination Host Unknown
8
Source Host Isolated
9
Communication with Destination Network is Administratively Prohibited
10 Communication with Destination Host is Administratively Prohibited
11 Destination Network Unreachable for Type of Service
12 Destination Host Unreachable for Type of Service
13 Communication Administratively Prohibited
14 Host Precedence Violation
15 Precedence cutoff in effect
• Der Datenteil enthält den Anfang des verursachenden Pakets.
Redirect
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Router Internet Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Internet Header + 64 bits of Original Data Datagram
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Type hat bei allen Nachrichten den Wert 5.
• Das Feld Code bestimmt näher, welche Datagramme umgeleitet werden sollen:
0
1
2
3
Redirect datagrams for the Network.
Redirect datagrams for the Host.
Redirect datagrams for the Type of Service and Network.
Redirect datagrams for the Type of Service and Host.
• Das Feld Router Internet Address enthält die Adresse des Routers, zu dem Pakete
umgeleitet werden sollen.
3.2. INTERNET PROTOKOLL VERSION 4
3.2.5
61
MTU Path Discovery
Die Fragmentierung von IPv4-Paketen ist aus verschiedenen Gründen problematisch.
• Der Empfänger muss Fragmente puffern bis alle Fragmente empfangen worden sind. Dies
wird erreicht, indem das TTL-Feld der gepufferten Pakete jede Sekunde decrementiert wird
und Fragmente gelöscht werden, wenn der Wert 0 erreicht wird.
• Beim Verlust eines Fragments wird in den meisten Fällen das Original-Paket irgendwann
vom Sender wiederholt und wieder fragmentiert. Bei verlustreichen Netzen sinkt damit die
Wahrscheinlichkeit einer korrekten Übertragung eines großen Pakets.
• Da das Identification-Feld zusammengehörende Fragmente identifiziert und der Nummernvorrat begrenzt ist, können nicht beliebig viele Datagramme fragmentiert werden.
Eine offensichtliche Lösung ist die Erzeugung von IPv4-Paketen auf der Seite des Senders, die der
Path MTU entsprechen und daher niemals fragmentiert werden müssen [24]. Zum Erlernen der Path
MTU wird folgendes Verfahren benutzt:
• Der Sender sendet IPv4-Pakete mit gesetzter DF-Flagge.
• Ein Router, der das Paket fragmentieren müsste, schickt eine ICMP-Nachricht, in der die
lokal maximal mögliche MTU vermerkt ist.
• Der Sender passt daraufhin die Schätzung für die Path MTU an.
• Da sich die Path MTU dynamisch verändern kann, sollte die einmal gelernte Path MTU
periodisch überprüft und ggf. aktualisiert werden.
• Nicht alle Router schicken notwendigerweise die lokal maximal mögliche MTU. In diesen
Fällen muss der Sender eine typische Liste von MTU-Werten ausprobieren“ (in der Regel
”
effizienter als eine binäre Suche).
3.2.6
IPv4 über IEEE 802.3
IPv4 Datagramme werden als Nutzdaten in IEEE 802.3 Rahmen übertragen [25].
• Die Kennzeichnung von IPv4 Datagrammen erfolgt durch den Wert 0x800 im Ethernet Typfeld.
• Entsprechend der maximalen IEEE 802.3 Rahmengröße ist die Link MTU 1500 Byte.
• Die Abbildung von IPv4 Adressen auf IEEE 802.3 Adressen erfolgt durch Umsetzungstabellen. Einträge in den Umsetzungstabellen können entweder statisch konfiguriert oder dynamisch gelernt werden.
62
KAPITEL 3. INTERNET NETZWERKSCHICHT
3.2.7
Adressumsetzung (ARP, RARP)
Umsetzungstabellen können mit Hilfe der Protokolle ARP [26] und RARP [27] automatisch gelernt
werden. Das grundlegende Prinzip ist dabei, eine Nachricht mit einer Frage nach einer unbekannten
Adresse an alle Rechner eines LANs (Broadcast) zu verschicken. Da so auch der Rechner erreicht
wird, der die gewünschte Information besitzt, kann dieser Rechner die entsprechende Information
an den anfragenden Rechner schicken.
Im Fall von IPv4 und IEEE 802.3 Adressen ergibt sich folgendes Protokollformat:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Hardware Type
|
Protocol Type
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
HLEN
|
PLEN
|
Operation
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Sender Hardware Address (SHA)
=
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
= Sender Hardware Address (SHA) |
Sender IP Address (SIP)
=
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
=
Sender IP Address (SIP)
| Target Hardware Address (THA) =
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
=
Target Hardware Address (THA)
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Target IP Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das ARP-Paketformat ist im Fall von IPv4-Adressen und IEEE 802 MAC-Adressen nicht an
32-Bit Wortgrenzen ausgerichtet und dadurch etwas schwieriger zu lesen.
• Das Feld Hardware Type hat für Ethernet den Wert 1 und kennzeichnet den Adreßtyp auf
dem Link.
• Das Feld Protocol Type hat für IPv4 den Wert 0x800.
• ARP-Pakete haben den Typ 0x806 im Ethernet Rahmen.
• In dem Feld Operation wird der Nachrichtentyp kodiert: ARP Request (1), ARP Response
(2), RARP Request (3), RARP Response (4).
• Der Sender füllt je nach Anfrage nur das Feld Target Hardware Address (RARP)
oder das Feld Target IP Address (ARP) aus.
• Die antwortende Station vertauscht die Sender/Target Felder und füllt das leere Feld aus.
3.2.8
Automatische Konfiguration (DHCP)
Mit dem Dynamic Host Configuration Protocol (DHCP) [28] können Hosts die notwendigen Konfigurationsparameter von einem zentralen Server beziehen.
3.2. INTERNET PROTOKOLL VERSION 4
63
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
op (1)
|
htype (1)
|
hlen (1)
|
hops (1)
|
+---------------+---------------+---------------+---------------+
|
xid (4)
|
+-------------------------------+-------------------------------+
|
secs (2)
|
flags (2)
|
+-------------------------------+-------------------------------+
|
ciaddr (4)
|
+---------------------------------------------------------------+
|
yiaddr (4)
|
+---------------------------------------------------------------+
|
siaddr (4)
|
+---------------------------------------------------------------+
|
giaddr (4)
|
+---------------------------------------------------------------+
|
|
|
chaddr (16)
|
|
|
|
|
+---------------------------------------------------------------+
|
|
|
sname
(64)
|
+---------------------------------------------------------------+
|
|
|
file
(128)
|
+---------------------------------------------------------------+
|
|
|
options (variable)
|
+---------------------------------------------------------------+
Nachrichtentypen:
• DHCPDISCOVER: Ein Broadcast, mit dem ein DHCP-Client verfügbare DHCP-Server lokalisiert.
• DHCPOFFER: Nachricht von einem DHCP-Server an einen DHCP-Client mit dem Angebot
von Konfigurationsparametern.
• DHCPREQUEST: Nachricht von einem DHCP-Client an die DHCP-Server mit der ein Angebot ausgewählt oder bestätigt wird.
• DHCPACK: Positive Bestätigung mit weiteren Parametern vom DHCP-Server an den DHCPClient.
• DHCPNAK: Negative Bestätigung vom DHCP-Server an den DHCP-Client.
• DHCPDECLINE: Nachricht vom DHCP-Client an den DHCP-Server, das Parameter nicht
verwendet werden können.
64
KAPITEL 3. INTERNET NETZWERKSCHICHT
• DHCPRELEASE: Nachricht vom DHCP-Client an den DHCP-Server, das ausgegebene Konfigurationsparameter nicht mehr benötigt werden.
• DHCPINFORM: Nachricht vom DHCP-Client an den DHCP-Server, das nur lokale Konfigurationsparameter benötigt werden.
Server
(not selected)
Client
Server
(selected)
v
v
v
|
|
|
|
Begins initialization
|
|
|
|
| _____________/|\____________ |
|/DHCPDISCOVER | DHCPDISCOVER \|
|
|
|
Determines
|
Determines
configuration
|
configuration
|
|
|
|\
| ____________/ |
| \________
| /DHCPOFFER
|
| DHCPOFFER\
|/
|
|
\ |
|
|
Collects replies
|
|
\|
|
|
Selects configuration
|
|
|
|
| _____________/|\____________ |
|/ DHCPREQUEST | DHCPREQUEST\ |
|
|
|
|
|
Commits configuration
|
|
|
|
| _____________/|
|
|/ DHCPACK
|
|
|
|
|
Initialization complete
|
|
|
|
.
.
.
.
.
.
|
|
|
|
Graceful shutdown
|
|
|
|
|
|\ ____________ |
|
| DHCPRELEASE \|
|
|
|
|
|
Discards lease
|
|
|
v
v
v
3.3. INTERNET PROTOKOLL VERSION 6
65
3.3 Internet Protokoll Version 6
Das Internet Protokoll Version 6 (IPv6) [15] wurde ab 1994 entwickelt. IPv6 ist seit 1998 ein Draft Standard
und auf fast allen wichtigen Plattformen verfügbar. Die wesentlichen Ziele bei der Entwicklung von IPv6
waren:
• Vergrößerung des Adressraums von 32 Bit auf 128 Bit.
• Vereinfachung der Protokollköpfe um im Normalfallbessere Effizienz zu erreichen.
• Bessere Unterstützung von Protokollerweiterungen und Optionen.
• Unterstützung für die Markierung von Verkehrsflüssen (flows).
• Authentifizierung und Verschlüsselung von Datagrammen.
• Verbesserte automatische Konfiguration von Endsystemen.
3.3.1
IPv6 Adressen
...
3.3.2
IPv6 Paketformat
IPv6-Pakete haben nach RFC 2460 [15] folgenden Aufbau:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class |
Flow Label
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Payload Length
| Next Header |
Hop Limit
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Source Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Destination Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Version enthält die Versionsnummer (6).
• Das Feld Traffic Class enthält nach der aktuellen Interpretation einen Differentiated Services
Code Point (DSCP) sowie Bits zur expliziten Benachrichtigung über Stausituationen (explicit congestion notification, ECN) [18, 19, 20].
66
KAPITEL 3. INTERNET NETZWERKSCHICHT
0
1
2
3
4
5
6
7
+-----+-----+-----+-----+-----+-----+-----+-----+
|
DS FIELD, DSCP
| ECN FIELD |
+-----+-----+-----+-----+-----+-----+-----+-----+
• In dem Feld Flow Label können Pakete von einer Quelle zu einer Senke markiert werden, die zu
demselben Verkehrsfluß (traffic flow) gehören und besonders behandelt werden sollen.
• Die Länge der Nutzlast hinter dem IPv6 Protokollkopf. Man beachte das dies von dem Feld Total
Length im IPv4 Protokollkopf verschieden ist.
• Das Feld Next Header identifiziert den Typ der in der Nutzlast enthaltenen Nachricht. Entspricht
dem IPv4 Protocol Feld.
• Das Feld Hop Limit wird benutzt, um die Lebensdauer von IPv6-Paketen zu begrenzen. Jeder Router decrementiert dieses Feld und beim Erreichen von 0 wird das Paket vernichtet.
• Die Felder Source Address und Destination Address enthalten die 128 Bit Quell- und
Zieladresse.
3.3.3
IPv6 Erweiterungen
Das IPv6 Paketformat ist gemessen am IPv4 Paketformat wesentlich einfacher. Erreicht wird dies durch die
Verlagerung von Funktionen in sogenannte Erweiterungsprotokollköpfe, die zwischen dem IPv6 Protokollkopf und der eigentlichen Nutzlast enthalten sein können.
Unbekannte Erweiterungsprotokollköpfe können nicht von einer Implementation ignoriert werden sondern
führen zum Verwerfen des Datagramms. Zusätzliche Parameter, die von Implementationen ignoriert werden können, werden als Optionen bezeichnet und in speziellen Erweiterungsprotokollköpfen für Optionen
übertragen.
Routing Extension Header
Der Routing Extension Header (RH) Erweiterungsprotokollkopf erlaubt es, den Weg eines Datagramms vorzubestimmen [15]. Der RH-Erweiterungsprotokollkopf hat folgendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
.
.
.
Type-Specific Data
.
.
.
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Next Header identifiziert den Typ der in der Nutzlast hinter dem RH-Erweiterungsprotokollkopf enthaltenen Nachricht.
• Das Feld Hdr Ext Len spezifiziert die Länge des RH gemessen in der Anzahl von 64 Bit Worten
minus 1.
• Das Feld Routing Type identifiziert eine bestimmte Variante des RH und die Bedeutung des Felds
Type-Specific Data.
3.3. INTERNET PROTOKOLL VERSION 6
67
• Das Feld Segments Left identifiziert die Anzahl der verbleibender Routing-Segmente.
• Derzeit ist nur eine Variante definiert (Routing Type 0) bei der die ersten 32 Bit des Felds
Type-Specific Data unbenutzt sind und die folgenden 128 Bit Felder jeweils eine IPv6 Adresse
enthalten. Kommt ein IPv6 Paket an der Zieladresse an und ist ein RH mit verbleibenden Segmenten
vorhanden, dann wird die nächste verbleibende Zieladresse in die Zieladresse kopiert, die Anzahl der
verbleibenden Segmente decrementiert und das Paket an die neue Zieladresse weitergeleitet.
Fragment Extension Header
IPv6 setzt voraus, daß jeder Link eine MTU von mindestens 1280 Byte besitzt [15]. Entsprechend müssen
Links, die eine kleinere MTU besitzen, Fragmentierung und Reassemblierung unterhalb von IPv6 realisieren.
Einfache Implementationen, die kein MTU Path Discovery unterstützen, müssen sich auf Pakete mit einer
maximalen Länge von 1280 Byte beschränken. Pakete, die größer sind als die Path MTU, können mit Hilfe
des Fragment Extension Header (FH) Erweiterungsprotokollkopfs fragmentiert und versendet werden. Der
FH-Erweiterungsprotokollkopf hat folgendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header |
Reserved
|
Fragment Offset
|Res|M|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identification
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Fragmentierung erfolgt ausschließlich beim Erzeuger eines IPv6 Datagramms und niemals innerhalb
eines Routers.
• Das Feld Next Header identifiziert den Typ der in der Nutzlast hinter dem FH-Erweiterungsprotokollkopf enthaltenen Nachricht.
• Das Feld Fragment Offset definiert die relative Position eines Fragments (gemessen in 64 Bit
Worten) des original IPv6-Pakets.
• Die Flagge M ist gesetzt, wenn weitere Fragmente folgen. Die Bits Res sind nicht benutzt.
• Das Feld Identification enthält für alle Fragmente eines IPv6-Pakets denselben Wert.
Authentication Extension Header
Der Authentication Header (AH) Erweiterungsprotokollkopf realisiert für IPv6 Pakete die grundlegenden Sicherheitsdienste Authentifikation und Datenintegrität [29]. Der AH-Erweiterungsprotokollkopf hat folgendes
Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header
| Payload Len |
RESERVED
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Security Parameters Index (SPI)
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Sequence Number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
Authentication Data (variable)
|
68
KAPITEL 3. INTERNET NETZWERKSCHICHT
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Next Header identifiziert den Typ der in der Nutzlast hinter dem AH-Erweiterungsprotokollkopf enthaltenen Nachricht.
• Das Feld Payload Len spezifiziert die Länge des AH-Erweiterungsprotokollkopfs gemessen in der
Anzahl von 32 Bit Worten minus 2.
• Das Feld Security Parameters Index enthält einen Wert, der zusammen mit der Zieladresse
eindeutig eine Security Association (SA) identifiziert.
• Das Feld Sequence Number enthält eine streng monoton wachsende Sequenznummer. Das erste
Paket, das nach der Einrichtung einer SA gesendet wird, hat den Sequenznummernwert 1. Erreicht die
Sequenznummer den Wert 232 , so muss in der Regel eine neue SA eingerichtet werden.
• Das Feld Authentication Data enthält eine Integritätsprüfsumme (integrity check value, ICV).
Die Länge dieses Felds hängt von der verwendeten Authentifizierungsfunktion ab.
Encapsulating Security Payload Extension Header
Der Encapsulating Security Payload (ESP) Erweiterungsprotokollkopf realisiert Sicherheitsdienste wie Vertraulichkeit, Authentifikation, Datenintegrität, Schutz vor Wiederholungen und eingeschränkte Sicherung gegen Verkehrsflußanalysen [30]. Der ESP-Erweiterungsprotokollkopf hat folgendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Security Parameters Index (SPI)
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Sequence Number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Payload Data* (variable)
|
˜
˜
|
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
Padding (0-255 bytes)
|
+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
| Pad Length
| Next Header
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Authentication Data (variable)
|
˜
˜
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
---ˆAuth.
|Cov|erage
| ---|
ˆ
|
|
|Conf.
|Cov|erage*
|
|
v
v
------
• Das Feld Security Parameters Index enthält einen Wert, der zusammen mit der Zieladresse
eindeutig eine Security Association (SA) identifiziert.
• Das Feld Sequence Number enthält eine streng monoton wachsende Sequenznummer. Das erste
Paket, das nach der Einrichtung einer SA gesendet wird, hat den Sequenznummernwert 1. Erreicht die
Sequenznummer den Wert 232 , so muss in der Regel eine neue SA eingerichtet werden.
• Die verschlüsselte Nutzlast (inklusive etwaiger Initialisierungsvektoren) ist im Feld Payload Data
untergebracht.
3.3. INTERNET PROTOKOLL VERSION 6
69
• Das Feld Padding kann benutzt werden, um durch Füllbytes eine Ausrichtung der verschlüsselten
Daten zu erreichen oder um eine passende Eingabelänge für ein gegebenes Verschlüsselungsverfahren
bereitzustellen. Durch das Anfügen von Füllbytes kann auch die ursprüngliche Länge der Nutzlast
verschleiert werden.
• Das Feld Pad Length enthält die Anzahl der Füllbytes.
• Das Feld Next Header identifiziert den Typ der in der Nutzlast enthaltenen Nachricht.
• Das Feld Authentication Data enthält eine Integritätsprüfsumme (integrity check value, ICV).
Die Länge dieses Felds hängt von der verwendeten Authentifizierungsfunktion ab.
• Eine Fragmentierung kann nur nach einer Verschlüsselung erfolgen, d.h. ESP wird nie auf ein Fragment angewendet.
Hop-by-Hop Options Extension Header
Der Hop-by-Hop Options Extension Header (HO) Erweiterungsprotokollkopf enthält eine Liste von Optionen, die von jedem Node auf dem Weg untersucht werden müssen [15]. Der HO-Erweiterungsprotokollkopf
hat folgendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
|
|
.
.
.
Options
.
.
.
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Next Header identifiziert den Typ der in der Nutzlast hinter dem HO-Erweiterungsprotokollkopf enthaltenen Nachricht.
• Das Feld Hdr Ext Len spezifiziert die Länge des HO gemessen in der Anzahl von 64 Bit Worten
minus 1.
• Das Feld Options enthält die einzelnen Optionen, die jeweils als Typ-Länge-Wert Tripel (tag-lengthvalue, TLV) kodiert sind:
0
1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Option Type | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - Das Feld Option Type definiert den Typ der Option und das Feld Option Data Len die Länge
der Daten gemessen in Bytes. Generell werden Optionen in der Reihenfolge des Auftretens im Paket
verarbeitet.
70
KAPITEL 3. INTERNET NETZWERKSCHICHT
Destination Options Extension Header
Der Destination Options Extension Header (DO) Erweiterungsprotokollkopf enthält eine Liste von Optionen, die nur von den Zielknoten untersucht werden müssen [15]. Der DO-Erweiterungsprotokollkopf hat
folgendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
|
|
.
.
.
Options
.
.
.
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Die Felder Next Header, Hdr Ext Len und Options sind analog zum HO-Erweiterungsprotollkopf
definiert.
3.3.4
IPv6 Weiterleitung
Die Weiterleitung von IPv6-Paketen erfolgt prinzipiell analog zu der Weiterleitung von IPv4-Paketen. Lediglich die Länge der Adressen und Präfixe hat sich verändert, was effiziente Implementationen der Weiterleitungstabellen erfordert.
3.3.5
IPv6 Fehlerbehandlung (ICMPv6)
Die IPv6-Fehlerbehandlung erfolgt durch das Internet Control Message Protocol Version 6 (ICMPv6). ICMPv6Nachrichten haben nach RFC 2463 [31] folgendes grundlegendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
Message Body
+
|
|
• Das Feld Type identifiziert den Typ einer ICMPv6-Nachricht. ICMPv6-Nachrichten können in Fehlermeldungen (Typ 0-127) und Informationsnachrichten (Typ 128-255) eingeteilt werden.
1
Destination Unreachable RFC 2463
2
Packet Too Big
RFC 2463
3
Time Exceeded
RFC 2463
4
Parameter Problem
RFC 2463
128 Echo Request
RFC 2463
129 Echo Reply
RFC 2463
133 Router Solicitation
RFC 2461
134 Router Advertisement
RFC 2461
135 Neighbor Solicitation
RFC 2461
136 Neighbor Advertisement RFC 2461
137 Redirect
RFC 2461
3.3. INTERNET PROTOKOLL VERSION 6
71
• Das Feld Code kann den Nachrichtentyp weiter klassifizieren. Die Bedeutung des Felds Code ist
abhängig vom Feld Type.
• Das Feld Checksum enthält eine Internet-Prüfsumme gebildet über die ICMPv6-Nachricht und Teile
des IPv6-Protokollkopfs.
• Der Inhalt des Felds Message Body ist abhängig vom ICMPv6-Nachrichtentyp.
3.3.6
IPv6 über IEEE 802.3
IPv6 Datagramme werden als Nutzdaten in IEEE 802.3 Rahmen übertragen [32]:
• Die Kennzeichnung von IPv6 Datagrammen erfolgt durch den Wert 0x86dd im Ethernet Typfeld.
• Entsprechend der maximalen IEEE 802.3 Rahmengröße ist die Link MTU 1500 Byte.
• Die Abbildung von IPv6 Adressen auf IEEE 802.3 Adressen erfolgt durch Umsetzungstabellen. Einträge in den Umsetzungstabellen können entweder statisch konfiguriert oder dynamisch gelernt werden.
3.3.7
IPv6 Neighbor Discovery
IPv6 unterstützt die automatische grundlegende Konfiguration von Hosts durch ein Neighbor Discovery
(ND), das auch die Funktionalität der Addressauflösung bereitstellt [33]:
• Erkennung von lokalen Routern, die am Link angeschlossen sind (router discovery).
• Erkennung der Präfixe, mit denen entschieden werden kann, welche Ziele lokal erreicht werden können
(prefix discovery).
• Erkennung von Parametern wie der MTU des Links oder des Hop Limits für ausgehende Pakete (parameter discovery).
• Automatische Konfiguration von IPv6-Adressen (address autoconfiguration).
• Auflösung von IPv6-Adressen zu Adressen auf dem Link-Layer (address resolution).
• Abbildung von IPv6-Zieladressen auf die Adresse des nächsten Nodes (next-hop determination).
• Erkennung von nicht mehr erreichbaren Nodes, die am Link angeschlossen sind (neighbor unreachability detection).
• Erkennung von Konflikten bei der Generierung von Adressen (duplicate address detection).
• Erlernen von besseren Alternativen für die Weiterleitung (redirect).
Neighbor Discovery verwendet spezielle IPv6-Adressen:
• all-nodes: Die Multicastadresse FF02::1 mit link-lokalem Scope, über die alle Nodes eines Links
erreicht werden können.
• all-routers: Die Multicastadresse FF02::2 mit link-lokalem Scope, über die alle Router eines Links
erreicht werden können.
• solicited-node: Eine Multicastadresse mit link-lokalem Scope, die sich aus der Zieladresse eines Nodes ableitet: Die ersten 96 Bit sind FF02:0:0:0:0:1, und die restlichen 32 Bit ergeben sich aus den
letzten 32 Bit einer IPv6-Addresse.
• link-local: Eine Unicastadresse mit link-lokalem Scope, die sich in der Regel aus der IEEE 802 MAC
Adresse ableitet.
72
KAPITEL 3. INTERNET NETZWERKSCHICHT
Das ND-Protokoll ist als Teil des ICMPv6-Protokolls realisiert und definiert fünf neue Nachrichtenformate. Um potentielle Angriffe durch falsche Neighbor Discovery Nachrichten einzuschränken wird das Hop
Limit der IPv6 Protokollköpfe auf den Wert 255 gesetzt. Empfänger einer Neighbor Discovery Nachricht
müssen Nachrichten verwerfen, deren Hop Limit nicht den Wert 255 enthält. Dies kann nur bei Nachrichten der Fall sein, die durch einen Router weitergeleitet worden sind, was einen potentiellen Angriff von
außerhalb des Links bedeutet.
Router Solicitation
Hosts können durch Router durch Solicitation Nachrichten Router auffordern, ein Router Advertisement zu
generieren.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Reserved
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options ...
+-+-+-+-+-+-+-+-+-+-+-+• Das Feld Type hat den Wert 133 und das Feld Code den Wert 0.
• Das Feld Checksum enthält die normale ICMPv6-Prüfsumme.
• Die Nachricht wird an die all-routers Multicastgruppe geschickt.
• Wenn die Quelladresse bekannt ist, dann kann in den Optionen die entsprechende Adresse auf dem
Link-Layer mitgeschickt werden.
Router Advertisement
Router senden periodisch oder als Reaktion auf eine Router Solicitation Nachricht eine Router Advertisement
Nachricht.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cur Hop Limit |M|O| Reserved |
Router Lifetime
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Reachable Time
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Retrans Timer
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options ...
+-+-+-+-+-+-+-+-+-+-+-+• Das Feld Type hat den Wert 134 und das Feld Code den Wert 0.
• Das Feld Checksum enthält die normale ICMPv6-Prüfsumme.
• Die Nachricht wird an die all-nodes Multicastgruppe geschickt.
3.3. INTERNET PROTOKOLL VERSION 6
73
• Das Feld Cur Hop Limit enthält einen vorgeschlagenen Wert, der von Hosts im Hop Limit
Feld von ausgehenden IPv6-Paketen eingesetzt werden soll.
• Mit der Flagge M kann angezeigt werden, dass Hosts zusätzlich einen anderen Mechanismus (DHCPv6) zur Autokonfiguration von Adressen benutzen sollen (managed address configuration).
• Mit der Flagge O kann angezeigt werden, dass Hosts einen anderen Mechanismus (DHCPv6) zur
Autokonfiguration der übrigen Parameter benutzen sollen (other stateful configuration).
• Das Feld Router Lifetime definiert den Zeitraum in Sekunden, indem der Router als DefaultRouter benutzt werden darf.
• Das Feld Reachable Time definiert die Zeit in Millisekunden, während der ein Node erreichbar
sein wird, nachdem der Node seine Link-Layer Adresse bekannt gegeben hat.
• Das Feld Retrans Timer definiert den Abstand in Millisekunden zwischen aufeinanderfolgenden
Neighbor Solicitation Nachrichten, die nicht durch Neighbor Advertisements beantwortet werden.
• In den Optionen können weitere Parameter enthalten sein, wie z.B. die Link-Layer Adresse des sendenden Routers, die MTU des Links oder Informationen über die auf dem Link gültigen Präfix.
Neighbor Solicitation
Hosts können durch Neighbor Solicitation Nachrichten andere Hosts auffordern, ein Neighbor Advertisement
zu generieren.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Reserved
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Target Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options ...
+-+-+-+-+-+-+-+-+-+-+-+• Das Feld Type hat den Wert 135 und das Feld Code den Wert 0.
• Das Feld Checksum enthält die normale ICMPv6-Prüfsumme.
• Die Nachricht wird an die solicited-node Multicastgruppe geschickt.
• Das Feld Target Address enthält die Zieladresse, über die Informationen benötigt werden.
• Wenn die Quelladresse bekannt ist, dann kann in den Optionen die entsprechende Adresse auf dem
Link-Layer mitgeschickt werden.
74
KAPITEL 3. INTERNET NETZWERKSCHICHT
Neighbor Advertisement
Hosts senden als Reaktion auf eine Neighbor Solicitation Nachricht eine Neighbor Advertisement Nachricht.
Neighbor Advertisement Nachrichten können auch unaufgefordert generiert werden, um Änderungen schnell
zu propagieren.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|S|O|
Reserved
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Target Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options ...
+-+-+-+-+-+-+-+-+-+-+-+• Das Feld Type hat den Wert 136 und das Feld Code den Wert 0.
• Das Feld Checksum enthält die normale ICMPv6-Prüfsumme.
• Die Nachricht wird an die in der Anfrage enthaltene IPv6-Adresse geschickt oder an die all-nodes
Multicastgruppe.
• Die Flagge R zeigt an, dass der Sender ein Router ist. Die Flagge S signalisiert, dass die Nachricht
eine Reaktion auf eine vorherige Anfrage ist und die Flagge O zeigt an, dass die enthaltene Information
eventuell vorhandene Cache-Einträge überschreiben soll.
• In den Optionen wird die Adresse des Senders auf dem Link-Layer mitgeteilt.
Redirect
Router können Redirect Nachrichten verschicken, um Hosts über bessere Pfade zu unterrichten.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Reserved
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Target Address
+
|
|
+
+
|
|
3.3. INTERNET PROTOKOLL VERSION 6
75
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Destination Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options ...
+-+-+-+-+-+-+-+-+-+-+-+• Das Feld Type hat den Wert 137 und das Feld Code den Wert 0.
• Das Feld Checksum enthält die normale ICMPv6-Prüfsumme.
• Das Feld Target Address enthält die IPv6-Adresse, über die ein besserer Weg zur Zieladresse
Destination Address erreicht wird.
• Das Feld Destination Address enthält die IPv6 Adresse, für die die Target Address ein
besserer Weg ist.
• In den Optionen kann die Link-Layer Adresse der Target Address mitgeteilt werden, sofern
sie bekannt ist. Außerdem sollte in den Optionen soviel wie möglich vom IPv6-Paket untergebracht
werden, das die Redirect Nachricht ausgelöst hat.
76
KAPITEL 3. INTERNET NETZWERKSCHICHT
3.4 Wegwahlverfahren
Die Weiterleitung von Paketen geschieht im Internet durch Weiterleitungstabellen. Diese Tabellen bestimmen
die Wege der Datagramme durch das Internet und müssen ständig angepasst werden. Da dies manuell nicht
machbar ist, wurden spezielle Wegwahlverfahren (routing protocols) entwickelt.
• Grundlegend für die Wegwahl ist die Einteilung des Internets in autonome Systeme (autonomous
systems, AS). Ein AS ist eine Menge von Netzen, die von einer Organisation verwaltet und betrieben
werden.
• Die Wegwahlverfahren innerhalb eines AS sind unabhängig von den Wegwahlverfahren in anderen
AS. Man bezeichnet ein Wegwahlverfahren in einem AS auch als Interior Gateway Protocol (IGP).
Weit verbreitete IGPs sind das Routing Information Protocol (RIP) und das Open Shortest Path First
(OSPF) Protokoll.
• Die Wegwahlverfahren zwischen mehreren AS bezeichnet man auch als Exterior Gateway Protocol
(EGP). Ein weit verbreitetes EGP ist das Border Gateway Protocol (BGP).
3.4.1
Routing Information Protocol (RIP)
Das Routing Information Protocol Version 2 (RIP-2) [34] ist ein einfaches Wegwahlverfahren innerhalb autonomer Systeme und basiert auf dem Austausch von Distanzvektoren (distance vector routing). Die Grundlage
ist der Bellman-Ford Algorithmus zur Ermittlung kürzester Wege in einem Graphen.
Bellman-Ford Algorithmus zur Ermittlung der kürzesten Wege
• Sei G = (V, E) ein Graph mit den Kanten V , den Knoten E und m = |V | und n = |E|.
• Sei D eine N × N Distanzmatrix in der D(i, j) die Distanz vom Knoten i zum Knoten j beschreibt.
• Sei H eine N × N Matrix in der H(i, j) die Kante bestimmt, auf der ein Knoten i eine Nachricht in
Richtung des Knoten j weiterleitet.
• Sei M ein Vektor mit den Link Metriken, S ein Vektor mit den Startknoten der Links und D ein Vektor
mit den Endknoten der Links.
1. Setze D(i, j) = ∞ für i 6= j und D(i, j) = 0 für i = j.
2. Für alle Kanten l und für alle Knoten k berechne: Sei i = S[l] und j = D[l] und berechne d =
M [l] + D(j, k).
3. Falls d < D(i, k), setze D(i, k) = d und H(i, k) = l.
4. Falls mindestens ein D(i, k) verändert wurde, wiederhole ab Schritt 2. Anderenfalls ist die Berechnung beendet.
Eigenschaften
• In einfachen Distanzvektorprotokollen wie RIP breiten sich gute Nachrichten in der Regel schnell aus,
während schlechte Nachrichten sich relativ langsam verbreiten.
• Speziell bei Ausfällen von Links ist zu beobachten, dass sich die schlechte Nachricht durch ein langsames Hochzählen der Kosten verbreitet (count to infinity).
• Beim RIP ist infinity als 16 Hops definiert. Entsprechend kann RIP auch nur in Netzen verwendet
werden, deren längsten Wege (network diameter) kleiner als 16 Hops sind.
• RIP ist beschränkt sich auf die Anzahl der Hops als einzige Metrik.
3.4. WEGWAHLVERFAHREN
77
Protokoll
RIP-2 wird über das User Datagram Protocol (UDP) abgewickelt und benutzt normalerweise die Portnummer
520. Alle RIP-2 Nachrichten haben folgenden Aufbau:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Command
|
Version
|
must be zero
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
˜
RIP Entries
˜
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Command zeigt an, ob es sich um eine Anfrage (request) oder eine Antwort (response)
handelt. Antworten können auch unaufgefordert geschickt werden (unsolicited response).
• Das Feld Version enthält die Versionsnummer.
• Nach den ersten 32 Bit folgt eine Liste von sogenannten RIP Entries, die jeweils 20 Byte lang
sind.
Ein RIP-2 RIP Entry hat folgende Struktur:
0
1
2
3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Address Family Identifier
|
Route Tag
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
IP Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Subnet Mask
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Next Hop
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Metric
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Address Family Identifier identifiziert eine Adreßfamilie. Ursprünglich wurde
RIP für Netzwerke mit verschiedenen Adreßformaten entwickelt.
• Das Feld Route Tag markiert RIP Entries, die externe Routen enthalten, die beispielsweise von
einem EGP etabliert wurden.
• Das Feld IP Address enthält eine IPv4-Zieladresse.
• Das Feld Subnet Mask identifiziert zur Zieladresse den Netzwerk-Präfix.
• Das Feld Next Hop enthält die IPv4-Adresse des Routers, über den Pakete weitergeleitet werden
sollen. Enthält das Feld den speziellen Wert 0.0.0.0, so wird Quelladresse der RIP-Nachricht benutzt.
• Das Feld Metric enthält einen Wert zwischen 1 und 15 inklusive. Der Wert 16 wird benutzt, wenn
ein Ziel nicht erreichbar ist (infinity).
Zur Authentifikation kann der erste RIP Entry folgendes Format besitzen:
78
KAPITEL 3. INTERNET NETZWERKSCHICHT
0
1
2
3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
0xFFFF
|
Authentication Type
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Authentication
+
|
|
+
+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Die Konstante 0xFFFF unterscheidet einen Authentifizierungseintrag von anderen RIP Entries.
• Das Feld Authentication Type identifiziert ein Authentifizierungsverfahren.
• Das Feld Authentication enthält Daten, die vom Empfänger zur Authentifikation der Nachricht
benutzt werden.
• Neben dem trivialen Authentifizierungsverfahren durch Klartext-Passworte ist ein Verfahren auf der
Basis von MD5 definiert [35], wobei ein zusätzlicher Trailer am Ende einer RIP-2 Nachricht eingeführt
wird.
3.4.2
Open Shortest Path First (OSPF)
Das Open Shortest Path First (OSPF) Protokoll [36] ist ein Wegwahlverfahren innerhalb autonomer Systeme
und basiert auf der Idee, dass allen Knoten der Zustand der Kanten (link state) bekannt ist. Jeder Knoten berechnet dann aufgrund dieser Datenbasis (link state database) die jeweils kürzesten Wege unter Verwendung
des Dijkstra Algorithmus (link state routing). Die Aktualisierung der Datenbasis erfolgt durch das Fluten von
Nachrichten.
Dijkstra Algorithmus zur Ermittlung der kürzesten Wege
1. Alle Knoten werden mit den Kosten unendlich beschriftet und als vorläufig“ markiert.
”
2. Der Startknoten bekommt die Kosten 0 zugewiesen und wird zum aktuellen Knoten.
3. Der aktuelle Knoten wird als permanent“ markiert.
”
4. Vom aktuellen Knoten aus werden alle direkten Nachfolger betrachtet. Ist die Summer der Kosten für
den aktuellen Knoten und der Kosten zum Erreichen des Nachfolgers kleiner als die bisher bekannten
Kosten des Nachfolgers, so werden die Kosten des Nachfolgers aktualisiert und der aktuelle Knoten
vermerkt.
5. Sind noch vorläufige“ Knoten vorhanden, so wird einer mit minimalen Kosten ausgewählt und zum
”
neuen aktuellen Knoten.
6. Wiederhole ab Schritt 3 falls ein neuer Knoten ausgewählt werden konnte.
OSPF Areas
• Eine OSPF Area gruppiert eine Menge von Netzen eines Autonomen Systems.
• Die Topologie einer OSPF Area ist für andere OSPF Areas unsichtbar. Entsprechend ist das Routing
innerhalb einer Area (intra-area routing) beschränkt auf diese Area.
3.4. WEGWAHLVERFAHREN
79
• Die einzelnen OSPF Areas werden über den OSPF Backbone (OSPF Area 0) miteinander verbunden.
Das Routing zwischen Areas (inter-area routing) erfolgt in drei Teilabschnitten:
1. Ein intra-area Pfad von der Quelle zu einem Area Border Router.
2. Ein Pfad in der Backbone Area vom Area Border Router der Quell-Area zu einem Area Border
Router der Ziel-Area.
3. Ein intra-area Pfad vom Area Border Router zum Ziel.
• Entsprechend der Einteilung in Areas unterscheidet man zwischen verschiedenen Routern:
1. Internal Router: Ein Router, dessen Interfaces alle zu derselben OSPF Area gehören.
2. Area Border Router: Ein Router, der mehrere OSPF Areas miteinander verbindet. Diese Router
müssen für jede OSPF Area eine eigene Kopie des grundlegenden OSPF-Algorithmus ausführen.
3. Backbone Router: Ein Router mit einem Interface zu der Backbone Area. Jeder Area Border
Router ist automatisch ein Backbone Router.
4. AS Boundary Router: Ein Router, der Informationen mit Routern austauscht, die zu anderen
autonomen Systemen gehören.
• In sogenannten Stub Areas mit einem einzigen Area Border Router kann das Routing durch default
Routen vereinfacht und der Aufwand reduziert werden.
Protokoll
OSPF-Nachrichten werden direkt in IP Datagrammen transportiert. Der Wert im Feld Protocol bzw. Next
Header ist 89. Alle OSPF-Nachrichten haben denselben Protokollkopf:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Version #
|
Type
|
Packet Length
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Router ID
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Area ID
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Checksum
|
AuType
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Authentication
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Authentication
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Version enthält die Versionsnummer (2).
• Das Feld Type enthält die Identifikation des Nachrichtentyps.
• Das Feld Packet Length enhält die Länge der gesamten OSPF-Nachricht gemessen in Bytes.
• Das Feld Router ID identifiziert den Router, der das Paket gesendet hat.
• Das Feld Area ID identifiziert die OSPF Area. Die Area ID für den OSPF Backbone ist 0, oftmals
geschrieben in der Notation 0.0.0.0.
• Das Feld Checksum enthält eine Internet-Prüfsumme gebildet über die gesamte OSPF-Nachricht
ohne das Authentication Feld.
• Das Feld AuType identifiziert die verwendete Authentifizierungsprozedur.
• Das Feld Authentication wird von den Authentifizierungsprozeduren in unterschiedlicher Art
und Weise benutzt.
80
KAPITEL 3. INTERNET NETZWERKSCHICHT
Hello
Das Hello-Protokoll hat die Aufgabe, die Funktionsbereitschaft von Links festzustellen und bei broadcast
und non-broadcast Netzen einen Designated Router und einen Backup Designated Router zu bestimmen.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Version #
|
Type = 1
|
Packet length
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Router ID
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Area ID
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Checksum
|
AuType
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Authentication
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Authentication
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Network Mask
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
HelloInterval
|
Options
|
Rtr Pri
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
RouterDeadInterval
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Designated Router
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Backup Designated Router
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Neighbor
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
...
|
• Der ersten Felder enthalten den normalen OSPF-Nachrichtenkopf, wobei das Feld Type den Wert 1
hat.
• Das Feld Network Mask enthält die Netzmaske für das Interface.
• Das Feld HelloInterval enthält das Zeitintervall in Sekunden zwischen aufeinanderfolgende
Hello-Nachrichten.
• Das Feld Rtr Pri enthält die Priorität des Routers, die für die Auswahl des Designated bzw. Backup
Designated Routers verwendet wird. Router mit der Priorität 0 nehmen nicht an der Auswahl teil.
• Das Feld RouterDeadInterval definiert das Zeitintervall in Sekunden, nachdem ein Router als
nicht mehr erreichbar betrachtet wird.
• Das Feld Designated Router enthält die Identität des Designated Routers bzw. 0 falls noch kein
Designated Router bekannt ist.
• Das Feld Backup Designated Router enthält die Identität des Backup Designated Router bzw.
0 falls noch kein Backup Designated Router bekannt ist.
• Am Ende der Nachricht befindet sich eine Liste von Neighbor Feldern, wobei jedes Neighbor
Feld die Identität eines Routers anzeigt, von dem im letzten RouterDeadInterval eine HelloNachrichten empfangen wurde.
3.4. WEGWAHLVERFAHREN
81
• Ein Link wird als verfügbar betrachtet, wenn Hello-Nachrichten in beide Richtungen ausgetauscht
werden können. Bei direkten Verbindungen (point-to-point links, virtual links) kann, sobald der Link
als verfügbar erkannt wurde, mit dem Austausch der Datenbasis begonnen werden.
• Bei Netzwerk-Verbindungen (broadcast links, non-broadcast links) wird zunächst der Designated
Router und der Backup Designated Router bestimmt:
1. Zunächst verhält sich ein Router für ein RouterDeadInterval passiv indem er eingehende
Hello-Nachrichten sammelt und eigene Hello-Nachrichten generiert, in denen er sich nicht zu
Wahl stellt. Anschließend werden nur die Nachbarn betrachtet, für die der Link in beide Richtungen verfügbar ist.
2. Wenn einer oder mehrere Router sich als Backup Designated Router angeboten haben, wird der
Router mit der höchsten Priorität ausgewählt. Sollte die Priorität nicht eindeutig sein, wird aus
den Kandidaten der Router mit der größten Identifikationsnummer ausgewählt.
3. Wenn kein Router sich als Backup Designated Router angeboten hat, wird der Router mit der
höchsten Priorität (und der größten Identifikationsnummer) ausgewählt.
4. Wenn einer oder mehrere Router sich als Designated Router angeboten haben, wird der Router
mit der höchsten Priorität ausgewählt. Sollte die Priorität nicht eindeutig sein, wird aus den
Kandidaten der Router mit der größten Identifikationsnummer ausgewählt.
5. Wenn kein Router sich als Designated Router angeboten hat, wird der Router mit der höchsten
Priorität (und der größten Identifikationsnummer) ausgewählt.
Ein Router kann nicht zugleich Designated Router und Backup Designated Router sein. Daher müssen
nach dem Schritt 5 die Schritte 2 und 3 wiederholt werden.
Exchange
Das Exchange-Protokoll hat die Aufgabe die Datenbasis initial zu synchronisieren.
...
Flooding
...
3.4.3
...
Border Gateway Protocol (BGP)
82
KAPITEL 3. INTERNET NETZWERKSCHICHT
Kapitel 4
Internet Transportschicht
Die Transportschicht hat die Aufgabe, Anwendungsprotokollen eine geeignete Transportschnittstelle zur
Verfügung zu stellen.
• IP-Adressen identifizieren Netzwerkendpunkte und besitzen daher eine Host-to-Host-Signifikanz.
• Transportendpunkte identifizieren kommunizierende Anwendungsprozesse und werden im Internet
durch eine Kombination von IP-Adresse und einer 16-Bit Portnummer gebildet. Transportadressen
besitzen End-to-End-Signifikanz.
• Für Standardanwendungsprotokolle sind Portnummern fest definiert (well-known ports).
• Mit Hilfe der Portnummern erfolgt ein Multiplexen auf Transportebene:
SMTP
HTTP
FTP
IP Address + Portnummer
Transport Layer
IP Adresse
IP Layer
Abbildung 4.1: Multiplexen mit Hilfe von Portnummern
Derzeit existieren im wesentlichen vier Transportprotokolle im Internet:
1. Das User Datagram Protocol (UDP) realisiert einen einfachen unzuverlässigen Datagrammdienst.
2. Das Transmission Control Protocol (TCP) realisiert einen zuverlässigen, verbindungsorientierten Datenstrom.
3. Das Stream Control Transmission Protocol (SCTP) realisiert einen zuverlässigen Transportdienst, bei
dem mehrere unabhängige Nachrichtenströme über eine Verbindung gemultiplext werden können.
SCTP erhält die Grenzen von Nachrichten (framing) und unterstützt insbesondere Signalisierungsprotokolle.
4. Das Real-Time Transport Protocol (RTP) realisiert eine Transportdienst für Realzeit-Datenübertragungen wie z.B. Audio und Video. RTP basiert in der Regel auf UDP.
83
84
KAPITEL 4. INTERNET TRANSPORTSCHICHT
4.1 Pseudo-Header
Viele Transportprotokolle beinhalten eine Internet-Prüfsumme, die in der Regel über den Transportprotokollkopf und einen Pseudo-Header berechnet wird.
Der IPv4 Pseudo-Header besteht aus der Quell- und Zieladresse plus der Protokollnummer und der Länge
der Nutzdaten:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Destination Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused (0)
|
Protocol
|
Length
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Der IPv6 Pseudo-Header besteht aus der Quell- und Zieladresse plus der Nutzdatenlänge und des Next
Header Felds:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Source Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
+
+
|
|
+
Destination Address
+
|
|
+
+
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Upper-Layer Packet Length
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
zero
| Next Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
4.2
User Datagram Protocol (UDP)
Das User Datagram Protocol (UDP) ist in RFC 768 [37] definiert und stellt einen einfachen unbestätigten
Datagrammdienst zur Verfügung. Im wesentlichen erweitert UDP den IP Datagrammdienst um Portnummern und eine zusätzliche Prüfsumme. Der Wert im Feld Protocol des IPv4-Protokollkopfs bzw. Next
Header des IPv6-Protokollkopfs ist 17.
Der UDP-Protokollkopf hat folgendes Format:
4.3. TRANSMISSION CONTROL PROTOCOL (TCP)
85
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Port
|
Destination Port
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Length
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Source Port identifiziert die Portnummer des sendenden Prozesses.
• Das Feld Destination Port identifiziert die Portnummer des empfangenden Prozesses.
• Das Feld Length enthält die Länge des UDP-Datagramms inklusive des UDP-Protokollkopfs gemessen in Bytes.
• Das Feld Checksum enthält eine Internet-Prüfsumme gebildet über den Pseudo-Header, den UDPProtokollkopf und die im Datagramm enthaltenen Daten.
4.3
Transmission Control Protocol (TCP)
Das Transmission Control Protocol (TCP) ist in RFC 793 [38] definiert und stellt einen zuverlässigen verbindungsorientierten Transportdienst über einem unzuverlässigen verbindungslosen Netzwerkprotokoll zur
Verfügung. Endsysteme tauschen einen unstrukturierten Bytestrom aus, wobei eine TCP-Verbindung bidirektional oder unidirektional betrieben werden kann. TCP realisiert eine Ende-zu-Ende-Flusskontrolle durch
eine Fenstertechnik mit adaptiven Timeouts und einer automatischen Anpassung an Stausituationen.
Zur Übertragung zerlegt TCP einen Datenstrom in sogenannte Segmente. Jedes Segment wird mit einem
eigenen TCP-Protokollkopf versehen und übertragen. Der TCP-Protokollkopf hat folgendes Format:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Port
|
Destination Port
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Sequence Number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Acknowledgment Number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Offset| Reserved |
Flags
|
Window
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Checksum
|
Urgent Pointer
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options
|
Padding
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Das Feld Source Port identifiziert die Portnummer des sendenden Prozesses.
• Das Feld Destination Port identifiziert die Portnummer des empfangenden Prozesses.
• Das Feld Sequence Number enthält nach dem Verbindungsaufbau die Sequenznummer des ersten
Datenbytes im Segment. Beim Verbindungsaufbau wird das Feld zum Etablieren der Sequenznummer
benutzt.
• Das Feld Acknowledgment Number enthält die nächste Sequenznummer, die der Sender des Acknowledgments erwartet.
86
KAPITEL 4. INTERNET TRANSPORTSCHICHT
• Das Feld Offset enthält die Länge des TCP-Protokollkopfes inklusive der Optionen gemessen in 32
Bit Worten.
• Das Feld Flags enthält eine Menge von Flaggen:
– URG: Das Feld Urgent Pointer ist signifikant.
– ACK: Das Feld Acknowledgment Number ist signifikant.
– PSH: Daten werden möglichst direkt dem Empfänger zugestellt.
– RST: Rücksetzen der Verbindung.
– SYN: Synchronisation der Sequenznummern.
– FIN: Keine weitere Daten vom Sender.
• Das Feld Window zeigt die Anzahl der Datenbytes an, die der Sender des Segments bereit ist zu
empfangen.
• Das Feld Checksum enthält eine Internet-Prüfsumme, gebildet über den Pseudo-Header, den TCPProtokollkopf und die im Segment enthaltenen Daten.
• Das Feld Urgent Pointer zeigt relativ zur aktuellen Segmentnummer auf wichtige Daten wenn
das URG-Bit gesetzt ist.
• Das Feld Options kann weitere Optionen aufnehmen.
4.3.1
Verbindungsaufbau
Der Verbindungsaufbau erfolgt durch einen sogenannten three-way handshake. Das Verfahren garantiert
einen korrekten Verbindungsaufbau, selbst wenn TCP-Pakete verloren gehen oder dupliziert werden. Im
Normalfall (d.h. keine Probleme durch etwaige Paketverluste) läuft das Verfahren nach folgendem Schema
ab:
Active Open
Passive Open
SYN x
SYN x
ACK x+1, SYN y
ACK x+1, SYN y
ACK y+1
ACK y+1
Abbildung 4.2: TCP Verbindungsaufbau
• Eine TCP-Protokollmaschine wartet zunächst passiv auf eine Verbindung (passive open).
• Eine zweite TCP-Protokollmaschine startet den Verbindungsaufbau (active open).
• Zunächst wird eine initiale Sequenznummer in einem SYN-Paket übertragen. Die initiale Sequenznummer wird durch einen Zähler bestimmt, der ungefähr alle 4 Mikrosekunden inkrementiert wird.
Dieses Verfahren garantiert, dass eine initiale Sequenznummer nicht wiederbenutzt wird, solange sich
noch potentiell Pakete einer alten Verbindung im Netz befinden.
87
4.3. TRANSMISSION CONTROL PROTOCOL (TCP)
• Die passive Seite merkt sich die Sequenznummer und sendet ihre eigene zufällig gewählte Sequenznummer. Dabei wird der Empfang des ersten SYN-Pakets quittiert.
• Die aktive Seite merkt sich nun ebenfalls die Sequenznummer und bestätigt den Empfang durch das
Senden einer Quittung.
4.3.2
Verbindungsabbau
TCP stellt zunächst nach dem Verbindungsaufbau immer zwei unabhängige Datenströme bereit. Durch den
Abbau eines Datenstroms wird aus einer bidirektionalen Verbindung eine unidirektionale Verbindung. Wenn
beide Datenströme abgebaut werden, ist die TCP-Verbindung beendet. Im Normalfall (d.h. keine Probleme
durch etwaige Paketverluste) läuft das Verfahren nach folgendem Schema ab:
Active Open
Passive Open
FIN x
FIN x
ACK x+1
ACK x+1
ACK x+1, FIN y
ACK x+1, FIN y
ACK y+1
ACK y+1
Abbildung 4.3: TCP Verbindungsaufbau und -abbau
• Der Verbindungsabbau wird durch das Setzen des FIN-Bits eingeleitet.
• Dem Empfänger bestätigt zunächst den Empfang des TCP-Pakets.
• Anschließend informiert der Empfänger die betroffene Applikation über den Abbau der Verbindung.
• Nachdem die Applikation bereit ist, die Verbindung abzubauen, wird ein TCP-Paket mit gesetztem
FIN-Bit übertragen, wobei die Quittung wiederholt wird.
• Der Empfang des zweiten FIN-Pakets wird durch eine Quittung bestätigt.
Sollte es zu einem abrupten Ausfall des Senders oder des Empfängers kommen, so verlangt der TCP-Standard
eine Ruhezeit von 120 Sekunden bevor neue TCP-Verbindungen etabliert werden können (maximum segment lifetime, MSL). Diese Ruhezeit ist dadurch motiviert, dass nach 120 Sekunden Segmente von alten
Verbindungen aus dem Netz verschwunden sein sollten.
4.3.3
Zustandsmaschine
Die Schritte zum Verbindungsauf- und abbau lassen sich am einfachsten durch einen endlichen Automaten
beschreiben. Der TCP-Automat hat folgende Zustände:
88
KAPITEL 4. INTERNET TRANSPORTSCHICHT
CLOSED:
LISTEN:
SYN-RCVD:
SYN-SENT:
ESTABLISHED:
FIN-WAIT-1:
FIN-WAIT-2:
TIMED-WAIT:
CLOSING:
CLOSE-WAIT:
LAST-ACK:
4.3.4
Startzustand
Server wartet auf Verbindungswünsche (passive open)
Server hat Verbindungswunsch empfangen
Client hat Verbindungsaufbau gestartet
Verbindung ist etabliert und betriebsbereit
Server/Client hat den Verbindungsabbau eingeleitet
Client/Server hat den Verbindungsabbau bestätigt
Warten bis alle Segmente verschwunden sind
Endpunkte beenden die Verbindung gleichzeitig
Entferntes System hat einen Verbindungsabbau gestartet
Warten bis alle Segmente verschwunden sind
Flusskontrolle
Nagle Algorithmus
Silly Window Syndrome
4.3.5
Staukontrolle
Timer
Karn Algorithmus
4.3.6
4.4
[39, 40]
Optionen
Stream Control Transmission Protocol (SCTP)
Kapitel 5
Internet Anwendungsschicht
Das Anwendungssystem im Internet ist nicht besonders strukturiert. Viele Protokolle setzen direkt auf den
Transportprotokollen auf und es ist nicht unüblich, daß die einzelnen Protokolle wiederkehrende gleichartige
Probleme (z.B. maschinenunabhängige Datenkodierung) auf verschiedene Weisen lösen. Obwohl dies global
betrachtet nicht besonders effizient zu sein scheint, sind diese vielen spezialisierten Einzellösungen praktisch
sehr erfolgreich gewesen.
Die im Internet verwendeten Anwendungsprotokolle sind sehr vielfältig. Im folgenden werden nur diejenigen
vorgestellt, die entweder besonders wichtige Kerndienste realisieren (z.B. DNS), einen Großteil des Verkehrs
ausmachen (z.B. HTTP, FTP, SMTP) oder durch spezielle Besonderheiten interessant sind (z.B. SNMP).
5.1 Domain Name System (DNS)
Das Internet verwendet zur Adressierung Bitfolgen (IPv4/IPv6 Adressen und Portnummern), die maschinell effizient verarbeitet werden können aber für Menschen nur schwer zu merken sind. Das Domain Name
System [41, 42] ist die Infrastruktur, die nutzerfreundliche Namen in entsprechende Adressen abbildet.
virtual Root
nl
de
edu
org
net
com
biz
Toplevel
uni−osnabrueck
2nd Level
informatik
3rd Level
www
4th Level
Abbildung 5.1: Struktur der Domain Name System (DNS) Namen
• Das Domain Name System stellt einen hierarchischen Namensraum mit einer virtuellen Wurzel zur
Verfügung. Die Administration des Namensraums kann entlang der Pfade von der virtuellen Wurzel
aus delegiert werden.
• Die Auflösung von Namen erfolgt durch sogenannten DNS-Server, die jeweils einen Teil des globalen
Namensraums und ihre Position in der Hierarchie kennen.
• Anfragen können quasi an beliebige DNS-Server gestellt werden. Bei sogenannten rekursiven Anfragen wird der befragte DNS-Server gegebenenfalls andere DNS-Server kontaktieren um eine Antwort
auf eine Anfrage zu bekommen. Alternativ kann aber auch iterativ vorgegangen werden, wobei der
Anfrager sich iterativ durch eine Menge von DNS-Server durchfragen muß.
89
90
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
• In den letzten Jahren wird verstärkt versucht, eine Sicherheitsinfrastruktur für DNS-Server zu etablieren. Einerseits ist es durchaus sinnvoll, Namensauflösungen so abzusichern, daß man den Antworten auch vertrauen kann. (Verbirgt sich hinter www.meine-bank.de wirklich meine Bank?)
Andererseits könnte eine sichere DNS-Infrastruktur auch zur Verteilung von Zertifikaten für andere
Sicherheitsmechanismen dienen.
• Da wohlklingende DNS-Namen in den letzten Jahren ein Handelsgut geworden sind, gibt es sehr viel
politisches Tauziehen um die Frage, wer eigentlich die Toplevel-Domains definiert.
Cache
Umfassender
Nameserver
API
RR DB
DNS
Anwendung
Resolver
Cache
Lokal auf einer Maschine
DNS
Primaerer
Nameserver
RR DB
Cache
Verschiedene DNS Server
Abbildung 5.2: Rekursive Namensauflösung mit zwei DNS Servern
Das gesamte Domain Name System besteht im wesentlichen aus drei Komponenten:
• Der hierarchische Namensraum und die sogenannten Resource Records (RRs), die die für einen Namen bekannten typisierten Informationen beinhalten. Es gibt verschiedene standardisierte Resource
Records und es können neue Resource Records definiert werden um zusätzliche Informationen im
DNS abzulegen.
• Eine Menge von Servern, die mit Hilf des DNS-Protokolls Zugriff auf die verwalteten Informationen
ermöglichen und in der Regel lokale Cache-Speicher verwalten. Die an einem DNS-Server administrativ konfigurierten Informationen werden in sogenannte Zonen eingeteilt. Man spricht in diesem
Zusammenhang auch davon, daß ein DNS-Server authorität über die lokalen Zonen besitzt.
• Resolver sind Programme oder Bibliotheken, die in der Regel für Anwendungsprogramme Namensauflösungen durchführen.
5.1.1
Format von Domain Namen
Im RFC 1034 [41] finden sich genauere Details über das Format von Domain Namen. Zu beachten ist hierbei,
daß derzeit Bemühungen unterwegs sind, auch internationale Zeichen in Domain Namen zuzulassen.
• Die Namen (labels) auf einer Ebene der Hierarchie müssen eindeutig und dürfen nicht länger als 63
Byte lang sein. Der Zeichensatz ist 7-Bit ASCII, wobei Großkleinschreibung bei Vergleichen nicht
relevant ist.
• Die Namen auf einer Ebene müssen mit einem Buchstaben beginnen und einem Buchstaben oder einer
Ziffer enden. Zwischen dem ersten und lezten Zeichen dürfen nur Buchstaben, Ziffern und Bindestriche vorkommen.
5.1. DOMAIN NAME SYSTEM (DNS)
91
• Die Namen der verschiedenen Ebenen können mit Hilfe eines Punkts konkateniert werden. Man erhält
auf diese Art und Weise Pfade im Namensraum. Absolute Pfade, die an der virtuellen Wurzel enden,
enden entsprechend mit einem Punkt. Alle anderen Pfade die nicht mit einem Punkt enden werden als
relative Pfade betrachtet.
• Die Gesamtlänge eines Domain Namens ist auf 255 Byte begrenzt.
5.1.2
Resource Records
Die zu einem Namen gehörenden Informationen werden in sogenannten Resource Records (RRs) gehalten.
Jeder RR hat folgende Attribute:
• Der Besitzer (owner) ist der Domain Name der einen Resource Record identifiziert.
• Der Typ (type) definiert die Art der Informationen im Resource Record. Die wichtigsten Typen sind
[41, 43, 44, 45]:
Typ
Beschreibung
A
IPv4 Adresse
AAAA
IPv6 Adresse (erster Versuch)
A6
IPv6 Adresse (zweiter Versuch)
CNAME Alias für einen anderen Namen
HINFO Identifikation der CPU und des Betriebssystems
MX
(mail exchanger)
Identifikation eines authoritativen Servers für eine Domain
NS
PTR
Verweis auf einen anderen Teil des Namensraums
SOA
Beschreibt den Anfang und Parameter einer Zone
Öffentlicher Schlüssel der mit einem Domain Namen assoziiert ist
KEY
SIG
Signatur über die RRs eines Domain Namens
• Die Klasse (class) definiert einen protokollspezifischen Namensraum. Ursprünglich wurde das Domain Name System nicht nur im Internet benutzt. Entsprechend unterscheidet man zwischen IN (Internet) und CH (Chaos System).
• Die Lebensdauer (TTL) bestimmt, wieviele Sekunden die Informationen aus einem RR in einem Cache gehalten werden können.
• Das Datenformat (RDATA) eines RRs ist abhängig vom Typ des RRs.
5.1.3
DNS Nachrichtenformat
Alle DNS Nachrichten haben die gleiche Struktur und bestehen aus fünf Abschnitten:
1. Eine DNS Nachricht beginnt mit einem Protokollkopf (header). Er legt fest, welche der im folgenden
beschriebenen Elemente vorhanden sind und ob es sich um bei einer Nachricht um eine Anfrage oder
eine Antwort handelt.
2. Eine Liste von Anfragen (questions).
3. Eine Liste von RRs mit Antworten (answers).
4. Eine Liste von RRs mit Verweisen auf Authoritäten (authorities).
5. Eine Liste von weiteren RRs die weitere nützliche Informationen enthalten (additional).
Als Transport für Anfragen wird normalerweise UDP verwendet. Beim Austausch von größeren Datenmengen (zone transfers) wird zumeist TCP eingesetzt. Die Standardportnummer ist für beide Transportprotokolle
53.
92
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
DNS Protokollkopf
0
1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
ID
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|
Opcode |AA|TC|RD|RA| Z|AD|CD|
RCODE
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
QDCOUNT
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
ANCOUNT
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
NSCOUNT
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
ARCOUNT
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
• Das Feld ID enhält eine Nummer, mit der Antworten vorausgegangenen Fragen zugeordnet werden
können.
• Das Bit QR ist 0 bei einer Anfrage und 1 bei einer Antwort.
• Das Feld OPCODE beschreibt die Art der Anfrage. Es ist 0 für eine Standardanfrage (QUERY) und 1
für eine inverse Anfrage (IQUERY).
• Das Bit AA ist gesetzt, wenn es sich um eine authoritative Antwort handelt.
• Das Bit TC signalisiert, daß die Nachricht aufgrund von Begrenzungen des Transportsystems unvollständig ist (truncated).
• Das Bit RD ist gesetzt, wenn eine rekursive Anfrage gestellt wird (recursion desired).
• Das Bit Z ist derzeit nicht benutzt.
• Das Bit AD ist gesetzt, wenn eine Antwort authentifizierte Daten enthält (authentic data).
• Das Bit CD ist gesetzt, wenn ein resolver nicht-authentifizierte Daten bereit ist zu akzeptieren (checking
disabled).
• Das Feld RCODE enthält einen Fehlercode, der natürlich nur bei Antworten relevant ist.
• Das Feld QDCOUNT enthält die Anzahl der Anfragen in der Liste von Anfragen.
• Das Feld ANCOUNT enthält die Anzahl der Antworten in der Liste der Antworten.
• Das Feld NSCOUNT enthält die Anzahl der authoritativen Nameserver in der Liste der Authoritäten.
• Das Feld ARCOUNT enthält die Anzahl der Elemente in der Liste der weiteren Informationen.
DNS Anfrageformat
Die Einträge in der Anfrageliste haben folgendes Format:
0
1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
/
QNAME
/
/
/
5.1. DOMAIN NAME SYSTEM (DNS)
93
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
QTYPE
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
QCLASS
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
• Das Feld QNAME enthält den Domain Namen, auf den sich die Anfrage bezieht.
• Das 16-Bit Feld QTYPE bestimmt die Art der Anfrage. Einige definierte Werte sind: 1 (A), 2 (NS), 5
(CNAME), 6 (SOA), 12 (PTR), 13 (HINFO), 15 (MX), 24 (SIG), 25 (KEY), 38 (A6)
• Das 16-Bit Feld QCLASS bestimmt die Klasse — in der Regel ist dies der Wert 1 für das Internet (IN).
DNS Antwortformat
Die Einträge in den Listen der Antworten, die Verweise auf Authoritäten und die sonstigen Informationen
haben alle die folgende Struktur:
0
1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
/
/
/
NAME
/
|
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
TYPE
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
CLASS
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
TTL
|
|
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
RDLENGTH
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/
RDATA
/
/
/
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
• Das Feld NAME enthält den Domain Namen, auf den sich ein Resource Record bezieht.
• Das 16-Bit Feld TYPE identifiziert den Typ des Resource Records und damit das Format des Felds
RDATA.
• Das 16-Bit Feld CLASS bestimmt die Klasse — in der Regel ist dies der Wert 1 für das Internet (IN).
• Das 16-Bit Feld TTL beschreibt die Lebenszeit des Resource Records in Sekunden.
• Das 16-Bit Feld RDLENGTH enthält die Länge des Felds RDATA.
• Das Feld RDATA enthält die eigentlichen Informationen. Das Format dieses Felds ist abhängig vom
Typ des Resource Records.
94
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
DNS Formate für Resource Records
Nach dem Protokollkopf folgen die Listen von Resource Records. Die verschiedenen RRs haben folgende
Formate:
• Ein A RR wird als 4-Byte IPv4 Adresse kodiert.
• Ein AAAA RR wird als 16-Byte IPv6 Adresse kodiert.
• Ein A6 RR besteht aus zwei oder drei Feldern. Das erste Feld ist ein Byte lang und enthält die Länge
des Adreßpräfixes. Das zweite Feld enthält einen passenden Adreßsuffix, wobei ggf. 0-7 führende
0-Bits eingefügt werden um die Bitfolge auf eine Bytegrenze auszurichten. Das dritte Feld enthält
eine Zeichenkette mit vorangestellter Länge die den Domain Namen kennzeichnet, der den Präfix
identifiziert. Das Format trennt bewußt den Präfix, um ein mögliches Umbenennen beim Ändern eines
Providers einfach wird. Natürlich sind zwei verschiedene Formate für IPv6-Adressen keine gute Idee
und daher wurde im July 2002 das A6-Format als experimentell klassifiziert.
• Ein CNAME RR wird als Zeichenkette mit vorangestellter Länge kodiert. Das erste Byte enthält die
Länge der sich daran anschließenden Zeichenfolge.
• Ein HINFO RR wird durch zwei Zeichenketten (jeweils mit vorangestellter Länge) kodiert. Die erste
Zeichkette beschreibt die CPU und die zweite das Betriebssystem.
• Ein MX RR wird durch eine 16-Bit Zahl (Präferenz) und eine Zeichenkette mit vorangestellter Länge
(Mail-Exchanger) kodiert.
• Ein NS RR wird als Zeichenkette mit vorangestellter Länge kodiert, die den Domain Namen eines
authoritativen Servers enthält.
• Ein PTR RR wird als Zeichenkette mit vorangestellter Länge kodiert, die den Domain Namen eines
anderen Domain Name Servers enthält.
• Ein SOA RR besteht aus zwei Zeichenketten (jeweils mit vorangestellter Länge) und vier 32-Bit Zahlen. Die erste Zeichenkette enthält den Domain Namen des Servers, der für eine Zone verantwortlich
ist. Die zweite Zeichenkette enthält die email-Adresse über die ein verantwortlicher Administrator erreicht werden kann. Die erste vorzeichenlose 32-Bit Zahl enthält eine Seriennummer (SERIAL), die
immer bei Änderungen inkrementiert werden sollte. Die zweite 32-Bit Zahl beschreibt die Zeit, bevor
eine Zone aktualisiert werden sollte (REFRESH). Die dritte 32-Bit Zahl beschreibt die obere Grenze,
nach der eine Zone nicht mehr verbindlich ist (EXPIRE). Die vierte 32-Bit Zahl enthält die minimale
Lebenszeit, die RRs enthalten sollten (MINIMUM).
• Das relativ komplexe Format der KEY und SIG RRs ist im RFC 2535 [44] beschrieben.
95
5.2. ABSTRACT SYNTAX NOTATION ONE (ASN.1)
5.2 Abstract Syntax Notation One (ASN.1)
Die Abstract Syntax Notation One (ASN.1) [46, 47, 48] ist eine Sprache zur Definition von Datenstrukturen
und Nachrichtenformaten, die in den 80er Jahren entwickelt und von der ITU standardisiert wurde. Ziele bei
der Entwicklung von ASN.1:
• Austausch von Informationen zwischen Maschinen mit unterschiedlichen Hardwarearchitekturen.
• Unabhängigkeit von existierenden Programmiersprachen (Neutralität).
• Kodierung der Daten während der Übertragung soll zwischen Sender und Empfänger wählbar sein.
Abstrakte Syntax (ASN.1)
Lokale Syntax
Lokale Syntax
Genormter
Datenaustausch
Kodierer
Kodierer
System A
System B
Transfersyntax (ASN.1 Encoding Rules)
Abbildung 5.3: Abtrakte Syntax, lokale Syntax und Transfersyntax
Daraus folgt die Trennung der Datendarstellung während der Übertragung von der Beschreibung der applikationsspezifischen Datenstrukturen:
• Die abstrakte Syntax definiert die Datenstrukturen. Die abstrakte Syntax wird zu Implementationszwecken auf die lokale Syntax abgebildet, die an die jeweilige Programmiersprache angelehnt ist.
Prinzipiell kann diese Abbildung durch Compiler automatisiert werden.
• Die Transfersyntax definiert, in welcher Form Datenstrukturen seriell über ein Netzwerk übertragen
werden. Ein Transfersyntax wird durch sogenannte Encoding Rules definiert. Es existieren viele verschiedene Encoding Rules für ASN.1 und es ist daher notwendig sich auf die zu verwendende Transfersyntax zu einigen. Die Erzeugung eines Kodierers kann durch Compiler automatisiert werden.
5.2.1
Grundlagen
• Namen von ASN.1 Datentypen beginnen grundsätzlich mit Großbuchstaben.
• Namen von ASN.1 Werten (Konstanten) beginnen grundsätzlich mir einem Kleinbuchstaben.
• ASN.1 Schlüsselworte und Makronamen bestehen nur aus Großbuchstaben.
• Kommentare werden durch -- eingeleitet und enden am Zeilenende oder am nächsten --.
96
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
5.2.2
ISO-Registrationsbaum
itu−t(0) / ccitt(0)
standard(0)
iso(1)
joint−iso−itu−t(2) / joint−iso−ccitt(2)
registration−authority(1)
member−body(2)
identified−organization(3)
dod(6)
internet(1)
directory(1)
mgmt(2)
experimental(3)
mib−2(1)
system(1)
interfaces(2)
ip(4)
icmp(5)
private(4)
security(5)
snmpDomains(1)
tcp(6)
udp(7)
x25(5)
transmission(10)
snmpV2(6)
snmpProxy(2)
snmp(11) ...
dot3(7) dot5(9) fddi(15) lapb(16)
snmpModules(3)
snmpMIB(1)
snmpFrameworkMIB(10)
...
...
Abbildung 5.4: ISO-Registrationsbaum
5.2.3
Primitive ASN.1 Datentypen
• Der Datentyp BOOLEAN kann nur die vordefinierten Werte TRUE und FALSE annehmen.
• Der Datentyp INTEGER umfaßt alle ganzen Zahlen. Es gibt keine Begrenzung bezüglich des Zahlenbereichs.
• Der Datentyp BIT STRING definiert eine Folge von Bits. Die Länge eines BIT STRINGs muß nicht
durch 8 teilbar sein.
• Der Datentyp OCTET STRING ist eine Folge von Octets (Bytes). Der OCTET STRING ist ein
Basistyp für Zeichenketten in verschiedenen Zeichensätzen oder andere abgeleitete Typen wie z.B.
GeneralizedTime oder UTCTime.
• Der Datentyp ENUMERATED ist ein Aufzählungstyp. Mögliche Werte müssen bei der Definition abgeleiteter Datentypen festgelegt werden.
• Der Datentyp OBJECT IDENTIFIER liefert eine eindeutige Identifikation eines Knotens im ISORegistrationsbaum. Ein OBJECT IDENTIFIER Wert identifiziert den Pfad von der Wurzel des Baums
zum Zielknoten.
• Der Datentyp ObjectDescriptor enthält eine Zeichenkette zur Identifikation eines Knotens im
ISO-Registrationsbaum. Ein Wert dieses Typs ist nicht unbedingt eindeutig.
• Der Datentyp ANY steht für einen beliebigen ASN.1 Datentyp (Vereinigung aller ASN.1 Datentypen).
• Der Datentyp EXTERNAL steht für Daten, die nicht mit Hilfe von ASN.1 Definitione beschrieben
werden.
• Der Datentyp NULL ist ein Platzhalter, um in einem zusammengesetzten Datentyp das Fehlen eines
Wertes zu kennzeichnen.
5.2. ABSTRACT SYNTAX NOTATION ONE (ASN.1)
5.2.4
97
Zusammengesetzte ASN.1 Datentypen
• Der Datentyp SEQUENCE entspricht Strukturen in C bzw. Records in Modula. Die Reihenfolge der
Elemente in einer SEQUENCE ist fest definiert.
• Der Datentyp SET ist analog zu einer SEQUENCE, wobei die Reihenfolge der Elemente nicht festgelegt ist.
• Der Datentyp SEQUENCE OF liefert eine geordnete Menge (Liste) von gleichartigen Daten.
• Der Datentyp SET OF liefert eine ungeordnete Liste von gleichartigen Daten.
• Der Datentyp CHOICE ist ein Auswahltyp und entspricht Unions in C bzw. varianten Records in
Modula.
• Der Datentyp REAL ist ein aus dem Datentyp INTEGER konstruierter Datentyp bestehend aus Mantisse und Exponent.
5.2.5
Einschränkungen von Datentypen
ASN.1 Datentypen können weiter eingeschränkt werden.
Beispiele:
LottoZahl
MD5Key
InetAddress
Unsigned32
Integer32
Unsigned64
::=
::=
::=
::=
::=
::=
INTEGER (1..49)
OCTET STRING (SIZE (16))
OCTET STRING (SIZE (4|6))
INTEGER (0..4294967295)
INTEGER (-2147483648..2147483647)
INTEGER (0..18446744073709551615)
• Die genaue Syntax der Einschränkungen ist abhängig vom zugrundeliegenden primitiven Datentyp.
• Einschränkungen des Wertebereichs werden an abgeleitete Datentypen vererbt.
• Sinnvoll ist grundsätzlich die Einschränkung des Datentyps INTEGER, da heutige Rechner intern
meist mit 32 bzw. 64 Bit rechnen.
5.2.6
ASN.1 Tags
• Datentypen werden mit Hilfe von Tags bei der Übertragung identifiziert.
• Tags bestehen aus einer Tag-Nummer und einer Tag-Klasse. Es gibt vier verschiedene Tag-Klassen:
1. UNIVERSAL: Weltweit eindeutig Identifizierung (Benutzung nur im ASN.1 Standard zulässig).
2. APPLICATION: Eindeutige Identifikation innerhalb einer Applikation.
3. PRIVATE: Für herstellerspezifische, nicht allgemein benutzte Identifikationen.
4. CONTEXT-SPECIFIC: Typkennung tritt ohne Klassenangabe aus (z.B. beim Auswahltyp).
• Die folgende Tabelle gibt eine Übersicht über die universellen Tags für grundlegende ASN.1 Datentypen, wie sie im ASN.1 Standard definiert sind.
98
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Datentyp
BOOLEAN
INTEGER
BIT STRING
OCTET STRING
NULL
OBJECT IDENTIFIER
ObjectDescriptor
EXTERNAL
REAL
ENUMERATED
...
SEQUENCE, SEQUENCE OF
SET, SET OF
NumericString
PrintableString
TeletexString
VideotextString
IA5String
UTCTime
GeneralizedType
GraphicsString
VisibleString
GeneralString
CharacterString
...
5.2.7
Tag (dezimal)
1
2
3
4
5
6
7
8
9
10
...
16
17
18
19
20
21
22
23
24
25
26
27
28
...
Beispiel für eine ASN.1 Definition
Das folgende Beispiel zeigt eine Definition des SNMPv1 Protocols [49, 50] in einem einzigen ASN.1 Modul.
Die Definition entspricht dem typischerweise implementierten SNMPv1 Protokoll, weicht aber in den Details
der Notation deutlich von den RFCs ab.
HYPOTHETICAL-SNMPv1 DEFINITIONS ::= BEGIN
-- object names and types
ObjectName ::= OBJECT IDENTIFIER
ObjectSyntax ::= CHOICE {
simple
SimpleSyntax,
application-wide ApplicationSyntax
}
SimpleSyntax ::= CHOICE {
integer-value INTEGER (-2147483648..2147483647),
string-value
OCTET STRING (SIZE (0..65535)),
oid-value
OBJECT IDENTIFIER,
empty
NULL
}
ApplicationSyntax ::= CHOICE {
address-value
NetworkAddress,
99
5.2. ABSTRACT SYNTAX NOTATION ONE (ASN.1)
counter-value
gauge-value
timeticks-value
arbitrary-value
Counter32,
Gauge32,
TimeTicks,
Opaque
}
NetworkAddress ::= CHOICE {
internet
IpAddress
}
IpAddress
Counter32
Gauge32
TimeTicks
Opaque
::=
::=
::=
::=
::=
[APPLICATION
[APPLICATION
[APPLICATION
[APPLICATION
[APPLICATION
0]
1]
2]
3]
4]
IMPLICIT
IMPLICIT
IMPLICIT
IMPLICIT
IMPLICIT
OCTET STRING (SIZE (4))
INTEGER (0..4294967295)
INTEGER (0..4294967295)
INTEGER (0..4294967295)
OCTET STRING
-- protocol data units
Message ::= SEQUENCE {
version
INTEGER { version-1(0) },
community OCTET STRING,
data
ANY
-- PDUs if trivial authentication
}
PDUs ::= CHOICE {
get-request
get-next-request
get-response
set-request
trap
}
GetRequest-PDU
GetNextRequest-PDU
GetResponse-PDU
SetRequest-PDU
Trap-PDU
GetRequest-PDU,
GetNextRequest-PDU,
GetResponse-PDU,
SetRequest-PDU,
Trap-PDU
::=
::=
::=
::=
::=
[0]
[1]
[2]
[3]
[4]
IMPLICIT
IMPLICIT
IMPLICIT
IMPLICIT
IMPLICIT
PDU
PDU
PDU
PDU
TrapPDU
max-bindings INTEGER ::= 2147483647
RequestID
::= INTEGER (-214783648..214783647)
ErrorIndex ::= INTEGER (0..max-bindings)
ErrorStatus ::= INTEGER { noError(0), tooBig(1), noSuchName(2),
badValue(3), readOnly(4), genErr(5) }
VarBind ::= SEQUENCE {
name
ObjectName,
value ObjectSyntax
}
VarBindList ::= SEQUENCE (SIZE (0..max-bindings)) OF VarBind
PDU ::= SEQUENCE {
request-id
RequestID,
100
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
error-status
ErrorStatus,
error-index
ErrorIndex,
variable-bindings VarBindList
}
TrapPDU ::= SEQUENCE {
enterprise
OBJECT IDENTIFIER,
agent-addr
NetworkAddress,
generic-trap
INTEGER { coldStart(0), warmStart(1),
linkDown(2), linkUp(3),
authenticationFailure(4),
egpNeighborLoss(5),
enterpriseSpecific(6) },
specific-trap
INTEGER (0..214783647),
time-stamp
TimeTicks,
variable-bindings VarBindList
}
END
101
5.2. ABSTRACT SYNTAX NOTATION ONE (ASN.1)
5.2.8
Basic Encoding Rules (BER)
Die Basic Encoding Rules (BER) basieren auf einer Tag/Length/Value (TLV) Kodierung, bei der jedes Datenelement durch ein identifizierendes Tag, die Länge der Daten und die Daten selbst kodiert wird. Die
TLV-Kodierung erlaubt es einem Empfänger, den Typ einer Nachricht aus dem empfangenen Bytestrom zu
rekonstruieren bzw. Typfehler zu erkennen. (Inwieweit dies nützlich ist und ob der Preis in Form von zusätzlichen Bytes gerechtfertigt ist kann man natürlich diskutieren.)
BER Kodierung der Tags
8 7 6 5 4 3 2 1
tag number (< 31)
tag type { primitive(0), constructed(1) }
tag class { universal (00), application(01), context(10), private(11) }
8 7 6 5 4 3 2 1
1 1 1 1 1
8 7 6 5 4 3 2 1
...
1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
1
0
tag number (> 31)
tag type { primitive(0), constructed(1) }
tag class { universal (00), application(01), context(10), private(11) }
Abbildung 5.5: BER Kodierung von Tags
• In den meisten Fällen sind Tag-Nummern kleiner als 31 und entsprechend lassen sich die meisten Tags
in einem Byte kodieren.
• Anhand des primitive / constructed Bits kann ein Empfänger entscheiden, ob der Wert selbst
wieder Daten im BER Format enthält. (Durch einen einfachen rekursiven Abstieg können also beliebige BER-kodierte Daten analysiert werden.)
BER Kodierung der Längen
8 7 6 5 4 3 2 1
0
length (< 128)
8 7 6 5 4 3 2 1
1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
...
length (> 127)
number of bytes encoding length
Abbildung 5.6: BER Kodierung der Längen
102
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
BER Kodierung von BOOLEAN
• Ein BOOLEAN Wert wird durch ein Byte kodiert. Der Wert true wird durch das Byte 0xff und der
Wert false durch das Byte 0x00 dargestellt.
BER Kodierung von INTEGER
• Ein INTEGER Wert wird einfach als binäre Zahl kodiert, wobei negative Werte durch das Zweierkomplement dargestellt werden.
• Bei abgeleiteten vorzeichenlosen Typen ist also darauf zu achten, daß unter Umständen ein führendes
0x00 Byte erforderlich sein kann.
BER Kodierung von BIT STRING
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
b0 b1 b2 b3 b4 b5 b6 b7
8 7 6 5 4 3 2 1
...
bits
unused bits in last byte
Abbildung 5.7: BER Kodierung von BIT STRING Werten
• Ein BIT STRING Wert wird durch eine Folge von Bytes kodiert, die die Bits enthalten. Vorangestellt
wird ein Byte, das die im letzten Byte der Folge unbenutzten Bits beschreibt.
BER Kodierung von OCTET STRING
• Ein OCTET STRING Wert wird einfach durch die Folge von Octets (Bytes) kodiert.
BER Kodierung von NULL
• Der NULL Wert wird immer durch 0 Bytes kodiert.
BER Kodierung von OBJECT IDENTIFIER
8 7 6 5 4 3 2 1
0
sub−identifier (< 128)
8 7 6 5 4 3 2 1
1
...
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
1
0
sub−identifier (> 127)
Abbildung 5.8: BER Kodierung von OBJECT IDENTIFIER Werten
• Ein OBJECT IDENTIFIER Wert wird durch eine Folge von sub-identifiern kodiert.
103
5.2. ABSTRACT SYNTAX NOTATION ONE (ASN.1)
• Die ersten beiden Komponenten X und Y eines OBJECT IDENTIFIER Werts werden gemäß (X ·
40) + Y zu einem sub-identifier zusammengefaßt. (Dies ist möglich, da X nur die Werte 0, 1
und 2 annehmen kann.)
BER Kodierung von SEQUENCE / SEQUENCE OF / SET / SET OF
• Zusammengesetzte Werte werden einfach durch die Kodierung der einzelnen Elemente dargestellt.
BER Kodierung von CHOICE
• Bei CHOICE-Konstrukten wird lediglich der tatsächlich vorhandene Wert kodiert, der daher mit einem
Tag eindeutig identifizierbar sein muß.
Beispiel
Das folgende Beispiel zeigt die BER-Kodierung einer SNMPv1 Nachricht.
Bytes
Tag
30:1b
SEQUENCE {
02:01:00
INTEGER
04:06:70:75:62:6C:69:63
OCTET STRING
a1:0e
GetNextRequest-PDU {
02:04:36:a2:8f:07
INTEGER
02:01:00
INTEGER
02:01:00
INTEGER
30:00
SEQUENCE OF {}
}
}
Length Value
27
1
6
14
4
1
1
0
0
"public"
916623111
0
0
Bemerkungen
• Offensichtlich muß die Länge der BER-Kodierung eines Wertes bekannt sein, bevor man das Längenfeld kodieren kann.
• Eine effiziente Kodierung erhält man daher, indem man die Nachrichten “von innen nach außen”
kodiert und den Puffer “von hinten nach vorne” füllt.
• Offensichtlich ist ein nachträgliches Ändern von Werten problematisch, wenn durch die Änderungen
plötzlich größere Längenfelder erforderlich werden.
104
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
5.3 Simple Network Mangement Protocol (SNMP)
Das Simple Network Management Protocol (SNMP) wurde Ende der 80er Jahre entwickelt, um den Betrieb
des Internets durch den standardisierten Zugriff auf möglichst standardisierte Managementinformationen zu
vereinfachen.
5.3.1
Grundlagen
Zunächst ein paar generelle Grundlagen, die noch nicht SNMP spezifisch sind und eine allgemein akzeptierte
Terminologie definieren.
Funktionsbereiche
Die Dienste, die von einem Managementsystem erbracht werden, lassen sich in fünf Funktionsbereiche einteilen (FCAPS):
1. Fehlermanagement (fault management)
Umfaßt die Fehlererkennung, die Fehlerisolation und die Fehlerbehebung.
2. Konfigurationsmanagement (configuration management)
Umfaßt die Erzeugung und Verwaltung von Konfigurationsinformationen, die Namensverwaltung sowie Start, Kontrolle und Beendigung von Diensten.
3. Abrechnungsmanagement (account management)
Umfaßt die Erfassung von Verbrauchsdaten, die Verteilung und Überwachung von Kontingenten sowie
das Führen von Verbrauchsstatistiken.
4. Leistungsmanagement (performance management)
Umfaßt das Sammeln von statistischen Daten, die Ermittlung der Systemleistung und etwaige Veränderungen zur Leistungsoptimierung
5. Sicherheitsmanagement (security management)
Umfaßt die Erzeugung und Kontrolle von Sicherheitsdiensten, die Schlüsselgenerierung und -verteilung
und die Meldung und Analyse von sicherheitsrelevanten Ereignissen.
Managed Object (MO)
Warning: Coffee machine
switched on but no coffee
in the machine.
Management Application
Attributes
Operations
Behaviour
Events
Managed Object
Resource
Abbildung 5.9: Managed Objects (MOs)
• Die Managementinformationen werden analog zur ISO-Terminologie durch Managed Objects (MOs)
realisiert.
• Ein Managed Object ist eine abtrakte Sicht auf ein Betriebsmittel die die Eigenschaften des Betriebsmittels für die Zwecke des Managements darstellt.
105
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
• Die Grenze (boundary) eines MOs definiert den Grad an Details, die einem Managementsystem
zugänglich sind.
• Die Attribute (attributes) eines MOs beschreiben den typischerweise den aktuellen Zustand bzw. die
Konfiguration eines Betriebsmittels. Attribute können gezielt durch Management-Operationen manipuliert werden.
• Die Operationen (operations) ermöglichen den Zugriff auf ein MO. Typische Operationen sind lesen (get), schreiben (set), erzeugen (create) und löschen (delete). SNMP unterstützt nur get und set
explizit.
• Das Verhalten (behaviour) bestimmt die Semantik eines MOs und die Interaktion mit dem realen
Betriebsmittel. Das Verhalten wird normalerweise verbal definiert.
• Ein MO kann selbständig asynchrone Meldungen (notifications) generieren, wenn bestimmte Ereignisse eintreten.
Management Information Base (MIB)
MO
MO
MO
Layer 7
MO
Layer 6
MO
MO
MO
Layer 5
MO
Layer 4
MO
MO
MO
Layer 3
Layer 2
Management Information Base
Layer 1
Protocols
Resources
Abbildung 5.10: Management Information Base (MIB)
• Mehrere MOs werden zu sogenannten Management Information Bases zusammengefaßt.
• Achtung: Es gibt zwei verschiedenen Interpretation des Begriffs MIB:
1. Die Zusammenfassung aller MOs auf einem Gerät.
2. Die Zusammenfassung logisch zusammengehörender Definitionen von MOs.
Zur Unterscheidung spricht man im zweiten Fall in der Regel von sogenannten MIB Modulen, da
logisch zusammengehörende MO Definitionen typischerweise in einem oder wenigen Modulen einer
Datendefinitionssprache festgeschrieben werden.
106
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Manager, Agenten und Managementprotokolle
Algorithm for solving
a management problem
MIB−Model of
a resource
Management Protocol
Management Protocol
Manager (Client)
Agent (Server)
Abbildung 5.11: Manager, Agenten und Managementprotokolle
1. Ein Managementprotokoll realisert den Zugriff auf entfernte MOs.
2. Ein Agent (agent) nimmt Anfragen von Managern entgegen, bearbeitet sie und sendet entsprechende
Antworten.
3. Ein Agent versendet unaufgefordert Nachrichten bei entsprechenden Ereignissen (in der Regel Zustandsänderungen in der MIB).
4. Ein Agent realisiert die MOs seiner MIB durch Zugriffe auf die realen Betriebsmittel. Die MOs sind
keine Datenbank sondern existieren meist nur virtuell.
5. Ein Agent sollte die MOs vor unberechtigten Zugriffen durch die Anwendung von Zugriffskontrollregeln und die Authentifizierung der Manager schützen.
6. Ein Manager (manager) übt Kontroll- und Steuerungsfunktionen aus und ist die entscheidende Instanz.
7. Ein Manager initiiert Management-Operationen durch entsprechende Protokoll-Operationen zur Manipulation von MOs. Eine Management-Operationen kann eine komplexe Folge von Protokoll-Operationen
beinhalten.
8. Ein Manager nimmt Meldungen von Agenten entgegen und leitet sie zur weiteren Bearbeitung an
entsprechende Applikationen weiter.
Entwurfsziele von SNMP
Entwurfsziele bei der Entwicklung von SNMP [50]. Man darf natürlich Fragen, inwieweit diese Ziele auch
heute noch relevant sind.
• Minimierung der Anzahl und der Komplexität der Managemenfunktionen innerhalb der Agenten. Dadurch sollen folgende Teilziele erreicht werden:
– Reduktion der Entwicklungskosten auf der Seite des Agenten
– Instrumentierung von beliebigen Geräten (HUBs und CRAYs)
– Entwicklung von verbesserten Managementfunktionen im Laufe der Zeit ohne ständige Änderungen der Agenten
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
107
• Erweiterbarkeit durch die Definition neuer MIB Module.
• Unabhängigkeit von existierenden Rechner- oder Routerarchitekturen.
• Robustheit (auch im Fall von Fehlern im Netz)
• Unabhängigkeit von anderen Netzdiensten (z.B. Verzeichnissen)
5.3.2
Structure of Management Information (SMIv2)
Die Definition von MOs in der SNMP-Welt geschieht durch eine eigene Datendefinitionssprache mit dem Namen Structure of Management Information (SMI). Die aktuelle Version dieser Sprache ist Version 2 (SMIv2)
[51, 52, 53]. (An einem Nachfolger wird derzeit in der IETF gearbeitet.)
Grundlegende SMIv2 Konzepte
Die Datendefinitionssprache SMIv2 basiert auf einer adaptierten Teilmenge von ASN.1 (1988). Im Klartext
bedeutet dies, daß man eine noch nicht offizielle Version von ASN.1 genommen hat, davon eine Teilmenge
benutzt, die man anschließend noch modifiziert hat.
Das der SMIv2 zugrundeliegende Modell ist sehr einfach (und vielleicht zu einfach):
• Managementinformationen werden in einfachen typisierten Variablen gehalten (keine zusammengesetzten Datentypen).
• Alle SMIv2 Datentypen lösen sich letztlich zu den drei primitiven ASN.1 Datentypen INTEGER,
OCTET STRING und OBJECT IDENTIFIER auf.
• Variablen treten entweder als Skalare auf (genau eine Instanz) oder als Spalten einer konzeptuellen
Tabelle (null oder mehrere Instanzen).
• Variablen können mit Hilfe von SNMP gelesen und geschrieben werden. Das Protokoll erlaubt in der
Tat die Manipulation beliebiger Listen von Variablen in einer atomaren Transaktion, wobei durch das
jeweilige Transportprotokoll die Listen letztlich doch begrenzt sind.
Neben den Basisdatentypen gibt es eine Reihe abgeleiteter Datentypen mit speziellen Semantiken. Die folgende Tabelle gibt einen Überblick:
SMIv2 Type
INTEGER
OCTET STRING
OBJECT IDENTIFIER
Integer32
Unsigned32
Gauge32
Counter32
Counter64
TimeTicks
IpAddress
Opaque
BITS
—
SMIv1 Type
INTEGER
OCTET STRING
OBJECT IDENTIFIER
INTEGER
—
Gauge
Counter
—
TimeTicks
IpAddress
Opaque
—
NetworkAddress
Description
enumerations (signed integer)
sequence of arbitrary bytes
unique identifier
signed integer (-2147483648..2147483647)
unsigned integer (0..4294967295)
gauge (0..4294967295)
counter (0..4294967295)
counter (0..18446744073709551615)
elapsed time in hundredths of a second
four byte IP version 4 address
wrapper for arbitrary ASN.1 types
labeled bits
union of network address types
108
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Namensraum und Instanzidentifikation (Naming)
Die einzelnen Instanzen der Variablen müssen eindeutig identifiziert werden können. Dazu muß ein geeigneter Namensraum existieren. In klassischen imperativen Programmiersprachen werden Variablen letztlich
durch Speicheradressen eindeutig identifiziert. Im Fall der SMI benutzt man als Namensraum den ISORegistrationsbaum und daher OBJECT IDENTIFIER zur Identifikation.
Das folgende Beispiel zeigt einen sehr simplen Agenten, der für einen Router agiert der einen Namen hat
(name), eine Laufzeit (uptime) und der Agent hat eine Adresse (address).
name
Manager
uptime
Manager
Agent
(HP/OV)
Router
MIB
address
Abbildung 5.12: Beispiel für einen sehr trivialen Router
Die drei skalaren Variablen könnten beispielsweise folgendermaßen im ISO-Registrationsbaum registriert
worden sein:
(1)
address (1)
info (2)
name (1)
uptime (2)
Abbildung 5.13: Registrationsbaum für einen sehr trivialen Router
• Durch die Registration eines Variablentyps (object type) wird dem Variablentyp ein global eindeutiger Name (OID) zugewiesen.
• Konkrete Instanzen des Variablentyps werden zusätzlich durch eine Instanzidentifikation (instance
identifier) voneinander unterschieden. Die Instanzidentifikation wird als OID-Fragment kodiert und
an den OID angehängt.
• Skalare Variablen haben per Definition immer die Instanzidentifikation 0. Die Instanzidentifikation
von Variablen (Zellen) einer konzeptionellen Tabelle wird aus den Schlüsselwerten einer konzeptionellen Zeile der Tabelle gebildet.
Für den Registrationsbaum aus dem obigen Beispiel ergibt sich somit:
Object Identifier
1.1
1.2.1
1.2.2
Instance Identifier
0
0
0
Type
IpAddress
OCTET STRING
TimeTicks
Value
10.1.2.1
“ACME Router”
54321
Der SNMP Agent in dem Beispiel soll nun so erweitert werden, daß auch Informationen über die Weiterleitungstabelle (forwarding table) des Routers geliefert wird.
109
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
(1)
address (1)
info (2)
name (1)
fwdTable (3)
uptime (2)
fwdEntry (1)
fwdIndex (1)
2
1
7
5
3
9
8
fwdDest (2)
fwdNext (3)
1
2
2
2
3
3
3
5
2
4
7
2
5
8
3
6
9
3
Abbildung 5.14: Erweiterter Registrationsbaum für einen sehr trivialen Router
Die Weiterleitungstabelle (fwdTable) besteht aus drei Spalten (fwdIndex, fwdDest, fwdNext), wobei die Spalte fwdIndex Schlüsseleigenschaft besitzt. Die abgebildete Ausprägung der Tabelle stellt die
Weiterleitungsinformation für das angegebene Netz aus Sicht des Knoten mit der Nummer 1 dar.
• Konzeptionelle Tabellen werden immer mit zwei Hilfsknoten registiert:
– Der erste Knoten (fwdTable) repräsentiert die konzeptionelle Tabelle und ist syntaktisch
vom ASN.1 Typ SEQUENCE OF. Der Name dieses Knotens endet per Konvention immer mit
Table.
– Der Knoten unter dem ersten Knoten (fwdEntry) repräsentiert eine konzeptionelle Tabelle und
ist syntaktisch vom ASN.1 Typ SEQUENCE. Der Name dieses Knotens endet per Konvention
immer mit Entry.
– Die Knoten unter dem zweiten Knoten repräsentieren die konzeptionellen Spalten der Tabelle.
• Der primäre Schlüssel der Tabelle (die Menge der Spalten, die zusammen einen Zeile eindeutig identifizieren), werden als Index bezeichnet und zur Konstruktion der Instanzidentifikation benutzt.
Im Beispiel kann der Wert des Schlüsselelements einfach als Komponente an den OID einer Spalte angehängt
werden. Damit identifiziert der Wert 1.3.1.2.4 die Zelle in der zweiten Spalte und der vierten Zeile mit dem
Wert 7.
Etwas aufwendiger wird das Verfahren, wenn die Datentypen nicht trivial als Komponente an einen OID
angehängt werden können. In dem Fall sind gegebenenfalls Umwandlungen notwendig. Dazu existieren die
folgenden Regeln:
1. Wenn ein Index-Element vom Typ INTEGER ist, dann wird der Wert als Komponente an den OID
angehängt. (Das funktioniert natürlich nur, wenn keine negativen Zahlen vorkommen.)
2. Wenn ein Index-Element vom Typ OCTET STRING ist und die Bytefolge eine feste Länge besitzt,
dann wird jedes Byte des OCTET STRING Werts als einzelne Komponente an den OID angehängt.
3. Wenn ein Index-Element vom Typ OCTET STRING ist und die Bytefolge eine variable Länge besitzt,
dann wird zunächst eine Komponenten mit dem Längenbyte an den OID angehängt und anschließend
werden die Bytes des OCTET STRING Werts als einzelne Komponenten an den OID angehängt.
4. Wenn ein Index-Element vom Type OBJECT IDENTIFIER ist, dann wird zunächst eine Komponenten mit der Länge des Werts angehängt gefolgt von den Komponenten des Werts.
110
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
In einigen Fällen kann durch Benutzung eines speziellen Schlüsselwortes (IMPLIED) das Längenbyte unterdrückt werden, was sich aber nachträglich nicht als eine gute Idee herausgestellt hat. Wichtig ist, daß OIDs
nach den SMIv2 Regeln auf 128 Komponenten begrenzt sind, weshalb Tabellen nicht beliebig komplex indiziert werden können.
Erweitert man das Beispiel auf richtige IPv4 Adressen und benutzt man als Schlüssel (Index) das Paar
(fwdDest, fwdMask), so ergibt sich folgende Situation:
(1)
address (1)
info (2)
name (1)
fwdTable (3)
uptime (2)
fwdEntry (1)
fwdDest (1)
fwdMask (2)
fwdNext (3)
134.169.34.1
0.0.0.0
255.255.255.0
127.0.0.1
255.0.0.0
127.0.0.1
134.169.34.0
255.255.255.0
134.169.34.15
134.169.35.1
255.255.255.0
134.169.34.18
134.169.35.2
255.255.255.0
134.169.34.18
Abbildung 5.15: Registrationsbaum für einen trivialen IPv4 Router
Die Zelle für den nächsten Router auf dem Weg zum Netz 134.169.34/24 (mit dem Wert 134.169.34.15) hat
nun den OID Namen 1.3.1.3.134.169.34.0.255.255.255.0.
SMIv2 Module und Makros
SMIv2 Module werden durch einen Namen identifiziert. In den Modulen können zunächst Definitionen von
anderen Modulen importiert werden. Die eigentliche Definition von Skalaren, konzeptionellen Tabellen etc.
erfolgt durch die Anwendung von ASN.1 Makros (die in aktuellen Versionen von ASN.1 durch andere Mechanismen ersetzt worden sind).
Das MODULE-IDENTITY Makro wird benutzt, um Verwaltungsinformationen für SMIv2 Module zu definieren:
<Descriptor> MODULE-IDENTITY
LAST-UPDATED <ExtUTCTime>
ORGANIZATION <Text>
CONTACT-INFO <Text>
DESCRIPTION
<Text>
[ REVISION
<ExtUTCTime>
DESCRIPTION
<Text>
]∗
::= <ObjectIdentifier>
Das OBJECT-IDENTITY Makro wird benutzt, um eine Konstante mit einem festen OID zu registrieren:
<Descriptor> OBJECT-IDENTITY
STATUS
<Status>
DESCRIPTION
<Text>
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
[ REFERENCE
<Text>
::= <ObjectIdentifier>
111
]
Das OBJECT-TYPE Makro dient zur Definition von Skalaren, konzeptionellen Spalten, Zeilen und Tabellen:
<Descriptor> OBJECT-TYPE
SYNTAX
<Syntax>
[ UNITS
<Text>
MAX-ACCESS
<Access>
STATUS
<Status>
DESCRIPTION
<Text>
[ REFERENCE
<Text>
[ INDEX
<Index>
[ AUGMENTS
<Index>
[ DEFVAL
<Value>
::= <ObjectIdentifier>
]
]
]
]
]
Das NOTIFICATION-TYPE Makro dient zur Definition von Benachrichtungen, die asynchron vom Agenten verschickt werden können:
<Descriptor> NOTATION-TYPE
[ OBJECTS
<Objects> ]
STATUS
<Status>
DESCRIPTION
<Text>
[ REFERENCE
<Text>
]
::= <ObjectIdentifier>
Mit Hilfe des TEXTUAL-CONVENTION Makros können eingeschränkt abgeleitete Typen definiert werden:
<TypeDescriptor> ::= TEXTUAL-CONVENTION
[ DISPLAY-HINT <Text>
]
STATUS
<Status>
DESCRIPTION
<Text>
[ REFERENCE
<Text>
]
SYNTAX
<Syntax>
Weitere Makros erlauben die formale Beschreibung von Implementierungsanforderungen (conformance statements). Für die Details diesbezüglich sei an dieser Stelle auf den RFC 2580 [53] verwiesen.
5.3.3
Grundlegende MIB Module
Die IF-MIB [54] ist das wohl grundlegendste MIB Modul. Es definiert das Konzept einer Netzwerkschnittstelle (interface), wobei Schnittstellen übereinander gestapelt werden können. Die folgende Abbildung zeigt
das zugrundeliegende Modell in einem adaptierten UML-Diagramm [55]:
112
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
«smi mib class»
ifStackEntry
+ifStackLastChange: TimeTicks
-ifStackHigherLayer: InterfaceIndexOrZero {index}
-ifStackLowerLayer: InterfaceIndexOrZero {index}
+ifStackStatus: RowStatus
1
is stacked on
reorders
1
«smi mib class»
lower layer
0..1
«smi mib class»
ifInvStackEntry
higher layer
0..1
ifEntry
+ifNumber: Integer32
+ifLastChange: TimeTicks
+ifIndex: InterfaceIndex {index}
+ifDescr: DisplayString
+ifType: IANAifType
+ifMtu: Integer32
+ifSpeed: Gauge32
+ifPhysAddress: PhysAddress
+ifAdminStatus: Enumeration
+ifOperStatus: Enumeration
+ifLastChange: TimeTicks
+ifInOctets: Counter32
+ifInUcastPkts: Counter32
+ifInDiscards: Counter32
+ifInErrors: Counter32
+ifInUnknownProtos: Counter32
+ifOutOctets: Counter32
+ifOutUcastPkts: Counter32
+ifOutDiscards: Counter32
+ifOutErrors: Counter32
-linkDown(ifIndex,ifAdminStatus,ifOperStatus)
-linkUp(ifIndex,ifAdminStatus,ifOperStatus)
1
expands
-ifStackLowerLayer: InterfaceIndexOrZero {index}
-ifStackHigherLayer: InterfaceIndexOrZero {index}
+ifInvStackStatus: RowStatus
augments
«smi mib class»
ifXEntry
-ifIndex: InterfaceIndex {index}
+ifName: DisplayString
+ifInMulticastPkts: Counter32
+ifInBroadcastPkts: Counter32
+ifOutMulticastPkts: Counter32
+ifOutBroadcastPkts: Counter32
+ifHCInOctets: Counter64
+ifHCInUcastPkts: Counter64
+ifHCInMulticastPkts: Counter64
+ifHCInBroadcastPkts: Counter64
+ifHCOutOctets: Counter64
+ifHCOutUcastPkts: Counter64
+ifHCOutMulticastPkts: Counter64
+ifHCOutBroadcastPkts: Counter64
+ifLinkUpDownTrapEnable: Enumeration
+ifHighSpeed: Gauge32
+ifPromiscuousMode: TruthValue
+ifConnectorPresent: TruthValue
+ifAlias: DisplayString
+ifCounterDiscontinuityTime: TimeStamp
0..*
«smi mib class»
ifRcvAddressEntry
-ifIndex: InterfaceIndex {index}
-ifRcvAddressAddress: PhysAddress {index}
+ifRcvAddressStatus: RowStatus
+ifRcvAddressType: Enumeration
Abbildung 5.16: Konzeptionelles Modell der IF-MIB
Die IF-MIB ist auf fast allen Geräten im Internet implementiert und liefert Kernstatistiken über die empfangenen und gesendeten Pakete und Bytes.
Die ENTITY-MIB [56] beschreibt die physikalischen Komponenten eines Systems und welche Komponenten in anderen enthalten sind.
«smi mib class»
entLogicalEntry
-entLogicalIndex: Integer32 {index}
+entLogicalDescr: SnmpAdminString
+entLogicalType: AutonomousType
+entLogicalCommunity: OctetString
+entLogicalTAddress: TAddress
+entLogicalTDomain: TDomain
+entLogicalContextEngineID: SnmpEngineIdOrNone
+entLogicalContextName: SnmpAdminString
0..n
«smi mib class»
entLPMappingEntry
-entLogicalIndex: Integer32 {index}
+entLPPhysicalIndex: PhysicalIndex {index}
accessible via
«smi mib 0..n
class»
expands
entPhysicalEntry
«smi mib class»
entAliasMappingEntry
-entPhysicalIndex: PhysicalIndex {index}
+entPhysicalDescr: SnmpAdminString
+entPhysicalVendorType: AutonomousType
+entPhysicalContainedIn: Integer32
+entPhysicalClass: PhysicalClass
+entPhysicalParentRelPos: Integer32
+entPhysicalName: SnmpAdminString
+entPhysicalHardwareRev: SnmpAdminString
+entPhysicalFirmwareRev: SnmpAdminString
+entPhysicalSoftwareRev: SnmpAdminString
+entPhysicalSerialNum: SnmpAdminString
+entPhysicalMfgName: SnmpAdminString
+entPhysicalModelName: SnmpAdminString
+entPhysicalAlias: SnmpAdminString
+entPhysicalAssetID: SnmpAdminString
+entPhysicalIsFRU: TruthValue
container
1
-entPhysicalIndex: PhysicalIndex {index}
-entAliasLogicalIndexOrZero: Integer32 {index}
+entAliasMappingIdentifier: RowPointer
«smi mib class»
entityGeneral
+entLastChangeTime: TimeStamp
element
0..n
«smi mib class»
entPhysicalContainsEntry
-entPhysicalIndex: PhysicalIndex {index}
+entPhysicalChildIndex: PhysicalIndex {index}
is contained in
Abbildung 5.17: Konzeptionelles Modell der ENTITY-MIB
Die ENTITY-MIB ist noch nicht so alt wie die IF-MIB, entwickelt sich aber langsam zu einem weiteren
113
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
wichtigen Kernmodul. Es sind bereits Erweiterungen in Arbeit, die allgemein Sensoren beschreiben, die aus
betrieblicher Sicht ebenfalls elementare Komponenten sind (z.B. Temperatursensoren).
Die HOST-RESROUCES-MIB [57] beschreibt die grundlegenden Komponenten eines Rechensystems.
«smi mib class»
«smi mib class»
hrSystem
hrSWInstalledEntry
+hrSystemUptime: TimeTicks
+hrSystemDate: DateAndTime
+hrSystemInitialLoadDevice: Integer32
+hrSystemInitialLoadParameters: InternationalDisplayString
+hrSystemNumUsers: Gauge32
+hrSystemProcesses: Gauge32
+hrSystemMaxProcesses: Integer32
+hrMemorySize: KBytes
+hrSWInstalledLastChange: TimeTicks
+hrSWInstalledLastUpdateTime: TimeTicks
+hrSWInstalledIndex: Integer32 {index}
+hrSWInstalledName: InternationalDisplayString
+hrSWInstalledID: ProductID
+hrSWInstalledType: Enumeration
+hrSWInstalledDate: DateAndTime
«smi mib class»
«smi mib class»
hrSWRunEntry
hrSWRunPerfEntry
augments
+hrSWOSIndex: Integer32
+hrSWRunIndex: Integer32 {index}
+hrSWRunName: InternationalDisplayString
+hrSWRunID: ProductID
+hrSWRunPath: InternationalDisplayString
+hrSWRunParameters: InternationalDisplayString
+hrSWRunType: Enumeration
+hrSWRunStatus: Enumeration
+hrSWRunIndex: Integer32 {index}
+hrSWRunPerfCPU: Integer32
+hrSWRunPerfMem: KBytes
«smi mib class»
extends
hrProcessorEntry
+hrDeviceIndex: Integer32 {index}
+hrProcessorFrwID: ProductID
+hrProcessorLoad: Integer32
«smi mib class»
hrDeviceEntry
extends
+hrDeviceIndex: Integer32 {index}
+hrDeviceType: AutonomousType
+hrDeviceDescr: DisplayString
+hrDeviceID: ProductID
+hrDeviceStatus: Enumeration
+hrDeviceErrors: Counter32
«smi mib class»
hrNetworkEntry
0..1
+hrDeviceIndex: Integer32 {index}
+hrNetworkIfIndex: InterfaceIndexOrZero
implements
0..1
«smi mib class»
IF-MIB::ifEntry
1
extends
«smi mib class»
hrPrinterEntry
+hrDeviceIndex: Integer32 {index}
+hrPrinterStatus: Enumeration
+hrPrinterDetectedErrorState: OctetString
exists on
extends
0..*
«smi mib class»
hrPartitionEntry
«smi mib class»
hrDiskStorageEntry
+hrDeviceIndex: Integer32 {index}
+hrPartitionIndex: Integer32 {index}
+hrPartitionLabel: InternationalDisplayString
+hrPartitionID: OctetString
+hrPartitionSize: KBytes
+hrPartitionFSIndex: Integer32
+hrDeviceIndex: Integer32 {index}
+hrDiskStorageAccess: Enumeration
+hrDiskStorageMedia: Enumeration
+hrDiskStorageRemoveble: TruthValue
+hrDiskStorageCapacity: KBytes
0..*
0..1
«smi mib class»
hrFSEntry
+hrFSIndex: Integer32 {index}
+hrFSMountPoint: InternationalDisplayString
+hrFSRemoteMountPoint: InternationalDisplayString
+hrFSType: AutonomousType
+hrFSAccess: Enumeration
+hrFSBootable: TruthValue
+hrFSStorageIndex: Integer32
+hrFSLastFullBackupDate: DateAndTime
+hrFSLastPartialBackupDate: DateAndTime
resides on
«smi mib class»
0..1
hrStorageEntry
0..*
+hrStorageIndex: Integer32 {index}
+hrStorageType: AutonomousType
+hrStorageDescr: DisplayString
+hrStorageAllocationUnits: Integer32
+hrStorageSize: Integer32
+hrStorageUsed: Integer32
+hrStorageAllocationFailures: Counter32
Abbildung 5.18: Konzeptionelles Modell der HOST-RESROUCES-MIB
Auch die HOST-RESROUCES-MIB hat sich im Lauf der Jahre relativ weit etabliert und es finden sich in
neueren MIBs zunehmend Verweise auf Elemente der HOST-RESROUCES-MIB. Ein Rechensystem besteht
in der HOST-RESROUCES-MIB aus einer Menge von Komponenten (devices), wobei es für verschiedene
häufig vorkommende Komponententypen Verfeinerungen (z.B. Prozessoren, Speicher, Netzwerkschnittstellen) gibt. Man erkennt also deutlich eine objekt-orientierte Modellierung, auch wenn die Datendefinition in
RFC 2790 [57] davon nicht viel direkt erkennen läßt.
5.3.4
Protokollarchitektur
Die dritte Version des Simple Network Management Protocols (SNMPv3) ist aus Sicht der Protokollentwickler die aktuelle Version von SNMP [58]. Ziele bei der Entwicklung von SNMPv3 waren:
• Sicherheit (Authentifikation und Verschlüsselung)
• Definition einer stabilen Architektur, die langfristig bei der Weiterentwicklung von SNMP hilft.
• Unterstützung von minimalen konformen Implementationen in Systemen mit begrenzten Betriebsmitteln.
• Unterstützung von komplexeren konformen Implementationen in leistungsstärkeren Systemen.
• Modularität und verschiedene Geschwindigkeiten bei der Standardisierung der einzelnen Module
114
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
• Wiederverwendung von möglichst viel existierendem Material.
• SNMP soll so einfach wie möglich sein. (KISS = keep it simple and stupid)
Architekturmodell
Bei der Entwicklung von SNMPv3 konnten viele Teilprobleme erst befriedigend gelöst werden, nachdem
man sich auf ein Architekturmodell für SNMP verständigt hatte. Ziel war die Modularisierung und die Definition von abstrakten Schnittstellen zwischen den einzelnen Komponenten und Teilsystemen.
Traditional Agent
MIB Instrumentation
Traditional Manager
Access Control Subsystem
Command
Notification
Notification
Command
View-based
Notification
Proxy
Generator
Receiver
Originator
Responder
Access Control
Originator
Forwarder
Message Processing
PDU
Security Subsystem
Message Processing
Subsystem
PDU
Dispatcher
Dispatcher
v1MP
Community
v1MP
Security Model
Dispatcher
v2cMP
User-based
Message
Security Model
Dispatcher
v3MP
User-based
Security Model
v3MP
Other
Transport
other MP
Community
Security Model
v2cMP
Message
Other
Security Model
Transport
Mappings
UDP
Security Subsystem
Subsystem
other MP
Security Model
Mappings
IPX
UDP
IPX
Communication Network
Abbildung 5.19: Manager und Agent im SNMPv3 Architekturmodell
• Ein Teilsystem (subsystem) kann mehrere verschiedenen Komponenten (models) mit derselben Schnittstelle beinhalten.
• Trennung der eigentlichen Protokollfunktionalität (Nachrichtenbearbeitung, Sicherheit und Zugriffskontrolle) von der Schnittstelle zu Applikationen, die Protokolloperationen aufrufen oder ausführen.
• Der dispatcher ist eine zentrale Komponente, der den Ablauf zwischen den verschiedenen Komponenten einer Protokollimplementation steuert.
• Neben dem traditionellen Manager und dem traditionellen Agenten sind auch andere Konfigurationen
vorstellbar.
Kontext (context)
• Ein Kontext (context) ist eine Menge von Variablen, die über eine SNMP Entität zugreifbar sind.
Eine SNMP Entität hat potentiell Zugriff zu mehreren Kontexten und eine bestimmte Variable kann in
mehreren Kontexten existieren.
• Innerhalt einer Domäne wird eine Variable durch ein 4-Tupel (e, c, t, i) eindeutig identifiziert, wobei e
eine Protokollmaschine identifiziert, c einen Kontext innerhalb der Protokollmaschine, t den Typ einer
Variablen und i die Instanz einer Variablen.
• Ein Beispiel wäre (engine4, ”board1”, ÏF-MIB::ifDescr”, 3).
115
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
Lexikographische Ordnung (lexicographic order)
• Geben seien zwei Vektoren von natürlichen Zahlen x = (x1 , . . . , xn ) und y = (y1 , . . . , ym ) mit n ≤
m. Der Vektor x ist lexikographisch kleiner als y genau dann wenn eine der folgenden Bedingungen
wahr ist:
(a) xj = yj für 1 ≤ j ≤ k und xk < yk mit k ≤ n and k ≤ m
(b) xj = yj für 1 ≤ j ≤ n und n < m
• Alle OIDs, die instantiierte Variablen identifizieren, können lexikographisch geordnet werden.
• Durch die lexikographische Ordnung werden bei einer konzeptionellen Tabelle zunächst die Variablen
einer ganzen Spalte hintereinander angeordenet bevor die Variablen der nächsten Spalte kommen.
• Das Protokoll operiert nur auf dieser lexikographisch geordneten Liste von Variablen und nicht etwa
auf dem Baumstruktur oder den konzeptionellen Tabellen.
Protokolloperationen
SNMPv3 stellt Applikationen insgesamt sechs Protokolloperationen zur Verfügung [59]. Es existiert eine
weitere Operation (Report), die aber nur intern zur Fehlerbenachrichtigung oder zur Uhrensynchronisation
zwischen Protokollmaschinen benutzt wird.
command
generator
command
responder
Get
command
generator
command
responder
notification
originator
notification
receiver
GetNext
Trap
Response
command
generator
command
responder
Set
Response
command
generator
command
responder
GetBulk
Response
notification
originator
notification
receiver
Inform
Response
Response
Abbildung 5.20: SNMPv3 Protokolloperationen
• Die Get-Operation wird benutzt, um Werte von Variablen zu lesen. Es können die Fehler tooBig
und genErr auftreten. Der Zugriff auf nicht lesbare Variablen führt zu Ausnahmen (exceptions) für
die betroffenen Variablen (noSuchObject, noSuchInstance, endOfMibView).
• Die Set-Operation wird benutzt, um Werte von Variablen zu ändern. Es können die Fehler wrongValue,
wrongEncoding, wrongType, wrongLength, inconsistentValue, noAccess, notWritable,
noCreation, inconsistentName, resourceUnavailable, commitFailed und undoFailed
auftreten. Die Set-Operation ist atomar (bis auf den undoFailed-Fehler). Es gibt keine Möglichkeit, kontextabhängige Fehlermeldungen zu liefern.
• Die GetNext-Operation wird benutzt, um die Werte der direkt nachfolgenden Variablen in lexikographischer Ordnung zu lesen. Es können die Fehler tooBig und genErr auftreten. Der Zugriff
auf das Ende der lesbaren Variablen führt zu einer endOfMibView Ausnahme. Durch wiederholte
Anwendung der GetNext-Operation können ganze Teile einer MIB gelesen werden, ohne die MIB
Struktur oder die Namen der Instanzen zu kennen.
116
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
• Die GetBulk-Operation ist eine Verallgemeinerung der GetNext-Operation, bei der konzeptionell
lokal mehrere GetNext-Operationen durchgeführt werden.
– Die ersten N Elemente (non-repeaters) der Variablenlisten werden wie bei einer GetNextOperation behandelt.
– Für die übrigen R Elemente der Variablenlisten werden wiederholt lokal konzeptionell GetNextOperationen ausgeführt und in der Antwortnachricht gesammelt.
– Der Parameter M (max-repetitions) definiert eine obere Grenze für die Anzahl der Wiederholungen.
Die GetBulk-Operation operiert wie alle anderen Operationen lediglich auf einer lexikographisch
geordneten Liste von Variablen und respektiert daher auch nicht Grenzen von konzeptionellen Tabellen.
• Die Trap-Operation wird benutzt, um Benachrichtigungen über das Eintreten von Ereignissen zu
versenden. Der Typ des Ereignisses sowie die notwendigen Informationen zu dem Ereignis werden in
der Variablenliste abgelegt. Die Trap-Operation ist nicht bestätigt und somit kann der Sender nicht
entscheiden, ob die Benachrichtigung angekommen ist oder nicht. Zu beachten ist auch, daß es beim
Ausfall von zentralen Systemen oder Netzen oder auch beim Wiederanlaufen zu sehr vielen Traps
kommen kann (trap storms).
• Die Inform-Operation wird ebenfalls benutzt, um Benachrichtigungen über das Eintreten von Ereignissen zu versenden. Im Gegensatz zur Trap-Operation ist eine Inform-Operation bestätigt. Allerdings wird nur die Zustellung der Benachrichtigung bestätigt und nicht etwa das der Empfänger die
Nachricht verstanden hat.
5.3.5
Nachrichtenformat
Das Nachrichtenformat von SNMPv3 ist in ASN.1 definiert. Die unten angegebene Version weicht in einigen
Details von den RFCs ab, ist aber semantisch äquivalent und integriert die Definitionen für das aktuelle
Sicherheitsmodell (user-based security model).
HYPOTHETICAL-SNMPv2c-SNMPv3 DEFINITIONS ::= BEGIN
-- object names and types
ObjectName ::= OBJECT IDENTIFIER
ObjectSyntax ::= CHOICE {
simple
SimpleSyntax,
application-wide ApplicationSyntax
}
SimpleSyntax ::= CHOICE {
integer-value INTEGER (-2147483648..2147483647),
string-value
OCTET STRING (SIZE (0..65535)),
objectID-value OBJECT IDENTIFIER
}
ApplicationSyntax ::= CHOICE {
ipAddress-value
IpAddress,
counter-value
Counter32,
timeticks-value
TimeTicks,
arbitrary-value
Opaque,
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
117
big-counter-value
Counter64,
unsigned-integer-value Unsigned32
}
IpAddress
Counter32
Unsigned32
Gauge32
TimeTicks
Opaque
Counter64
::=
::=
::=
::=
::=
::=
::=
[APPLICATION
[APPLICATION
[APPLICATION
Unsigned32
[APPLICATION
[APPLICATION
[APPLICATION
0] IMPLICIT OCTET STRING (SIZE (4))
1] IMPLICIT INTEGER (0..4294967295)
2] IMPLICIT INTEGER (0..4294967295)
3] IMPLICIT INTEGER (0..4294967295)
4] IMPLICIT OCTET STRING
6] IMPLICIT INTEGER (0..18446744073709551615)
-- message header
SNMPv3Message ::= SEQUENCE {
msgVersion
INTEGER (0..2147483647),
msgGlobalData
HeaderData,
msgSecurityParameters OCTET STRING,
msgData
ScopedPduData
}
HeaderData ::= SEQUENCE {
msgID
INTEGER (0..2147483647),
msgMaxSize
INTEGER (484..2147483647),
msgFlags
OCTET STRING (SIZE(1)),
msgSecurityModel INTEGER (1..2147483647)
}
ScopedPduData ::= CHOICE {
plaintext
ScopedPDU,
encryptedPDU OCTET STRING
}
-- encrypted scopedPDU value
ScopedPDU ::= SEQUENCE {
contextEngineID OCTET STRING,
contextName
OCTET STRING,
data
ANY
-- e.g., PDUs
}
-- user-based security model
UsmSecurityParameters ::= SEQUENCE {
msgAuthoritativeEngineID
OCTET STRING,
msgAuthoritativeEngineBoots INTEGER (0..2147483647),
msgAuthoritativeEngineTime
INTEGER (0..2147483647),
msgUserName
OCTET STRING (SIZE(0..32)),
msgAuthenticationParameters OCTET STRING,
msgPrivacyParameters
OCTET STRING
}
-- protocol data units
PDUs ::= CHOICE {
get-request
GetRequest-PDU,
118
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
get-next-request
get-bulk-request
response
set-request
trap
inform
report
GetNextRequest-PDU,
GetBulkRequest-PDU,
Response-PDU,
SetRequest-PDU,
Trap-PDU,
Inform-PDU,
Report-PDU
}
GetRequest-PDU
GetNextRequest-PDU
Response-PDU
SetRequest-PDU
-- [4] is obsolete
GetBulkRequest-PDU
Inform-PDU
Trap-PDU
Report-PDU
::=
::=
::=
::=
[0]
[1]
[2]
[3]
IMPLICIT
IMPLICIT
IMPLICIT
IMPLICIT
PDU
PDU
PDU
PDU
::=
::=
::=
::=
[5]
[6]
[7]
[8]
IMPLICIT
IMPLICIT
IMPLICIT
IMPLICIT
BulkPDU
PDU
PDU
PDU
max-bindings INTEGER ::= 2147483647
RequestID
::= INTEGER (-214783648..214783647)
ErrorIndex ::= INTEGER (0..max-bindings)
ErrorStatus ::= INTEGER { noError(0), tooBig(1), noSuchName(2),
badValue(3), readOnly(4), genErr(5),
noAccess(6), wrongType(7), wrongLength(8),
wrongEncoding(9), wrongValue(10),
noCreation(11), inconsistentValue(12),
resourceUnavailable(13), commitFailed(14),
undoFailed(15), authorizationError(16),
notWritable(17), inconsistentName(18) }
VarBind ::= SEQUENCE {
name
ObjectName,
CHOICE {
value
ObjectSyntax,
unSpecified
NULL,
noSuchObject
[0] IMPLICIT NULL,
noSuchInstance [1] IMPLICIT NULL,
endOfMibView
[2] IMPLICIT NULL
}
}
VarBindList ::= SEQUENCE (SIZE (0..max-bindings)) OF VarBind
PDU ::= SEQUENCE {
request-id
error-status
error-index
variable-bindings
}
RequestID,
ErrorStatus,
ErrorIndex,
VarBindList
BulkPDU ::= SEQUENCE {
request-id
RequestID,
119
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
non-repeaters
INTEGER (0..max-bindings),
max-repetitions
INTEGER (0..max-bindings),
variable-bindings VarBindList
}
END
Die Kodierung mit Hilfe der Basic Encoding Rules liefert das folgende Paketformat.
0x30 - sequence
tag len
0x02 - integer
0x30 - sequence
tag len msgVersion
0x02 - integer
tag len
0x04 - octet string
tag len msgAuthEngineID
msgID
0x02 - integer
tag len
0x02 - integer
tag len
tag len
0x04 - octet string
msgGlobalData
0x04 - octet string
msgMaxSize
tag len msgAuthEngBoots
SNMPv3Message
msgFlags
0x02 - integer
tag len
0x02 - integer
tag len
0x04 - octet string
tag len msgAuthParam
tag len msgPrivParam
0x04 - octet string
0x04 - octet string
tag len contextEngineID
0x02 - integer
tag len
request-id
0x02 - integer
tag len
msgData
UsmSecurityParameters
0x04 - octet string
tag len msgUserName
tag len
0x30 - sequence
tag len msgSecurityModel
0x04 - octet string
tag len msgAuthEngTime
0x30 or 0x04 - sequence or octet string
msgSecurityParameters
tag len
contextName
depends on PDU type
tag len
0x02 - integer
error-status / non-repeaters
0x30 - sequence
tag len error-index / max-repetitions
tag len variable-bindings
0x30 - sequence
tag len
0x08 - object identifier
tag len
name
0x30 - sequence
VarBind
tag len
depends on type of value
tag len value / exception
PDU
0x08 - object identifier
tag len
name
VarBind
depends on type of value
tag len value / exception
Abbildung 5.21: SNMPv3 (USM) Kodierung
Sicherheit (USM/VACM)
Folgende Sicherheitsfragen müssen beantwortet werden:
1. Ist die Nachricht die eine Operation spezifiziert authentisch?
2. Wer möchte eine Operation ausgeführt bekommen?
3. Welche Variablen sind von der Operationen betroffen?
4. Welche Rechte hat der Aufrufer der Operation im Hinblick auf die betroffenen Variablen?
Die Fragen 1 und 2 werden mit Hilfe von Sicherheitsmechanismen im Protokoll gelöst während die Fragen
3 und 4 durch eine Zugriffskontrollinstanz beantwortet werden.
120
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
msgVersion
msgID
msgMaxSize
msgFlags
message
header
(SNMPv3)
msgSecurityModel
msgAuthoritativeEngineID
scope of authentication
msgAuthoritativeEngineBoots
msgAuthoritativeEngineTime
msgUserName
security
parameters
(USM)
msgAuthenticationParameters
msgPrivacyParameters
contextEngineID
scope of encryption
contextName
context
selector
(scope)
request-id
error-status / non-repeaters
error-index / max-repetitions
protocol
operation
(PDU)
variable-bindings
Abbildung 5.22: SNMPv3 (USM) Nachrichtenformat
Nachrichtensicherheit
• Das User-based Security Model (USM) [60] garantiert Datenintegrität und die Authentifikation des
Nachrichtensenders durch sogenannte Message Authentication Codes (MACs), die mit Hilfe von
kryptographisch starken Einweghashfunktionen über die Nachrichten und symmetrischen Schlüssel
gebildet werden (HMAC-MD5-96, HMAC-SHA-96).
• Die Vertraulichkeit der Daten kann optional durch Verschlüsselung der ScopedPDU mit einem symmetrischen Verschlüsselungsverfahren erreicht werden (CBC-DES).
• Der Schutz gegen Nachrichtenwiederholungen basiert auf loose synchronisierten Uhren. Bei jedem
Nachrichtenaustausch werden die jeweiligen Uhren der Kommunikationspartner abgeglichen.
• Die notwendigen Schlüssel können algorithmisch aus Paßworten generiert werden, wobei die Schlüssel
lokalisiert werden, so daß sie nur auf einer Protokollmaschine gültig sind:
– Erzeuge durch wiederholte Konkatenation eines Paßwortes eine Zeichenkette S der Länge 220 =
1048576 Bytes.
– Berechne den Schlüssel Ku des Benutzers u durch entweder Ku = H(S).
– Für eine Protokollmaschine E berechne Kue = H(Ku ||E||Ku )
– Als Hashfunktion H wird entweder MD5 oder SHA-1 benutzt.
Zugriffskontrolle
• Ein View ist eine Teilmenge der existierenden MIB Variablen. Ein View wird wie folgt definiert:
– Ein view subtree ist die Menge der MIB Variablen mit einem gemeinsamen OID Präfix.
121
5.3. SIMPLE NETWORK MANGEMENT PROTOCOL (SNMP)
– Eine view tree family ist die Kombination von einem OID Präfix mit einer Bitmaske.
– Jedes Bit der Bitmaske entscheidet, ob die entsprechende Komponenten im OID Präfix signifikant ist oder nicht (wild-carding).
– Ein view ist eine geordnete Menge von view tree families.
– Für Zugriffskontrollzwecke wird zwischen einem read view, einem write view und einem notify
view unterschieden.
12
1.1.2.1.*.1
-.
/0
+,
#$
1
'(
1
%&
1
1
1
1.2.1.2.*
2
)* !"
2
2
1
1
2
1
2
2
3
1
2
1
2
1
3
2
2
Abbildung 5.23: Views
• Durch geschicktes Wählen der Bitmask können view tree families ganze Zeilen oder ganze Spalten
beschreiben.
• Bei der Zusammenfassung von view tree families wird unterschieden, ob die view tree family eingeschlosse (included) oder ausgeschlossen (excluded) ist.
Die prinzipielle Logik der Zugriffskontrolle wird an folgendem Bild deutlich:
securityModel
who
groupName
securityName
where
contextName
securityModel
how
viewName
securityLevel
why
viewType
what
object type
yes/no
variableName
which
object instance
Abbildung 5.24: SNMP View-based Access Control Model (VACM)
122
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
5.4 Lightweight Directory Access Protocol (LDAP)
Dieser Abschnitt wurde dem Vizeweltmeister im Fußball geopfert.
5.5. AUGMENTED BACKUS-NAUR FORM (ABNF)
123
5.5 Augmented Backus-Naur Form (ABNF)
Neben den rein binären Nachrichtenformaten, die entweder informell durch Diagramme und Text oder durch
formale Definitionssprachen festgelegt werden, gibt es eine Vielzahl von Anwendungsprotokollen im Internet
die auf textuellen Formaten beruhen, in der Regel Kommandos (commands) die von einem Server interpretiert werden und der seinerseits Antworten (replies) erzeugt. Zur genaueren Definition derartiger Protokolle
dient die Augmented Backus-Naur Form (ABNF) [61].
5.5.1
Regelnamen und Terminalsymbole
• Wie jede BNF besteht auch eine Definition in der ABNF aus einer Menge von Regel (Produktionen).
Jede Regel hat einen Namen hat wobei die Großkleinschreibung nicht signifikant ist.
• Eine Regel hat den Aufbau
name = elements crlf
wobei name der Name der Regel ist, elements eine Folge von Regelnamen oder Terminalsymbolen
ist und crlf das Zeilenende markiert (cr = carriage return, lf = line feed).
• Terminalsymbole sind nicht-negative Zahlen. Die Basis der Zahlen kann entweder binär sein (b),
dezimal (d) oder hexadezimal (x).
CR
CR
= %d13
= %x0D
Mehrere Werte können durch einen Punkt konkateniert werden:
CRLF = %d13.10
Zeichenketten bestehen aus druckbaren US-ASCII Zeichen können literal in Anführungszeichen angegeben werden, wobei allerdings Zeichenketten nicht sensitiv bezüglich der Großkleinschreibung
sind.
5.5.2
Operatoren
In den ABNF-Regeln können verschiedene Operatoren auftreten, die im folgenden einzeln beschrieben sind.
Konkatenation
Der einfachste Operator ist die Konkatenation. Das Operatorsymbol ist das leere Wort (Leerzeichen in der
ABNF-Definition sind nicht signifikant). Eine Produktion der Form mumble = foo bar foo mit foo
= %x61 und bar = %x62 liefert die Zeichenfolge aba.
Alternativen
Alternativen werden durch das Operatorsymbol / definiert. Eine Produktion der From mumble = foo
/ bar liefert die durch foo oder bar definierte Zeichenfolge. Da es oftmals sinnvoll ist, eine Liste von
Alternativen in Fragmente zu definieren, gibt es hierfür eine besondere Notation:
mumble = foo
mumble =/ bar
mumble =/ baz
Offenbar läßt sich diese inkrementelle Notation von Alternativen einfach in die normale Notation für Alternativen umformen und erhöht also nur die Lesbarkeit. Ebenso lassen sich letztlich auch literale Zeichenketten
als eine Alternative schreiben.
124
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Wertebereiche
Bereiche von alternativen Werten lassen sich durch eine Notation darstellen, bei der zwei Konstante durch
ein Bindestrich voneinander getrennt sind. Beide Konstanten teilen sich die Notation der Zahlenbasis.
DIGIT
DIGIT
=
=
%x30-39
"0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
Gruppierungen
Mehrere Elemente einer Regel können durch Klammern zu einer Gruppe zusammengefaßt werden werden,
die als einzelnes Element behandelt wird. Die Notation mumble = (foo bar) / (bar foo) liefert
die durch foo bar oder die durch bar foo definierte Zeichenfolge.
Wiederholungen
Wiederholungen können allgemein durch den parametrisierten Operator * definiert werden. Das allgemeine
Format ist n*m element wobei n die minimale Anzahl von Wiederholungen ist und m die maximale
Anzahl von Wiederholungen. Die Angabe von n und m ist optional. Beim Fehlen von n wird 0 angenommen
und beim Fehlen von m der Wert unendlich. Für häufig auftretende Spezialfälle gibt es folgende kompakte
Notationen:
• Die Notation * foo steht also für eine beliebig häufige Wiederholung von foo.
• Die Notation n foo mit einer positiven Zahl n steht für genau n Wiederholungen, also n*n foo.
• Optionale Elemente können als [foo] geschrieben werden und entsprechen *1 foo.
Kommentare
Kommentare werden durch ein Semikolon ; eingeleitet und erstecken sich bis zum Ende der Zeile.
5.5.3
Kerndefinitionen
Die folgenden Kerndefinitionen stammen aus der Spezifikation der ABNF und werden in vielen ABNFDefinitionen verwendet.
ALPHA
=
%x41-5A / %x61-7A
; A-Z / a-z
BIT
=
"0" / "1"
CHAR
=
%x01-7F
; any 7-bit US-ASCII character, excluding NUL
CR
=
%x0D
; carriage return
CRLF
=
CR LF
; Internet standard newline
CTL
=
%x00-1F / %x7F
5.5. AUGMENTED BACKUS-NAUR FORM (ABNF)
125
; controls
DIGIT
=
%x30-39
; 0-9
DQUOTE
=
%x22
; " (Double Quote)
HEXDIG
=
DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
HTAB
=
%x09
; horizontal tab
LF
=
%x0A
; linefeed
LWSP
=
*(WSP / CRLF WSP)
; linear white space (past newline)
OCTET
=
%x00-FF
; 8 bits of data
SP
=
%x20
; space
VCHAR
=
%x21-7E
; visible (printing) characters
WSP
=
SP / HTAB
; White space
5.5.4
ABNF in ABNF
Die Syntax einer gültigen ABNF-Definition läßt sich selbst wieder in ABNF beschreiben.
rulelist
=
1*( rule / (*c-wsp c-nl) )
rule
=
rulename defined-as elements c-nl
; continues if next line starts with white space
rulename
=
ALPHA *(ALPHA / DIGIT / "-")
defined-as
=
*c-wsp ("=" / "=/") *c-wsp
; basic rules definition and incremental alternatives
elements
=
alternation *c-wsp
c-wsp
=
WSP / (c-nl WSP)
c-nl
=
comment / CRLF
; comment or newline
comment
=
";" *(WSP / VCHAR) CRLF
126
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
alternation
=
concatenation
*(*c-wsp "/" *c-wsp concatenation)
concatenation
=
repetition *(1*c-wsp repetition)
repetition
=
[repeat] element
repeat
=
1*DIGIT / (*DIGIT "*" *DIGIT)
element
=
rulename / group / option /
char-val / num-val / prose-val
group
=
"(" *c-wsp alternation *c-wsp ")"
option
=
"[" *c-wsp alternation *c-wsp "]"
char-val
=
DQUOTE *(%x20-21 / %x23-7E) DQUOTE
; quoted string of SP and VCHAR without DQUOTE
num-val
=
"%" (bin-val / dec-val / hex-val)
bin-val
=
"b" 1*BIT
[ 1*("." 1*BIT) / ("-" 1*BIT) ]
; series of concatenated bit values
; or single ONEOF range
dec-val
=
"d" 1*DIGIT
[ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]
hex-val
=
"x" 1*HEXDIG
[ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]
prose-val
=
"<" *(%x20-3D / %x3F-7E) ">"
; bracketed string of SP and VCHAR without angles
; prose description, to be used as last resort
127
5.6. SIMPLE MAIL TRANSFER PROTOCOL (SMTP)
5.6 Simple Mail Transfer Protocol (SMTP)
Einer der grundlegenden Dienste im Internet ist elektronische Post (email). Das Simple Mail Transfer Protocol (SMTP) ist das wesentliche Protokoll zur Übertragung von elektronischer Post im Internet obwohl zu
einem funktionierenden System eine Reihe weiterer Definitionen über das Format der Nachrichten notwendig
sind. SMTP basiert in der Regel auf TCP und benutzt standardmäßig die Portnummer 25.
5.6.1
Grundlagen
Elektronische Post wird auch nach dem store-and-forward-Prinzip weitergeleitet bei dem jeweils ein Knoten die aktuelle Kopie einer Nachricht hat und Verantwortung für deren Weiterleitung übernimmt. Bei der
Weiterleitung wird zunächst auf dem nächsten Knoten eine neue Kopie erzeugt. Ist der Vorgang erfolgreich
beendet worden, so kann die lokale Kopie vernichtet werden, da der nächste Knoten jetzt für die Zustellung
zuständig ist.
Eine typische Konfiguration zum Versenden, Weiterleiten und Lesen von elektronischer Post im Internet zeigt
Abbildung 5.25.
sender host system
sender host system
mail
queue
user
agent
local
MTA
user
agent
SMTP
mail
queue
relay
MTA
organization A
SMTP
organization B
mail
queue
relay
MTA
user
mailbox
SMTP
user
agent
user
mailbox
receiver host system
local
MTA
IMAP
user
agent
receiver host system
Abbildung 5.25: Typische Konfigurationen für elektronische Post
• Der mail user agent (MUA) führt den Dialog mit dem Benutzer und nimmt eine neue elektronische
Nachricht entgegen. Die Nachricht wird anschließend entweder dem lokalen MTA oder einem relay
MTA (siehe unten) übergeben.
128
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
• Ein mail transfer agent (MTA) ist für die Weiterleitung von elektronischen Nachrichten durch das Internet zuständig. Ein relay MTA ist ein Zwischensystem das einzig zur Weiterleitung von Nachrichten
im Internet dient. Ein gateway MTA ist ein Zwischensystem das zur Weiterleitung von Nachrichten in
andere Netze dient (z.B. ISO/OSI Netzwerke auf der Basis des X.400 Protokolls).
• Am Zielsystem angekommen wird die elektronische Post in einem benutzerspezifischen Zwischenspeicher (mailbox) abgelegt. Der Zugriff auf diesen Zwischenspeicher erfolgt entweder über das
Dateisystem oder mit Hilfe spezieller Protokolle wie z.B. IMAP (siehe nächstes Kapitel).
• Bei der Übertragung von elektronischer Post unterscheidet man analog zu der gelben Post zwischen
einem Umschlag (envelop) der für die Weiterleitung und Zustellung einer Nachricht wichtig ist, einem
Nachrichtenkopf (header) der allgemeine Parameter einer Nachricht beschreibt und dem eigentlichen
Inhalt (body).
• Der Inhalt (body) ist zunächst nicht weiter struktuiert und auf die 7-Bit US-ASCII Zeichen reduziert.
Zusätzliche Standards beschreiben wie der Inhalt strukturiert werden kann und insbesondere mehrteilige Dokumente mit verschiedenen Dokumenttypen realisiert werden (MIME).
5.6.2
Kommandos und Antworten
Die Übertragung von elektronischer Post erfolgt mit Hilfe des Simple Mail Transfer Protocols (SMTP) [62].
Das Protokoll definiert eine relativ kleine Menge von Kommandos die von einem SMTP Client aufgerufen
und vom SMTP Server ausgeführt werden. Die Ausführung wird durch numerische Ergebniscodes bestätigt.
HELO
EHLO
MAIL
RCPT
DATA
RSET
VRFY
EXPN
HELP
NOOP
QUIT
Identifikation eines SMTP Clients gegenüber einen SMTP Server (HELLO)
Erweiterte Identifikation mit Anzeige unterstützter SMTP Optionen (EXTENDED HELLO)
Start einer Nachrichtenübertragung (MAIL)
Identifikation eines Empfängers (RECIPIENT)
Beginn der Übertragung des Inhalts (DATA)
Abbruch einer begonnenen Transaktion (RESET)
Überprüfung einer Adresse (VERIFY)
Auflösung einer Mailing-Liste (EXPAND)
Hilfe über die verfügbaren Kommandos (HELP)
Kommando ohne Wirkung (NOOP)
Beendung der Transportverbindung (QUIT)
Die genaue Syntax der SMTP-Kommandos ist in ABNF definiert:
;
; Syntax der Kommandos
;
helo
ehlo
mail
rcpt
=
=
=
=
data
rset
vrfy
expn
help
noop
quit
=
=
=
=
=
=
=
;
"HELO" SP Domain CRLF
"EHLO" SP Domain CRLF
"MAIL FROM:" ("<>" / Reverse-Path) [SP Mail-Parameters] CRLF
"RCPT TO:" ("<Postmaster@" domain ">" / "<Postmaster>" /
Forward-Path) [SP Rcpt-Parameters CRLF
"DATA" CRLF
"RSET" CRLF
"VRFY" SP String CRLF
"EXPN" SP String CRLF
"HELP" [ SP String ] CRLF
"NOOP" [ SP String ] CRLF
"QUIT" CRLF
5.6. SIMPLE MAIL TRANSFER PROTOCOL (SMTP)
; Syntax der Kommandoparameter
;
Reverse-path = Path
Forward-path = Path
Path
= "<" [ A-d-l ":" ] Mailbox ">"
A-d-l
= At-domain *( "," A-d-l )
; Note that this form, the so-called "source route",
; MUST BE accepted, SHOULD NOT be generated, and SHOULD be
; ignored.
At-domain
= "@" domain
Mail-parameters = esmtp-param *(SP esmtp-param)
Rcpt-parameters = esmtp-param *(SP esmtp-param)
esmtp-param
= esmtp-keyword ["=" esmtp-value]
esmtp-keyword
= (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
esmtp-value
= 1*(%d33-60 / %d62-127)
; any CHAR excluding "=", SP, and control characters
Keyword = Ldh-str
Argument = Atom
Domain = (sub-domain 1*("." sub-domain)) / address-literal
sub-domain = Let-dig [Ldh-str]
address-literal = "[" IPv4-address-literal /
IPv6-address-literal /
General-address-literal "]"
Mailbox = Local-part "@" Domain
Local-part = Dot-string / Quoted-string
Dot-string = Atom *("." Atom)
Atom = 1*atext
Quoted-string = DQUOTE *qcontent DQUOTE
String = Atom / Quoted-string
;
; Syntax f"ur IPv4/IPv6 Adressen
;
IPv4-address-literal = Snum 3("." Snum)
IPv6-address-literal = "IPv6:" IPv6-addr
General-address-literal = Standardized-tag ":" 1*dcontent
Standardized-tag = Ldh-str
; MUST be specified in a standards-track RFC
; and registered with IANA
Snum = 1*3DIGIT ; representing a decimal integer
; value in the range 0 through 255
129
130
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Let-dig = ALPHA / DIGIT
Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
IPv6-addr
IPv6-hex
IPv6-full
IPv6-comp
= IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp
= 1*4HEXDIG
= IPv6-hex 7(":" IPv6-hex)
= [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":"
IPv6-hex)]
; The "::" represents at least 2 16-bit groups of zeros
; No more than 6 groups in addition to the "::" may be
; present
IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal
IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::"
[IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal
; The "::" represents at least 2 16-bit groups of zeros
; No more than 4 groups in addition to the "::" and
; IPv4-address-literal may be present
Als Reaktion auf die Kommandos schickt der Server dreistellige numerische Antwortcodes mit zusätzlichen
textuellen Erklärungen, die allerdings nicht für das Protokoll signifikant sind. Die Antwortcodes sind nach
einem festen Muster aufgebaut (theory of reply codes).
• Die erste Stelle des dreistelligen Antwortcodes gibt darüber Auskunft, um was für eine Art von Antwortcode es sich handelt:
1yz Vorläufige positive Antwort, wobei zur Ausführung der Aktion weitere Informationen notwendig sind (positive preliminary reply).
2yz Endgültige positive Antwort über die erfolgreiche Ausführung einer Aktion (positive completion
reply).
3yz Zwischenzeitliche positive Antwort, wobei weitere Informationen zur Beendigung einer Aktion
notwendig sind (positive intermediate reply).
4yz Transiente negative Antwort, wobei der Fehler temporärer Natur ist und das Kommando wiederholt werden kann (transient negative completion reply).
5yz Endgültige negative Antwort, wobei eine automatische Wiederholung des Kommandos nicht
sinnvoll ist (permanent negative completion reply).
• Mit der zweiten Stelle gruppiert man Antworten in spezielle Kategorien:
x0z Syntaktische Probleme.
x1z Informelle Antworten und Statusinformationen.
x2z Antworten, die sich auf den Übertragungskanal beziehen.
x3z Nicht definiert.
x4z Nicht definiert.
x5z Status des Servers im Kontext der eingeleiteten Aktionen.
• Die dritte Stelle gibt die genaue Bedeutung der Antwort in der jeweiligen Kategorie an.
Durch die Benutzung dieser dreistufigen Antwortcodes kann eine Implementation auch auf unbekannte neue
Antwortcodes relativ sinnvoll reagieren. Die im SMTP-Protokoll definierten Antwortcodes sind unten nach
funktionalen Kriterien geordnet angegeben:
5.6. SIMPLE MAIL TRANSFER PROTOCOL (SMTP)
500
501
502
503
504
131
Syntax error, command unrecognized
Syntax error in parameters or arguments
Command not implemented (see section 4.2.4)
Bad sequence of commands
Command parameter not implemented
211 System status, or system help reply
214 Help message
220 <domain> Service ready
221 <domain> Service closing transmission channel
421 <domain> Service not available, closing transmission channel
250
251
252
450
550
451
551
452
552
553
354
554
Requested mail action okay, completed
User not local; will forward to <forward-path>
Cannot VRFY user, but will accept message and attempt delivery
Requested mail action not taken: mailbox unavailable
Requested action not taken: mailbox unavailable
Requested action aborted: error in processing
User not local; please try <forward-path>
Requested action not taken: insufficient system storage
Requested mail action aborted: exceeded storage allocation
Requested action not taken: mailbox name not allowed
Start mail input; end with <CRLF>.<CRLF>
Transaction failed (Or, in the case of a connection-opening
response, "No SMTP service here")
5.6.3
Nachrichtenköpfe
Das Format der Nachrichtenköpfe ist in RFC 2822 [63] festgelegt. Die wesentliche Produktion der ABNF
sieht folgendermaßen aus:
fields
=
*(trace *resent-field) *regular-field
resend-field
resend-field
= resent-date / resent-from / resent-sender /
=/ resent-to / resent-cc / resent-bcc / resent-msg-id
regular-field
regular-field
regular-field
= orig-date / from / sender / reply-to / to / cc / bcc
=/ message-id / in-reply-to / references / subject
=/ comments / keywords
• Die resend-field Elemente werden bei der Übertragung von Nachrichten von MTAs erzeugt. Sie
dienen der Fehlersuche und der Erkennung von Schleifen.
• Die übrigen Felder haben die vermutlich mittlerweile allgemein bekannten Bedeutungen.
5.6.4
Multipurpose Internet Mail Extensions (MIME)
Die Multipurpose Internet Mail Extensions (MIME) [64] sind Konventionen, mit denen der Inhalt einer
Nachricht strukturiert werden kann und insbesondere auch die Übertragung verschiedener Dokumenttypen
(inklusive binärer Format) ermöglicht wird.
132
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Zusätzliche Nachrichtenkopffelder
Die MIME-Spezifikationen definieren einige neue Felder für den Nachrichtenkopf:
• Das Feld Mime-Version definiert die MIME-Versionsnummer (derzeit 1.0).
• Das Feld Content-Type beschreibt, welchen Medientyp die Nachricht enthält. Es gibt zusammengesetzte Medientypen, bei denen jedes enhaltene Dokument selbst seinen Content-Type beschreibt.
• Das Feld Content-Transfer-Encoding legt fest, wie die Daten während der Übertragung kodiert werden. Dies ist notwendig, da SMTP klassisch nur 7-Bit ASCII verlangt und um Mehrdeutigkeiten zu
vermeiden.
• Das optionale Feld em Content-Description enthält eine kurze Beschreibung und ist insbesondere dann
sinnvoll, wenn nicht garantiert ist, daß ein Empfänger in der Lage ist den Dokumenttypen auszugeben.
Medientypen
MIME unterscheidet fünf primitive Medientypen (media types):
1. Der Medientyp (text) kann für beliebigen Text verwendet werden. Der einfachste Untertyp ist
plain. Beim Medientyp (text) kann über Parameter der Zeichensatz (charset) angegeben werden.
2. Der Medientyp (image) kann für beliebige Bildformate verwendet werden. Typische Untertypen sind
jpeg oder png.
3. Der Medientyp (audio) steht für ein Dokument, das einen Audiokanal zur Ausgabe benötigt.
4. Der Medientyp (video) steht für Sequenzen von bewegten Bilddaten. Ein typischer Untertyp ist
mpeg.
5. Der Medientyp (application) steht für Datenformate, die von bestimmten Applikationen verstanden werden. Typische Vertreter sind postscript oder pdf.
Neben den primitiven Medientypen gibt es auch zusammengesetzte Medientypen:
1. Der Medientyp (multipart) wird für Dokumente benutzt, die aus Teilen mit jeweils unterschiedlichen Medientypen bestehen.
2. Der Medientyp (message) kann selbst wieder eine Nachricht enthalten, wobei diese Nachricht allerdings nicht selbst vom Typ (message) sein darf.
Bei zusammengesetzten Inhalten werden die einzelnen Teil durch Markierungen voneinander getrennt, die jeweils an Anfang der Zeile mit zwei Minuszeichen (--) beginnen. Außerdem muß im Feld Content-Type
mit dem Parameter boundary eine zusätzliche Trennzeichenfolge festgelegt werden, die nach den zwei
Minuszeichen (--) folgen muß. Die letzte Markierung wird zusätzlich durch zwei Minuszeichen (--) abgeschlossen.
From: Nathaniel Borenstein <[email protected]>
To: Ned Freed <[email protected]>
Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="simple boundary"
This is the preamble.
It is to be ignored, though it
133
5.6. SIMPLE MAIL TRANSFER PROTOCOL (SMTP)
is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers.
--simple boundary
This is implicitly typed plain US-ASCII text.
It does NOT end with a linebreak.
--simple boundary
Content-type: text/plain; charset=us-ascii
This is explicitly typed plain US-ASCII text.
It DOES end with a linebreak.
--simple boundary-This is the epilogue.
It is also to be ignored.
Base64 Encoding
Bei dieser Kodierung werden jeweils drei Byte (also 24 Bit) durch ein vier Zeichen dargestellt, die aus einem
6-Bit Zeichenvorrat entnommen werden. Die sich ergebende Zeichenfolge wird so umgebrochen, daß Zeilen
niemals länger sind als 76 Zeichen.
Value
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Encoding
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
Value
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Encoding
R
S
T
U
V
W
X
Y
Z
a
b
c
d
e
f
g
h
Value
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Encoding
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Value
51
52
53
54
55
56
57
58
59
60
61
62
63
Encoding
z
0
1
2
3
4
5
6
7
8
9
+
/
(pad) =
Sollten bei der Kodierung am Ende weniger als drei Byte übrig bleiben, so werden Füllbytes angehängt und
das besondere Zeichen = an die Kodierung angefügt, um die Anzahl der benutzten Füllbytes anzuzeigen.
Offensichtlich ist ein Text nach einer Base64-Kodierung nicht mehr ohne weitere Hilfsmittel lesbar.
Quoted-Printable Encoding
Beim Quoted-Printable Encoding wird versucht, soviel wie möglich von dem darstellbaren Text zu erhalten.
Nur Zeichen, die nicht in US-ASCII darstellbar sind, werden besonders kodiert. Das grundlegende Prinzip
ist es, nicht darstellbare Zeichen durch die entsprechende Hexadezimalzahl darzustellen, wobei das Zeichen
= zur Identifikation benutzt wird (=0A=0D).
Die genauen Regel sind in Wirklichkeit relativ komplex. Siehe RFC 2045 [64] für die Details.
134
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
5.7 Internet Message Access Protocol (IMAP)
Das Internet Message Access Protocol (IMAP) [65] erlaubt den Zugriff auf Nachrichten, die auf einem
Server physikalisch gespeichert werden. Dabei können verschiedenen Zwischenspeicher (folder, mailboxes)
verwaltet werden und es ist auch ein offline Betrieb mit späterer Synchronisation möglich. (IMAP erlaubt
außerdem auch den Zugriff auf Usenet News, indem News-Gruppen als weitere Zwischenspeicher betrachtet
werden.) Folgende Funktionen werden im Detail unterstützt:
• Erzeugen, löschen und umbenennen von Zwischenspeichern.
• Prüfen auf neu eingegangene elektronische Post.
• Löschen von elektronischer Port.
• Setzen und Löschen von Markierungen für elektronische Post.
• Suchen nach bestimmter elektronischer Post.
• Selektiver Zugriff auf Attribute und Inhalte von Teilen der elektronischen Post.
IMAP basiert in der Regel auf TCP und benutzt standardmäßig die Portnummer 143. Da ursprünglich die
Authentifizierung durch die Übertragung von Paßworten im Klartext geschah, wird oftmals IMAP über TLS
bzw. SSL verwendet. Interaktionen zwischen einem Client und einem Server sind in der Regel zeilenorientiert, wobei Zeilen durch ein CRLF abgeschlossen werden.
5.7.1
Identifikation und Zustände
Nachrichten werden in verschiedenen Zwischenspeichern verwaltet. Die Zwischenspeichern werden über
Namen identifiziert, wobei ein hierarchischer Namensraum unterstützt wird.
Die Nachrichten in einem Zwischenspeichern werden über Nummern identifiziert:
• Die Positionsnummer einer Nachricht message sequence number ist die relative Position einer Nachricht in einem Zwischenspeicher (gezählt wird ab 1). Die Positionsnummer einer Nachricht kann sich
durch Löschungen und Einfügungen verändern.
• Die Identifikationsnummer einer Nachricht unique identifier identifiziert eine Nachricht in einem Zwischenspeicher unabhängig von der Position der Nachricht im Zwischenspeicher. Die Identifikationsnummern bleiben über mehrere IMAP-Sitzungen erhalten und erlauben daher die Synchronisierung
beim off-line Betrieb.
Natürlich können auch bei der Verwendung von Identifikationsnummern Probleme auftreten, insbesondere
wenn externe Programme einen Zwischenspeicher umorganisieren oder ganze Zwischenspeicher gelöscht
und neue mit demselben Namen angelegt werden. Daher gibt es einen zusätzlichen globalen Zähler, der bei
solchen Ereignissen inkrementiert wird und mit dem angezeigt wird, daß die aktuellen Identifikationsnummern nicht mehr mit alten gespeicherten Identifikationsnummern identisch sein müssen.
5.7.2
Zustände
Das IMAP-Protokoll unterscheidet verschiedene Zustände. Abhängig vom jeweiligen Zustand stehen einem
Client unterschiedliche Kommandos zur Verfügung.
5.7. INTERNET MESSAGE ACCESS PROTOCOL (IMAP)
135
connection established and server greeting
non−authenticated
authenticated
selected
logout and connection release
Abbildung 5.26: IMAP Zustandsdiagramm
• Der Startzustand connection established and server greeting wird nach dem Aufbau der Transportverbindung angenommen. Der Server schickt in diesem Zustand eine Begrüßungsnachricht.
• Anschließend findet normalerweise eine Transition in den Zustand non-authenticated statt. In diesem
Zustand sind im wesentlichen nur die Kommandos zulässig, die zu einer Authentifikation notwendig
sind.
• Nach erfolgreicher Authentifikation findet eine Transition in den Zustand authenticated statt. In diesem Zustand kann im wesentlichen ein Zwischenspeichern zur weiteren Bearbeitung ausgewählt werden.
• Im Zustand selected kann auf den Inhalt des selektierten Zwischenspeichers zugegriffen werden, und
es können Änderungen vorgenommen werden. Man kann den selektierten Zwischenspeichers wieder
freigeben (Transition in den authenticated Zustand oder aber auch die IMAP-Sitzung beeinden.
• Im Zustand logout and connection release wird die Sitzung beendet und die Transportverbindung
ordnungsgemäß abgebaut.
5.7.3
Kommandos
Die einzelnen IMAP-Kommandos sind immmer nur in den verschiedenen Zuständen erlaubt. Die folgende
Liste der Kommandos ist daher nach den jeweiligen Zuständen sortiert:
Beliebiger Zustand
CAPABILITY
NOOP
LOGOUT
Liefert eine Liste der Faehigkeiten des Servers
Leeres Kommando (kann für Statusaktualisierungen benutzt werden)
Beendigung der IMAP-Sitzung
Zustand non-authenticated
AUTHENTICATE
LOGIN
Auswahl eines Authentifizierungsverfahrens
Triviale Authentifizierung mit einem Klartext Paßwort
136
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Zustand authenticated
SELECT
EXAMINE
CREATE
DELETE
RENAME
SUBSCRIBE
UNSUBSCRIBE
LIST
LSUB
STATUS
APPEND
Auswahl eines Zwischenspeichers (read-write)
Auswahl eines Zwischenspeichers (read-only)
Anlegen eines neuen Zwischenspeichers
Löschen eines neuen Zwischenspeichers
Umbenennen eines Zwischenspeichers
Eintrag eines Zwischenspeichers in die Liste der aktiven Zwischenspeicher
Austragung eines Zwischenspeichers aus der Liste der aktiven Zwischenspeicher
Auflisten der Namen der Zwischenspeicher
Auflisten der Namen der aktiven Zwischenspeicher
Statusabfrage von einem Zwischenspeicher
Anfügen von Daten an einen Zwischenspeicher
Zustand selected
CHECK
CLOSE
EXPUNGE
SEARCH
FETCH
STORE
COPY
UID
5.7.4
Anlegen einer Sicherungskopie des Zwischenspeiches
Schließen des aktuellen Zwischenspeichers
Löschen aller Nachrichten, die zum Löschen markiert sind.
Suchen von Nachrichten, die bestimmte Kriterien erfüllen
Lesen von Daten einer Nachricht aus dem Zwischenspeicher
Ändern von Daten einer Nachricht in dem Zwischenspeicher
Kopieren von Nachrichten an das Ende eines Zwischenspeichers
Tagging
IMAP unterstützt nebenläufige Operationen auf dem Server. Ein Client kann also mehrere Kommandos absetzen, die dann vom Server asynchron ausgeführt werden. Ein Client versieht seine Kommandos daher mit
eindeutigen Tags, um später Antworten den verschiedenen Kommandos zuordnen zu können. Die Syntax
eines Kommandos ist damit:
command
= tag SPACE (command_any / command_auth /
command_nonauth / command_select) CRLF
Der Server antwortet auf Kommandos mit Antworten. Dabei werden wiederum drei Arten von Antwortzeilen
unterschieden:
1. Antwortzeilen, die weitere Informationen zur Bearbeitung eines Kommandos anfordern, werden durch
ein + markiert.
2. Antwortzeilen, die eine Statusmeldung beinhalten und nicht das Ende einer Kommandobearbeitung
implizieren, werden durch ein * markiert.
3. Alle anderen Antworten beginnen mit dem vom Client gesetzten Tag und zeigen die (erfolgreiche oder
erfolglose) Beendigung der Bearbeitung eines Kommandos an.
Die Rückmeldungen über die erfolgreiche/erfolglose Bearbeitung erfolgt durch Schlüsselworte (OK, NO,
BAD) und nicht wie beim SMTP durch strukturierte Antwortcodes.
5.7. INTERNET MESSAGE ACCESS PROTOCOL (IMAP)
5.7.5
137
Nachrichtenformat
Das IMAP-Nachrichtenformat selbst ist wiederum in ABNF beschrieben. Einen Ausschnitt der ABNFDefinitionen fuer die grundlegensten Elemente ist hier angegeben. Für die recht umfangreiche vollständige
Version sei jedoch auch RFC 2060 [65] verwiesen.
tag
= 1*<any ATOM_CHAR except "+">
; top-level productions for IMAP commands:
command
= tag SPACE (command_any / command_auth /
command_nonauth / command_select) CRLF
;; Modal based on state
command_any
= "CAPABILITY" / "LOGOUT" / "NOOP" / x_command
;; Valid in all states
command_auth
= append / create / delete / examine / list / lsub /
rename / select / status / subscribe / unsubscribe
;; Valid only in Authenticated or Selected state
command_nonauth = login / authenticate
;; Valid only when in Non-Authenticated state
command_select
= "CHECK" / "CLOSE" / "EXPUNGE" /
copy / fetch / store / uid / search
;; Valid only when in Selected state
; top-level productions for IMAP responses:
response
= *(continue_req / response_data) response_done
continue_req
= "+" SPACE (resp_text / base64)
response_data
= "*" SPACE (resp_cond_state / resp_cond_bye /
mailbox_data / message_data / capability_data) CRLF
response_done
= response_tagged / response_fatal
response_fatal
= "*" SPACE resp_cond_bye CRLF
;; Server closes connection immediately
response_tagged = tag SPACE resp_cond_state CRLF
138
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
5.8 Hypertext Transfer Protocol (HTTP)
Das Hypertext Transfer Protocol (HTTP) [66] ist eine der Grundsäulen World-Wide Webs. Es ist ein einfaches Request/Response Protokoll, mit dem Dokumente zwischen einem Client und einem Server ausgetauscht werden können. Die Dokumente sind unter Benutzung der MIME Konventionen strukturiert. HTTP
wird über TCP abgewickelt und benutzt normalerweise den wohl-bekannten Port 80.
Die Identifikation von Dokumenten geschieht über sogenannte Uniform Resource Identifier (URIs) [67]. Die
von HTTP angebotenen Methoden beziehen sich immer auf eine Dokument, das durch einen URI identifiziert
wird. Die von HTTP 1.1 unterstützten Methoden sind:
OPTIONS Abfrage der Optionen, die mit einem URI assoziiert sind
GET
Lesen aller Informationen, die zu einem URI gehören
HEAD
Lesen der Meta-Informationen, die zu einem URI gehören
POST
Schreiben von Parametern unter einem URI
PUT
Schreiben von Informationen unter einem URI
DELETE
Löschen aller Informationen assoziiert mit einem URI
TRACE
Indirekte Ausführung einer Methode zur Fehleridentifikation
CONNECT Reserviert für einen Tunnelmodus (z.B. SSL Tunnel)
Der grundlegende Aufbau der HTTP-Nachrichten ist in folgenden vereinfachter ABNF dargestellt:
HTTP-Message =
Start-Line
=
Start-Line *(message-header CRLF) CRLF [ message-body ]
Request-Line / Status-Line
Request-Line =
Method SP Request-URI SP HTTP-Version CRLF
Status-Line
=
HTTP-Version SP Status-Code SP Reason-Phrase CRLF
Method
Method
Method
= "OPTIONS" / "GET" / "HEAD" / "POST"
=/ "PUT" / "DELETE" / "TRACE" / "CONNECT"
=/ Extension-Method
Extension-Method = token
Request-URI
HTTP-Version
Status-Code
Reason-Phrase
=
=
=
=
"*" | absoluteURI | abs_path | authority
"HTTP" "/" 1*DIGIT "." 1*DIGIT
3DIGIT
*<TEXT, excluding CR, LF>
message-header
field-name
field-value
field-content
=
=
=
=
field-name ":" [ field-value ]
token
*( field-content / LWS )
<the OCTETs making up the field-value
and consisting of either *TEXT or combinations
of token, separators, and quoted-string>
Wichtiger Aspekt bei der Entwicklung von HTTP 1.1 war die bessere Unterstützung von Caches. Viele
Proxies und Web-Browser unterhalten Caches um die Zugriffsgeschwindigkeit zu verbessern. Die Effizienz
dieser lose organisierten Caches kann durch zusätzliche Informationen in den Nachrichtenköpfen deutlich
verbessert werden. Außerdem unterstützt HTTP 1.1 besser die Aushandlung von Optionen und Preferenzen
und löst einige Effizienzprobleme. Beispielsweise können in HTTP 1.1 mehrere Methoden über eine TCPVerbindung abgewickelt werden und es können mehrere logische Server auf einem physikalischen Server
realisiert werden, ohne dem Server mehrere IP-Adressen zuweisen zu müssen.
139
5.9. FILE TRANSFER PROTOCOL (FTP)
5.9 File Transfer Protocol (FTP)
Das File Transfer Protocol (FTP) [68] ist eins der ganz alten elementaren Internet Protokolle zum Austausch
von Dateien. Das Protokoll zeichnet sich dadurch aus, daß es für jede Dateiübertragung eine eigene TCPVerbindung etabliert, wodurch man viele der Probleme die man sonst durch umständliche Markierungen
oder Kodierungen auf einer TCP-Verbindung hat umgeht. Allerdings ist das Verfahren natuerlich bei relativ
kleinen Datenmenge nicht besonders effektiv, da jedesmal zum Auf- und Abbau der Verbindung ein entsprechender Nachrichten-Austausch durchgeführt werden muß.
user
interface
control
process
file
system
data transfer
process
FTP Server
commands
replies
control
process
data
data transfer
process
file
system
FTP Client
Abbildung 5.27: FTP Ablaufmodell
• Die Kontrollverbindung benutzt ein textuelles Protokoll, das sehr dem SMTP Protokoll ähnelt. Es werden vom Client zeilenweise Kommandos übertragen, die vom Server bearbeitet und mit dreistelligen
Antwortcodes bestätigt werden.
• Für jede Datenübertragung wird eine eigene TCP-Verbindung etabliert. Die Verbindung kann wahlweise vom Client zum Server oder vom Server zum Client hin aufgebaut werden. Wenn der Server
die Verbindung initiiert, muß vorher dem Server eine Portnummer bekannt gemacht worden sein. In
der anderen Richtung benutzt man einfach eine wohl-bekannte Portnummern (20). Die Kontrollverbindung wird normalerweise zur Portnummer 21 etabliert.
• FTP erlaubt es auch, bei abgebrochenen unvollständigen Übertragungsversuchen die Übertragung wieder aufzusetzen, was bei großen Datenmengen und instabilen Netzen eine wichtige Eigenschaft ist.
• Mit FTP kann man eine Übertragung zwischen zwei entfernten Systemen veranlassen. Allerdings hat
diese Eigenschaft durchaus einige Sicherheitprobleme zur Folge [69].
140
KAPITEL 5. INTERNET ANWENDUNGSSCHICHT
Anhang A
Packet Capturing
Netzwerke funktionieren gelegentlich nicht wie gewünscht und es ist in diesen Fällen notwendig, den Nachrichtenaustausch zu erfassen und zu analysieren. Dazu dienen spezielle Programme wie z.B. tcpdump,
ethereal oder ngrep, die Datenpakete analysieren. Kritisch bei solchen Programmen ist allerdings das
effiziente Zusammenspiel zwischen Betriebssystem und Analyseprogrammen.
• Pakete sollten möglichst frühzeitig gefiltert werden.
• Das Kopieren von Paketen ist teuer und sollte vermieden werden.
• Die Anzahl der erforderlichen Systemaufrufe sollte minimiert werden.
Offensichtlich läßt sich dieses Ziel erreichen, wenn unwichtige Pakete möglichst früh im Kern des Betriebssystems gefiltert werden — noch bevor sie aus dem Speicherbereich des Gerätetreibers kopiert werden.
A.1
BSD Packet Filter (BPF)
Der BSD Packet Filter (BPF) [70] basiert auf einer einfachen Kontrollfußmaschine, die im Betriebssystemkern realisiert ist und eine effektive Filterung ohne zusätzliche teure Kopieraktionen ermöglicht. Der BPF
wird durch ein Benutzerprozeß programmiert, der üblicherweise einen benutzerfreundlichen Filterausdruck
in eine entsprechende Sequenz von BPF-Befehlen umwandelt und dann die BPF-Sequenz im Betriebssystem installiert. Pakete, die den Filter bestehen, werden zunächst im Kern gesammelt und als Sammlung
dem Benutzerprozeß übergeben, um so die Anzahl der Systemaufrufe und die damit verbundenen Kosten zu
reduzieren.
Die BPF-Maschine ist folgendermaßen aufgebaut:
• Ein Akkumulator für alle Berechnungen.
• Ein Indexregister (x), mit dem relativ zu einer Position auf Daten zugegriffen werden kann.
• Speicher zum Ablegen von Zwischenergebnissen.
• Alle Register und Speicher sind 32 Bit breit.
Der Befehlssatz der BPF-Maschine benutzt ein festes Format, das effizient interpretiert werden kann. Für
genauere Details sei an dieser Stelle auf [70] verwiesen.
Beispiel 1 Alle Ethernet-Rahmen, die IP-Pakete enthalten (ip):
141
142
ANHANG A. PACKET CAPTURING
user
kernel
buffer
buffer
buffer
protocol
stack
filter
filter
filter
BPF
link−level
driver
link−level
driver
link−level
driver
kernel
network
Abbildung A.1: Einbettung des BPF in den Unix Kern
(000)
(001)
(002)
(003)
ldh
jeq
ret
ret
[12]
#0x800
#96
#0
jt 2
;
jf 3 ;
;
;
load ethernet type field
compare with 0x800
return snaplen
filter failed
Beispiel 2 Alle Ethernet-Rahmen, die IP-Pakete enthalten, die nicht aus den Netzen 128.3.112/24 und 128.3.254/24
stammen (ip and not src net 128.3.112/24 and not src net 128.3.254/24):
(000)
(001)
(002)
(003)
(004)
(005)
(006)
(007)
ldh
jeq
ld
and
jeq
jeq
ret
ret
[12]
#0x800
jt 2
[26]
#0xffffff00
#0x80037000 jt 7
#0x8003fe00 jt 7
#96
#0
A.2
libpcap
;
jf 7 ;
;
;
jf 5 ;
jf 6 ;
;
;
load ethernet type field
compare with 0x800
load ipv4 address field
mask the network part
compare with 128.3.112.0
compare with 128.3.254.0
return snaplen
filter failed
Hinter dem Namen libpcap1 verbirgt sich eine C-Bibliothek, die mehrere Funktionen bereitstellt:
• Portable API für verschiedenen Paketfilter in verschiedenen Betriebssystemen.
• Übersetzung von Filterausdrücken in PBF-Programme.
• Interpreter von BPF-Programmen, mit dem auch im Benutzermodus Pakete gefiltert werden können.
• Funktionen zum Schreiben und Lesen von Paketen in/aus Dateien.
Am einfachsten kann die Benutzung der libpcap API durch ein Beispiel erläutert werden. Der folgende
C-Quelltext realisiert ein Programm, daß zunächst eine Datei mit gespeicherten Paketdaten öffnet, optional
einen Filter installiert und anschließend über die einzelnen Pakete mit Hilfe einer Callback-Funktion iteriert.
1
http://www.tcpdump.org/
A.2. LIBPCAP
143
/*
* pcapdemo.c -*
*
Demonstrates the usage of the libpcap API to read pcap save
*
files. The packets are optionally filtered before the packet
*
handler function is called to print some meta information for
*
each filtered paket.
*
* Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck.
*/
#include <stdio.h>
#include <pcap.h>
static int count = 0;
static void
handler(u_char *user, const struct pcap_pkthdr *pkthdr, const u_char *data)
{
count++;
fprintf(stdout, "%d: %lu.%lus (%d)\n", count,
pkthdr->ts.tv_sec, pkthdr->ts.tv_usec, pkthdr->len);
}
int
main(int argc, char **argv)
{
char ebuf[PCAP_ERRBUF_SIZE];
pcap_t *pc;
if (argc < 2 || argc > 3) {
fprintf(stderr, "usage: pcapdemo <file> [<filter>]\n");
exit(1);
}
pc = pcap_open_offline(argv[1], ebuf);
if (! pc) {
fprintf(stderr, "failed to open file: %s\n", ebuf);
exit(2);
}
if (argc == 3) {
struct bpf_program bpf;
if (pcap_compile(pc, &bpf, argv[2], 1, 0) == -1) {
fprintf(stderr, "failed to compile filter: %s\n", pcap_geterr(pc));
exit(3);
}
if (pcap_setfilter(pc, &bpf) == -1) {
fprintf(stderr, "failed to set filter: %s\n", pcap_geterr(pc));
exit(4);
}
}
if (pcap_loop(pc, -1, handler, NULL) == -1) {
fprintf(stderr, "failed to process packets: %s\n", pcap_geterr(pc));
exit(5);
}
pcap_close(pc);
144
ANHANG A. PACKET CAPTURING
return 0;
}
Eine genauere Beschreibung der libpcap API findet man in der pcap(3) Manualseite. Die Syntax der erlaubten
Filterausdrücke ist in tcpdump(1) beschrieben.
A.3
jpcap
Für Java-Programmierer gibt es analog ein Paket jpcap2 mit dem Pakete von Java Programmen verarbeitet werden
können. Implementiert ist jpcap durch direkte Aufrufe der libpcap API.
Das C-Programm aus dem vorigen Abschnitt sieht in Java folgendermaßen aus:
import
import
import
import
import
import
net.sourceforge.jpcap.capture.PacketCapture;
net.sourceforge.jpcap.capture.InvalidFilterException;
net.sourceforge.jpcap.capture.CapturePacketException;
net.sourceforge.jpcap.capture.CaptureFileOpenException;
net.sourceforge.jpcap.capture.RawPacketListener;
net.sourceforge.jpcap.net.RawPacket;
public class JPcapDemo
{
PacketCapture pc;
public JPcapDemo(String file, String filter)
throws CaptureFileOpenException,
InvalidFilterException,
CapturePacketException
{
pc = new PacketCapture();
pc.openOffline(file);
if (filter.length() > 0) {
pc.setFilter(filter, true);
}
pc.addRawPacketListener(new JPcapDemoRawPacketListener());
pc.capture(-1);
pc.close();
}
public static void main(String args[]) {
JPcapDemo foo;
if (args.length < 1 || args.length > 2) {
System.err.println("arguments: <file> [<filter>]");
System.exit(1);
}
try {
foo = new JPcapDemo(args[0], args.length == 2 ? args[1] : "");
} catch (CaptureFileOpenException e) {
System.err.println("failed to open file: " + e.getMessage());
System.exit(2);
} catch (InvalidFilterException e) {
System.err.println("failed to set filter: " + e.getMessage());
System.exit(3);
} catch (CapturePacketException e) {
2
http://www.sf.net/projects/jpcap
145
A.3. JPCAP
System.err.println("failed to capture packets: " + e.getMessage());
System.exit(4);
}
}
private class JPcapDemoRawPacketListener implements RawPacketListener
{
int count = 0;
public void rawPacketArrived(RawPacket rawPacket)
{
byte[] data = rawPacket.getData();
count++;
System.out.println(count + ": "
+ rawPacket.getTimeval()
+ " (" + data.length + ")");
}
}
}
Für eine genaue Beschreibung der jpcap API sei auf die entsprechende Java Dokumentation verwiesen. Man sollte
allerdings bei der Verwendung von Java berücksichtigen, daß unter Umständen sehr leistungsfähige Rechner notwendig
sind, um mit den Datenraten heutiger Netze mithalten zu können.
146
ANHANG A. PACKET CAPTURING
Anhang B
Fragen zur Selbstkontrolle
1. Einführung
(a) Erläutern Sie den Unterschied zwischen Daten- und Telekommunikation.
(b) Nennen Sie verschiedene physikalische Topologien. Welche Funktion haben die verschiedenen Koppelelemente?
(c) Was versteht man unter einen nachrichtentechnischen Kanal? Welche Faktoren können eine Störung eines
Signals im nachrichtentechnischen Kanal bewirken?
(d) Nennen Sie mehrere Übertragungsmedien und vergleichen Sie die Eigenschaften der Medien miteinander.
(e) Was versteht man unter differentieller Codierung? Welchen wesentlichen Vorteile bietet die Manchester
Codierung gegenüber einfachen RZ und NRZ Codierungen?
(f) Erläutern Sie den Zusammenhang zwischen Bitrate und Baudrate.
(g) Erläutern Sie das Prinzip der zyklischen Blocksicherung. Welche Fehler können mit der zyklischen Blocksicherung nicht erkannt werden?
(h) Was versteht man unter dem Begriff Hamming-Abstand? Wozu kann man einen Hamming-Code benutzen?
(i) Erklären Sie den Unterschied zwischen Frequenz- und Zeitmultiplex.
(j) Was versteht man unter einem probabilistischen und einem deterministischen Medienzugangsverfahren?
(k) Erläutern Sie das Prinzip des Medienzugangsverfahrens CSMA/CD. Kann man CSMA/CD in Funknetzen
verwenden?
(l) Welche Probleme werden durch die Einführung von Sequenznummern, Quittungen und Zeitüberwachungen gelöst? Was ist der Unterschied zwischen einem ACK, NACK, SACK und SNACK?
(m) Erklären sie die Begriffe Flusskontrolle und Staukontrolle. Was versteht man in diesem Zusammenhang
unter dem Begriff Fenstertechnik?
(n) Was ist der Unterschied zwischen einem Dienst und einem Protokoll?
(o) Das ISO/OSI Referenzmodell definiert sieben Schichten zur Strukturierung von Kommunikationssystemen. Erläutern sie die Funktion der einzelnen Schichten.
2. Lokale Netze nach IEEE 802
(a) Ordnen Sie die IEEE 802 Standards in das ISO/OSI Referenzmodell ein. Welche Funktion haben die IEEE
802 Teilschichten?
(b) Wozu dient im IEEE 802.3 Rahmen die Präambel und das Startbyte?
(c) Der IEEE 802.3 Standard fordert eine Mindestrahmenlänge von 64 Byte. Von welchen Parametern hängt
diese Mindestrahmenlänge ab?
(d) Skizzieren Sie die Ablauflogik beim Senden/Empfangen von IEEE 802.3 Rahmen. Was ist ein Interframegap?
(e) Erklären Sie das Prinzip einer IEEE 802 Brücke. Was ist der Unterschied zwischen einer Source Routing
Brücke und einer transparenten Brücke?
147
148
ANHANG B. FRAGEN ZUR SELBSTKONTROLLE
(f) Was versteht man im Zusammenhang mit Brücken unter backward learning und einem spanning tree?
(g) Was versteht man unter einem virtuellen LAN? Wie werden Stationen den virtuellen LANs zugeordnet?
(h) Benötigt man pro VLAN einen Spannbaum (spanning tree) oder reicht ein globaler Spannbaum?
3. Internet Netzwerkschicht
(a) Diskutieren Sie die grundlegenden Prinzipien der Internet-Protokollfamilie.
(b) Erläutern Sie den Unterschied zwischen Link-MTU und Path-MTU. Was versteht man unter Path-MTU
”
Discover“?
(c) Wozu dienen autonome Systeme im Internet?
(d) Was versteht man im Zusammenhang mit Internet-Adressen unter einer Zone und einem Scope?
(e) Was versteht man unter einem IP-Adresspräfix?
(f) Erläutern Sie den Begriff Fragmentierung. Wie gehen die Protokolle IPv4 und IPv6 jeweils mit Fragmentierung um?
(g) Was versteht man unter der Internet-Prüfsumme? Warum wurde die IPv4-Prüfsumme in IPv6 abgeschafft?
(h) Beschreiben Sie die Weiterleitung von Datagrammen IP-Netzen.
(i) Wie funktioniert die Übertragung von IP Datagrammen über IEEE 802.3 Netze? Erläutern Sie die dynamische Adreßumsetzung in IPv4 und IPv6.
(j) Beschreiben Sie die wesentlichen Unterschiede zwischen IPv4 und IPv6.
(k) Wann sollte man einen IPv6 Erweiterungsprotokollkopf verwenden und wann eine IPv6 Option?
(l) Welche Sicherheitseigenschaften besitzt IPv6 im Vergleich zu IPv4? Was ist der Unterschied zwischen AH
und ESP?
(m) Erläutern Sie den Bellman-Ford-Algorithmus zur Ermittlung kürzester Wege. Welche Probleme gibt es bei
der Anwendung innerhalb des RIP-2 Protokolls?
(n) Erläutern Sie den Dijkstra-Algorithmus zur Ermittlung kürzester Wege. Vergleichen Sie den DijkstraAlgorithmus mit dem Bellman-Ford-Algorithmus.
(o) Beschreiben Sie das Open Shortest Path First (OSPF) Protokoll.
4. Internet Transportschicht
(a) Welche Aufgabe besitzen Portnummern im Internet?
(b) Was versteht man unter einem Pseudo-Header?
(c) Beschreiben Sie die Dienste, die von den Transportprotokollen UDP und TCP erbracht werden.
(d) Erläutern Sie den TCP Verbindungsaufbau und -abbau. Was ist bei der Wahl der Sequenznummern zu
beachten?
(e) Erklären sie die Funktionsweise der Flusskontrolle im TCP. Was versteht man unter den Begriffen Nagle”
Algorithmus“ und Silly Window Syndrome“?
”
(f) Erklären sie die Funktionsweise der Staukontrolle im TCP. Was versteht man unter den Begriffen Slow
”
Start“ und Karn’s Algorithm“?
”
(g) Wie funktionieren selektive Quittungen in TCP?
5. Internet Anwendungsschicht
(a) Beschreiben Sie die Struktur des Domain Name Systems (DNS). Was ist der Unterschied zwischen einem
Resolver und einem Name Server?
(b) Was versteht man unter einem Resource Record? Erklären Sie anhand von Beispielen die Struktur von
Resource Records.
(c) Beschreiben Sie die Funktionsweise des DNS Protokolls.
(d) Erläutern Sie die Begriffe Abstrakte Syntax“, Transfersyntax“ und lokale Syntax“.
”
”
”
(e) Definieren Sie eine Datenstruktur für eine Person in ASN.1. Skizzieren Sie an dem Beispiel, wie eine
Serialisierung mit Hilfe der Basic Encoding Rules (BER) aussehen würde.
(f) Erläutern Sie die Begriffe Managed Object“ und Management Information Base“.
”
”
149
(g) Wie werden Instanzen von MIB-Variablen in SNMP identifiziert? Welche Bedeutung hat die SMIv2 INDEX
Klausel?
(h) Was versteht man im Zusammenhang mit SNMP unter lexikographischer Ordnung?
(i) Erläutern Sie die sechs Protokolloperationen von SNMPv2c/SNMPv3. Zeigen Sie an einem Beispiel, wie
eine konzeptionelle Tabelle mit SNMP gelesen werden kann.
(j) Welche Sicherheitsmechanismen existieren in SNMPv3?
(k) Beschreiben Sie eine Datenstruktur für eine Person in ABNF.
(l) Erläutern Sie anhand einer Skizze die Begriffe MTA und MUA und wie die Protokolle SMTP und IMAP
zur Übertragung von elektronischer Post verwendet werden. Welche Bedeutung hat das Domain Name
System in diesem Zusammenhang?
(m) Wie können im Internet elektronische Nachrichten mit binärem Inhalt und verschiedenen Medientypen
verteilt werden?
(n) Beschreiben Sie die Funktionsweise der Kodierung Base64.
(o) Welche Aufgabe haben Tags im IMAP-Protokoll?
(p) Welche Methoden existieren im HTTP-Protokoll?
(q) Beschreiben Sie den Ablauf einer Datenübertragung mit Hilfe des FTP-Protokolls.
150
ANHANG B. FRAGEN ZUR SELBSTKONTROLLE
Literaturverzeichnis
[1] F. Halsall. Data Communications, Computer Networks and Open Systems. Addison-Wesley, 4 edition, 1996.
[2] A. S. Tanenbaum. Computer Networks. Prentice Hall, 3. edition, 1996.
[3] C. Huitema. Routing in the Internet. Prentice Hall, 2 edition, 1999.
[4] W. R. Stevens. TCP/IP Illustrated, Volume 1: The Protocols. Addison Wesley, 1994.
[5] R. Braden, D. Borman, and C. Partridge. Computing the Internet Checksum. RFC 1071, Cray Research, BBN
Laboratories, September 1988.
[6] T. Mallory and A. Kullberg. Incremental Updating of the Internet Checksum. RFC 1141, BBN Communications,
January 1990.
[7] A. Rijsinghani. Computation of the Internet Checksum via Incremental Update. RFC 1624, Digital Equipment
Corporation, May 1994.
[8] R. Hinden and S. Deering. IP Version 6 Addressing Architecture. RFC 1884, Ipsilon Networks, Xerox PARC,
December 1995.
[9] R. Elz. A Compact Representation of IPv6 Addresses. RFC 1924, University of Melbourne, April 1996.
[10] D. Waitzman. A Standard for the Transmission of IP Datagrams on Avian Carriers. RFC 1149, BBN STC, April
1990.
[11] P. Hoffman and S. Bradner. Defining the IETF. RFC 3233, Internet Mail Consortium, Harvard University, February
2002.
[12] S. Bradner. The Internet Standards Process – Revision 3. RFC 2026, Harvard University, October 1996.
[13] ANSI/IEEE. Local Area Networks: CSMA/CD, Std 802.3, 1988.
[14] B. Carpenter. Architectural Principles of the Internet. RFC 1958, IAB, June 1996.
[15] S. Deering and R. Hinden. Internet Protocol, Version 6 (IPv6) Specification. RFC 2460, Cisco, Nokia, December
1998.
[16] J. Postel. Internet Protocol. RFC 791, ISI, September 1981.
[17] Y. Rekhter, B. Moskowitz, D. Karrenberg, G.J. deGroot, and E. Lear. Address Allocation for Private Internets. RFC
1918, Cisco Systems, Chrysler Corp., RIPE NCC, Silicon Graphics, Inc., February 1996.
[18] K. Nichols, S. Blake, F. Baker, and D. Black. Definition of the Differentiated Services Field (DS Field) in the IPv4
and IPv6 Headers. RFC 2474, Cisco Systems, Torrent Networking Technologies, EMC Corporation, December
1998.
[19] K. Ramakrishnan, S. Floyd, and D. Black. The Addition of Explicit Congestion Notification (ECN) to IP. RFC
3168, TeraOptic Networks, ACIRI, EMC, September 2001.
[20] D. Grossman. New Terminology and Clarifications for Diffserv. RFC 3260, Motorola, Inc., April 2002.
[21] F. Baker. Requirements for IP Version 4 Routers. RFC 1812, Cisco Systems, June 1995.
[22] G. Trotter. Terminology for Forwarding Information Base (FIB) based Router Performance. RFC 3222, Agilent
Technologies, December 2001.
[23] J. Postel. Internet Control Message Protocol. RFC 792, ISI, September 1981.
[24] J. Mogul and S. Deering. Path MTU Discovery. RFC 1191, DECWRL, Stanford University, November 1990.
[25] C. Hornig. A Standard for the Transmission of IP Datagrams over Ethernet Networks. RFC 894, Symbolics
Cambridge Research Center, April 1984.
151
152
LITERATURVERZEICHNIS
[26] D.C. Plummer. An Ethernet Address Resolution Protocol. RFC 826, MIT, November 1982.
[27] R. Finlayson, T. Mann, J. Mogul, and M. Theimer. A Reverse Address Resolution Protocol. RFC 903, Stanford
University, June 1984.
[28] R. Droms. Dynamic Host Configuration Protocol. RFC 2131, Bucknell University, March 1997.
[29] S. Kent and R. Atkinson. IP Authentication Header. RFC 2402, BBN Corporation, At Home Network, November
1998.
[30] S. Kent and R. Atkinson. IP Encapsulating Security Payload (ESP). RFC 2406, BBN Corporation, At Home
Network, November 1998.
[31] A. Conta and S. Deering. Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)
Specification. RFC 2463, Lucent, Cisco Systems, December 1998.
[32] M. Crawford. Transmission of IPv6 Packets over Ethernet Networks. RFC 2464, Fermilab, December 1998.
[33] T. Narten, E. Nordmark, and W. Simpson. Neighbor Discovery for IP Version 6 (IPv6). RFC 2461, IBM, Sun
Microsystems, Daydreamer, December 1998.
[34] G. Malkin. RIP Version 2. RFC 2453, Bay Networks, November 1998.
[35] F. Baker and R. Atkinson. RIP-2 MD5 Authentication. RFC 2082, Cisco Systems, January 1997.
[36] J. Moy. OSPF Version 2. RFC 2328, Ascend Communications, April 1998.
[37] J. Postel. User Datagram Protocol. RFC 768, ISI, August 1980.
[38] J. Postel. Transmission Control Protocol. RFC 793, ISI, September 1981.
[39] L. Ong and J. Yoakum. An Introduction to the Stream Control Transmission Protocol (SCTP). RFC 3286, Ciena
Corporation, Nortel Networks, May 2002.
[40] R. Stewart, Q. Xie, K. Morneault, C. Sharp, H. Schwarzbauer, T. Taylor, I. Rytina, M. Kalla, L. Zhang, and V. Paxson. Stream Control Transmission Protocol. RFC 2960, Motorola, Cisco, Siemens, Nortel Networks, Ericsson,
Telcordia, UCLA, ACIRI, October 2000.
[41] P. Mockapetris. Domain Names - Concepts and Facilities. RFC 1034, ISI, November 1987.
[42] P. Mockapetris. Domain Names - Implementation and Specification. RFC 1035, ISI, November 1987.
[43] S. Thomson and C. Huitema. DNS Extensions to support IP version 6. RFC 1886, Bellcore, INRIA, December
1995.
[44] D. Eastlake. Domain Name System Security Extensions. RFC 2535, IBM, March 1999.
[45] M. Crawford and C. Huitema. DNS Extensions to Support IPv6 Address Aggregation and Renumbering. RFC
2874, Fermilab, Microsoft Corporation, July 2000.
[46] ITU. Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation. Recommendation ITU-T X.680, International Telecommunication Union, December 1997.
[47] ITU. Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical
Encoding Rules (CER) and Distinguished Encoding Rules (DER). Recommendation ITU-T X.690, International
Telecommunication Union, December 1997.
[48] D. Steedman. Abstract Syntax Notation One (ASN.1): The Tutorial and Reference. Technology Appraisals, 1990.
[49] M. Rose and K. McCloghrie. Structure and Identification of Management Information for TCP/IP-based Internets.
RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
[50] J. Case, M. Fedor, M. Schoffstall, and J. Davin. A Simple Network Management Protocol. RFC 1157, SNMP
Research, PSI, MIT, May 1990.
[51] K. McCloghrie, D. Perkins, J. Schönwälder, J. Case, M. Rose, and S. Waldbusser. Structure of Management
Information Version 2 (SMIv2). RFC 2578, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First
Virtual Holdings, International Network Services, April 1999.
[52] K. McCloghrie, D. Perkins, J. Schönwälder, J. Case, M. Rose, and S. Waldbusser. Textual Conventions for SMIv2.
RFC 2579, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First Virtual Holdings, International
Network Services, April 1999.
[53] K. McCloghrie, D. Perkins, J. Schönwälder, J. Case, M. Rose, and S. Waldbusser. Conformance Statements for
SMIv2. RFC 2580, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First Virtual Holdings, SNMP
Research, International Network Services, April 1999.
LITERATURVERZEICHNIS
153
[54] K. McCloghrie and F. Kastenholz. The Interfaces Group MIB. RFC 2863, Cisco Systems, Argon Networks, June
2000.
[55] J. Schönwälder and A. Müller. Reverse Engineering Internet MIBs. In Proc. 7th IFIP/IEEE International Symposium on Integrated Network Management, Seattle, May 2001.
[56] K. McCloghrie and A. Bierman. Entity MIB (Version 2). RFC 2737, Cisco Systems, December 1999.
[57] S. Waldbusser and P. Grillo. Host Resources MIB. RFC 2790, Lucent Technologies Inc., WeSync.com, March
2000.
[58] D. Harrington, R. Presuhn, and B. Wijnen. An Architecture for Describing SNMP Management Frameworks. RFC
2571, Cabletron Systems, BMC Software, IBM T. J. Watson Research, April 1999.
[59] J. Case, K. McCloghrie, M. Rose, and S. Waldbusser. Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2). RFC 1905, SNMP Research, Cisco Systems, Dover Beach Consulting, International
Network Services, January 1996.
[60] U. Blumenthal and B. Wijnen. User-based Security Model (USM) for version 3 of the Simple Network Management
Protocol (SNMPv3). RFC 2574, IBM T. J. Watson Research, April 1999.
[61] D. Crocker and P. Overell. Augmented BNF for Syntax Specifications: ABNF. RFC 2234, Internet Mail Consortium, Demon Internet Ltd., November 1997.
[62] J. Klensin. Simple Mail Transfer Protocol. RFC 2821, AT&T Laboratories, April 2001.
[63] P. Resnick. Internet Message Format. RFC 2822, QUALCOMM Incorporated, April 2001.
[64] N. Freed and N. Borenstein. Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message
Bodies. RFC 2045, Innosoft, First Virtual, November 1996.
[65] M. Crispin. Internet Message Access Protocol - Version 4rev1. RFC 2060, University of Washington, December
1996.
[66] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee. Hypertext Transfer Protocol
– HTTP/1.1. RFC 2616, UC Irvine, Compaq/W3C, Compaq, W3C/MIT, Xerox, Microsoft, W3C/MIT, June 1999.
[67] T. Berners-Lee, R. Fielding, and L. Masinter. Uniform Resource Identifiers (URI): Generic Syntax. RFC 2396,
MIT/LCS, U.C. Irvine, Xerox Corporation, August 1998.
[68] J. Postel and J. Reynolds. File Transfer Protocol (FTP). RFC 959, ISI, October 1985.
[69] M. Allman and S. Ostermann. FTP Security Considerations. RFC 2577, NASA Glenn/Sterling Software, Ohio
University, May 1999.
[70] S. McCanne and V. Jacobson. The BSD Packet Filter: A New Architecture for User-level Packet Capture. In Proc.
Usenix Winter Conference, January 1993.
Herunterladen