Zusammenfassung Communication Networks SS 2006 D

Werbung
Zusammenfassung Communication Networks SS
2006
D-ITET, ETH Zürich
Christian Schluchter
[email protected]
2. August 2009
channel:
network:
abstraction of a link
set of nodes interconnected by links
set of networks interconnected by nodes
Dozent: Prof. Bernhard Plattner
Basierend auf der Zusammenfassung von Chris Walser
1
Inhaltsverzeichnis
10.2.2 Einerkomplement . . . . . . . . . . . . . . . . . . .
1 Multiple Access
1.1 ALOHA [7] . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 CSMA [13] . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Token passing . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
4
2 Extended LAN’s
2.1 Repeater . . . . . . . .
2.2 Bridges . . . . . . . . .
2.2.1 Learning Bridge
2.3 Router . . . . . . . . .
2.4 VLAN . . . . . . . . . .
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
4
5
5
3 Paketvermittlung / Switching
3.1 Datagrams . . . . . . . . .
3.2 Virtual circuits (VC) . . . .
3.2.1 ATM [Post-It] . . .
3.3 Source-Routing . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
6
6
4 Internetworking / IP
4.1 Address Resolution Protocol (ARP) . . . . . . . .
4.2 Internet Control Message Protocol (ICMP) . . . .
4.3 Dynamic Host Configuration Protocol (DHCP) .
4.4 Autonomous Systems (AS) = Routing Domains .
4.5 Interdomain Routing, BGP . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
8
9
9
9
9
5 Routing
5.1 Distance Vector Routing (Bellman-Ford, Ford-Fulkerson)
5.2 Flooding . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Link State Routing . . . . . . . . . . . . . . . . . . . . . .
5.4 Vergleich von LSR und DVR [38] und T3.4 . . . . . . . . .
10
10
11
12
12
6 Transport Protokolle
6.1 Verbindungsaufbau [7] . . . . . . . . .
6.2 User Datagram Protocol (UDP) . . . .
6.3 Transmission Control Protocol (TCP) .
6.3.1 TCP Congestion Control . . . .
6.3.2 Fast-Retransmit, Fast-Recovery
6.4 Remote Procedure Calls . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
12
13
13
15
15
15
7 (QoS)
7.1 Preventive Congestion Control .
7.2 Reactive Congestion Control . . .
7.3 Integrated Services (IntServ) . . .
7.4 Differentiated Services (DiffServ)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
16
16
16
16
8 Anwendungen
8.1 Domain Name System (DNS) . . . . . . . . . . . . . . . .
8.2 Simple Mail Transfer Protocol (SMTP) . . . . . . . . . . .
8.3 Hyper Text Transfer Protocol (HTTP) . . . . . . . . . . . .
17
17
18
18
3. Network Routing, Tarifierung, Flusskontrolle, Adressumsetzung
9 Network Security
9.1 DES (Data Encryption Standard) . . . . . . . .
9.2 Diffie-Hellman Key Exchange[14] . . . . . . . .
9.3 RSA (Rivest-Shamir-Adleman) . . . . . . . . .
9.4 Hybrid Encryption: The Digital Envelope [25] .
9.5 MD5 . . . . . . . . . . . . . . . . . . . . . . . .
9.6 Authentifikationsprotokolle . . . . . . . . . . .
9.7 Hash Funktionen [31] . . . . . . . . . . . . . . .
9.8 Message Integrity Protokolle . . . . . . . . . .
9.9 Public Key Distribution . . . . . . . . . . . . . .
9.10 Firewalls . . . . . . . . . . . . . . . . . . . . . .
9.11 Denial of Service Attacks (DoS) [38] . . . . . .
19
19
20
20
21
21
21
21
21
21
22
22
1. Physical Übertragung roher Bits, Multiplexierung, Kanalanpassung
.
.
.
.
.
.
.
.
.
.
.
10 Diverses
10.1 Datenübertragung . . . . . . . . . . . . . . . . . . . . . .
10.2 Komplimente . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.1 Zweierkomplement . . . . . . . . . . . . . . . . .
23
24
24
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
The OSI-Reference Model
OSI = Open Systems Interconnection
7. Application Zugriff auf OSI-Umgebung für User (z.B. Datentransfer,
Email,...)
6. Presentation Transformation der Datenrepresentation (z.B. Zeichencodeumwandlung)
5. Session Dialogsteuerung, Tokenmanagement, Synchronisation
4. Transport bringt Anforderungen von QoS in Übereinstimmung,
End-to-End-Kontrolle des Datenaustausches, Aufteilung in
Packets, Sequenzierung, Channel Multiplexing
2. Data Link Signal-Noise-Ratem Clock-Übermittlung, Fehlerkontrolle, Rahmenbildung, Flusskontrolle, Kodierung
Layerstruktur Prinzipien
• kein Zugriff über Layer hinweg
• verstecken der Funktionsweise
• bereitstellen von Funktionalität
Layerstruktur Vor- und Nachteile
Vorteile Hierarchische Modularität: Änderungen an einem Layer erfordern keine Kenntnisse über andere Layer
Nachteile Informationsaustausch zwischen Layern ist eingeschränkt
→ Performanz eingeschränkt
2
1 Multiple Access
Maximale theoretische chanel utilization (throughput) mit slotted ALOHA:
Buch Kap. 2
Smax = S|G=1 = e−1 ≈ 37%
Aloha =
ˆ Multiple Access:
/* send frame */
[7]
CSMA (Carrier Sense MA):
wait channel available();
/*send frame */
[13]
Relative chanel utilization:
Srel =
Gründe für maximale Framelänge
S
Smax
1.2 CSMA [13]
• Fairness
CSMA = Carrier sense multiple access.
Jeder Knoten hört auf das Netzwerk bevor er sendet. Ist das Netz belegt,
wartet er mit Senden um Kollisionen zu vermeiden. Kollisionen können
nicht vermieden werden (da es einige Zeit dauert bis alle Stationen
erfahren, dass ein Knoten sendet).
• Error Probabillity
1.1 ALOHA [7]
Paketvermitteltes Funknetzwerk.
Persistency:
Definiert, wie die Knoten auf den Kanal hören sollen:
• 1-persistent: Sobald der Kanal frei ist, wird gesendet. Ist der
Kanal besetzt, wird er sofort wieder abgehört.
• non-persistent: Sobald der Kanal frei ist, wird gesendet. Ist er
besetzt, wird eine zufällige Zeit gewartet bevor wieder abgehört
wird.
• p-persistent: Wenn der Kanal frei ist, wird nur mit einer gewissen W’keit p gesendet:
Pure ALOHA:
Vulnerable Period: doppelte Paketlänge.
Throughput aller Stationen mit unendlich vielen Stationen:
Die W’keit p kann frei eingestellt werden.
S = Ge−2G
• Backlogging: backlogged Knoten warten eine gewisse Zeit bevor
sie wieder auf den Kanal hören:
Smax = Ge−2G |G= 1 ≈ 18.5%
2
Slotted ALOHA:
Vulnerable Period: 1 Paketlänge da jeweils nur am Anfang eines Timeslots mit senden begonnen werden darf.
Throughput (Durchsatz) einer einzelnen Station mit slotted ALOHA:
Ti =
n
n
bit
Si = p(1 − p)N−1
t
t
s
mit n . . .packetsize, t . . .timeslot, p . . .sending-probability, Si . . . normalized throughput einer einzelnen Station.
Normalized throughput aller Stationen mit slotted ALOHA:
S = Si ∗ N = pN (1 − p)N−1 = G(1 −
G N−1
)
N
p
≈ packet rate[ ] · slot length[s]
s
|
{z
}
für kleine Raten
Es gibt nur eine Kollision wenn zwei Knoten gleichlang warten
und dann zu senden versuchen.
P
PN
mit N . . .Zahl der Stationen, G = N
i=1 Gi =
i=1 p = pN . . . Load
Normalized Throughput mit slotted ALOHA mit unendlich vielen Stationen:
S = G ∗ e−G
3
2 Extended LAN’s
Vulnerable Interval with CSMA [15]
Buch Kap. 3.2
Why not one large LAN? → [3]
2.1 Repeater
Skript Kap. “Extended LAN’s“, p. 6
Operiert auf dem Physical Layer des OSI-Modells.
Gerät, welches zwei LAN’s verbindet, indem es die Signale unverändert
von einem LAN ins andere gibt. Nachteil: Kollisionen werden nicht erkannt und auch weitergegeben.
Hub: Multiport-Repeater
2.2 Bridges
Buch p. 181ff, Skript Kap. “Extended LAN’s“, [6]
Performance Tuning of CSMA [16]
max. troughput roughly indirectly proportional to β:
β=
Operieren auf dem Data-Link-Layer des OSI-Modells. (verwenden
MAC-Adresse)
Bridges leiten nur korrekte Frames weiter. Zudem leiten sie nicht
wahllos Pakete weiter sondern lernen, welcher Host sich in welchem
LAN befindet (durch Analyse des Headers ankommender Pakete, sog.
Learning Bridge). Dazu führen sie eine Forwarding-Tabelle, welche
Adressen auf Ports mapped (z.B. “leite Pakete mit Zieladresse 123 an
Port 2 weiter“). Diese Tabelle ist nicht notwendig und im Allgemeinen
auch nicht immer vollständig, sie verbessert einfach die Performance
der Bridge.
τ
C
=τ
m
L
β should be smaller or equal than 0.01
τ: propagation delay [s]
m: frame length [s]
L: frame length [bit]
C: transmission rate [ bit
s ]
CSMA/CD (Ethernet)[18]: Collision detection. Der Sender hört auf
den Kanal und kann bei Entdeckung einer Kollision die Übertragung
frühzeitig abbrechen. So wird der Kanal früher frei für die nächste
Übertragung. Damit das funktioniert, muss die Framelänge 2mal der
propagation delay von einem Ende zum anderen Ende des Kanals entsprechen.
Wenn der Sender eine Kollision feststellt, sendet er ein Stausignal. Danach wartet er eine Zeit k ∗ 51.2µs bevor er eine neue Übertragung versucht. Die Wartezeit bestimmt sich aus der max. Verzögerung bei max.
Ausdehnung eines Ethernet (2.5 km). Sie wird bei jedem fehlgeschlagenen Übertragungsversuch verdoppelt (Exponential Backoff).
Ethernet Realisation [23]
CSMA/CA (MACA): Collision avoidance. Mehrere Möglichkeiten:
2.2.1 Learning Bridge
Für jedes ankommende Frame:
• Extrahiere Quelladresse und -port und speichere in Tabelle
• Prüfe Zieladresse
– falls in Tabelle, leite Frame weiter
– falls nicht, broadcast an alle ports
Loop-Problem:
• Kontrolsignale vor Übertragung (Request to send RTS, clear
to send CTS). Kollidieren 2 RTS, wissen das die Sender erst
wenn kein CTS eintrifft. In diesem Fall warten sie gemäss dem
Exponential-backoff-Algorithmus eine gewisse Zeit vor einem
neuen Übertragungsversuch.
Implementation: DCF (Distributed Coordination Function)
[WLAN]
SIFS, PIFS, DIFS [WLAN]
• Nach erfolgreichem Erhalt eines Frames sendet der Empfänger
in WLAN-Systemen ein ACK. Alle Knoten müssen auf das ACK
warten bevor sie senden dürfen (MACAW).
• non-persistente Verbindungen.
1.3 Token passing
Buch p. 119ff
Hosts müssen kreisförmig angeordnet sein. Es wird ein Token (best.
Bitsequenz) im Kreis herumgegeben. Wenn ein Host senden will, nimmt
er das Token aus dem Ring und sendet seine Daten. Der Empfänger kopiert die Daten und sendet sie weiter. Wenn die Daten wieder beim
Sender ankommen, nimmt er sie aus dem Ring und setzt das Token
wieder in Umlauf.
4
2.3 Router
Spanning-Tree
Ein Router verbindet LAN’s auf dem IP-Level (Verwenden IP Adresse).
Der Unterschied zwischen Router und Switches ist nicht immer ganz
klar zu definieren.
2.4 VLAN
Buch p. 190f, Skript Kap. “Extended LAN’s“, [22]
Mit VLAN’s (Virtual LAN) können LAN’s ohne physikalische Neukonfiguration in verschiedene Teile aufgespalten werden. Dazu wird
dem Ethernet-Header jedes Paketes eine sog. Tag Header hinzugefügt,
welcher einen VLAN Identifier enthält. Alle Hosts mit dem gleichen
VLAN Identifier gehören nun zu einer logischen Gruppe innerhalb des
LAN’s. Broadcasts werden nur innerhalb dieser VLAN’s verteilt.
**: designated port
*: root port
Wenn das LAN also Schleifen enthält, gibt es Probleme. Um das zu
verhindern, wird aus dem Netzwerk ein sog. Spanning-Tree gemacht,
welcher keine Schleifen enthält. Der Radia-Perlman-Algorithmus funktioniert folgendermassen (wenn manuell ausgeführt):
1. Der Knoten (Bridge) mit der kleinsten ID ist die root bridge.
2. Markiere an jeder Bridge den Port mit den kleinsten Kosten (i.A.
shortest path) zur root bridge.
3. Wähle in jedem LAN eine designierte Bridge: Bridge mit den
kleinsten Kosten zur root bridge. Wenn zwei Bridges die gleichen Kosten haben, wähle diejenige mit der kleineren ID.
4. Leite Frames nur über designierte Bridges weiter.
In einem LAN funktioniert der Algorithmus in den Bridges so:
1. Anfangs hält sich jede Bridge für die Wurzel und sendet eine Konfigurationsnachricht über alle Ports, mit der sie sich als
Wurzel identifiziert.
2. Bei Erhalt einer Konfigurationsnachricht über einen bestimmten
Port prüft die Bridge, ob diese neue Nachricht besser als die momentan für diesen Port beste Konfigurationsnachricht ist. Die
neue Nachricht gilt als besser, wenn:
• sie eine Wurzel mit kleinerer ID identifiziert, oder
• eine Wurzel mit gleicher ID aber kleineren Kosten, oder
• Wurzel-ID und Kosten gleich sind, die sendende Bridge
aber eine kleinere ID hat.
Trifft eines der Kriterien zu, wird die alte Nachricht verworfen und die neue Konfigurationsnachricht behalten. Diese wird
anschliessend um 1 inkrementiert und weitergeschickt.
3. Ist eine Bridge nicht mehr root bridge, bricht sie das senden
von eigenen Konfigurationsnachrichten ab und leitet nur noch
empfangene weiter (nach Inkrementation um 1).
Die root bridge sendet alle 2s Konfigurationsnachrichten aus um den
anderen Bridges mitzuteilen dass sie noch live ist. Bleiben diese Nachrichten aus, beginnt der Prozess nach einer gewissen Wartezeit wieder
von vorne.
Root-messages werden von allen Bridges auf allen Ports weitergeleitet!
Broadcast: Jede Bridge sendet einen Frame mit der Broadcast-Adresse
über jeden aktiven Port ab mit Ausnahme des Ports von welchem die
Nachricht kam.
Failure-Management [21]
Nachteile von Bridges: Skalierungsproblem: es ist nicht realistisch,
mehr als ein paar 10 LAN’s mittels Bridges zu verbinden. Abhilfe kann
mittels VLAN geschaffen werden. Heterogenitätsproblem: Bridges sind
relativ stark eingeschränkt in der Zahl unterschiedlicher LAN’s die sie
verbinden können.
5
3 Paketvermittlung / Switching
• VCI für die abgehende Verbindung (= Eingangs-VCI des
nächsten Switches)
Buch Kap. 3
Switching ist die wichtigste Funktion der Vermittlungsschicht. Man unterscheidet zwei Arten der Vermittlung/Weiterleitung von Paketen: verbindungslose und verbindungsorientierte Paketvermittlung.
• Route am Anfang berechnet → grosse Verzögerung von mindestens 2 RTTs am Anfang, danach schnell
• Statusinformationen für jeden VC gespeichert in Tabellen
• Ausfall kann zu grossen Verzögerungen führen, da alle Pakete
auf der Strecke neu gesendet werden müssen
3.1 Datagrams
Buch p. 168ff
Jedes Paket (= Datagram) enthält die vollständige Zieladdresse. Jeder
Switch führt eine Routing-Tabelle in welcher aufgeführt ist, welchen
Port er für welche Zieladresse verwenden soll. Diese Tabelle lässt sich
dynamisch befüllen und verändern.
Merkmale von Datagram-Netzwerken:
• Einfache Congestion Control, falls genügend Buffer vorhanden.
• Resourcen können am Anfang alloziert werden.
Der VCI ist nicht global gültig sondern wird in jedem Switch gewechselt
(link local scope).
Man unterscheidet zwei Möglichkeiten des Aufbaus einer Verbindung:
Permanent Virtual Circuit (PVC) und Switched Virtual Circuit (SVC).
Bei PVC wird die Verbindung statisch von einem Netzwerkadmin eingetragen, bei SVC dynamisch aufgebaut. Dieser Aufbau erfolgt folgendermassen:
• Verbindungslos (connection-less)
• keine Statusinformationen
• Ein Host kann ein Paket jederzeit zu jedem Ort schicken, da
er keine Information über die Verfügbarkeit/Erreichbarkeit des
Zieles haben muss.
1. Der Quellhost speist eine Aufbaunachricht ins Netzwerk ein.
2. Diese Nachricht “sucht“ sich ihren Weg zum Zielhost. Jeder
Switch an dem die Nachricht vorbeikommt, erstellt einen neuen
Eintrag in seiner VC-Tabelle und weist der Verbindung einen
freien VCI zu. Anschliessend schickt er das Paket weiter.
• Jedes Paket wird unabhängig von den vorgängigen Paketen weitergeleitet. → Jedes Paket braucht alle Informationen! (Overhead)
• Fällt ein Switch aus, nehmen die Pakete einfach einen anderen
Weg sofern einer vorhanden ist.
3. Ist die Nachricht beim Zielhost angekommen, entscheidet sich
dieser ob er die Verbindung annehmen will oder nicht. Falls ja,
schickt er eine Bestätigung zurück an den Quellhost und bindet
darin seinen VCI ein.
• Route muss immer neu berechnet werden → kontinuierliche
Verzögerung
4. Jeder Router auf dem “Rückweg“ entnimmt die VCI und komplettiert so seinen VC-Eintrag. Er ersetzt anschliessend die VCI
mit seiner eigenen.
• Congestion Control schwierig
• Resourcen-Allokation schwierig
5. Erreicht die Bestätigung den Quellhost, ist die Verbindung aufgebaut und die Datenübertragung kann beginnen.
• Reihenfolge der Pakete kann sich verändern
6. Nach erfolgter Datenübertragung wird die Verbindung wieder
abgebaut. Dazu wird eine Abbaunachricht versendet welche alle beteiligten Switches und den Zielhost dazu veranlasst, die
entsprechenden VC-Einträge zu löschen. Die Verbindung wird
auch nach einer gewissen Idletime abgebaut (z.B. weil der Quellhost abgestürzt ist).
3.2 Virtual circuits (VC)
Buch p. 170ff
Nachteil von VC: Bevor das erste Datenpaket versendet werden kann,
tritt immer eine Verzögerung von mindestens einer RTT ein welche für
den Verbindungsaufbau benötigt wird.
3.2.1 ATM [Post-It]
ATM-Protocol layer stack
Physical Layer (PHY) digital transmission on fiber and other media
ATM Layer (ATM) transport of ATM cells (53 bytes), Virtual Channels,
QoS, Flow and Congestion Control
ATM Adaption Layer (ATM) several application-friendly services
3.3 Source-Routing
Verbindungsorientierte (connection-oriented) Methode bei welcher vor
der Datenübertragung eine virtuelle Verbindung zwischen Source und
Target aufgebaut wird. Der Switch unterhält eine VC-Tabelle, in welcher
für jede Verbindung folgendes vermerkt ist:
Buch p. 177ff
Bei Source-Routing gibt der Quellhost die Route vor, welche das Paket
im Netz nehmen soll. Dazu benötigt er Informationen über die Netztopologie. Die Switches lesen dann jeweils nur den für sie bestimmten
Eintrag und leiten das Paket entsprechend weiter. Source-Routing kann
sowohl in Netzwerken die auf Datagrams wie auch auf VC-basierten
Netzwerken benutzt werden. Nachteil dieser Verbindungsart ist, dass
sie schlecht skalierbar ist. Der Header muss eine variable Grösse haben
da er potenziell unendlich viele Weiterleitungsangaben enthalten kann.
• Virtual Circuit Identifier (VCI), der die Verbindung an diesem
Switch eindeutig identifiziert. → grosse Tabellen in Routern
• Interface über welches die Pakete ankommen.
• Interface über welches die Daten abgeschickt werden sollen.
6
4 Internetworking / IP
IP-Adressen: Bestehen aus 32 Bit (4 Octets). IPv6: 128 Bit. Jede Adresse
besteht aus einem Netzwerkteil (netid, prefix) und einem Hostteil (hostid, suffix). Die netid identifiziert das Netzwerk, die hostid den Host
innerhalb dieses Netzwerks. Es gibt zwei verschiedene Adressierungsschemen:
Buch Kap. 4, Skript Kap. “Internetworking“
Internetwork = logisches Netzwerk das aus mehreren physikalischen
Netzwerken besteht.
Internetworks werden meist mit Hilfe des Internet-Protocol IP errichtet.
• Klassenbehaftet:
Das IP-Datagram ist der grundlegende Bestandteil des InternetProtocols. Jedes Datagram enthält ausreichend Informationen, damit
das Netzwerk das Paket an seinen Bestimmungsort führen kann. IP
arbeitet im Best-Effort-Modus. Das heisst, dass es keine Garantie gibt,
dass Pakete wirklich ankommen. IP ist sehr beliebt und verbreitet, da
IP auch auf unzuverlässigen Netzen ohne grossen Implementierungsaufwand betrieben werden kann.
IP-Protokollstack:
Problem: zuwenige Class-B-Networks
• Klassenlos / classless / CIDR: Classless interdomain routing. IPNetzwerk-Adressen werden mit einem Prefix bezeichnet: z.B.
192.16.30.0/20 (Prefix kann Werte zwischen 0. . .32 annehmen).
Mit CIDR lassen sich Routen aggregieren, was die Anzahl
Einträge die ein Router in seiner Forwardingtabelle benötigt
drastisch senken kann. Dazu werden Blöcke von Klasse-CNets (Blockanzahl muss 2er-Potenz sein) zusammen vergeben.
Der ganze Klassen-Block lässt sich nun von aussen mit einer
Adresse & Prefix ansprechen. Sind in einer Forwardingtabelle mehrere Adress-Prefix-Paare vorhanden die auf eine Adresse passen könnten, wird die mit der grössten (d.h. längsten)
Übereinstimmung ausgewählt.
IP-Header:
• Fix vergebene Adressen:
– 0...0: This host.
– 0...0.Host: A Host on this network.
– 1...1: Broadcast on this network.
– Network.1...1: Broadcast on a distant network
– Network.0...0: This network.
– 127.Anything: Loopback
Netzwerkbefehle
ifconfig [Interface] [IP] netmask [Netmask] up
route add default gw [IP Gateway]
Subnetting: Da im Internet zu wenige Klasse-B-Netze vorhanden sind,
wurde Subnetting entwickelt um flexiblere Einteilung der Netze zu
ermöglichen.
Subnetting erhöht nur die Effizient der Addressnutzung, nicht die Anzahl möglicher Adressen!
Felder:
• Version: IP-Version
• HLen: Headerlänge in 32-Bit-Wörtern
• DS: Service Type. Wird unterschiedlich verwendet.
• Total Length: Länge des Datagrams einschliesslich des Headers
in Byte (maximale Grösse: 65535 Byte da Feld 16 Bit gross)
• Identification, Flags, Offset: Angaben zur Fragmentierung / Reassemblierung.
• Time to live (TTL): Anzahl Hops die das Paket noch zu leben
hat.
Daraus lässt sich die Subnetmask ableiten: Prefix gibt Anzahl ’1’ an (von
links gezählt), der Rest sind ’0’. ⇒ in Dezimalzahlen umwandeln (TR:
0b11110000=240) ⇒ Subnetmask.
Berechnung des Prefix aus der Subnetmask: Wandle die Subnetzmask
in eine Binärzahl um (TR: 240 .bin=0b11110000). Zähle die Anzahl ’1’
⇒ Prefix.
Mittels der Subnetmask kann aus einer beliebigen Hostadresse die Netzwerkadresse berechnet werden (bitweise AND-Operation):
• Protocol: Bezeichner für das höhere Protokoll welches das Paket
verarbeiten soll (TCP (6), UDP (17), ...)
• Header checksum: Checksumme des Headers.
• Source IP Address / Destination IP Address: Quelladresse / Zieladresse
7
Definierte Extension headers: Routing, Fragmentation, Authentication,
Encrypted Security Payload, Hop-by-Hop Options, Destination Options.
Eigenschaften von IPv6:
• Scalability: 128-Bit-Adressen = 3.4 ∗ 1038 Hosts möglich bzw. bis
zu 1015 Hosts und 1012 Subnets.
Das erste und das letzte Subnetz dürfen nicht verwendet werden, da
sie zur Netzwerkidentifikation bzw. als Broadcast-Adresse dienen!
Möchte ein Host ein Paket an eine bestimmte IP-Adresse senden, führt
er als erstes ein bitweises AND zwischen seiner eigenen Subnetmask
und der IP-Adresse des Ziels durch. Stimmt das Ergebnis mit der Subnetmask des sendenden Hosts überein, weiss dieser, dass der Zielhost
am gleichen Netz angeschlossen ist und das Paket direkt über das
Subnet übertragen werden kann. Ansonsten wird das Paket an den
Default-Router geschickt.
Subnetmasken müssen nicht notwendigerweise aus einem zusammenhängenden Block von ’1’ bestehen, tun dies jedoch normalerweise.
Subnetting hilft, Skalierbarkeitsprobleme in zwei Richtungen zu lösen:
Erstens verbessert es die Effizienz der Adresszuweisung, zweitens ist
so die Aggregation von Informationen möglich.
• Security: IPSec
• Multicasting: group communication (kein broadcast mehr)
– ff02::1 = all hosts
– ff02::2 = all routers
• Multimedia: flow label, QoS Architektur
• Mobile users: Mobile IP, Erweiterung der auto-konfiguration
IP-Fragmentation: Jeder Router muss sicherstellen, dass alle IPDatagrams klein genug sind um ins entsprechende Netz weitergeleitet
werden zu können. Der Router findet dies mit Hilfe der sog. Maximum
Transmission Unit (MTU, Grösse von Payload und IP-Header) heraus,
welche für jedes Netz die maximale Grösse der IP-Datagrams angibt.
Falls nötig, fragmentiert der Router das IP-Datagram: der Router setzt
das M-Bit im IP-Headerfeld “Flags“ was anzeigt, dass weitere Fragmente folgen. Dann setzt er beim ersten Fragment Offset = 0. Die Aufteilung
des IP-Datagrams muss immer in 8-Byte-Dateneinheiten stattfinden.
Das zweite Fragment erhält den Offset “Fragmentgrösse (ohne Header)
in Byte durch 8“, das 3. Fragment “2* Fragmentgrösse durch 8“ usw.
Beim letzten Fragment wird das M-Bit nicht mehr gesetzt. Durch diese
Prozedur entstehen wieder in sich abgeschlossene IP-Pakete, welche
erneut fragmentiert werden können. Der Zielhost reassembliert die
Pakete. Fehlen Fragmente oder sind welche beschädigt, verwirft der
Zielhost alle Fragmente.
• Efficiency: einfaches Headerformat
• Adress Type Prefixes [11]
Notation: Hexadezimal, in 8 Gruppen à 16 Bit, getrennt durch Doppelpunkte: 2001 : 0db8 :: 61
Eine (!) lange Folge von ’0’ kann mit :: abgekürzt werden.
IPv4-embedded: 0:0:0:0:0:ffff:192.0.2.42 = ::ffff:192.0.2.42
Adressformate: Global Unicast Address Format, Local Addresses, Anycast Addresses: siehe Skript Kap. “IPv6“,[8].
4.1 Address Resolution Protocol (ARP)
Buch p. 256ff, [Post-It]
Verhinderung von Fragmentation:
Router führen eine Forwarding table um Pakete weiterzuleiten. In dieser
Tabelle trägt der Router Tupel < Destination, NextHop > ein. NextHop bezeichnet dabei den Router an den das Paket gesendet werden soll. Damit
Router Pakete weiterleiten können, benötigen sie die MAC-Adresse des
Zielhosts. Für diesen Zweck wurde das ARP-Protokoll entwickelt. ARP
ermöglicht es jedem Host in einem Netzwerk, eine Mapping-Tabelle
zur Abbildung von IP-Adressen auf Adressen der Sicherungsschicht
(meist MAC-Adr.) zu erstellen. Einträge in dieser Tabelle veralten nach
15 Minuten und werden gelöscht. Kommt vor Ablauf des Timers erneut
ein Paket vorbei, so wird der Timer dieses Eintrages zurückgesetzt.
• Kleinere Datagrams verschicken.
• Path MTU (kleinste MTU des Pfades, PMTU) schätzen/ermitteln.
IPv6 / IPng
IPv6 bringt keine Sicherheit, der einzige Vorteil ist der grössere Adressraum!
Protokoll-Ablauf: Ein Host schickt eine ARP-Anfrage (request) in
das Netz (per Broadcast). Jeder Host empfängt die Anfrage und sieht
nach, ob es seine IP-Adresse ist. Falls ja, sendet er eine Antwortnachricht
(reply) mit seiner MAC-Adresse an den Anfrager zurück. Der Anfrager
kann aus dieser Nachricht die IP- und MAC-Adresse des Anfragers
auslesen und in seiner ARP-Tabelle abspeichern.
ARP-Anfragen werden nur an Nachbarn verschickt (Host-Host, Gost NextRouter).
ARP-Ablauf-Beispiel User will über Router auf Server zugreifen.:
1. ARP request: Source(User/IF IP, MAC) → Target(Router/IFin )(broadcast)
2. ARP reply: Source(Router/IFin IP, MAC) → Target(User/IF IP, MAC)
3. ARP request: Source(Router/IFout IP, MAC) → Target(Server/IFout ) (broadcast)
4. ARP reply: (Server/IF IP, MAC) → (Router/IFout IP, MAC)
Chained extension headers:
ARP-Paketformat:
8
Der Client kann mit der DHCPDiscover-Message eine bevorzugte IPAdresse schicken. Der DHCP-Server schaut in diesem Fall (mittels
ICMP Ping) ob diese IP-Adresse schon vergeben ist und weist sie gegebenenfalls dem Client zu.
DHCP-Paketformat:
• HardwareType: Art des physikalischen Netzwerks (z.B. Ethernet).
• ProtocolType: spezifiziert das höhere Protokoll (z.B. IP).
• HLen: Hardwareseitige Adresslänge. Länge der Adresse der Sicherungsschicht.
• PLen: Protokollseitige Adresslänge. Länge des höheren Protokolls.
• Operation: Spezifiziert, ob es sich um eine Anfrage (request) oder
eine Antwort (reply) handelt.
• chaddr: Hardwareadresse des Clients.
• yiaddr: “your IP-Address“. Dem Client vom DHCP-Server zugewiesene IP-Adresse.
• SourceHardwareAddr, TargetHardwareAddr: Quell- und Zieladresse der Hardware (z.B. Ethernet) und des Protokolls (z.B.
IP).
• ciaddr: “client IP-Address“.
4.2 Internet Control Message Protocol
(ICMP)
• siaddr: “server IP-Address“.
• giaddr: “gateway IP-Address“.
Buch p. 264, Skript Kap. “Internetworking“, [Post-It: ARP]
• options: weitere Informationen, z.B. der vom Client benutzte
Default-Router.
ICMP wird verwendet, um Fehlernachrichten an den Quellhost
zurückzugeben, z.B. falls ein IP-Paket verloren gegangen ist oder um die
Erreichbarkeit zu überprüfen. Logisch ist ICMP auf dem gleichen Level
wie IP aber die ICMP-Nachrichten werden in IP-Paketen versendet.
Folgende Codes werden verwendet:
0
3
4
5
8
11
12
30
37
38
4.4 Autonomous Systems (AS) = Routing
Domains
Buch p. 297f, 309, Skript Kap. “The Global Internet“
echo response
destination unreachable
source quench
route change (redirect)
echo request
packet dropped because of TTL expired
packet dropped because of a parameter error
Traceroute (TTL)
DNS request
DNS reply
Es gibt verschiedene AS-Typen:
• Stub AS: AS, das nur 1 Verbindung zu 1 anderen AS hat und nur
lokalen Verkehr führt.
• Multihome AS: AS, das Verbindung zu mehreren anderen AS
hat, aber nur lokalen Verkehr fördert.
• Transit AS: AS, das Verbindung zu mehreren anderen AS hat
und auch Transitverkehr zulässt.
4.3 Dynamic Host Configuration Protocol
(DHCP)
Das Internet bildet ein Netzwerk von AS. Diese sind durch Border Gateways verbunden. Zudem besitzt jedes AS einen AS-Speaker, welcher
Informationen über das AS verbreitet.
Buch p. 261, Skript Kap. “Internetworking“, [nach Post-It ARP]
DHCP-Messages werden über UDP verschickt.
Jedes Netzwerk muss über einen DHCP-Server verfügen, welcher angeschlossene Hosts automatisch konfiguriert.
Ablauf:
4.5 Interdomain Routing, BGP
Buch p. 306ff, Skript Kap. “The Global Internet“
Interdomain-Routing = Routing zwischen Autonomous Systems (AS).
Intradomain-Routing = Routing innerhalb eines AS. Jeder AS-Admin
kann selber entscheiden welches Routingprotokoll er verwenden will.
Er muss einfach sicherstellen, dass die Border-Gateways zwischen dem
AS und dem restlichen Network “ übersetzen“ können.
1. Client schickt DHCPDiscover.
2. Alle DHCP-Server antworten mit DHCPO f f er.
3. Client sucht sich einen Server aus und schickt diesem DHCPRequest(acc). Allen anderen Servern schickt er
DHCPRequest(re j).
Die AS-Speaker jedes Systems bauen Sitzungen zu anderen ASSpeakern auf und tauschen Informationen über die Erreichbarkeit
zwischen den AS aus. Diese Informationen gibt der AS-Speaker den
Border-Gateways weiter, welche den Verkehr zwischen den AS abwickeln.
4. Server schickt DHCPAck zurück und konfiguriert Client.
5. Client schickt DHCPRelease an Server.
9
Für diese Kommunikation wird das Border Gateway Protocol BGP benutzt. BGP ist ein Path Vector Protocol und lässt sich weder Distance
Vector Routing noch Link State Routing zuordnen da die Informationen
als vollständige Wege zwischen AS weitergeben werden. Routing loops
werden von den AS-Speakern durch Analyse der Path Vectors detektiert
und verhindert.
BGP Messages:
5 Routing
Buch Kap. 4.2, Skript Kap. “Routing“
Wichtige Begriffsunterscheidung:
• Routing: Prozess, bei dem die Forwardingtables erstellt werden.
(distributed process)
• open. Öffnet eine neue Verbindung zu einem AS
• Forwarding: Zieladresse eines Pakets wird in der Forwardingtable nachgesehen. Dann wird das Paket in die Richtung versendet, die von der Tabelle vorgegeben wird. (router-internal
process)
• update. Kann full oder incremental sein. Paketformat des
update-Pakets:
– Routen können wiederrufen werden (withdraw).
– Path attributes: next Hop, AS Path, Origin of Information
(own oder foreign AS)
Man kann auch zwischen Forwarding- und Routingtabellen unterscheiden. Routingtabellen bestehen aus Tupeln <
Netzwerknummer, NextHop >, Forwardingtabellen bestehen aus <
Netzwerknummer, Inter f ace, MAC − Address >.
Gute Routing-Protokolle verwenden verteilte Algorithmen, da es sehr
schwierig ist, zentralisierte Lösungen zu finden. Bei verteilten Algorithmen entwickelt jeder Router seine eigene Lösung des Problems. Dies
kann zu Problemen führen wenn zwei Router unterschiedliche, nicht
kompatible Lösungen haben.
Grösse
– Für jeden Pfad wird eine Liste mit Tupeln <
IPAddress, Pre f ix > weitergegeben.
Memory
ments
• notification. Antwort auf inkorrekte Messages.
• keepalive. Wird periodisch versendet um zu signalisieren, dass
der Router noch live ist.
Require-
Computational
complexity
Robustness
Functionality
Distance Vector
Routing
O(k
∗
n)
k . . .#Nachbarn,
n . . .#Router im
Netz
= (n ∗ k) pro
Scan, mehrere
Scans möglich
Sensitiv
auf
nichtfunktionierende Router
-
Speed of convergence
-
Scalability
schlecht
Link State Routing
O(k ∗ n)
O((n ∗ k) log n)
Sensitiv auf nichtfunktionierende Router
Topologie jedem Knoten bekannt. SourceRouting und Multi-path
routing möglich.
Konvergiert schneller.
Kein Count-to-InfinityProblem.
schlecht
5.1 Distance Vector Routing (Bellman-Ford,
Ford-Fulkerson)
Buch p. 271, Skript Kap. “Routing“, [7]
”Nachrichten an Nachbarn über Entfernung aller”
Distance Vector Routing geht davon aus, dass jeder Knoten die Kosten
zu seinen direkten Nachbarn kennt.
Der Algorithmus läuft wie folgt ab:
1. Anfangs setzt jeder Knoten die effektiven Kosten zu seinen direkten Nachbarn ein und ∞ zu allen übrigen Knoten.
2. Jeder Knoten sendet seinen direkten Nachbarn seinen
persönlichen Distance Vector.
3. Jeder Knoten vergleicht seine gespeicherte Liste mit den erhaltenen Listen und passt sie nötigenfalls an.
4. Wiederhole Schritt 2.
Der Algorithmus konvergiert relativ schnell. Jeder Knoten teilt seinen
Nachbarn mit periodischen Aktualisierungen mit, dass er noch lebt. Gibt
es eine Topologieänderung, senden die Knoten die das zuerst bemerken
neue Distance Vectors zu ihren Nachbarn und der Algorithmus beginnt
von vorne.
Bsp.:
10
Beide Split-Horizon-Techniken funktionieren nur bei Routing-Schleifen
mit genau 2 Knoten.
Versagen von Split-Horizon: T3.3c) und [28]
Für grössere Schleifen sind kompliziertere Mechanismen nötig.
Routing Information Protocol (RIP): Protokoll welches Distance Vector
Routing umsetzt.
Eigenschaften:
• RIP meldet erreichbare Netzwerke inkl. derer Distance Vectors
(# Hops) an die Nachbarn.
• Routing updates alle 30s, Route timeout 180s zur Überprüfung
der Route
Count-to-Infinity-Problem:
Bsp. 1:
• Konvergenz durch Einschränkung des Count-to-InfinityProblems: 16 Hops entsprechen ∞. ⇒ Maximaler Netzwerkdurchmesser kann 15 Hops sein.
RIP-Paketformat:
1. Leitung von A nach E fällt aus.
2. A gibt eine ∞ Entfernung zu E an, während B und C Entfernung
von 2 angeben.
3. B erfährt (nach einer ungünstigen zeitlichen Abfolge), dass E
über C in 2 Hops erreichbar ist und folgert dass er selber E in 3
Hops erreichen kann. Dies gibt er A bekannt.
Net 1 ⇒ Destination Network, Net 2 ⇒ Source Network
Nachteile von RIP
• lange Konvergenzzeit wegen Count-to-Infinity-Problem
4. A folgert, dass er E in 4 Hops erreichen kann und gibt dies C
bekannt.
• nur kleine Netzwerke mit weniger als 16 Hops unterstützt
5. usw.
• Bandbreite in Metrik nicht eingerechnet
Bsp. 2:
5.2 Flooding
Buch p. 280, Skript Kap. “Routing“, [28]
node A
node B
node C
destination
B
C
A
C
B
A
distance
1 → N.E.
2→ N.E.
1→3→5→ . . .
1→1
1→1
2→4→6→ . . .
Ziel: Verteilung eines Pakets im ganzen Netzwerk in möglichst kurzer Zeit mit möglichst geringer Netzbelastung. Zur Verhinderung von
Duplikaten
next node
B→B→ A
C
B
B
• Sequence-Number
Algorithmus: Wenn ein Knoten ein Paket erhält, schaut er in
seiner Datenbank nach:
– Ist der Eintrag nicht vorhanden: füge ihn ein und schicke
ihn über alle ausgehenden Links weiter (“replicate“).
Mehrere Möglichkeiten, dieses Problem zu beheben:
– Eintrag vorhanden, aber Sequencenumber in DB ist kleiner als seq# der Nachricht: ersetze Eintrag in DB, repliziere.
• Split-Horizon: Sendet ein Knoten Distance Vectors an einen bestimmten Nachbarn, schickt er nicht die Routen mit, die er von
diesem Nachbarn erfahren hat.
– Eintrag vorhanden, aber seq# in DB > seq# der Nachricht:
zerstöre Nachricht, sende Eintrag aus DB an Sender der
Nachricht.
• Split Horizon with Poison Reverse: Sendet ein Knoten Distance
Vectors an einen bestimmten Nachbarn, schickt er die Routen
zwar mit, die er von diesem Nachbarn erfahren hat, belegt sie
aber mit Kosten ∞ um sicherzugehen, dass dieser Nachbar nicht
den Sendeknoten benutzt für diese Route.
– Eintrag vorhanden, seq# in DB und Nachricht identisch:
nichts zu tun.
• TTL (Hop-Counter bei jedem Hop dekrementieren)
• Hold-Down-Timer: startet wenn Route als defekt deklariert
wird. Für die nächsten 180s werden Anzeigen betreffend dieser Route ignoriert.
So wird sichergestellt, dass jeweils die jüngste Kopie einer Nachricht
alle Knoten erreicht und trotzdem nicht unendlich lange im Netzwerk
kreist.
Fällt einer aus, lernt er vom Nachbar, wenn er wieder aktiv ist.
• report entire path → hohe Kosten
Sicherstellung, dass jeder Router jedes Paket nur einmal erhält (T3.1d):
11
• Spanning tree oder Overlay (überflüssige Links fallen weg)
6 Transport Protokolle
• Link woher Paket kommt löschen (da symmetrisch, auf beiden
Seiten)
Buch Kap. 5, Skript Kap. “Transport Protocols“
5.3 Link State Routing
Flow Control verhindert Überlastung des Empfängers
Buch p. 279, Skript Kap. “Routing“, [36]
Congestion Control verhindert Überlastung des Senders
”Nachricht an alle über Entfernung der Nachbarn”
6.1 Verbindungsaufbau [7]
Jeder Knoten nimmt an, dass er den Zustand und die Kosten der Leitung
zu seinen Nachbarn herausfinden kann. Jeder Knoten sendet nun eine
Liste mit zugehörigen Metriken seiner Nachbarn an alle anderen Knoten
im Netzwerk (mittels Flooding). Diese Pakete heissen Link State Pakets
(LSP, auch Link State Advertisements genannt). Sobald ein Knoten alle
LSP’s der anderen hat, berechnet er mittels Dijkstra’s Shortest Path First
(SPF) Algorithmus die optimale Route zu allen anderen Knoten.
SPF-Algorithmus: Gehe jeweils vom Quellknoten aus und wähle den
kürzesten Weg. Bilde so einen Baum der alle Knoten enthält.
Eigenschaften des Link State Routing:
Diese Protokolle agieren alle auf der Transportschicht der Netzwerkarchitektur.
Der allgemeine Verbindungsaufbau läuft folgendermassen ab:
1. Der Client kontaktiert den Server über einen well known port.
2. Der Server antwortet (er hat vom Client in dessen Anfrage die
Portnummer des Clients erhalten) und gibt gegebenenfalls eine
andere Portnummer für die Kommunikation an.
3. Die Verbindung besteht und es können Daten zwischen den beiden Partnern ausgetauscht werden.
• Konvergiert schnell
• Erzeugt wenig Verkehr im Netzwerk
4. Verbindungsabbau: Server und Client schliessen ihre Ports.
• Reagiert rasch auf Topologieänderungen.
• Nachteil: Jeder Knoten muss die LSP’s aller anderen Knoten
speichern.
TCP Verbindungsaufbau Three-Way-Handshake Bsp.
Host will mit Server eine FTP-Verbindung (Port 21: control, Port 20:
data):
1. IP <host IP, server IP, 40Bytes, TCP>
TCP <random, 21, 20Bytes, [SYN]=0>
Open Shortest Path First (OSPF): Protokoll welches Link State Routing
umsetzt. Löste RIP als Standard Interior Gateway Protocol (IGP) ab.
Header:
2. IP <server IP, host IP, 40Bytes, TCP>
TCP <random, 21, 20Bytes, [SYN]=1 [ACK]=0>
3. IP <host IP, server IP, 40Bytes, TCP>
TCP <random, 21, 20Bytes, [ACK]=1>
Type:
1: hello
2: Data Base Description
3: Link State Req.
4: Link State Update
5: Link State ACK
AuType:
0
: none
1
: Simple password
2
: Crypt Authentication
3-65535: reserved, not used
Eigenschaften:
Connection establishment using the socket API [14]
Well known ports:
• Benutzt eine statische Metrik.
• Periodische hello-Nachrichten.
• LSP’s alle 30 min.
• OSPF control messages werden in IP Paketen versendet.
• Unterstützt hierarchisches Routing.
5.4 Vergleich von LSR und DVR [38] und
T3.4
12
6.2 User Datagram Protocol (UDP)
• Urgent Pointer: Zeigt auf die ersten nicht-dringlichen Daten im
Segment.
Buch p. 374ff, Skript Kap. “Transport Protocols“, [16]
Aufbau einer Verbindung (3-Way-Handshaking):
Zusätzlich gibt es noch einen Pseudoheader welcher die Felder“Protocol
Number“, “Source IP Address“, “Destination IP Address“ und “Length“
des IP-Headers enthält. Das Feld “Length“ kommt also doppelt (mit
der gleichen Bedeutung) vor in UDP. Die Checksumme wird wie beim
IP-Header berechnet.
UDP ist ein verbindungsloses Protokoll, das keine QoS bietet.
Why unreliable? [17]
6.3 Transmission Control Protocol (TCP)
Buch p. 376ff, Skript Kap. “Transport Protocols“, [18]
TCP ist ein stateful Protocol, d.h. es führt einen Zustand mit. TCP ist
verbindungsorientiert.
Die Sequenznummer wird zufällig gewählt zur Verhinderung von Angriffen mit Schwindelpaketen (spoofed packets).
Grund, dass das ACK jeweils um 1 höher ist als die Sequenznummer:
Das Feld “Acknowledgment“ enthält eigentlich immer die nächste
erwartete Sequenznummer was stillschweigend alle vorherigen Nummern bestätigt.
Abbau einer Verbindung: Client und Host müssen beide ihre Seite
der Verbindung abbauen. Dies tun sie mit dem FIN-Flag im TCPHeader. Es ist auch möglich, dass nur eine Seite die Verbindung abbaut.
Das bedeutet dann einfach, dass sie keine weiteren Daten mehr senden
will, aber immer noch Daten empfangen kann.
• HLEN: Länge des Headers
• Flags:
– URG: Das Segment enthält dringende (= speziell markierte) Daten.
– ACK:
Das
Segment
enthält
“Acknowledgment Number“-Feld
ein
gültiges
– PSH: PUSH. Der Sender hat die Push-Operation aufgerufen.
– RST: RESET. Der Empfänger ist durcheinander geraten
und will die Verbindung abbrechen.
– SYN: Das Feld “Sequence Number“ enthält eine InitialSequenznummer. Wird für Verbindungsaufbau benötigt.
– FIN: Die Verbindung (auf eine Seite) soll abgebaut werden.
• Window Size: Grösse des Advertised Windows. Wird benötigt
für Sliding-Windows-Algo. Sollte mind. so gross sein wie das
Delay-Bandwidth-Product.
Duplicate Acks [25]
Sliding-Window:
TCP verwendet den Sliding Window Algorithmus aus 3 Gründen:
Er gewährleistet 1) die zuverlässige Übertragung von Daten, 2) die
Übertragung der Daten in der richtigen Reihenfolge, 3) eine Flusskontrolle zwischen Sender und Empfänger. Die Fenstergrösse ist bei TCP
nicht fest sondern wird dem Sender vom Empfänger advertised. Dazu wird das Feld “Window Size“ (AdvertisedWindow) im TCP-Header
benutzt, welches so gross sein muss, dass es die einem vollen DelayBandwidth-Product entsprechende Datenmenge aufnehmen kann.
Sender und Empfänger verwenden jeweils einen Buffer (mit maximalen
Grössen MaxSendBu f f er bzw. MaxRcvBu f f er):
13
das Segment wird abgeschickt bevor es voll ist. Dem Empfänger wird
dies im Flag PSH angezeigt.
Zudem kann man die Maximum segment lifetime (MSL) berechnen.
Dazu benötigt man die Grösse des Feldes SequenceNumber. Dann gilt:
MSL ≤
#of segments
max. #of segments per second
Adaptive Neuübertragung [29]:
Da TCP die zuverlässige Übertragung von Daten garantiert, überträgt
er jedes Segment erneut, falls innerhalb einer bestimmten Zeit kein ACK
empfangen wurde. TCP setzt diesen Retransmission Timeout (RTO) als
Funktion der RTT:
Auf der Sendeseite muss trivialerweise gelten:
LastByteAcked ≤ LastByteSent und
RTO = 2 ∗ EstimatedRTT = 2 ∗ (α + EstimatedRTT + (1 − α) ∗ SampleRTT )
LastByteSent ≤ LastByteWritten
α entspricht einem Glättungsfaktor. Grosses α bewirkt hohe Trägheit
der EstimatedRTT, kleines α bewirkt leichte Beeinflussbarkeit der
EstimatedRTT. α ∈ [0 . . . 1], meistens jedoch α ∈ [0.8 . . . 0.9]
SampleRTT = Empfangszeit des ACK - Sendezeit des Segments.
Auf der Empfängerseite gilt trivialerweise:
LastByteRead < NextByteExpected und NextByteExpected ≤ LastByteRcvd + 1
Bei Ankunft von Daten in der falschen Reihenfolge zeigt
NextByteExpected auf den Beginn der ersten Lücke in den Daten.
Der Empfänger drosselt nun den Sender dadurch, dass er ihm eine
Fenstergrösse bekannt gibt, die nicht grösser als die Datenmenge ist,
die er speichern kann:
AdvertisedWindow = MaxRcvBu f f er − ((NextByteExpected − 1) − LastByteRead)
Diese Formel entspricht dem im Puffer noch verfügbaren Speicherplatz.
Der Sender muss sich an das vom Empfänger propagierte
AdvertisedWindow halten. Das bedeutet, dass der Sender sicherstellen
muss, dass gilt:
Problem dieses Algo: Wenn ein Segment erneut übertragen werden
muss, und anschliessend ein ACK beim Sender ankommt, ist nicht
sicher von welchem Segment dieses ACK stammt und folglich lässt
sich die SampleRTT nicht exakt berechnen. Abhilfe: Karn/PartridgeAlgorithmus: Gleich wie obiger Algorithmus. Es wird einfach jedesmal wenn ein Segment erneut übertragen werden muss, davon keine
SampleRTT berechnet.
Bessere Timeout-Berechnung mit dem Algorithmus von Jacobson/Karels:
Di f f erence = SampleRTT − EstimatedRTT
LastByteSent − LastByteAcked ≤ AdvertisedWindow
EstimatedRTT = EstimatedRTT + (δ ∗ Di f f erence)
Der Sender berechnet daraus die effektive Fenstergrösse:
Deviation = Deviation + δ(|Di f f erence| − Deviation)
E f f ectiveWindow = AdvertisedWindow − (LastByteSent − LastByteAcked)
Timeout = µ ∗ EstimatedRTT + φ ∗ Deviation
mit δ ∈ [0 . . . 1], µ meist = 1, φ meist = 4.
Wird TCP Congestion Control benutzt, ändert sich diese Formel zu:
MaxWindow = min(CongestionWindow, AdvertisedWindow)
Probleme von TCP:
E f f ectiveWindow = MaxWindow − (LastByteSent − LastByteAcked)
Ist das effektive Fenster kleiner oder gleich 0, kann der Sender nicht senden sondern muss warten bis es auf einen positiven Wert angestiegen
ist.
Der Sender muss zudem sicherstellen, dass der Prozess welcher die
Daten generiert den Sendepuffer nicht überfüllt:
LastByteWritten − LastByteAcked ≤ MaxSendBu f f er
Ist der Puffer voll, blockiert TCP den sendenden Prozess und lässt keine
weitere Datenerzeugung zu.
Aufzeichnung von Verbindungsabläufen:
• Falls in Slow-Start-Mode: Sender inkrementiert cwnd jedesmal
wenn er ein ACK erhält.
• Sender setzt S awnd = R awnd (R awnd kann er aus ACK herauslesen.
• R awnd entspricht der Anzahl freier Plätze im Empfangsbuffer.
• Sender benützt das Minimum von cwnd und Sa wnd um zu entscheiden ob ein Paket gesendet werden kann oder nicht.
Bsp.: siehe Übung T4, Aufgabe 2.b)
Segmentierung des Datenstroms:
TCP arbeitet mit sog. Segmenten um einen Datenstrom zu übertragen.
Beim Verbindungsaufbau wird die maximale Segmentgrösse (maximum
segment size, MSS) bestimmt, welche sich aus der minimalen MTU der
beteiligten Leitungen minus dem Platz für IP- und TCP-Header ergibt.
Beginnt nun die Datenübertragung, füllt TCP immer MSS Bytes in ein
Segment. Der Sender hat zudem die Möglichkeit, Daten zu pushen, d.h.
14
• Wenn der Empfänger ein AdvertisedWindow von 0 propagiert,
hört der Sender auf, Daten zu senden. Da er keine Daten mehr
sendet, erhält er auch keine ACK’s mit neuen Werten für das
AdvertisedWindow mehr. Der Datenaustausch würde deshalb
zum erliegen kommen. Um dieses Problem zu beheben sendet
der Sender trotzdem noch Segmente mit einem Datenbyte. Er
weiss zwar dass diese verworfen werden, er erhält aber trotzdem eine Meldung vom Empfänger zurück aus welcher er den
Wert von AdvertisedWindow auslesen kann.
• Sequenznummernraum zu klein. Bei hohen Bandbreiten kann
es innert Minuten zu Überlauf der Sequenznummern kommen
weil dieses Feld nur 32-Bit gross ist und somit der Sequenznummernraum nur 232 Nummern umfasst. Abhilfe: Erweiterungsfeld mit 32-Bit-Zeitstempel: der Sequenznummer wird ein Zeitstempel zugeordnet der verhindert, dass zwei Nummern aus
unterschiedlichen Überläufen als identisch angesehen werden.
• Zu kleines AdvertisedWindow. Bei grossen Bandbreiten sollte das
optimale Fenster grösser sein als im Feld “Window Size“ mit
seinen 16 Bit definiert werden kann. Abhilfe: Erweiterungsfeld,
welches einen Skalierungsfaktor für das Feld “Windows Size“
definiert.
• Silly-Window-Syndrome: Trat in früheren TCP-Versionen auf.
Segmente wurden damals auch abgeschickt, wenn sie nur halb
gefüllt ( MSS
2 ) waren. Stellt man sich die Segmente als volle Container vor und die ACK’s als leere Container, ist das Problem
folgendes: Füllt der Sender einen leeren Container sobald dieser
bei ihm ankommt, verbleibt ein im System eingeführter kleiner
Container ewig bestehen, d.h. er kann nicht mit benachbarten
Containern zu grösseren Containern zusammenschmelzen.
Abhilfe: Nachdem ein Fenster mit Grösse 0 bekanntgegeben
wurde, muss der Empfänger solange warten, bis Platz im Umfang von einer MSS vorhanden ist bevor er ein offenes Fenster
bekannt gibt.
Übertragung zu umgehen. Nachdem ein Paketverlust wegen DuplicateACK’s vermutet wird, wird das CongestionWindow halbiert und direkt
mit AIMD weitergefahren.
6.4 Remote Procedure Calls
6.3.1 TCP Congestion Control
Skript Kap. End-to-End“
”
Buch Kap. 6.3, Skript Kap. “Transport Protocols“, [33]
Die wesentliche Strategie von TCP besteht darin, Pakete ohne Reservierung in das Netzwerk zu senden und dann auf die beobachteten
Ereignisse zu reagieren. Die Idee von TCP Congestion Control besteht
nun darin, dass jede Quelle ermitteln muss, wieviel Kapazität im Netzwerk verfügbar ist, sodass sie weiss wieviele Pakete sie problemlos
gleichzeitig übertragen kann. Befindet sich diese Paketanzahl im Netz,
benutzt sie die Ankunft eines ACK als Signal, dass ein Paket angekommen ist und folglich ein neues ins Netz gestellt werden kann, ohne
Überlast zu erzeugen.
Konkret benutzt TCP das Modell “Additive Increase / Multiplicative
Decrease“ (AIMD). TCP verwaltet für jede Verbindung eine Zustandsvariable CongestionWindow die von der Quelle genutzt wird, um die ihr für
die Übertragung zugestandene Datenmenge zu begrenzen. TCP wird so
modifiziert, dass die maximal erlaubte Anzahl an Byte nicht bestätigter
Daten nun das Minimum des Überlast- und des Advertisement-Fensters
darstellt (siehe Abschnitt “Sliding-Window-Algorithmus“).
Nur selten wird ein Paket während der Übertragung verworfen. TCP
interpretiert deshalb das Ausbleiben eines ACK’s (TCP Timeout) als
Überlast und reduziert die Senderate. Jedesmal wenn ein Timeout
auftritt halbiert er deshalb die Senderate (Multiplicative-Decrease). Jedesmal, wenn die von der Quelle während der letzten RTT gesendeten
Pakete mit einem ACK bestätigt wurden, wird das Congestion-Window
um eins erhöht (Additive Increase). Dieses Verhalten führt zu einem
sägezahnartigen Verlauf der Senderate.
Slow-Start: Am Anfang einer Übertragung oder wenn diese zum erliegen kam, wird die Senderate mit dem Slow-Start-Mechanismus hochgefahren: Der Sender sendet ein Paket. Empfängt er ein ACK für dieses
Paket, sendet er 2 Pakete und erhöht das Congestion-Window entsprechend, dann 4, 8, 16, . . .. Sobald aufgrund von Verlusten das erste TCP
Timeout entdeckt wird (Slow-Start zu Beginn der Übertragung) bzw. der
Congestion/Slowstart Threshold erreicht wird (nachdem Übertragung
zum Erliegen kam), setzt der Slow-Start aus und es wird zu AIMD
übergegangen indem das Congestion-Window halbiert wird.
1. Slow Start Mode
2. Congestion Avoidance Mode
3. Timeout
4. Slow Start Threshold
6.3.2 Fast-Retransmit, Fast-Recovery
Buch p. 474ff
Fast-Retransmit: Wenn TCP im Empfänger die in einem Paket enthaltenen Daten noch nicht bestätigen kann weil frühere Daten noch
ausstehen, sendet TCP die letzte gesendete Bestätigung nochmals (sog.
Duplicate-ACK). Hat der Sender 3 Duplicate-ACK’s empfangen nimmt
er an, dass ein Teil der späteren Pakete verloren gegangen sind. Er
überträgt dann diese Pakete nochmals (bevor er in deren Timeout
kommt).
Fast-Recovery:
Dient
dazu,
Slow-Start-Phasen
während
der
15
7 (QoS)
• Controlled-Load Service (CLS): Es soll für jede Anwendung dieser Dienstklasse ein leicht belastetes Netz emuliert werden, auch
wenn das Netzwerk in Wirklichkeit stark belastet ist. Ein Flow
wird nur durch seine Peak-Rate beschrieben. Auf einer Verbindung dürfen nicht zu viele Anwendungen mit CLS laufen, um
hohen Loss und Delay zu verhindern. Unter geringer Belastung
ist CLS gleichwertig zu BE.
Vorteil: Bessere Auslastung der Bandbreite als mit GS.
Nachteil: Overbooking ist möglich.
Buch Kap. 6.5, Skript Kap. “Quality of Service“
Das Internet funktioniert heute im Best-Effort-Modus. Für die
Übertragung von Realtime-Anwendungen (Video, Telefon, ...) ist dies
aber nicht ausreichend. Dafür gibt es zwei Lösungen:
1. Netzwerk muss so dimensioniert werden, dass es nie überlastet
wird. Nachteile: Ressourcenverschwendung, Belastung schwierig voraussagbar.
2. Congestion Control für den Verkehr auf einem Netzwerk
einführen. Reactive Congestion Control für batch transfers, Preventive Congestion Control für stream transfers.
• Best Effort (BE): Loss und Delay können nicht verhindert werden, es kann keine Bandbreite zugesichert werden.
Für die Abwicklung dieser Zuteilungen wird das Resource Reservation
Protocol (RSVP) verwendet. Es basiert auf einem Two-way handshake:
Realtime: Es wird unterschieden zwischen hard und soft realtime. Bei
hard realtime Anwendungen gibt es ein Limit das nicht überschritten
werden darf, bei soft realtime Anwendungen sollte es nicht überschritten
werden.
Die zweite grosse Klasse sind die Non-Realtime-Anwendungen. Diese
Anwendungen können zwar aus kürzeren Verzögerungen einen Vorteil ziehen, funktionieren jedoch auch bei höheren Verzögerungen (z.B:
Mail, FTP, HTTP).
1. Sender schickt eine PATH message an den Empfänger. Diese
message enthält die flowspec:
• TSpec: Bechreibung der Verkehrsmerkmale des Datenflusses mittels eines Token-Bucket-Descriptors.
• RSpec: Geforderter Dienst vom Netzwerk.
• Phop: Adresse des letzten RSVP-fähigen Routers in
Upstream-Richtung.
7.1 Preventive Congestion Control
• Sender Identifikation
Skript Kap. “Quality of Service“, Slide 14
• AdSpec (optional): path latency, Kapazität, path MTU
Neue Verbindungen müssen zuerst erlaubt werden im Netzwerk. Dazu
sendet der Sender einen Request mit einer Beschreibung des Traffics
den er verursachen will und dem Ziel. Ein Network Controller entscheidet dann, ob die Verbindung mit den gewünschten Parametern ohne
Überlast zu erzeugen ins Netzwerk eingefügt werden kann oder nicht.
Er informiert weiter den Zielhost über den Request.
Vorteil dieser Methode: Garantiert einen bestimmten Durchsatz sowie
Loss- und Delay-Grenzen.
Nachteil: Kann heute nur übers Netzwerk gesteuert werden und nicht
vom Client selber.
2. Jeder Router auf dem Weg zum Ziel aktualisiert Phop und AdSpec, erstellt Statusvariablen für die Verbindung, merkt sich
Upstream-Router.
3. Empfänger: sendet RESV message um die Reservation abzuschliessen. Die Reservierung erfolgt hop-by-hop in Richtung des
Senders. Solange der Empfänger die Reservierung aufrecht erhalten möchte, sendet er ca. alle 30s wieder eine RESV message.
7.4 Differentiated Services (DiffServ)
7.2 Reactive Congestion Control
Buch p. 507ff
Skript Kap. “Quality of Service“, Slide 16
Einfacher, aber weniger dynamisch als Integrated Service Architecture.
Es werden verschiedene (wenige) Verkehrsklassen definiert, welche
allen Ressourcen zugewiesen werden. Pakete erhalten ein Per-Hop Behaviour (PHB), welches jedem Router auf dem Weg mitteilt, wie er das
Paket weiterzuleiten hat:
Der sendende Host kann jederzeit mit der Übertragung beginnen.
Er startet dabei mit einer kleinen Übertragungsrate weil die Qualität
der Verbindung im Netzwerk noch unbekannt ist. Wenn keine Pakete
verlorengegangen sind, erhöht der Sender die Rate sukzessiv. Wenn
Überlast detektiert wird, reduziert der Host die Rate wieder.
Aus Gründen der Fairness reduzieren alle betroffenen Sender ihre
Übertragungsrate wenn ein Link überlastet ist.
Reactive Congestion Control ist nicht geeignet für stream traffic da
sich die Übertragungsrate ständig verändert, was bei streaming unerwünscht ist.
Weighted fair queuing (WFQ): Fair queuing: Jedem Flow wird ein
Buffer zugewiesen. Der Router arbeitet nun diese Buffer im RoundRobin-Verfahren ab. WFQ: siehe Skript Kap. “Quality of Service“, Slide
18f
7.3 Integrated Services (IntServ)
Buch p. 497ff
Jedes Paket wird einem Flow zugeordnet, da ein Paket eigentlich nie
alleine auftaucht. So wird eine Art virtuelle Verbindung aufgebaut, für
welche dann eine Reihe von Dienstklassen spezifiziert werden kann:
• Guaranteed Service (GS): Pakete dürfen nie zu spät kommen.
Per-Flow Scheduling in allen Routern um Isolierung der Flows
voneinander zu erreichen. Jeder Router alloziert eine best. Rate
und Buffergrösse zu jedem Flow.
Vorteil: keine Überlastung (sogar bei hohen Peak-Raten).
Nachteil: Im Durchschnitt wird nur ein geringer Teil der reservierten Bandbreite genutzt.
16
• Expedited Forwarding (EF) / Premium service: Diese Pakete sollen vom Router mit minimaler Verzögerung und geringstmöglichem Verlust weitergeleitet werden. Um das garantieren zu können, dürfen am Router nicht mehr EF-Pakete ankommen als seine Verarbeitungsrate beträgt.
• Assured Forwarding (AF): Hohe Zusicherung (jedoch keine Garantie), dass Pakete ankommen. In Service Level Agreements
(SLA) wird oftmals vereinbart, dass ein Kunde eine bestimmte
Menge an Verkehr generieren darf die zugesichert weitergeleitet
wird. Diese Pakete werden mit ’IN’ gekennzeichnet, da sie innerhalb des SLA liegen. Sendet der Kunde mehr Pakete, werden
diese mit ’OUT’ gekennzeichnet. AF stellt nun sicher, dass wenn
irgendwie möglich die ’IN’-Pakete ankommen und soviele wie
möglich von den ’OUT’-Paketen. Bei drohender Überlast werden aber die ’OUT’-Pakete verworfen da sie sich nicht im SLA
befinden.
8 Anwendungen
Buch Kap. 9, Skript Kap “Applications“
8.1 Domain Name System (DNS)
Buch p. 636ff, Skript Kap. “Applications“
Ziel: Benutzerfreundliche Namen auf routerfreundliche Adressen abbilden.
DNS ist Teil der Middleware welche zwischen Anwendungen und dem
zugrunde liegenden Netzwerk liegt.
Funktionsweise: Das Internet ist in Zonen aufgeteilt. Jede dieser Zonen
wird von einem primary name server und mindestens einem secondary
name server verwaltet. Diese Nameserver speichern 5-Tupel der Form
< Name, Wert, Typ, Klasse, TTL > ab.
TLD: Top Level Domain
Root-Server Adressen sind allen bekannt!
• Name: benutzerfreundlicher Name.
• Wert: anderer benutzerfreundlicher Name (Alias) oder routerfreundliche Adresse.
Beispiel: DNS-Abfrage von www.eisbrand.ch. Start beim Rootserver:
1. querytype = NS, ch. to a.root-server.net
2. querytype = NS, eisbrand.ch to NS for ch.
• Typ: Typ des Eintrags.
Achtung: Einige Einträge beinhalten Namen, andere IPs!
z.B. MX beinhaltet den Namen des Mailservers, die IP muss also
noch nachgefragt werden!
3. querytype = A, www.eisbrand.ch to NS for eisbrand.ch
Paketformat von DNS messages:
• Klasse: im Internet wird immer die Klasse IN verwendet.
• TTL: Definiert, wie lange ein Datensatz gültig sein soll (wird für
Caching (non-authoritative) benötigt).
• Kontakt-e-mail ist in SOA record.
Aufbau eines Zonefiles: siehe theoretische Übung T5.
Ein DNS-Server muss mindestens die folgenden Einträge haben: Hostname, WWW, email, MX, PTR, HINFO.
Die Namensauflösung funktioniert wie folgt:
1. Im Client ist ein (beliebiger) Nameserver eingetragen. Der Client
sendet nun eine Anfrage an diesen Nameserver.
2. Der Nameserver schickt entweder die aufgelöste IP-Adresse
zurück oder die Adresse des übergeordneten Nameservers.
Answer section: Aus dem Cache des befragten Servers (NONauthoritative!)
Authoritative section: Namen der Nameserver, welche eine authoritative Antwort geben können
Additional section: IPs der Nameserver aus der Authoritative section
Locality of Reference: Wenn ein Nameserver eine Anfrage weiterleitet,
speichert er das Resultat in einem Cache, um bei einer erneuten Anfrage
direkt antworten zu können. Solche Antworten aus dem Cache heraus
werden non-authoritative genannt, Antworten direkt vom zuständigen
Nameserver hingegen sind authoritative.
Inverse query: Will man aus einer IP-Adresse den Domainnamen herausfinden, kann das “in-addr.arpa“ genutzt werden. Dies ist eine spezielle Secondleveldomain. Die Anfrage auf 42.66.132.129.in-addr.arpa
liefert den Domainnamen zur IP-Adresse 129.132.66.42 (ACHTUNG:
Umgekehrte Reihenfolge der IP-Adresse in der Anfrage!). Einträge in
dieser Domain sind optional, sodass nicht zu jedem Domainnamen ein
Eintrag existieren muss.
Nameserver finden:
• dig ethz.ch
3. Falls der Client an einen anderen Nameserver verwiesen wurde,
geht die Prozedur von vorne los.
17
• whois ethz.ch
8.2 Simple Mail Transfer Protocol (SMTP)
8.3 Hyper Text Transfer Protocol (HTTP)
Buch p. 646ff, Skript Kap. “Applications“
Buch p. 653ff
SMTP ist zustandlos (stateless).
SMTP ist ein Protokoll, welches mittels MIME und RFC 822 kommuniziert. Die beiden letzteren sind Begleitprotokolle zu SMTP. MIME setzt
sich aus 3 Grundteilen zusammen:
HTTP ist zustandslos (stateless), d.h. es gibt keine Möglichkeit, Daten zwischen den einzelnen Anfragen auszutauschen und der Server
hat keine Information über die Vorgeschichte oder Zugehörigkeit der
eintreffenden Anfragen.
Ruft man im Browser eine URL auf, öffnet dieser eine TCP-Verbindung
zum jeweiligen Webserver, ruft die angegebene Datei mithilfe des spezifizierten Protokolls ab und zeigt sie an.
Wie SMTP ist HTTP ein textorientiertes Protokoll. Jede HTTP-Nachricht
hat generell folgende Form:
1. Sammlung von Headerzeilen wie: MIME-Version, ContentDescription, Content-Type, Content-Transfer-Encoding, . . .
2. Definitionen für Inhaltstypen wie: image/gif, image/jpeg, application/msword, multipart/mixed, . . .
3. Kodierung der Datentypen. Meist wird base64 verwendet.
Emails müssen immer als ASCII verschickt werden. Auch
image/comnet und andere Inhaltstypen müssen in ASCII umgewandelt werden. Bei base64-Kodierung werden immer 3 Byte
der binären Originaldatei auf 4 ASCII-Zeichen abgebildet. Dies
geschieht durch Gruppierung der originalen Binärdaten zu 24Bit-Einheiten (= 3 Byte) und Aufteilung jeder Einheit in vier
6-Bit-Stücke. Jedes 6-Bit-Stück entspricht einem aus 64 gültigen
ASCII-Zeichen.
Jede SMTP-Sitzung besteht aus einem Dialog zwischen 2 Mail-Daemons,
einer handelt als Client, der andere als Server. Mail-Daemons sind
die Hintergrundprozesse, die SMTP laufen haben. Wird eine Mail verschickt, gelangt sie auf den Mailserver des Empfängers. Dort versucht
ein Mail-Daemon, die Email zuzustellen. Ist dies nicht möglich, wird sie
einige Zeit (typischerweise einige Tage) gespeichert und es wird immer
wieder versucht, die Nachricht dem Mail-Daemon des Empfängers zuzustellen.
SMTP-Sitzungen laufen in Klartext ab und haben folgenden Ablauf:
START_LINE <CRLF>
MESSAGE_HEADER <CRLF>
<CRLF>
MESSAGE_BODY <CRLF>
Anfrageoperationen:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
Anfrage von Informationen über verfügbare Optionen
Abruf des in der URL bezeichneten Dokuments
Abruf von Metainformationen über das in der URL bezeichnete Dokument
Ausgabe von Informationen an einen Server
Speichern des Dokuments unter der spezifizierten URL
Löschen der spezifizierten URL
Schleife zur Anfragenachricht
Für die Verwendung durch Proxies
Bsp:
GET /index.html HTTP/1.1
Host: http://www.eisbrand.ch
If-Modified-Since: Tue, 2 Jan 2006, 00:00:00 GMT
If-Modified-Since funktioniert nur mit HTTP 1.1.
1. Anmeldung am Server: HELO name
Server antwortet mit Statuscode 250.
Ergebniscodes
2. Eingabe der Headerinformation (RFC 822):
MAIL FROM: <[email protected]>
RCPT TO: <[email protected]>
RCPT TO: <[email protected]>
Server antwortet mit Code 250 falls alles ok ist oder mit 550 falls
ein Empfänger nicht existiert.
3. Eingabe des Textes: Server gibt die Zeichenfolge bekannt, mit
welcher die Datensektion abgeschlossen werden soll. Meist
<CRLF>.<CRLF>.
DATA
From: [email protected]
Subject: Irgendwas
To: [email protected]
Code
1xx
Typ
Informativ
2xx
Erfolg
3xx
Redirection
4xx
ClientFehler
5xx
ServerFehler
Beispielgründe
Anfrage erhalten, Prozess wird
fortgeführt.
Aktion erfolgreich empfangen,
verstanden und akzeptiert.
Weitere Aktion erforderlich um
die Anfrage vollständig zu beantworten.
Anfrage enthält fehlerhafte Syntax oder kann nicht erfüllt werden.
Server hat beim Ausführen einer scheinbar gültigen Anfrage
einen Fehler verursacht.
Beispielcodes
200: OK, 202: accepted, 204: no
content
301: moved permanently, 302:
not found, 304: not mdified
400: bad request, 401: unauthorized, 403: forbidden/access denied, 404: file not found
Persitent Connection: Seit HTTP 1.1 werden persistente Verbindungen
unterstützt. Das sind Verbindungen, bei denen Client und Server mehrere Anfrage- und Antwortnachrichten über eine einzige TCP-Verbindung
austauschen können anstatt für jede Anfrage eine neue Verbindung aufzubauen. Vorteil: weniger Overhead durch ständigen Verbindungsaufund abbau. Nachteil: Wie lange soll eine ungenutzte Verbindung aufrecht erhalten werden?
Text blablabla
.
QUIT
4. Beenden und abschicken der Email: QUIT
Zudem gibt es eine Option VRFY mit welcher Emailadressen überprüft
werden können.
MTA: Message Transfer Agent. Prozess, der Email von einem Host zu
einem anderen transferiert.
MUA: Mail User Agent. Programm das zum lesen und senden von Mails
benutzt wird.
18
9 Network Security
Buch Kap. 8, Skript Kap “Network Security“
Grundsatz der Sicherheit:
• Confidentiality: Stelle sicher, dass nur autorisierte Personen Zugang zu Informationen haben.
• Integrity: Stelle sicher, dass Informationen nicht verfälscht /
verändert werden.
• Availability: Stelle sicher, dass Informationen zuverlässig und
schnell erreichbar sind.
Perfect Security [7] Perfect security, if the key
Sicherheitslevels: Man unterscheidet zwischen
• has same length as plaintext
• Information-theoretically secure: Das System kann mit unendlicher Rechenzeit nicht geknackt werden.
• is randomly chosen, and
• Computationally secure: Das System kann nicht mit sinnvoller/realistischer Rechenzeit geknackt werden.
• kept secret.
Communication Channel Model
Reason: The cipher text is statistically independent of the plaintext.
9.1 DES (Data Encryption Standard)
• Not Confidential chanel: Ein Angreifer kann alle Informationen
sehen.
• Confidential chanel: Ein Angreifer kann die Information zwar
sehen aber nicht interpretieren.
Buch p. 584ff, Skript Kap. “Network Security“, [8]
Wird heute als ungenügend bezeichnet.
Form der symmetrischen Kryptographie:
• Not Authentic chanel: Der Empfänger hat keine Garantie, dass
der Absender die Person ist für die er sich ausgibt.
• Authentic chanel: Der Empfänger ist sicher, dass der Absender
authentisch ist.
• secure = authentic + confidential
Grundarten der Verschlüsselung:
• Algorithmen mit private keys: Symmetrische Algorithmen da
beide Parteien einen gemeinsamen, geheimen Schlüssel benutzen. Bsp.: DES, IDEA
• Algorithmen mit public keys: Jeder Teilnehmer hat einen private und einen public key. Um einem Teilnehmer eine sichere
Nachricht zu senden, wird die Nachricht mit dem public key
verschlüsselt. Entschlüsselt kann die Nachricht nur mit dem
private key werden, den der Empfänger besitzt. Bsp: RSA
• Hashing / Message-Digest: Abbildung einer potenziell grossen
Nachricht auf eine kleine mit fester Länge. Einwegschlüssel. Bsp:
MD5
DES und MD5 sind um mehrere Grössenordnungen schneller als RSA.
Nachteile: Kompliziertes Keymanagement (1 Key pro User nötig). Vorteile: schnelle Ver- und Entschlüsselung.
DES verschlüsselt einen 64 Bit grossen Klartextblock mit Hilfe eines
64-Bit-Schlüssels.
19
9.2 Diffie-Hellman Key Exchange[14]
Es ist nicht bewiesen, dass DH nicht ohne Lösung des diskreten Logarithmus geknackt werden kann.
Die Verschlüsselung umfasst 3 Phasen:
9.3 RSA (Rivest-Shamir-Adleman)
Buch p. 588ff, Skript Kap. “Network Security“, [18]
1. Die 64 Bit des Blockes werden permutiert.
Form der asymmetrischen Kryptographie:
2. Auf die resultierenden Daten und den Schlüssel werden 16 Runden einer identischen Operation angewandt.
3. Auf das Ergebnis wird die Umkehr der ursprünglichen Permutation angewandt.
Die Permutationen erhöhen die Sicherheit von DES nicht.
In jeder der 16 Runden wird folgende Berechnung durchgeführt:
Li = Ri−1
Ri = Li−1 ⊕ F(Ri−1 , Ki )
Wobei ⊕ bitweises XOR bedeutet, L die linke Hälfte des Blockes und R
die rechte Hälfte des Blockes ist. K ist der Schlüssel der aktuellen Runde
(der Schlüssel ändert in jeder Runde), F ist eine relativ komplizierte
Kombinationsfunktion (siehe Skript, Slide 10).
Heute ist DES zu schwach, da sich der 256 Zahlen umfassende
Schlüsselraum (vom 64-Bitschlüssel sind nur 56 Bit zur Verschlüsselung
da, der Rest sind Paritätsbits) relativ schnell durchsuchen lässt. Deshalb
wird DES 3 mal hintereinander angewendet, was die Sicherheit erhöht
(3DES).
Mit DES können nur 64 Bit grosse Daten verschlüsselt werden. Wenn
nun eine Nachricht grösser ist, wird sie mittels Cipher Block Chaining
(CBC) in kleinere Blöcke verwandelt (siehe Buch, p. 587).
Bedingungen für asymmetrische Kryptographie [19]
Vorteile: Einfaches Keymanagement (1 Key für alle User genügt). Nachteile: langsame Ver- und Entschlüsselung.
Funktionsweise von RSA:
3DES [11]: (the ”better”DES) considered enough for today. Verwendet DES dreimal nacheinander.
AES: Advanced Encryption Standard. Nachfolger von DES. Arbeitet mit
128-Bit-Datenblöcken und 128/192/256 Bit Schlüsseln. Eigenschaften:
• Hochsymmetrisch und parallel.
• Robust gegen alle bekannten kryptoanalytischen Attacken.
• Gute Performance auf modernen RISC und Pentium Prozessoren.
• Geeignet für Smartcards.
1. Öffentlichen Schlüssel erzeugen: Wähle zwei grosse Primzahlen
p und q (ca. 256 Bit gross). m = p ∗ q. Wähle den Chiffrierschlüssel
e so, dass e und f = (p − 1) ∗ (q − 1) prim zueinander sind. Der
public key ist nun das Paar < m, e >.
2. Privaten Schlüssel erzeugen: Berechne d = e−1 mod f bzw.
e ∗ d = 1 mod f
Der private key ist nun das Paar < d, m >.
• Wird heute eingesetzt.
20
3. Teile dem anderen Teilnehmer den Public key mit. Dieser verschlüsselt die Nachricht: c = xe mod m mit x . . .Klartext und
c . . .Cipher und sendet c an den Empfänger.
4. Der Empfänger kann die Nachricht nur mithilfe seines private
key wieder dechiffrieren: x = cd mod m
9.7 Hash Funktionen [31]
9.8 Message Integrity Protokolle
Buch p. 599ff, Skript Kap. “Network Security“
Verhindert, dass Nachrichten unter “falschem Namen“ versendet werden. Mehrere Möglichkeiten:
Bemerkungen:
• Die chiffrierte Nachricht lässt sich nicht mithilfe des public key
entschlüsseln.
• Digital Signature mittels RSA: Digitale Signatur = Spezieller Code für die Nachrichtenintegrität, der nur von einem Teilnehmer erzeugt worden sein kann. Um eine Nachricht zu unterzeichnen, verschlüsselt man sie mit dem eigenen private key.
Um die Nachrichtenintegrität zu überprüfen entschlüsselt man
sie mit dem public key des angeblichen Senders. Hier ist also RSA “vertauscht“ ausgeführt: Es wird mit dem public key
entschlüsselt und mit dem private key verschlüsselt.
• Die Primzahlen p und q dürfen nicht bekannt werden da sich
sonst der private key errechnen lässt.
Symmetrische vs. assymetrische Kryptographie [24]
9.4 Hybrid Encryption: The Digital
Envelope [25]
• Keyed MD5: Sender und Empfänger einigen sich auf einen geheimen Schlüssel k. Der Sender führt MD5 auf die Verkettung der
Nachricht und des Schlüssels k aus und schickt sowohl die Klartextnachricht als auch den Message-Digest an den Empfänger.
Dieser macht das gleiche wie der Empfänger und vergleicht
sein Resultat mit dem empfangenen Message-Digest. Stimmen
die Werte überein, ist die Nachricht authentifiziert.
Heute in Gebrauch.
9.5 MD5
Buch p. 591ff
Form von Message-Digest.
MD5 berechnet eine kryptografische Prüfsumme mit fester Länge aus
einer beliebig langen Nachricht. Im wesentlichen wird die Nachricht
Schritt für Schritt “komprimiert“: Der aktuelle Wert des 128-Bit-Digest
wird genommen und zusammen mit 512 Nachrichtenbits zu einem neuen 128-Bit-Digest verarbeitet (genaue Berechnung: siehe Buch p. 592f).
Die Ausgabe der letzten Stufe ist der Message-Digest (= das Resultat).
• MD5 mit RSA-Signatur: Der Sender führt MD5 auf die Nachricht aus. Der Message-Digest wird anschliessend mit RSA verschlüsselt. Das Resultat wird zusammen mit der Klartextnachricht dem Empfänger gesendet. Dieser führt auch MD5 auf die
Nachricht aus, entschlüsselt mit dem öffentlichen Schlüssel den
Message-Digest des Senders und vergleicht die beiden Hashwerte. Stimmen sie überein, ist die Nachricht authentifiziert.
9.6 Authentifikationsprotokolle
Buch p. 595ff, Skript Kap. “Network Security“,[26]
Ziel: 2 Teilnehmer authentifizieren sich gegenseitig bevor sie mit Datenaustausch beginnen. Mehrere Möglichkeiten:
• Einfacher Drei-Wege-Handshake / Simple Mutual Authentication (T5.2a))
9.9 Public Key Distribution
Buch p. 602ff, Skript Kap. “Network Security“, [30]
Wie kann ohne persönliche Übergabe ein öffentlicher Schlüssel authentifiziert werden?
Certificates: X.509: Annahme: Der public key einer certification authority (CA) kann über einen authentischen Weg verteilt werden. Die CA
bindet den Namen eines Users (oder seine Emailadresse, Adresse, . . .)
und dessen public key zusammen. Jedermann der über den public key
der CA verfügt, kann das Zertifikat überprüfen.
Nach der 3. Nachricht haben sich beide Teilnehmer gegenseitig authentifiziert. Die 4. Message ist dazu da, einen temporär
gültigen Session key auszutauschen.
• Authentifikation über einen Authentification-Server (z.B. Kerberos): siehe Buch, p. 597f
• Authentifikation mittels public key: Teilnehmer A verschlüsselt
eine Zufallszahl x mit Hilfe des public key von TN B und sendet
das Resultat an B. B entschlüsselt die Nachricht mit dem privat
key und schickt die Zufallszahl im Klartext an A zurück. Somit
hat sich B bei A authentifiziert. (T5.2b))
Zertifikate können auch wiederrufen werden (z.B. wenn jemandem der
private key gestohlen wird). Wiederrufene Zertifikate kommen auf eine
Blacklist (Certificate Revocation List, CRL), welche immer zuerst abgecheckt wird wenn ein Teilnehmer ein neues Zertifikat empfängt.
21
9.10 Firewalls
Buch p. 618ff, Skript Kap. “Network Security“, [35]
Ein Firewall ist im Grunde ein Router, welcher den vorbeiziehenden
Verkehr filtert.
Es gibt grundsätzlich zwei Arten von Firewalls:
• Filterbasierte Firewall: Die Firewall wird mit einer Tabelle von
4-Tupel <Ziel-IP, Ziel-Port, Quell-IP, Quell-Port> konfiguriert die festlegen, was weitergeleitet / geblockt werden soll
(abhängig von der Policy). Solche Firewalls werden auch Level4-Switch genannt.
• Proxy-basierte Firewall: Proxy = Prozess zwischen Client und
Server: für den Client scheint er der Server zu sein, für den Server scheint er der Client zu sein. Wenn nun eine TCP-Verbindung
von einem Client kommt, prüft der Proxy-Firewall ob der Client berechtigt ist, auf den Server zuzugreifen. Falls ja baut er
eine zweite TCP-Verbindung zum Server auf und vermittelt die
Pakete zwischen den beiden Stationen.
Stateful Firewall: Jedes Datenpaket wird einer bestimmten aktiven
Session zugeordnet wird. D.h. der Verbindungstatus wird in die Entscheidung einbezogen.
Nachteile von Firewalls:
Firewall mit iptables einrichten:
Die wichtigsten Argumente von iptables sind hier angegeben.
iptables-Operationen auf Ketten:
-N kette Erstellt kette
-L kette Gibt Regeln in kette aus
-F kette Löscht alle Regeln aus kette
-P kette aktion Setzt Default-Aktion von kette auf aktion
iptables-Operationen auf Regeln:
-A kette regelspezifikation Hängt Regel an kette an
-D kette regelnummer Löscht Regel mit Nummer regelnummer
Regelparameter in iptables:
-p protokoll Paketprotokoll. Z.B. tcp, udp, icmp
-s quelle Quelladresse des Pakets
-d ziel Zieladresse des Pakets
---sport port Quellport des Pakets
---dport port Zielport des Pakets
-i interface Eingangsnetzwerkschnittstelle
-o interface Ausgangsnetzwerkschnittstelle
-m module Erweiterung module laden
-j ziel Springe zum ziel. Z.B. ACCEPT, DROP oder eine benutzerdefinierte Kette
Merke: --sport und --dport sind Zusatzoptionen zu -s bzw. -d.
So kann man z.B. mit iptables -A INPUT -m state --state NEW -m
tcp -p tcp --dport 22 -j ACCEPT neue eingehende Verbindungen
an Port 22 (ssh) sowie Pakete zu Verbindungen an diesem Port akzeptieren.
Port Range: kann durch x:y definiert werden. :x bezeichnet alle Ports
bis x, alle Ports ab x können mittels x: bezeichnet werden.
Bsp.: iptables -P FORWARD -p TCP ---dport 26:79 -j DROP
• Interne Benutzer werden untereinander nicht geschützt.
• Wenn jemand im Netzwerk drin ist, kann er machen was er will,
die Firewall kann nur die Grenze schützen.
• Mobiler Code (z.B. ein Virus, der in einer Email versteckt ist),
wird von Firewalls nicht erkannt.
Aufbau eines Netzwerks mit Firewall:
iptables Ketten:
“PREROUTING”: Pakete landen in dieser Kette bevor eine RoutingEntscheidung getroffen wird.
“INPUT”: Paket wird lokal zugestellt. (N.B.: Dies hat wenig mit Prozessen zu tun. Lokale Zustellung wird durch die “local”-Routingtabelle
kontrolliert: ‘ip route show table local‘.)
“FORWARD”: Alle Pakete die geroutet und nicht lokal zugestellt wurden, passieren durch diese Kette.
“OUTPUT”: Pakete, die vom eigenen Computer erzeugt wurden, tauchen hier auf.
“POSTROUTING”: Routing-Entscheidung wurde getroffen. Pakete laufen hier nochmals durch kurz bevor sie an die Hardware abgegeben
werden.
iptables Direktiven: DROP, REJECT, ACCEPT, QUEUE
Firewall Konfigurierungsbsp. Das folgende Beispiel konfiguriert eine Firewall zwischen DMZ und Internet. Die Policy wird auf
”DROP”gesetzt und danach wird dafür gesorgt, dass Frames ohne
vollständigen Header (fragmentierte Frames), akzeptiert werden. Danach werden Pakete mit Ziel Webserver und die Anfragen des internen
Subnetzes weitergeleitet.
iptables -P FORWARD -j DROP
iptables -A FORWARD -m state -state ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD -p TCP -dport 80 -d 192.132.2.10 -m state -state NEW -j ACCEPT
iptables -A FORWARD -s 129.132.66.64/26 -m state -state NEW -j ACCEPT
9.11 Denial of Service Attacks (DoS) [38]
• SYN Attack [39]
• Direct ddos attack [40]
• External net: Sichtbar von der DMZ und dem Internal net.
• Reflector attack [41]
• Internal net: Nicht sichtbar von aussen (external net). Damit ein
Host im internal net auf das external net zugreifen kann, wird
NAT ( = Masquerading) benötigt.
• DMZ: Demilitarized Zone. Sichtbar von aussen (external net)
als auch von innen (internal net). Diese Zone wird benutzt, um
gewissen “interne“ Dienste (wie z.B. Mailserver, Webserver) für
die Aussenwelt sichtbar zu machen.
22
10 Diverses
• Throughput (Durchsatz):
• Link encoding Methoden:
Buch: p. 75ff.
Throughput =
Trans f erGroesse
Trans f erZeit
mit
Trans f erZeit = RTT +
Trans f erGroesse
Bandwith
• Ueberlast/Congestion: Überlast tritt auf, wenn bei einem
Switch/Router der Buffer voll ist und er keine weiteren Pakete
annehmen kann sondern sie verwerfen muss. Im Gegensatz
dazu steht Konkurrenzbetrieb, bei welchem der Switch/Router
die Pakete im Buffer speichern muss da er sie nicht direkt verarbeiten kann.
NRZI: Jeder Sprung definiert eine ’1’, konstantes Verhalten entspricht einer ’0’.
Probleme der verschiedenen Verfahren:
– NRZ: Baseline-Wander: Der Empfänger verwendet die
durchschnittliche Signalstärke als Schwelle für die Unterscheidung zwischen ’0’ und ’1’. Durch lange 0- oder
1-Sequenzen wird diese Schwelle verfälscht was zu Fehldecodierungen des Empfängers führen kann.
Clock recovery: Der Empfänger benutzt Signalwechsel
um sich mit der Clock des Senders zu synchronisieren. Lange 0- oder 1-Sequenzen erlauben keine solche
Synchronisierung mehr was zu einer Verschiebung zw.
Sender- und Empfänger-Clocks führen kann.
– NRZI: Löst das Problem von langen 1-Sequenzen, nicht
jedoch von 0-Sequenzen.
– Manchesterkodierung: Lange 0- oder 1-Sequenzen werden verhindert, dafür verdoppelt sich die Baud-Rate
(Baud-Rate: Rate mit der sich Signale verändern).
– 4B/5B: 4 Datenbits wird ein zusätzliches Bit hinzugefügt
um lange 0- oder 1-Sequenzen zu verhindern. Jedes Bit
darf nicht mehr als eine führende und zwei nachgestellte
0 haben. Der daraus resultierende Code wird mit NRZI
übertragen, was lange 1-Sequenzen verhindert. Funktionsweise: ’01’ → ’011’, ’111’ → ’1110’,
• Multiplexverfahren:
– Synchronous time-division multiplexing (STDM): Zeit
wird aufgeteilt in gleich grosse Teile, jeder Host erhält
abwechslungsweise einen Zeitschlitz.
– Frequency-division multiplexing (FDM): Jeder Datenstrom wird über eine andere Frequenz in der gleichen
Verbindungsleitung übertragen.
– Code division multiplexing (CDM): Jeder Datenstrom
wird mit einer anderen Codierung übermittelt.
• Latenz: Dauer, bis eine Nachricht von einem Ende des Netzwerks ans andere gelangt:
Latenz = propagationdelay + transmissiondelay + waitingtime
=
Ent f ernung
Paketgroesse
+
+ Wartezeit
LichtgeschwindigkeitimMedium
Bandbreite
• Kilo, Mega, Giga: Unklar, ob diese Grössen bei einer Einheit jeweils z.B. 103 oder 210 entsprechen. Regel: Wird die Einheit von
einer Frequenz/Taktgeber abgeleitet (z.B. Bandbreite), verwendet man die 10er-Potenz. Wird die Einheit von einem Speicherplatz abgeleitet (z.B. Nachrichtengrösse), rechnet man mit der
2er-Potenz.
Werden die Potenzen gleichgesetzt, ergibt sich ein Fehler von
ca. 20%.
23
Congestion Control:
– Long term congestion control: Netzwerkdimensionierung (stelle sicher, dass immer genügen Ressourcen vorhanden sind), Traffic engineering (verändere Routen um
überlastete Knoten zu entlasten).
– Short term congestion control: TCP congestion control
(Sendeknoten wird von Überlast informiert und vermindert Senderate), neue Verbindungen können Netz testen
mithilfe von sog. probe frames.
• ICMP Ping: Mittels Ping kann die RTT zu einer IP-Adresse ermittelt werden. Ping läuft mittels dem Protokoll ICMP: ICMP
echo request, ICMP echo reply.
• NAT: Network Address Translation. NAT basiert auf dem
Grundkonzept, dass nicht alle Hosts, die miteinander über das
Internet kommunizieren wollen, eine global eindeutige Adresse
brauchen. Stattdessen kann einem Host eine “private Adresse“
zugewiesen werden, die nicht unbedingt global eindeutig sein
muss.
Ein NAT-Router öffnet für jede Verbindung (TCP/UDP) einen
neuen Port und speichert das 3-Tupel <IP Sourceaddress,
Source Port, NAT port>. Dann ersetzt er die Source-IP mit
seiner eigenen IP-Adresse. Kommen nun Pakete auf dem alloziierten Port an, leitet der NAT-Router das Paket an den entsprechenden Host weiter. Von aussen sieht man jedoch nur den
NAT-Router als einzigen Host.
• Root dot: Alle Hosts im Internet müssen folgende Form haben:
Hostname.SubDomain(s).Domain.TopLevelDomain.
Am Ende gehört ein Punkt ’.’ (Root dot) hin, der dem Resolver
sagt, dass er nicht noch seine eigene Domain anhängen soll. Dies
ist in den meisten Browsern nicht implementiert und wird deshalb nur selten verwendet. Korrekterweise sollte aber z.B. der
EE-Webserver aus einer Adresse www.eisbrand.ch ohne Root
dot folgendes machen: www.eisbrand.ch.ee.ethz.ch.
• VPN: Virtual Private Network / Tunneling: Um z.B. zwei Standorte von Firmen durch ein Netzwerk hindurch zu verbinden,
also ein virtuelles privates Netzwerk (VPN) zu errichten, kann
ein IP-Tunnel erstellt werden. Der Router R1, der Standort 1 mit
dem Netzwerk verbindet, kapselt IP-Pakete an Netzwerk 2 in
weitere IP-Pakete, die das Ziel des Routers R2 haben, der das
Netzwerk mit Standort 2 verbindet. R2 packt das erhaltene Paket aus, sieht darin das Paket an einen Host am Standort 2 und
leitet dies weiter. Aus Sicherheitsgründen ist diese Verbindung
durch das Tunnel R1-R2 meistens verschlüsselt. Als zweite Anwendungsmöglichkeit können dadurch andere Protokolle als IP
durch ein IP-Netzwerk befördert werden.
• HDLC: High-Level Data Link Control. Protokoll der Sicherungsschicht welches Bitstuffing verwendet. Frames werden mittels
’01111110’ definiert. Kommen in der Payload fünf ’1’ hintereinander, wird eine ’0’ eingefügt, welche beim Empfänger wieder
entfernt werden.
10.1 Datenübertragung
• Delay-Bandwith-Product: Verzögerungs-Bandbreite-Produkt:
Gibt an, wieviel Daten eine Leitung “zwischenspeichern“ kann.
Berechnet sich für einen Vollduplex-Kanal als: BW ∗ RTT
• Zusammenhang zwischen packet size und bus length:
Ttr > 2Tpr ⇐⇒
S
2L
>
C
v
mit Ttr . . . transmission time (Zeit die benötigt wird um das Signal auf den Kanal zu legen), Tpr . . . propagation time (Zeit die
ein Bit auf dem Kanal benötigt), S . . . frame size, C . . . link capacity , L . . . bus length.
• Fehlererkennung / Fehlerkorrektur:
– CRC: Cyclic redundancy check. Fehlererkennungscode.
Die Nachrichtenbits werden als Polynom dargestellt und
durch das sog. Divisor-Polynom/Generator-Polynom geteilt. Der Rest wird ans Nachrichtenpolynom angehängt.
Der Empfänger teilt das erhaltene Polynom durch das
Divisor-Polynom. Wenn er einen Rest erhält, ist die Nachricht korrupt, ansonsten in Ordnung.
– Zweidimensionale Parität: Die Zeilen und Spalten eines
Frames müssen jeweils eine gerade Anzahl ’1’ haben. Dies
wird mit sog. Paritätsbits erreicht. Mit zweidimensionaler Parität lassen sich alle 1-, 2- und 3- sowie die meisten
4-Bitfehler erkennen.
10.2 Komplimente
10.2.1 Zweierkomplement
Beispielhafte Umwandlung der negativen Dezimalzahl ?4 in die Zweierkomplementdarstellung unter Verwendung von 8 binären Stellen:
1. Vorzeichen ignorieren und ins Binärsystem umrechnen:
4(10) = 00000100(2)
2. Invertieren: Not[00000100] = 11111011
Eins addieren: 11111011 + 00000001 = 11111100
10.2.2 Einerkomplement
Beispiel: -4 + 3 = -1 führt zu
1011
+ 0011
Übertrag 0011
—————
= 1110
– Internet-Prüfsummenalgorithmus: Alle zu übertragenden
Wörter werden addiert und das Resultat an den frame
gehängt. Der Empfänger addiert auch alle Wörter und
vergleicht das Resultat mit der Prüfsumme des Senders.
• Stop-and-wait-Algorithmus (SW-ARQ):
Buch p. 97ff.
Sender sendet und startet Timer. Empfänger bestätigt Packet mit
ACK. Falls Sender ACK vor Timerablauf erhält, sendet er den
nächsten Frame, ansonsten den gleichen nochmals.
Nachteil: Der Sender kann immer nur 1 Frame aufs Mal schicken
⇒ Kanalauslastung schlecht.
Nachteil der Einerkomplementdarstellung ist die Behandlung des
Falls, wenn bei einer Operation die Null durchschritten wird. Beispiel: Beim Berechnen von ?4 + 6 = +2 erscheint nach einer einfachen Dualzahl-Addition der beiden Einerkomplementdarstellungen
zunächst ein falsches Zwischenergebnis:
• Sequenznummern Mindestanzahl
IRQ SeqNR ≥ 2
GBN SeqNR ≥ SWS + 1
-4 + 6 = +2 führt zu
1011
+ 0110
Übertrag 1110
—————
(Zwischenergebnis) = 0001
SRQ (RWS = SWS) SeqNR ≥ 2 · SWS
SRQ (RWS , RWS) SeqNR ≥ SWS + RWS
SWS: Sender Window Size, RWS: Receiver Window Size
• Sliding-Window-Algorithmus: Der Sender verwaltet 3 Variablen: Send window size (SWS), last acknowledgment received
(LAR) und last frame sent (LFS). Es muss immer gelten:
LFS − LAR ≤ SWS
Der Empfänger verwendet auch 3 Variablen: receive window
size (RWS), largest acceptable frame (LAF), last frame received
(LFR). Es muss immer gelten:
Die 0001 stünde für +1, nicht für +2. Damit ein korrektes Ergebnis erscheint, muss der am weitesten links stehende Übertrag ausgewertet
werden (hier 1) und ggf. das Ergebnis um 1 erhöht werden. Mit anderen
Worten muss der Übertrag noch zum Zwischenergebnis hinzuaddiert
werden:
LAF − LFR ≤ RWS
(Zwischenergebnis) 0001
(Übertrag der vorhergehenden Operation) + 1
—————
= 0010
Jeder Frame bekommt eine Sequenznummer. Diese wird periodisch wiederholt. Damit keine Fehler durch die Wiederholung
der Sequenznummern enstehen, muss gelten:
SWS <
MaxSeqNum + 1
2
Beim ersten Beispiel oben ist der Übertrag 0, daher entspricht das Zwischenergebnis dort schon dem Endergebnis.
24
Index
3DES, 20
4B/5B, 23
CRC, 24
CRL, 21
CSMA, 3
CSMA/CA, 4
CSMA/CD, 4
CTS, 4
ACK, 13
Adaptive Neuübertragung, 14
Additional section, 17
Additive Increase / Multiplicative Decrease, 15
AdSpec, 16
Advanced Encryption Standard, 20
AdvertisedWindow, 13
AES, 20
AF, 16
AIMD, 15
ALOHA, 3
Answer section, 17
Anwendungen, 17
Anycast Addresses, 8
ARP, 8
ARP-Ablauf-Beispiel, 8
ARP-Paketformat, 8
AS, 9
AS-Speaker, 9
ASCII, 18
Assured Forwarding, 16
ATM, 6
Authentic chanel, 19
Authentification-Server, 21
Authentifikationsprotokolle, 21
authoritative, 17
Authoritative section, 17
Autonomous Systems, 9
Data Encryption Standard, 19
Datagram, 6
Datenübertragung, 24
DCF (Distributed Coordination Function), 4
Delay-Bandwidth-Product, 13
Delay-Bandwith-Product, 24
Demilitarized Zone, 22
Denial of Service Attacks (DoS), 22
DES, 19
Destination IP Address, 7
DHCP, 9
Differentiated Services, 16
Diffie-Hellman Key Exchange, 20
DiffServ, 16
DIFS, 4
Digital Signature, 21
Dijkstra, 12
Distance Vector Routing, 10
DMZ, 22
DNS, 17
DNS reply, 9
DNS request, 9
DNS-Server, 17
DNS-Server finden, 17
Domain Name System, 17
Drei-Wege-Handshake, 21
DS, 7
Duplicate Acks, 13
Duplicate-ACK, 15
Backlogging, 3
base64, 18
Baseline-Wander, 23
batch, 16
Baud, 23
BE, 16
Bellman-Ford, 10
Best Effort, 16
Best-Effort, 7, 16
BGP, 9
Bitstuffing, 23
Border Gateway, 9
Bridges, 4
Broadcast, 5, 7
bus length, 24
echo, 23
EF, 16
Efficiency, 8
Einerkomplement, 24
Expedited Forwarding, 16
Exponential Backoff, 4
Extended LAN’s, 4
extension headers, 8
External net, 22
Fast-Recovery, 15
Fast-Retransmit, 15
FDM, 23
Fehlerkorrektur, 24
Filterbasierte Firewall, 22
FIN, 13
Firewall, 22
Firewall Konfigurierungsbsp., 22
Flag, 7
Flooding, 11, 12
Flow, 16
Flow Control, 12
flowspec, 16
Ford-Fulkerson, 10
Forwarding, 10
Forwarding table, 8
Fragmentation, 8
frame size, 24
Frequency-division multiplexing, 23
CA, 21
CBC, 20
CDM, 23
Certificate Revocation List, 21
Certificates, 21
certification authority, 21
chanel utilization, 3
checksum, 7
CIA-Security Triad, 19
CIDR, 7
Cipher Block Chaining, 20
classless, 7
Clock recovery, 23
CLS, 16
Code division multiplexing, 23
Computationally secure, 19
Confidential, 19
Congestion, 23
Congestion Control, 12, 15, 16, 23
connection-less, 6
connection-oriented, 6
Controlled-Load Service, 16
Count-to-Infinity-Problem, 11
Giga, 23
Global Unicast Address Format, 8
GS, 16
Guaranteed Service, 16
25
Hash Funktionen [31], 21
Hashing, 19
HDLC, 23
Header checksum, 7
hierarchisches Routing, 12
High-Level Data Link Control, 23
HLen, 7
Hold-Down-Timer, 11
hostid, 7
HTTP, 18
Hub, 4
Hybrid Encryption: The Digital Envelope, 21
Hyper Text Transfer Protocol, 18
MACAW, 4
Mail User Agent, 18
Mail-Daemons, 18
Manchester, 23
Masquerading, 22
Maximum segment lifetime, 14
maximum segment size, 14
Maximum Transmission Unit, 8
MD5, 19, 21
Mega, 23
Message Integrity Protokolle, 21
Message Transfer Agent, 18
Message-Digest, 19, 21
Middleware, 17
MIME, 18
MSL, 14
MSS, 14
MTA, 18
MTU, 8, 14
MUA, 18
Multicasting, 8
Multihome AS, 9
Multiple Access, 3
Multiplexverfahren, 23
ICMP, 9, 23
IDEA, 19
Identification, 7
IGP, 12
in-addr.arpa, 17
Information-theoretically secure, 19
Integrated Services, 16
Interdomain Routing, 9
Interdomain Routing, BGP, 9
Internal net, 22
Internetworking, 7
Intradomain-Routing, 9
IntServ, 16
Inverse query, 17
IP, 7
IP-Datagram, 7
IP-Fragmentation, 8
IP-Header, 7
IP-Protokollstack, 7
IPng, 8
IPSec, 8
iptables, 22
iptables Direktiven, 22
iptables Ketten, 22
IPv6, 8
name server, 17
Namensauflösung, 17
Nameserver finden, 17
NAT, 23
netid, 7
Network Address Translation, 23
Network Controller, 16
network mask, 7
Network Security, 19
Netzwerkbefehle, 7
next hop, 8
non-authoritative, 17
normalized throughput, 3
NRZ, 23
NRZI, 23
Jacobson/Karels, 14
Offset, 7
Open Shortest Path First, 12
OSI-Reference Model, 2
OSPF, 12
Karn/Partridge-Algorithmus, 14
Kerberos, 21
Keyed MD5, 21
Kilo, 23
Klassenbehaftet, 7
Klassenlos, 7
Komplimente, 24
Konkurrenzbetrieb, 23
packet size, 24
Paketvermittlung / Switching, 6
Path MTU, 8
Path Vector, 10
Per-Flow Scheduling, 16
Per-Hop Behaviour, 16
Perfect Security, 19
Permanent Virtual Circuit, 6
Persistency:, 3
Persitent Connection, 18
PHB, 16
Phop, 16
PIFS, 4
Ping, 23
PMTU, 8
Poison Reverse, 11
Policy, 22
Port Range, 22
ports, 12
Prüfsummenalgorithmus, 24
prefix, 7
Premium, 16
Preventive Congestion Control, 16
primary name server, 17
private key, 19
probe, 23
propagation delay, 4, 23
propagation time, 24
LAF, 24
LAR, 24
Latenz, 23
Layerstruktur Prinzipien, 2
Layerstruktur Vor- und Nachteile, 2
Learning Bridge, 4
Level-4-Switch, 22
LFR, 24
LFS, 24
link capacity, 24
Link encoding Methoden, 23
link local scope, 6
Link State Advertisement, 12
Link State Paket, 12
Link State Routing, 12
Load, 3
Local Addresses, 8
Locality of Reference, 17
Loop-Problem, 4
LSP, 12
MAC, 8
MACA, 4
26
Protocol, 7
Proxies, 18
Proxy, 22
Proxy-basierte Firewall, 22
Pseudoheader, 13
PSH, 13
public key, 19
Public Key Distribution, 21
PVC, 6
Subnetting, 7
suffix, 7
SVC, 6
SW-ARQ, 24
Switch, 6
Switched Virtual Circuit, 6
Switching, 6
SWS, 24
SYN, 13
Synchronous time-division multiplexing, 23
QoS, 16
Tag Header, 5
TCP, 13
TCP Verbindungsaufbau, 12
Three-Way-Handshake, 12
Throughput, 3, 23
Time to live, 7
Token passing, 4
Total Length, 7
Transit AS, 9
Transmission Control Protocol, 13
transmission delay, 23
transmission time, 24
Transport Protokolle, 12
TSpec, 16
TTL, 7
Tunneling, 23
Radia-Perlman, 5
Reactive Congestion Control, 16
Realtime, 16
Remote Procedure Calls, 15
Repeater, 4
reply, 8
request, 8
Resource Reservation Protocol, 16
Retransmission Timeout, 14
RFC 822, 18
RIP, 11, 12
Rivest-Shamir-Adleman, 20
Root dot, 23
Round-Robin, 16
Router, 5
Routing, 10
Routing Domains, 9
Routing Information Protocol, 11
Routing update, 11
Routing-Tabelle, 6
RSA, 19, 20
RSpec, 16
RST, 13
RSVP, 16
RTO, 14
RTS, 4
RTT, 14, 23
RWS, 24
UDP, 9, 13
Ueberlast, 23
URG, 13
User Datagram Protocol, 13
VC, 6
VCI, 6
Verbindungsaufbau, 12
verbindungslos, 6
Version, 7
Verzögerungs-Bandbreite-Produkt, 24
virtual circuit, 6
Virtual Circuit Identifier, 6
Virtual Private Network, 23
VLAN, 5
Vollduplex, 24
VPN, 23
Vulnerable Interval with CSMA, 4
Vulnerable Period, 3
Scalability, 8
secondary name server, 17
Security, 8
Segment, 14
Segmentierung des Datenstroms, 14
Sequence Number, 14
Sequenznummern Mindestanzahl, 24
Service Level Agreements, 16
Shortest Path First, 12
SIFS, 4
Silly-Window-Syndrome, 14
Simple Mail Transfer Protocol, 18
Simple Mutual Authentication, 21
Skalierungsproblem, 5
SLA, 16
Sliding-Window, 13, 24
Slow-Start, 15
Smartcard, 20
SMTP, 18
Source IP Address, 7
Source-Routing, 6, 10
Spanning-Tree, 5
SPF, 12
Split-Horizon, 11
Standard Interior Gateway Protocol, 12
stateful, 13
Stateful Firewall, 22
stateless, 18
STDM, 23
Stop-and-wait-Algorithmus, 24
stream, 16
Stub AS, 9
Subnetmask, 7
Weighted fair queuing, 16
well known port, 12
WFQ, 16
X.509, 21
Zonefile, 17
zustandlos, 18
zustandslos, 18
Zweidimensionale Parität, 24
Zweierkomplement, 24
27
Herunterladen