Max. Datenrate auf einem Übertragungskanal Die zeitliche LĂ€nge eines Symbols bestimmt die Anzahl der Bits, die pro Zeiteinheit ĂŒbertragen werden können. Die Übertragungsrate eines Kanals ist dann gegeben durch die Symbolrate , also die Anzahl der Symbole pro Sekunde mal der Anzahl an Bits , die pro Symbol transportiert werden können:

Maßeinheiten fĂŒr die Bandbreite / Übertragungsraten Übertragungsraten werden in Bit pro Sekunde oder angegeben, als 10-er Potenzen. , , etc. SpeicherkapazitĂ€ten fĂŒr Festplatten werden in Bytes () angegeben, als 2-er Potenzen. , , 


Latency und Round Trip Time (RTT) Die Laufzeit der Pakete von einem Unternehmensnetzwerk in den Backbone des Internets bestimmt neben der Übertragungsrate die LeistungsfĂ€higkeit des Internetanschlusses. Die Zeiten unterscheiden sich je nach Technik, Entfernung zum Edge-Router des ISPs und Anzahl der ISP-Hops. Diese Zeiten lassen sich durch die Paket-Umlaufzeit oder durch die sog. Latenz messen.

Leitungsvermittlung vs Paketvermittlung

VermittlungsartVorteileNachteile
Leitungsvermittlung- Ressourcen werden vorab reserviert
- Garantierte DienstgĂŒte (QoS)
- Blockiert Ressourcen fĂŒr gesamte Dauer
- Andere Teilnehmer können Ressourcen nicht nutzen
Leitungsvermittlung auf geteilten Leitungen- Nutzung vorhandener Leitungen durch mehrere Verbindungen möglich- Nachteile wie bei Leitungsvermittlung, aber zusÀtzliche Konkurrenz um Leitung
Paketvermittlung- Bessere Ressourcenauslastung
- Kanal nur kurz pro Paket belegt
- Flexible Weiterleitung ĂŒber Router
- Overhead durch Header
- Keine garantierte DienstgĂŒte ohne zusĂ€tzliche Mechanismen
Statistisches Multiplexing- Sehr effiziente Ressourcennutzung
- Mehr Benutzer gleichzeitig
- KapazitÀt wird nach Bedarf zugeteilt
- Wettbewerbs- und Queuing-Verzögerungen
- Bei Überlast: Paketverlust oder hohe Latenz

Beschreibung von Nutzung durch Binomialverteilung:

steht fĂŒr Wahrscheinlichkeit, dass Nutzer gleichzeitig aktiv sind. ist die Gesamtzahl der Teilnehmer im Netzwerk, die gleichzeitig aktive Nutzer, fĂŒr die Wahrscheinlichkeit, dass ein Nutzer sendet. Mittlere Anzahl an gleichzeitig sendenden Benutzern: , wobei

⇒ , . Im Idealfall sendet nur ein Teilnehmer.

Berechnung von Benutzern bei Vermittlungsarten Leitungsvermittlung: Paketvermittlung: , ,

Paketvermittlung: Store-and-Forward-Verzögerung Bei Packet-Vermittlung werden eingehende Packets werden erst nach vollstĂ€ndigem Eingang weitergeleitet - Es entsteht also eine Verzögerung. Jedes Packet muss auf die nĂ€chste Leitung mit der Übertragungsrate erneut ĂŒbertragen werden:

Hierbei ist die Packet size in Bytes und die Übertragungsrate in bit/s der Leitung. Bei Routern ergibt sich eine Gesamtverzögerung von .

Ausbreitungsverzögerung in einem Medium

ist die Distanz, die Geschwindigkeit im Medium

Wartezeit in Puffern ist die Bandbreite der Leitung, die durchschnittliche PaketgrĂ¶ĂŸe, die durchschnittliche Paketankunftsrate und ist der Verkehrswert.

⇒ sollte immer deutlich kleiner 1, meist kleiner 0,7 sein, da sonst die Wartezeit exponentiell steigt.

Gesamtverzögerung auf einem Leitungssegment

ist meist wenige Mikrosekunden groß und daher vernachlĂ€ssigbar. steht fĂŒr die wartezeit in Puffern , fĂŒr die Übertragungsverzögerung. Sie ist signifikant wenn klein () ist. (Signifikant wenn groß.)

Durchsatz in Netzwerken

  • Durchsatz : Datenrate, mit der Daten zwischen Daten zwischen Sender und EmpfĂ€nger ausgetauscht werden:
  • Unmittelbar: ⇒ Datenrate zu einem gegebenen Zeitpunkt ()
  • Durchschnittlich: ⇒ Mittlere Rate ĂŒber lĂ€ngeren Zeitraum
  • Die Leitung auf dem Pfad, die die geringste Übertragungsrate besitzt, begrenzt den Datendurchsatz

Durchsatz in Netzwerken Der Datenverkehr zwischen Clients und Server muss den Backbone des Netzwerkes durchlaufen. Der mittlere maximale Durchsatz fĂŒr eine Ende-zu-Ende-Verbindung zwischen einem Client und einem Server bei gleichzeitigen Verbindungen im Backbone kann berechnet werden durch:

Hierbei steht fĂŒr die Rate des Clients, fĂŒr die Rate des Servers, fĂŒr die Rate des Backbones und fĂŒr die Anzahl Nutzer im Backbone.

⇒ muss grĂ¶ĂŸer/gleich sein!

TCP vs UDP TCP ist ein Protokoll fĂŒr den zuverlĂ€ssigen Transport von Nachrichten zwischen Prozessen. Es implementiert Flusskontrolle zur Anpassung der Datenrate des Senders an Verarbeitungsgeschwindigkeit des EmpfĂ€ngers sowie *Überlastkontrolle, wobei der Sender seine Datenrate an die KapazitĂ€t des Netzwerks anpasst.

UDP ist ein Protokoll fĂŒr den Best Effort Transport zwischen Prozessen. Es bietet keine Kontrollen, Orientierungen oder Zeit-/Bandbreitengarantien. UDP existiert wegen höherer Übertragungsrate, da keine Verbindung zwischen Client und Server aufgebaut wird, und keine Kontrollen existieren, die Datenraten ausbremsen. Es wird hauptsĂ€chlich bei VoIP und VCoIP (Video Conferencing over IP) verwendet.

Schichten Schicht 1: BitĂŒbertragungsschicht, Schicht 2: Sicherungsschicht, Schicht 3: Vermittlungsschicht, Schritt 4: Transportschicht, Schritt 5: Sitzungsschicht, Schritt 6: Darstellungsschicht, Schritt 7: Anwendungsschicht

Nicht persistentes HTTP Berechnung fĂŒr gesamte Übertragungszeit fĂŒr Website mit Objekten der GrĂ¶ĂŸe :

  • Eine fĂŒr TCP-Verbindungsaufbau und eine fĂŒr Homepage werden benötigt
  • Außerdem muss die Übertragungsverzögerung bei Bandbreite und Hops mitberechnet werden

Zeit des Servers, um Daten bereitzustellen:

Bei Objekten:

Persistentes HTTP ohne Pipelining Bei Persistentem HTTP wird nur eine TCP-Verbindung gebraucht, die mehrmals verwendet wird.

Summation:

⇒ Persistenz fĂŒhrt zu einer Halbierung der Übertragungszeit.

Persistentes HTTP mit Multiplexing Eine TCP Verbindung mit Multiplexing wird verwendet. Hierbei werden HTTP Requests und Responses in kleine Teile mit Headern zerlegt, können also parallel ohne Reihenfolgezwang und ohne Blockierung ĂŒbertragen werden. Jede Teilnachricht erhĂ€lt eine Stream-ID und kann vom Client wieder zusammengesetzt werden.

Persistentes HTTP mit Pipelining Auch hier wird nur eine TCP Connection verwendet. Der Browser kann zudem per HTTP-Request mehrere Objekte nacheinander anfragen. Der Webserver antwortet in der gleichen Reihenfolge, in der die Anfragen empfangen wurden.

Bei Objekten:

