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