ErklÀrung:

  • : Entfernung zum Web-Server
  • : Anzahl der Objekte
  • : LeistungsfĂ€higkeit des Web-Servers
  • , : Route im Internet, Anzahl der Hops und Bandbreite der Leitung zwischen zwei Hops
  • : GrĂ¶ĂŸe der Objekte
Nicht persistentes HTTPPersistentes HTTP ohne Pipelining
Persistentes HTTP mit Multiplexing

Head of Line-Blockierung: Server bearbeitet Anfragen nach FCFS-Prinzip (First come, first served). Bei FCFS mĂŒssen kleine Objekte evtl. auf die Übertragung eines grĂ¶ĂŸeren Objektes warten.

HTTP/2: Multiplexing Bei Objekten bestimmt aufgrund von Multiplexing das grĂ¶ĂŸte Objekt die GesamtĂŒbertragungszeit. Es wird auch hier eine einzige TCP Session verwendet.

  • 2 fĂŒr Verbindungsaufbau
  • 1 fĂŒr Bereitstellung aller Objekte

Es gibt weitere Optimierungen:

  • Header Compression fĂŒhrt zu Reduktion von
  • Server-Push: Server analysiert HTML und schickt proaktiv die benötigten Webobjekte (3 → 2 )

2.3 TLS (Transport Layer Security) Problem: Anwendungsschichtprotokolle verwenden Daten unverschlĂŒsselt und ohne Schutz gegen VerĂ€nderungen ĂŒber das Internet. Lösung: Transportsicherheitsprotokoll TLS in Sitzungs- und Darstellungsschicht. Port 80 fĂŒr HTTP-Kommunikation im Klartext, 443 fĂŒr HTTPS mit TLS.

TLS besteht aus zwei Teil-Schichten und 6 Protokollen: Dem Alert Protocol fĂŒr Fehlerbehandlung, dem Heartbeat Protocol zum PrĂŒfen, ob Partner einer TLS-Verbindung noch aktiv ist, dem Handshake Protocol zum Aushandeln von kryptografischen SchlĂŒsseln und IntegritĂ€tssicherung, dem ChangeCipherSpec Protocol zur Aktivierung der VerschlĂŒsselung und IntegritĂ€tssicherung, dem Application-Data-Protocol, welches HTTP-Daten aus Applikationsschicht entgegennimmt und transparent weiterleitet, sowie dem Record Layer Protocol, welches die vom ADP weitergereichten Daten in Form eines TLS-Fragment fragmentiert, komprimiert, sichert und verschlĂŒsselt.

Das Handshake Protocol, welches Server auf Basis von digitalen X.509-Zertifikaten authentifiziert und kryptografische Algorithmen und SchlĂŒssel fĂŒr VerschlĂŒsselung und Integrity-Checks aushandelt, sowie das Change Cipher Spec Protocol, welches die VerschlĂŒsselung auf Server und Client aktiviert, *sind fĂŒr Sicherheit zustĂ€ndig. FĂŒr StabilitĂ€t sind das Heartbeat Protocol, welches alle 30 - 60 Sekunden eine Hearbeat-Request an den anderen Teilnehmer sendet, um zu sehen, ob dieser noch aktiv ist, und das Alert Protocol, welches der Behandlung von Fehlern dient, zustĂ€ndig.

Record Layer Protocol

  • *Fragmentierung: Byte-Strom wird in TLS-Fragmente aufgeteilt. Max. FragmentgrĂ¶ĂŸe: B
  • Datenkomprimierung (optional): Fragmente können komprimiert werden
  • Message Authentification Code (MAC): 16 Byte langer Code zur Sicherstellung von IntegritĂ€t und AuthentizitĂ€t der transportierten Daten
    • Wird mit Hash-Funktion generiert und mit einem SchlĂŒssel pro Fragment berechnet:
    • Wird an Nachricht angehĂ€ngt
  • DatenverschlĂŒsselung: VerschlĂŒsselt die Kombination aus und mittels symmetrischem VerschlĂŒsselungsverfahren unter Verwendung eines VerschlĂŒsselungsschlĂŒssels
  • Header: 5 Byte lang. EnthĂ€lt den Content-Type, die TLS-Version und LĂ€nge des Payloads.

DNS Hosts und NetzwerkgerĂ€te können ĂŒber Hostnamen und IP-Adressen eindeutig adressiert werden. Der Domain Name Service (DNS) ist ein weltweiter Dienst zur Namens- und Adressauflösung in großen Netzwerken. Auflösung bei DNS bedeutet Zuordnung: Hostname → IP-Adresse: Lookup, IP-Adresse → Hostname: Reverse Lookup. DNS ist ein Protokoll der Anwendungsschicht, wird also von Applikationen verwendet.

DNS-Namen

  • Fully Qualified Domain Name (FQDN)
    • Eindeutiger Hostname
    • Punkt am Ende wird meist weggelassen
    • DNS-Namen dĂŒrfen nur Buchstaben, Zahlen, Bindestriche und Punkte enthalten
    • DNS-Namen sind case-insensitive
    • Punkte dienen zum Trennen der Labels (TLD, Domain, Subdomain, Hostname)
    • Jedes Label darf max. 63 Zeichen lang sein
    • FQDN darf max. 255 Zeichen lang sein
  • Durch DNS können fĂŒr eine IP-Adresse mehrere Namen vergeben werden
    • A-EintrĂ€ge definieren die PrimĂ€re IP-Adresse
    • CNAMEs sind Aliasnamen
    • AAAA-EintrĂ€ge sind wie A-EintrĂ€ge, aber fĂŒr IPv6
    • Es können mehrere IP-Adressen einem kanonischem Namen zugewiesen werden → Load Balancing

DNS-Datenbank

  • DNS wird in Form einer weltweiten verteilten Datenbank zur VerfĂŒgung gestellt
  • Die verteilten Datenbanken werden durch DNS-Server bereit gestellt
  • DNS-Hierarchie besteht aus 3 Ebenen → schnelle Namensauflösung

Root-Nameserver

  • DNS ist der zentrale Dienst im Internet → Ohne DNS funktioniert das Internet nicht!
  • DNSSEC wird zur Absicherung der EintrĂ€ge der Datenbank verwendet
    • EintrĂ€ge werden mit digitalen Zertifikaten signiert
  • ICANN verwaltet die DNS Root Domain
  • Die Root-Domain besteht aus 13 logischen Root-Servern
    • Pro Root-Server existieren weltweit physikalisch verteilte DNS-Server
    • Mittels Anycast (eine Adresse fĂŒr mehrere Server, Client fragt Server an, zu dem kĂŒrzeste Route ist) erfolgt eine Lastverteilung der DNS-Anfragen ĂŒber die Server
  • Ein Root-Nameserver wird von einem Top-Level-Nameserver kontaktiert, wenn dieser einen Namen nicht auflösen kann
  • Kennt die Adressen aller TLDs (com, net, org, gg, de, uk, 
)
  • Es gibt 13 logische Root-Nameserver, die nach dem Schema [a-m].root-servers.net benannt sind

TLD-Server

  • Verantwortlich fĂŒr jeweils eine TLD
    • com, org, net, edu, 
 oder de, uk, fr, ca, jp, 

  • Die Verwaltungsstelle einer TLD ist fĂŒr alle Domainnamen innerhalb ihres Namespaces zustĂ€ndig
  • FĂŒr LĂ€nderbezogene TLDs ist das jeweilige Land verantwortlich

Autorativer DNS-Server (Autoritative DNS Server)

  • DNS-Server einer Organisation, der eine autorisierte Abbildung der Namen dieser Organisation auf IP-Adressen anbietet und diese im Internet bereitstellt.
  • Verwaltet von Organisation selbst oder Service Provider

Iterative Namensauflösung

  • Host example.com fragt nach der IP-Adresse von Host lou.gg bei Default DNS-Server dns.example.com an.
  • Lokaler DNS-Server fragt DNS-TLD-Server nach IP-Adresse fĂŒr TLD-Server fĂŒr .gg an
  • Default DNS-Server fragt danach den .gg-TLD-Server nach IP-Adresse des autoritativen DNS-Servers fĂŒr lou.gg
  • Default DNS-Server fragt autoritativen DNS-Server nach IP-Adresse fĂŒr lou.gg und erhĂ€lt diese

Zeitbedarf fĂŒr 4 DNS-Anfragen & -Antworten:

  • Sobald ein lokaler/default Nameserver von einer erfolgreiche Namensauflösung erfĂ€hrt, kann er den Eintrag cachen
  • Cache hat eine TTL, die pro DNS-Record festgelegt werden kann. Typisch sind 900 Sekunden.
  • Jeder Nameserver und auch lokale GerĂ€te cachen DNS-Records. Anfragezeit fĂŒr jedes Level an Caching:
    • EndgerĂ€t kennt IP: 0 Sekunden
    • Default Nameserver kennt IP: -2 RTT

Transportprotokolle im Internet

  • TCP (Transport Control Protocol): Applikationsorientierter, zuverlĂ€ssiger End-to-End Bytestream
    • Verbindungsaufbau: VollstĂ€ndig, mit richtiger Reihenfolge
    • Flusskontrolle: Keine Überlastung des EmpfĂ€ngers
    • Überlastkontrolle: Keine Überlastung des Netzwerks
    • Multiplexing: Verteilung der Segmente zwischen den Prozessen
    • FehlerĂŒberprĂŒfung des Segments
  • UDP (User Datagramm Protocol): Best-Effort-Transport
    • Multiplexing: Verteilung der Datagramme zwischen den Prozessen
    • *FehlerĂŒberprĂŒfung des Datagramms
  • Dienste, die beiden Protokollen nicht zur VerfĂŒgung stehen:
    • Garantien bezĂŒglich Bandbreite, Latenz, Echtheit, VerschlĂŒsselung

Multiplexing beim Sender

  • Mehrere Anwendungen kommunizieren auf einem PC ĂŒber das Netzwerk, benötigen also mehrere Sockets
  • Nachrichten von den verschiedenen Sockets werden in der Transportschicht je nach GrĂ¶ĂŸe in Segmente/Datagramme aufgeteilt, die zusĂ€tzlich einen Header H erhalten, der die Quell- und Zielportnummer der Anwendung spezifiziert
  • Segmente/Datagramme werden via Multiplexing an die Vermittlungsschicht ĂŒbergeben und erhalten dort einen Header , der Quell- und Ziel-IP-Adresse der EndgerĂ€te enthĂ€lt

Demultiplexing beim EmpfÀnger

  • EndgerĂ€t empfĂ€ngt IP-Packets
  • Jedes Packet hat im Header eine Absender-IP-Adresse und eine EmpfĂ€nger-IP-Adresse, ein TCP-Segment oder ein UDP-Datagramm und einen Absender-/EmpfĂ€nger Port
  • Hosts nutzen IP-Adressen und Portnummern werden genutzt um die Segmente/Datagramme an den richtigen Socket weiterzuleiten

TCP: Grundlagen der zuverlĂ€ssigen DatenĂŒbertragung

  • ZuverlĂ€ssiger Datentransfer bedeutet:
    • Fehlerfreie Übertragung der Bits
    • Reihenfolge der Bits bleibt erhalten
    • Alle Packets werden vollstĂ€ndig ĂŒbertragen
  • Kann in mehreren Schichten implementiert werden: Anwendungsschicht, Transportschicht und Sicherungsschicht
  • Jeweilige Protokollschicht implementiert die zuverlĂ€ssige Übertragung als Dienst
  • Die darĂŒberliegenden Netzwerkschichten können die DatenĂŒbertragung als Dienst konsumieren
  • Beispiel: HTTP/2 an sich ist unzuverlĂ€ssig, da es aber TLS & TCP nutzt wird es zuverlĂ€ssig

Überblick TCP

  • TCP (Transmission Control Protocol) ist ein Punkt-zu-Punkt Protokoll: ein Sender, ein EmpfĂ€nger.
  • TCP ist verbindungsorientiert: ein 3-Way-Handshake initialisiert einen Sende- und Empfangszustand im Sender und EmpfĂ€nger, bevor Daten ausgetauscht werden
  • Es gibt Sende- und Empfangspuffer
    • Sendepuffer: Daten von Applikationsschicht werden gesammelt und segmentweise an die Vermittlungsschicht weitergegeben.
    • Empfangspuffer: Speichert empfangene Segmente. Transportschicht stellt Daten aus Puffer byteweise der Anwendungsschicht zur VerfĂŒgung.
  • Bei TCP fließen Daten in beide Richtungen (jede Seite besitzt Sende- und Empfangspuffer)
  • TCP teilt den Bytestrom der Anwendungsschicht in Segmente auf
  • Segmente werden durch eine Sequenznummer identifiziert
  • Nach Empfang mehrerer Segmente bestĂ€tigt EmpfĂ€nger dies mit einer ACK-Nachricht
  • Pipelining: Bei TCP können mehrere Segmente gleichzeitig ĂŒber eine Verbindung gesendet werden
    • Anzahl der Packets ist die TCP Window Size
  • Flow Control:
    • EmpfĂ€nger steuert Datenfluss des Senders mit der freien KapazitĂ€t des Empfangspuffers
    • EmpfĂ€nger ĂŒbermittelt dazu die GrĂ¶ĂŸe des Empfangspuffers mit dem “Receive Window”
  • Congestion Control:
    • Netzwerk teilt ĂŒberlast mit, TCP regelt dynamisch die Maximalzahl an gleichzeitig sendbaren Packets: “Congestion Window”

TCP Segment-Aufbau

  • TCP Header ist 20 Byte lang und kann mittels Optionen erweitert werden. Optionen dĂŒrfen max. 40 Byte lang sein.
  • Sequence Number: 4 Byte groß. EnthĂ€lt eine zufĂ€llig generierte Nummer, die bei Initialisierung der Verbindung entschieden wird. Ist wĂ€hrend der DatenĂŒbertragung fĂŒr die Sortierung und Fehlererkennung zustĂ€ndig.
  • Acknowledgement Number: 4 Byte groß. Gibt die Sequence Number an, die der EmpfĂ€nger als nĂ€chstes erwartet. Nur gĂŒltig bei ACK-Flag .
  • HLEN (Header Length): Gibt die LĂ€nge des TCP-Headers in 4 Byte-Blöcken an. (Standard-LĂ€nge: 5 → )
  • Window Size: Gibt Anzahl der freien Bytes im Empfangspuffer des Senders an
  • Urgent Pointer: Wenn URG-Flag gesetzt ist zeigt dieser Wert das Ende der Urgent-Daten im Payload an, welche sofort nach dem Header beginnen.
  • PSH-Flag: Wenn gesetzt soll der TCP-Stack die empfangenen Daten sofort an die Anwendungsschicht weitergeben, ohne zu warten. Wird hĂ€ufig bei Echtzeit-Applikationen verwendet.

Three Way Handshake beim TCP-Verbindungsaufbau

  • TCP Sender und EmpfĂ€nger bauen eine Verbindung auf, bevor sie Daten austauschen können
    • Schritt 1: SYN-Packet
      • Client sender ein SYN-Segment (SYN-Flag = 1, ACK-Flag = 0) an Server
      • Übermittelt zufĂ€llig ausgewĂ€hlte initiale Client-ISN im Sequenznummernfeld.
      • Übermittelt keine Daten.
    • Schritt 2: SYNACK-Packet
      • Server empfĂ€ngt SYN und antwortet mit SYNACK-Segment (SYN = 1, ACK = 1)
      • Übermittelt initiale Sequenznummer Server-ISN und Acknowledgement-Nummer Client-ISN + 1 zur BestĂ€tigung der Anfrage
      • Es werden keine Daten ĂŒbermittelt
    • Schritt 3: ACK-Packet
      • Client empfĂ€ngt SYNACK-Packet und antwortet mit ACK-Packet (SYN = 0, ACK = 1)
      • Client bereitet Empfangspuffer fĂŒr die Verbindung vor (alloc)
      • Client ĂŒbermittelt Acknowledgement-Nummer fĂŒr den Server: Server-ISN + 1
      • Client darf Daten mitschicken

Schließen einer TCP-Verbindung

  • Verbindung kann von beiden Seiten geschlossen werden
  • Nach schließen der Verbindung werden die reservierten Ressourcen in den Systemen freigegeben
    • Schritt 1: Client sendet ein FIN-Segment (FIN-Bit = 1) an den Server. Segment enthĂ€lt die Sequenz-ID fĂŒr das nĂ€chste mögliche Byte
      • Client wechselt in Zustand FIN-Wait-1
    • Schritt 2: Server empfĂ€ngt FIN und antwortet mit ACK-Segment. Sequenz-ID wird um 1 erhöht
      • Client empfĂ€ngt ACK-Segment und Wechselt in FIN-Wait-2
      • Server wechselt in Close Wait und wartet auf Close-Anweisung der Applikation
    • Schritt 3: Server sendet nach Erhalt der Close-Anweisung ein TCP-FIN-Segment (FIN = 1) an den Client.
      • Segment enthĂ€lt Segment-ID fĂŒr das nĂ€chste mögliche Byte
      • Server wechselt in LAST-ACK
    • Schritt 4: Client empfĂ€ngt FIN-Segment, Antwortet mit LAST-ACK-Segment mit Sequenz-ID
      • Client wechselt in Time Wait, wartet auf FIN-Sendewiederholungen des Servers (falls LAST-ACK nicht angenommen wurde), die er mit neuen ACK-Segmenten beantwortet
      • Nach Wartezeit von (Max. Segment Lifetime) schließt der Client die TCP-Verbindung, geht in Closed-Zustand ĂŒber und gibt alle reservierten Ressourcen frei
      • Server empfĂ€ngt ACK-Segment, schließt TCP-Verbindung, wechselt in Closed-Zustand und gibt Ressourcen frei

TCP: Sequenznummern und ACK-Nummern

  • Die Sequenznummern (Seq-#) dienen zur Nummerierung der Segmente
  • Anfangssequenznummer (Initial Sequence Number, ISN) wird zufĂ€llig gewĂ€hlt
    • TCP Handshake addiert 1 dazu
  • Sequenznummer fĂŒr initiale DatenĂŒbertragung startet also bei ISN + 1
  • Acknowledge (ACK): BestĂ€tigung des fehlerfreien Empfangs eines Segments
    • ACK-# ist Sequenznummer des nĂ€chsten erwarteten Bytes im Byte-Strom der sendenden Applikation

TCP: Verlust eines ACK-Packets

  • Wenn Sender kein ACK-Packet fĂŒr ein Segment erhĂ€lt, weiß er nicht, ob das Packet richtig angekommen ist.
  • Lösung: TCP startet Timer fĂŒr Ă€ltestes noch nicht bestĂ€tigtes Segment
  • NeuĂŒbermittlung fĂŒr Ă€ltestes Segment, wenn Timer ĂŒberschritten wird
  • Max. Anzahl an NeuĂŒbermittlungen ist konfigurierbar

TCP Flow Control: Empfangspuffer Unter Flow Control versteht man die Anpassung der Senderate an die Verarbeitungsrate der Anwendung des EmpfÀngers.

  • EmpfĂ€nger speichert eingegangene Daten im Empfangspuffer und bestĂ€tigt diese mit einem ACK
  • Anwendungsprozess extrahiert Daten aus Empfangspuffer
  • Empfangspuffer hat GrĂ¶ĂŸe “RcvBuffer”
  • Je nach Auslastung des Hosts/Anwendung kann es zu Verzögerungen bei der Abarbeitung des Eingangspuffers kommen
  • EmpfĂ€nger ĂŒbermittelt die GrĂ¶ĂŸe seines freien Pufferspeichers RcvWindow in Bytes mit jedem ACK-Packet im TCP-Header-Feld “Receive Window” (Empfangsfenster)
  • Receive Window: 16 Bit-Feld → Max. 65kB an Daten pro RTT ĂŒbermittelbar

TCP Flow Control: RcvWindows

  • Sender liest die aktuelle GrĂ¶ĂŸe des Empfangsfensters RcvWindow und passt die Anzahl rwnd der Segmente, die gesendet werden können wie folgt an: , wobei = max. Payload-GrĂ¶ĂŸe eines Segmentes ist
  • Ist der Eingangspuffer des EmpfĂ€ngers vollgelaufen (RcvWindow = 0) kann der Sender keine Daten mehr schicken.
  • TCP Zero Window Probes: Damit der Sender einen neuen Status ĂŒber die GrĂ¶ĂŸe des Eingangspuffers vom EmpfĂ€nger erhĂ€lt, sendet der Sender weiter TCP-Segmente ohne Payload.

TCP: Flow Control

  • Max. GrĂ¶ĂŸe des Receive Windows: 16 Bit
  • Zeitdauer, um ein TCP-Segment der GrĂ¶ĂŸe auf einer Verbindung mit Hops und nĂ€herungsweise konstanter Bandbreite erfolgreich zu ĂŒbertragen ist gegeben durch
  • Bei einem RcvWindow zum Zeitpunkt werden Segmente ĂŒbertragen. Die DatenĂŒbertragungsrate ergibt sich zu:

(Typische Werte: )

TCP Flow Control: Window Scale Option

  • Originale TCP Header fĂŒr alte GerĂ€te/Leitungen gemacht, nicht fĂŒr heutige Geschwindigkeiten
  • TCP kann schlecht geĂ€ndert werden, da weltweit verwendet
  • TCP kann durch optionalen Header-Bereich erweitert werden
  • Header-Option besteht aus: Type - Length - Value (TLV)
    • Type (1 Byte): Nummer, die TCP-Option beschreibt (max. 256 Optionen)
    • Length (1 Byte): LĂ€nge der Option in Byte
    • Value: Wert der Option

TCP Congestion Control: Überlastkontrolle des Netzwerkes

  • Wenn alle Sender so viele Packets schicken, wie in den Puffer der Empfangsseite passen, kann es an Kreuzpunkten eines Netzwerkes zur Überlastung der NetzwerkgerĂ€te kommen.
  • Es kann zu steigenden Wartezeiten in der Queue eines Routers kommen → PufferĂŒberlauf, packet loss
  • Beim Sender treten Timeouts auf, verbunden mit erneuter Übertragung von bestimmten Packets
  • Überlastung eines einzelnen Routers kann auch zur Überlastung mehrerer Router fĂŒhren, da TCP auf bestimmte Packets keine Antwort erhĂ€lt und erneut Packets sendet → Andere Router-Queues werden ebenfalls ĂŒberfĂŒllt
  • Domino-Effekt kann zu Kollaps des Netzwerkes fĂŒhren

⇒ Lösung: Congestion Control (Überlastkontrolle)

  • Es gibt zwei Arten von Überlastkontrolle:
    • TCP Congestion Control
    • TCP/IP NetzwerkunterstĂŒtzte Congestion Control

TCP Congestion Control: NetzwerkunterstĂŒtzte Congestion Control

  • Router versuchen eventuelle Überlast durch Algorithmen wie Weighted Random Early Detection (WRED) vorzeitig zu prognostizieren
  • Entweder verwerfen Netzknoten gezielt und frĂŒhzeitig einzelne Packets, um Überlast anzuzaugen, oder sie signalisieren dem EmpfĂ€nger durch senden eines CE-Bits im IP-Header explizit den Überlastzustand
  • EmpfĂ€nger informiert Sender ĂŒber das ECE-Bit im TCP-Header

TCP Congestion Control: Explicit Congestion Notification (ECN)

  • Das Feld ECN besteht aus 2 Bits und befindet sich im IP-Headers-Field “Type of Service”.
  • ECN besteht aus ECT und CE Bits
  • Sender: Das ECT-Bit im IP-Header wird auf 1 gesetzt, wenn der Sender ECN unterstĂŒtzt
  • Router: Das CE-Bit im IP Header wird im Falle der Überlastung eines Routers von diesem auf ! gesetzt.

TCP Congestion Control: Explicit Congestion Notification Echo (ECE)

  • EmpfĂ€nger: Der EmpfĂ€nger setzt im Falle von CE = 1 das ECE-Bit im TCP-Header auf 1 und versendet die zugehörige ACK-Nachricht an den Sender.
  • Sender: Der Sender erkennt Congestion und reduziert Sendefenster wie bei Packetloss und informiert den EmpfĂ€nger durch das setzen der CWR-Flag (Congestion Window Reduced) im nĂ€chsten Segment

TCP Congestion Control: NetzwerkunterstĂŒtzte Congestion Control

  • ECT muss auf hosts explizit aktiviert werden (ECT = 1 im IP Header)
  • Wenn Netzwerk nicht belastet ist: ECN = ECH & CE = 10
  • Wenn Netzwerk ĂŒberlastet ist: ECN = 11
  • EmpfĂ€nger erkennt Überlast im IP-Header und setzt die ECE-Flag im nĂ€chsten ACK-Segment auf 1
  • Sender erhĂ€lt ACK Segment, erkennt Congestion und reduziert FenstergrĂ¶ĂŸe
  • EmpfĂ€nger sieht CWR und beendet das Setzen des ECE-Bits auf 1

TCP Congestion Control: Congestion Window

  • Ziel: Bestimmung der optimalen Senderate als Funktion der Netzlast.
  • Erkennung
    • Sender:
      • Ablauf von RTO-Timer → Annahme: Verlust vieler Segmente
      • Duplicate ACKs → Annahme des Verlustes einzelner Segmente
    • EmpfĂ€nger:
      • EinfĂŒhrung von Congestion Window analog zur Flow Control:
        • ZusĂ€tzliche TCP-Variable fĂŒr Sender
        • BeschrĂ€nkt die Anzahl an unbestĂ€tigten Segmenten, die der Sender senden darf
        • Congestion Control und Flow Control sind im Sender gekoppelt
        • Anzahl max. unbestĂ€tigter Segmente in der Pipeline wird durch Minimum aus und bestimmt:

TCP Congestion Control: Senderate und Congestion Window

  • Effektives Fenster bestimmt Senderate des Senders
  • Kann analog zur Senderate bei der Flusskontrolle abgeschĂ€tzt werden:
    • Am Anfang eines RTTs darf der Sender mit Datenbytes senden
    • Nach RTT:
      • Neue ACKs erhalten: Mehr oder weniger “SendeplĂ€tze” werden frei gegeben
      • Fehlende ACKs bemerkt: Reduktion der “SendeplĂ€tze”
      • Senderate D pro RTT:

TCP Congestion Control: Steuerung des Congestion Windows: AIMD *AIMD: Additive Increase Multiplicative Decrease

  • Erhöhe die FenstergrĂ¶ĂŸe um 1 pro RTT, bis Überlast erkannt wird
  • Halbiere , sobald Überlast erkannt wird

⇒ SĂ€gezahn-Verlauf

TCP Congestion Control: Slow Start fĂŒr Congestion Window

  • Mit erstem Datenversand oder nach Segmentverlust startet das TCP Slow Start-Verfahren mit einem Congestion Window der GrĂ¶ĂŸe 1 ()
  • Bei Fehlerfreiheit aller gesendeten Segmente wird das Congestion Window innerhalb eines RTTs verdoppelt:
  • Slow Start endet, wenn einen Threshold erreicht (default: 8)

TCP Tahoe

  • Verbesserung: Nach erkannter Congestion wird der Threshold auf gesetzt, wobei der letzte maximale Wert vor Congestion ist. wird auf 1 gesetzt.

TCP Reno

  • Verbesserung: Zwei FĂ€lle
  • Fall 1: RTO-Timeout
    • Verhalten wie bei TCP Tahoe. , Slow Start.
  • Fall 2: 3 doppelte ACKs
    • Vermutung: Einzelsegmentfehler, Netzwerk funktioniert noch
    • Fast Retransmit des fehlenden Packets und Übergang in “Fast Recovery”-Modus
    • Fast Recovery-Modus:

Die Netzwerkschicht

  • Die Netzwerkschicht (Network Layer) transportiert die Segmente der Transportschicht vom Sender zum EmpfĂ€nger
  • Sender verpackt Segmente der Transportschicht in IP Packets, ĂŒbergibt diese der Sicherungsschicht
  • EmpfĂ€nger entpackt das empfangene Packet und ĂŒbergibt das Segment der Transportschicht
  • Router liest Header eines IP Packets und leitet das Packet auf Basis seiner Header-Information von einem Eingangsinterface zu einem Ausgangsinterface mit dem Ziel, das Packet entlang eines möglichst schnellen Ende-zu-Ende-Pfades durch das Internet zu fĂŒhren
  • Protokoll der Vermittlungsschicht ist in jedem Internet-GerĂ€t implementiert (Host, Router)

Datenebene und Kontrollebene

  • Kontrollebene:
    • Netzwerkweite Logik: Routing
    • Bestimmt auf welcher Route ein Daten
  • Datenebene:
    • Lokale Logik pro Router: Forwarding
    • Bestimmt zu welcher Ausgangsleitung ein eingehendes Datagramm weitergeleitet wird

Dienstmodell der Netzwerk

  • Internet agiert mit “Best Effort” Service Modell. Es gibt keine Garantien auf:
    • Loss: Erfolgreiche Zustellung
    • Order: Reihenfolge der Daten
    • Timing: Zeitliche Verzögerungen
    • Bandwidth: VerfĂŒgbare Bandbreite
  • Es gibt ein erweitertes Modell:
    • Integrated Services: Ende-zu-Ende Reservierungen (Leitungsvermittlung)
    • Differentiated Services: Markierung einzelner Packets mit QualitĂ€tsklassen

4.2 IPv4 & IPv6

  • Das Internet Protocol hat die Aufgabe, Netzwerkteilnehmer mit einer eindeutigen Adresse zu versorgen und Packets an die richtige Adresse weiterzuleiten.
  • Es gibt zwei Versionen, die bei allen Internet-Teilnehmern implementiert sind.
  • IP verwendet folgende Protokolle des Control Plane:
    • Routing: OSPF, BGP
    • Status: ICMP

IPv4 Packet Format

  • IPv4 Header: 20 Byte
  • Version (4Bit): IPv4 Version “0100” → 4
  • Internet Header Length IHL (4Bit): Zahl 5, gibt die LĂ€nge des IP Headers in 4B-Einheiten an (analog zu TCP Header Length)
    • Min. LĂ€nge: 5 4B = 20B
    • Max. LĂ€nge: 15 4B = 60B
  • Type of Service TOS (8Bit):
    • DSCP (0:5): Differentiated Services Code Point (6Bit)
    • ECN (6:7): Explicit Congestion Notification (2Bit)
  • Time-To-Live (8Bit): Wert in Sekunden (max. 255), jeder Hop reduziert Wert um 1, Packets mit TTL = 0 werden gelöscht und nicht weitergeleitet
  • Upper Layer Protocol (8Bit): Von der ICANN definierte Nummern
    • 1: ICMP
    • 6: TCP
    • 17: UDP
    • 89: OSPF
  • Header Checksum (16Bit): Internet Checksum fĂŒr IP Header
  • Source & Destination IP Address (32Bit each)
  • Header Options (4Bit): Angabe in Vielfachen von 4B (32Bit)
    • Besteht aus Vielfachen von TLV-Optionen (Record Routes, Source Routes)
    • ggf. Padding, um vielfaches von 32Bit zu erreichen

IP Packet Fragmentation

  • Max. GrĂ¶ĂŸe eines Packets: 65535B
  • Layer-2-Protokolle limitieren Packet Size
    • Ethernet: MTU = 1500 Byte
    • WLAN: MTU = 2312 Byte
    • ⇒ MTU: Maximum Transfer Unit, gibt max. GrĂ¶ĂŸe fĂŒr IP Packet an.
  • Wenn die MTU einer Leitung sinkt, muss unter UmstĂ€nden das Packet vom Router fragmentiert werden, um die Leitung nicht zu blockieren
  • Jedes Fragment wird durch eine zufĂ€llig generierte Fragment-ID (16Bit) identifiziert
    • Fragment-ID wird vom Sender auch gesetzt, wenn keine Fragmentierung statt findet
  • Fragment Flags:
    • Erstes Bit: Immer 0
    • Zweites Bit: DF-Flag (Don’t Fragment)
      • DF = 0 → Fragmentierbar
      • DF = 1 → Nicht Fragmentierbar
    • Drittes Bit: MF-Flag (More Fragment)
      • MF = 0 → Letztes Fragment
      • MF = 1 → Es kommen weitere Fragmente
  • 13 Bit Fragment Offset: Offset als Vielfaches von 8 Bytes in Bezug zu Anfang des Original-Packets (Offset zeigt quasi die Nummer des Packets)

Minimale MTU

  • IPv4: 576B
  • IPv6: 1280B
  • Fragmentierung tritt erst oberhalb dieser Werte ein

IPv6 Packet Format

  • Version (4Bit): “0110” → 6
  • IP-Adressen (je 128B): Tupel aus 16B langen Adressen (Source-IP, Destination-IP)
  • Flow-Label (20Bit):
  • Traffic Class (8Bit): Analog zum Type of Service Feld in IPv4
  • Flow-Label (20Bit): Eindeutige ID, um Packets zwischen gleichem Sender und EmpfĂ€nger zu kennzeichnen
  • Payload length (16Bit): LĂ€nge des Payloads
  • Next Header (8Bit): NĂ€chster Header oder Upper Protocol
  • Hop Limit (8Bit): Anzahl max. Hops bis zum Erreichen des EmpfĂ€ngers, entspricht IPv4 TTL

IPv6 Flow Labels

  • Ziel: Quality of Service-Steuerung von IPv6-Packets
  • Flow Label dient der Identifizierung von Daten-Packets einer Anwendungssitzung zwischen gleichem Server und Client auf allen Routern
  • Router sind dann in der Lage auf alle Packets dieser Verbindung eine DienstgĂŒte anzuwenden
  • Integrated Services: Sender kann mittels Resource Reservation Protocol (RSVP) DienstgĂŒtegarantien pro Flow Label anfordern
    • Feste Bandbreiten
    • Max. Verzögerungszeit pro Packet
    • Kein Packet Loss bei Überlast

IPv6 Next Header

  • Bietet die Möglichkeit, den fixen Header um weitere Header zu ergĂ€nzen, die optionale Informationen tragen (Routing-Header, Fragment-Header, 
)
  • Next-Header-Feld kennzeichnet entweder den ersten Extension-Header (falls vorhanden) oder das Protokoll des nĂ€chsten Layers (TCP, UDP)

IPv6 Fragmentation Header

  • Fragmentierung in IPv6 wird exklusiv von der Quelle durchgefĂŒhrt, die Router fĂŒhren keine Fragmentierung durch.
  • Wenn ein IPv6-Packet zu groß fĂŒr den nĂ€chsten Router ist, generiert dieser ein ICMP-Packet, um die Quelle darĂŒber zu informieren. Die Quelle muss dann das Packet fragmentieren.
  • Fragmentation Header besteht aus:
    • Next Header (8Bit): Identifiziert den Header-Typ, der nach dem Fragmentation Header vorhanden ist
    • Reserved (8Bit): Immer 00000000
    • Fragment-Offset (13Bit): Analog zu IPv4, Vielfaches von 8B in Bezug zum Anfang
    • More Fragment M (1Bit): Analog zu IPv4
    • Identification (32Bit): Analog zu IPv4, allerdings mit doppelter GrĂ¶ĂŸe.

IPv4 vs IPv6 Header

Grundlagen der IP-Adressierung

  • Eine IP-Adresse ist die Adresse eines Interfaces eines Endsystems oder NetzwerkgerĂ€tes
  • Interface wird durch eine physikalische oder per Software emulierte Netzwerkkarte bereitgestellt
  • Endsysteme können mehrere Interfaces haben
    • IPv4: 32Bit Adresse, 4 8Bit
    • IPv6: 128Bit Adresse, 8 16Bit

Subnets

  • Eine IP-Adresse hat 2 Bestandteile: Die NetID und die HostID.
    • NetID: Ersten bits der Adresse identifizieren ein Netzwerk
    • HostID: Identifizieren das Interface eines GerĂ€tes
  • Alle Interfaces mit der gleichen NetID formen ein Subnet
  • Alle Interfaces eines Subnets können sich direkt erreichen, ohne einen Router zu durchqueren

CIDR CIDR (Classless Inter-Domain Routing) ist ein IP-Adressierungsschema, welches eine granulare Unterteilung der IP-Adressen in Subnets ermöglicht.

  • Es werden Suffixe verwendet, die die Anzahl der Bits angeben, die das Netzwerk identifizieren (die NetID)
  • Beispiel:
    • IPv4-Adresse in CIDR-Notation: 200.100.3.1/16
    • ⇒ Die ersten 16 Bits beschreiben das Netzwerk
    • 11001000.01100100.00000011.00000001
  • Mit CIDR-Notation kann der Adressraum hierarchisch aufgeteilt werden
    • Oben: Große Netzblöcke der ISPs
    • Unten: Teilnetze von Organisationen
  • Ermöglicht Aggregation: Weniger Routen im Internet
  • Ermöglicht Segmentierung: Feinere Kontrolle in lokalen Netzen

IPv4 Subnet Masks

  • In IPv4 können Subnetzmasken verwendet werden, um den Bereich der NetID und HostID zu kennzeichnen.
  • Aufbau der Netzmaske:
    • Eine 1 kennzeichnet die Bits in der IP-Adresse fĂŒr die Addressierung des Subnets
    • Eine 0 kennzeichnet die Bits fĂŒr die Adressierung des GerĂ€teanteils
    • Netzmaske: 255.255.255.0
  • Durch logisches “AND” der IP-Adresse und der Subnetzmaske erhĂ€lt man die Netzwerkadresse eines GerĂ€tes.

Netzwerk- und Broadcastadresse

  • In einem IPv4-Netzwerk gibt es 2 spezielle, ausgezeichnete Host-Adressen
    • Netzwerkadresse: Alle Host Bits auf 0
    • Broadcast-Adresse: Alle Host Bits auf 1
  • Dazwischen liegen die verfĂŒgbaren Adressen fĂŒr EndgerĂ€te und NetzwerkgerĂ€te

Netzwerke und Host-Adressen

  • Durch Verschiebung der Netzwerkmaske um 1 von links nach rechts erhĂ€lt man Adressbereiche mit einer kleineren Anzahl an Host-Adressen
    • /25: 126 Host-Adressen ()
    • /26: 62 Host-Adressen ()
    • 

  • Pro Netzwerkbit verdoppelt sich die Anzahl der Subnets

Konvention fĂŒr die Vergabe von IP-Adressen

  • Default-Gateway erhĂ€lt die kleinstmögliche IP-Adresse
  • NĂ€chstmögliche IPs gehen an zusĂ€tzliche NetzwerkgerĂ€te
  • Clients erhalten grĂ¶ĂŸtmögliche IPs

Broadcast-IP-Adressen Eine Broadcast-IP-Adresse ist eine spezielle IP-Adresse, ĂŒber die Daten an alle Hosts eines Netzwerks gleichzeitig gesendet werden.

  1. Alle GerÀte im gleichen Subnet empfangen die Nachricht
  2. Die Adresse ist immer die höchste Adresse eines Subnets
  • Ziele der Broadcast-Adresse:
    • Auffinden von Netzwerkdiensten
    • Gleichzeitige Verteilung von Daten
    • Finden von Ethernet-Adressen zu einer IP-Adresse
  • Es gibt zwei Arten von Broadcasts:
    • Directed Broadcast:
      • Broadcast-Adresse eines Netzwerks wird als Zieladresse verwendet
      • Alle Hosts im Subnet erhalten die Nachricht
      • Router leiten die Nachricht weiter
    • Spezialfall Limited Broadcast:
      • 255.255.255.255 wird als Broadcast-IP verwendet
      • IP Packets werden an alle Hosts des eigenen Subnets weitergeleitet
      • Router leiten nicht weiter
      • = Ethernet Broadcast

IPv4 Multicast-Adressen Eine Multicast-Adresse ist eine Spezielle IPv4-Adresse, die verwendet wird, um Nachrichten an eine ausgewÀhlte Gruppe von Hosts zu senden (nicht an alle Hosts wie bei einem Broadcast)

  • IPv4 Multicast-Adressen liegen im Adressbereich von 224.0.0.0 bis 239.255.255.255, sind von IANA reserviert
  • Funktionsweise:
    • Hosts, die Multicast-Daten empfangen wollen, melden sich beim Router/Switch mittels IGMP (Internet Group Management Protocol) an
    • Sender verschickt Packets an Multicast-Adresse
    • Router leiten Packets nur an Netzwerksegmente/Ports weiter, in denen Mitglieder dieser Gruppe registriert sind
    • Damit Switches die Packets zustellen können wird jeder IPv4 Multicast-Adresse eine Ethernet-Multicast-Adresse zugeordnet

Local Host, Private IPv4-Adressen

  • Local Host Adressen: 127.0.0.0/8
  • Private IPv4-Adressen:
    • 10.0.0.0/8 (10.0.0.0 - 10.255.255.255)
    • 172.16.0.0/12 (172.16.0.0 - 172.31.255.255)
    • 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)

IPv6 CIDR

  • Netzmaske aus IPv4 fĂ€llt bei IPv6 weg
  • IPv6 verwendet analog zu IPv4 die CIDR-Konvention mit Netzwerk-PrĂ€fix (auch routing prefix genannt)
  • Typischerweise bekommt ein ISP die ersten 32 Bit einer IPv6 als (Sub-) Netz von einem Regional Internet Registry zugewiesen
  • Der ISP vergibt an seine Kunden auf Antrag Company Prefixes
  • Beispiel:
    • Adresse: 2001:0db8:85a3:0873:1319:8a2e:0370:7347
    • Provider Netz-ID: 2001:0db8/32
    • Routing Prefix: 2001:0db8:85a3:08/56
    • Subnet-ID: 2001:0db8:85a3:0873/64
    • Interface-ID: 1319:8a2e:0370:7347

IPv6-Schreibweise

  • Normale IPv6 ist lang, es gibt Vereinfachungen der Schreibweise:
    • Zero Compression: Wenn eine Adresse fortlaufende Nullen in mind. 2 aneinanderhĂ€ngenden 16-Bit-Feldern enthĂ€lt, werden diese durch :: ersetzt.
      • Das :: darf in einer Adresse nur 1x vorkommen.
    • Leading Zero Compression: FĂŒhrende Nullen im 16-Bit-Feld einer IPv6-Adresse können entfernt werden. In jedem Block muss mindestens eine Zahl ĂŒbrig bleiben → Bei 4 Nullen, die noch nicht gekĂŒrzt wurden, muss eine 0 stehen bleiben
    • Kleinbuchstaben: a-f mĂŒssen als Kleinbuchstaben dargestellt werden

IPv6 Unicast

  • Unicast-Adressen identifizieren ein einzelnes Interface
  • Ein IP Packet, welches an eine Unicast-IP-Adresse adressiert ist, wird auf kĂŒrzestem Weg an seine Schnittstelle geleitet
  • Local Host: ::1/128
  • Link-Local-Unicast: PrĂ€fix fe80::/64
    • Jedes Interface generiert eine Local-Link-Adresse
    • Wird nicht gerouted, dient zur Adressierung eines Subnets
  • Unique-Local-Scope (Private)-Adressen: PrĂ€fix fc00::/8 & fd00::/8
    • Dienen zur Adressierung von Hosts innerhalb eines Unternehmensnetzwerkes und werden nur innerhalb eines LAN gerouted.
  • Global Scope-Adressen: 2000::/3
    • Öffentlich routbare IPv6-Adressen, die von der ICANN vergeben werden und im Internet eindeutig sind
  • Einer IPv6-Schnittstelle können mehrere IPv6-Unicast-Adressen gleichzeitig zugewiesen werden

Link-Local-Scope-Adressen

  • Generiert von Betriebssystem aus MAC-Adresse der Netzwerkkarte:
    • 48-Bit MAC-Adresse wird in 2 HĂ€lften aufgeteilt (00:1a:2b:3c:4d:5e → 00:1a:2b und 3c:4d:5e)
    • ff:fe wird in der Mitte eingefĂŒgt, um eine 64-Bit-Adresse zu erhalten: 00:1a:2b:ff:fe:3c:4d:5e
    • Invertieren des 7. Bit von Links: 0000 0000 ... → 0000 0010 ... = 00:1a:... → 02:1a:... (siehe U/L-Bit)
    • Fertig: 02:1a:2b:ff:fe:3c:4d:5e
    • Zusammengesetzt mit Link-Local-Prefix: fe80::02:1a:2b:ff:fe:3c:4d:5e

U/L-Bit Das 7. Bit einer IPv6-Adresse wird auch “U/L-Bit” genannt, da es anzeigt, ob eine Adresse global oder lokal vergeben wurde.

  • 0 → universally administered
  • 1 → locally administered

IPv6 Multicast

  • Multicast-Adresse: Prefix ff00::/8
    • Identifiziert eine Menge von Interfaces, welche typischerweise zu verschiedenen Hosts gehören
  • Aufbau:
    • ff: Multicast Prefix (1111 1111)
    • ffm: Drittes Hex-Zeichen ist Flag
      • 0 fĂŒr permanent definierte Adresse
      • 1 fĂŒr temporĂ€re Adresse
    • ffmn: Viertes Hex-Zeichen fĂŒr Scope
      • 1 fĂŒr Nutzung innerhalb eines Interfaces/GerĂ€tes
      • 2: fĂŒr Nutzung innerhalb eines Subnets ohne Routing
      • 8: fĂŒr Nutzung innerhalb einer Organisation (lokales Routing)
      • e: global Scope (weltweites Routing)
    • Gruppen-ID (Rest der IPv6-Adresse) ist eine ID fĂŒr eine Multicast-Gruppe
      • 1: Alle IPv6-GerĂ€te im selben LAN
      • 2: Alle Router im selben LAN
      • 


Duplicate Adress Detection

  • Zur Verhinderung von doppelten IPv6-Adressen wird ein Verfahren namens Duplicate Adress Detection (DAD) verwendet
  • DAD ist Tiel des ICMPv6 Neighbour Discovery Protocols (NDP) und ermöglicht die Erkennung von Adressen-Konflikten in einem Subnet via sog. Neighbour Solicitation Messages (NS)
  • Ablauf:
    • Interface generiert Adresse, wird als “vorlĂ€ufig” markiert
    • GerĂ€t sendet ein NS-Packet an die Solicited-Node Multicast Adresse, die aus der generierten Adresse abgeleitet wird
    • Wenn niemand Antwortet → Adresse ist frei
    • GerĂ€t markiert sie als “preferred” (bevorzugt verwendbar)

Anycast IP

  • Eine Anycast-IP-Adresse identifiziert eine ganze Gruppe von Servern, denen eine gemeinsame IP-Adresse (IPv4/IPv6) zugeteilt ist, und die weltweit verteilt stehen.
  • Diese eine IP-Adresse wird per Routing-Protokoll (BGP extern, OSPF intern) von den verschiedenen regionalen Standorten ĂŒber deren Edge-Router publiziert.
  • Wenn ein Benutzer eine Anfrage an diese IP-Adresse stellt, wird der nĂ€chstgelegene Server basierend auf dem Routing ausgewĂ€hlt.
  • Server wird basierend auf der Forwarding-Tabelle des nĂ€chstgelegenen Routers ausgewĂ€hlt.

DHCP (Dynamic Host Configuration Protocol)

  • IPs (v4 und v6) können dynamisch von einem DHCP-Server bezogen werden.
  • IPv4-basierende Hosts haben initial keine Adresse.
  • IPv6-basierende Hosts generieren selbst eine Local Interface ID & Link Local Adresse (fe80::/10), verwenden diese initial
  • DHCP ist ein Protokoll der Anwendungsschicht und verwendet UDP
  • Portnummern:
    • UDP/67: DHCPv4 Server
    • UDP/68: DHCPv4 Client
    • UDP/547: DHCPv6 Server
    • UDP/546: DHCPv6 Client
  • DHCP dient der automatischen Vergabe von IP-Adressen und Parametern.
  • IP-Adressen werden auf Zeit gemietet (Lease Time)
  • Optimal fĂŒr mobile GerĂ€te und PCs

DHCP Nachrichtenaustausch

  • DHCP-Client schickt eine DHCP-Discover-Nachricht per IPv4-Source-Adresse (0.0.0.0) an Broadcast-Adresse (255.255.255.255)
  • DHCP-Relays (Router) leiten diese Nachrichten an den DHCP-Server weiter
  • DHCP-Server antwortet mit einer DHCP-Offer-Nachricht und dem Angebot einer IP-Adresse
  • Endsystem beantragt diese IP-Adresse mittels DHCP-Request-Nachricht
  • Server vergibt IP-Adresse mittels DHCP-ACK-Nachricht
  • Der gesamte Nachrichtenverkehr erfolgt via Broadcasts

DHCPv6

  • Nachrichtenversand bei DHCPv6 erfolgt initial per Multicast, dann nur noch per Unicast
  • DHCP-Discover per Multicast
    • Client verwendet Link Local Adresse und sucht den DHCP-Server per Multicast
  • DHCP-Request per Unicast
    • Client verwendet Link Local Adresse und kennt aber die IPv6 des DHCP-Servers
  • DHCP-Offer und DHCP-ACK per Unicast
    • DHCP-Server kennt die Link-Local-Adresse des Clients und verwendet diese

DHCP und IPv4/IPv6

  • Die ersten beiden Schritte werden nur initial benötigt, danach merkt der Client sich die IP-Adresse des DHCP-Servers
  • Möchte ein Client die IP-Adresse verlĂ€ngern ĂŒberspringt er die ersten zwei Schritte und startet sofort mit einer DHCP-Request
  • DHCP-Server kann dann mit DHCP-ACK-Nachricht annehmen oder via DHCP-NACK-Nachricht ablehnen, woraufhin der Client eine neue DHCP-Discover-Nachricht senden kann

Network Address Translation (NAT)

  • Anzahl der öffentliche IP-Adressen einer Organisation kann begrenzt sein → Zu wenig IP-Adressen fĂŒr viele GerĂ€te
  • Privathaushalte brauchen nur eine IPv4-Adresse, die vom Provider temporĂ€r zugewiesen wird, aber alle GerĂ€te sollten InternetfĂ€hig sein
  • Idee: Vergebe private (weltweit nicht eindeutige) IP-Adressen an Systeme im Privaten Netzwerk
  • Router/Firewall zur Anbindung ans Internet ĂŒbersetzt die lokalen IPs in eine weltweit eindeutige IP-Adresse
  • Portnummern werden genutzt, um verschiedene GerĂ€te voneinander zu unterscheiden

NAT Overloading

  • Nicht öffentliche IP-Adressen der GerĂ€te werden auf eine öffentliche Adresse gemapped
  • Alle Packets, die das lokale Netzwerk verlassen, haben die gleiche öffentliche Outside-NAT-IP-Adresse, aber unterschiedliche Outside-TCP-Portnummern.
  • Funktionsweise:
    • Bei ausgehenden Packets ersetzt der Router die Sender-IP und den TCP-Port durch die Router-IP und einen Port im Router
    • EmpfĂ€nger schickt Antworten an Router
    • In einer NAT-Table speichert der Router die Beziehnung zwischen der IP-Adresse und dem Port des Clients mit der eigenen IP-Adresse und dem genutzten Port fĂŒr 24h
    • Bei eingehenden Packets ersetzt der Router die IP-Adresse und den Port erneut und gibt das Packet weiter an das lokale GerĂ€t

NAT Traversal mit Port Forwarding

  • Selbe Idee wie bei NAT, allerdings bekommt ein Server einen festen Port, an den alle öffentlichen Anfragen weitergeleitet werden

ARP-Request und ARP-Response Messages

ARP: Address Resolution Protocol

  • Um IPv4-Adressen einer MAC-Adresse zuzuordnen wird das Address Resolution Protocol verwendet
  • ARP ist ein Layer-2-Protokoll
  • Jedes System in einem LAN hat einen ARP-Cache, in dem Zuordnungen von IP- zu MAC-Adresse gespeichert werden
  • ARP verwendet Ethernet
  • Szenario:
    • C möchte eine Nachricht an B schicken, MAC-Adresse von B ist nicht im Cache von C
    • C schickt ARP-Query als Ethernet Broadcast Frame
      • Destination-MAC: FF-FF-FF-FF-FF-FF
    • Alle Systeme erhalten die Anfrage
    • ARP-Request enthĂ€lt IP-Adresse von B und MAC- und IP-Adresse von C als ARP-Payload
    • B empfĂ€ngt ARP-Request, erkennt eigene IP und antwortet C (Unicast) mit eigener MAC-Adresse in Form einer ARP-Response
    • C trĂ€gt die MAC-Adresse und IP-Adresse von B in ARP-Cache ein (mit TTL-Wert)
    • C verschickt eigentliche Nachricht

Routing zwischen zwei Subnets

  • ARP funktioniert via Router auch ĂŒber Subnet-Grenzen hinweg
  • Router besitzt pro Interface eine eigene ARP-Table
  • Im diesem Fall wird ein Zwischenschritt ĂŒber den Router gemacht, der dann erneut ARP verwendet, um den Host im anderen Subnet zu finden
  • Ablauf:
    • Schritt 1: Host A → Router
    • Schritt 2: Router → Host B

ICMP: Internet Control Message Protocol

  • Kontroll- und Diagnose-Protokoll
  • ICMP ist ein Layer-3-Protokoll und verwendet IP, um Nachrichten zu transportieren
  • Kann zur ÜberprĂŒfung der Verbindung zwischen zwei Hosts eingesetzt werden
  • Aufbau:
    • Type (1 Byte): Art der Nachricht
    • Code (1 Byte): Verfeinerung fĂŒr Art
    • Checksum (2 Byte): Internet Checksum fĂŒr die Nachricht
    • Content

IMCP-Types & -Codes

  • Eine ICMP-Message wird ĂŒber Type und Code beschrieben
  • Type stellt allgemeine Art der Nachricht dar, z.B.:
    • Fehler
    • Request
    • Reply
  • Code steht fĂŒr konkrete Bedeutung der Nachricht, z.B.:
    • Konkreter Fehler
    • Request fĂŒr was
    • Reply zu was

Traceroute

  • Schickt ICMPv4-Type-8-Code-0-Echo-Request mit TTL = 1 ab
  • Router 1 blockiert Packet, gibt Nachricht zurĂŒck
  • TTL wird auf 2 gesetzt
  • Router 2 blockiert Packet, gibt Nachricht zurĂŒck
  • Prozess wird so lange wiederholt, bis Ziel erreicht ist

ICMPv6: Neighbour Discovery

  • Ersatz fĂŒr ARP in IPv6
  • Verwendet ICMPv6-Nachrichten
  • Ergebnisse der Anfragen werden im sog. Neighbour Discovery Cache gespeichert
  • ICMPv6-Nachrichten werden als Multicast-Packets im Subnetz verteilt
  • Besteht aus Solicitation und Advertisment
    • Solicitation ist Multicast-Nachricht, die an Netzwerk gesendet wird, wenn nach MAC-Adresse gesucht wird
    • Advertisment ist Antwort auf Solicitation, enthĂ€lt selbe Target-Adresse

MTU Path Recovery mit ICMPv6

  • Bei IPv6 werden Packets vom Sender fragmentiert, nicht vom Router
  • Stellt ein Router auf dem Weg eines Packets zum Ziel fest, dass die Nachfolgende Schnittstelle eine zu kleine MTU-GrĂ¶ĂŸe unterstĂŒtzt, sendet der Router eine ICMPv6-Type-2, Code-0 Nachricht an den Sender und informiert ihn im Payload ĂŒber die maximal mögliche MTU
  • Der Sender fragmentiert die Packets daraufhin mit der neuen MTU und verschickt die Frames erneut