# Grundlagen * Schichtmodell 1. Bitübertragungsschicht 2. Sicherungsschicht 3. IP 4. Protokollschicht 5. Anwendungsschicht # Transportschicht ## Aufgaben ### Fehlerkontrolle #### Fehlertypen * Einzelbitfehler * Paketverlust * Duplikate #### Fehlererkennung * **Paritätsbits** * gerade/ungerade Parität * Spalten/Zeilenparität um Einzelbitfehler zu verbessern * **Prüfsumme** (CRC) * Vereinbarung von Generatorpolynom * Länge Generatorpolynom + 1 => Anzahl Prüfbits * Nachricht durch Generatorpolynom teilen und Prüfbits anhängen * Empfänger teilt Nachricht durch Generatorpolynom => Rest 0: Kein Fehler, Rest 1: Fehler * **Sequenznummer** * identifiziert Paket * Arten an Sequenznummern: * kumulativ: quittiert bis r-1 (Paket 8 übermittelt, quittiere 9) * selektiv: quittiert jedes einzelne Paket (Paket 8 wird mit 8 quittiert) * Piggybacking * Quittungen an Datenakete anfügen ### Fehlerbehebung * Empfänger: Quittierung * Sender: Zeitüberwachung (Timeout für Quittung) * läuft der Timer aus wird das Paket erneut verschickt * **ARQ** => Automatic Repeat Request (nach Timeout) * Sender setzt Timer nach übermittlung von Paket. Trifft die Quittung nicht ein wird das Paket wiederholt (**ARQ**): * **Go-Back-N** (kumulativ) => alle Pakete nach dem Fehlerhaften werden verworfen und müssen weiderholt werden * Viel Bandbreite bei hoher Fehlerrate * einfache Verarbeitung * **Selective Repeat**: Ab fehlerhaftem Paket wird selektiv quittiert. Daher muss nur das fehlerhafte Paket wiederholt werden * weniger Bandbreite * höherer Verwaltungsaufwand/Pufferspeicher * **Forward Error Correction** (FEC) * Anfügen von redundanten Paketen um Originalpakete bei Verlust zu rekonstruieren * werden zu n Originalpaketen x Redundanzpakete angefügt kann man x Pakete wiederherstellen ### Flusskontrolle Empfänger vor zu vielen Paketen schützen * Sliding Window verfahren * eingeräumter Kredit beinhaltetet Sequenznummern die verschickt werden können * Kreditfenster wird bei jeder Quittung aktualisiert * Ist das Kreditfenster aufgebraucht darf der Sender nicht mehr senden ### Staukontrolle Verhinderung von Überlastung im Netzinneren * Werte * Fenstergröße * Pakete die in einem Übertragungsrunde verschickt werden können * Schwellwert * Schwellwert ab welchem vo der Slow Start Phase in die Congestion Avoidance Phase gewechselt wird * Phasen * Slow Start | Fenstergröße < Schwellwert * Fenstergröße wird pro Übertragungsrunde verdoppelt (exponentiell) * Congestion Avoidance | Fenstergröße > Schwellwert * Fenstergröße wächst pro Übertragungsrunde um 1 an (linear) * Stau * Fenstergröße wird auf 1 gesetzt * Schwellwert wird auf die halbe Fenstergröße gesetzt (kann sich daher auch vergrößern) ### Verbindungsmanagement #### Verbindungsaufbau * 3 Wege Handshake * Connect * Connect, Ack * Ack * 2 Wege Handshake #### Verbindungsabbau * symmetrisch * asymmetrisch # Lans ## Mac Adresse * identifiziert die physikalische Netzwerkschnittstelle * Eigenschaften * 48bit, hexadezimal * flach => keine Standortinformationen * weltweit eindueitg * Organisationskennung von IEEE * Seriennummer wird von der organsation vergeben * Aufbau * Individual / Group (1) * Universal / Local (1) * Organisationskennung (22) * Seriennummer (24) ## Systeme ### Hub * leitet Paket weiter * vergrößert physische Ausdehnung ### Switch * leitet gezielt anhand der Mac Adresse weiter * erhöht Anzahl anschließbarer Stationen #### Funktionalität * Filterdatenbasis wird dynamisch gelernt (wenn Stationen Pakete schicken) * Paketverarbeitung * Forwarding (Empfänger bekannt) * Filtern (Empfänger an Schnittstelle an welcher Paket empfangen wurde) * Fluten (Empfänger unbekannt) ### Router * leitet anhand IP Adresse weiter * verbindet Teilnetze * bessere Sicherheit als Switch ## Wlan * flexibles, lokales Netzwerk * höhere Fehlerrate als leitungsgebundene Netzwerke * Access Points senden periodisch SSID (Service Set Identifier = WLAN-Kennung) * Kollisionsdomäne * Netzwerksegment welches gemeinsam genutzt wird * pot. Kollision der Pakete ### Kollisionsvermeidung (Carrier Sense Multiple Access / Collision Avoidance) * Mindestabstände zwischen aufeinanderfolgenden Paketen * DIFS (Distributed Inter Frame Spacing) * SIFS (Short Inter Frame Spacing) * Quittungen / Priorisierung * Backoff Algorithmus * um bei belegtem Medium keine Kollisionen aufgrund multipler abgelaufenen (D/S)IFS Zeiten zu haben * zufällige Zeit #### Verfahren 1. Carrier Sense * sendewillige Station hört Medium ab 2. Datenpaket * Medium ist frei => DIFS / senden * Medium ist belegt => Backoff Wert festlegen und bei freiem Medium dekrementieren, nach Ablauf senden 3. Quittung * SIFS warten und senden #### RTS / CTS * Request to Send (Sender) und Clear To Send (Empfänger) * RTS Pakete kleiner als Datenpakete => bei Kollision muss weniger wiederholt werden # IP * Übertragung von Datagrammen von Sender zu Empfänger * Segmentierne und Reassemblieren * Datagramm auf MTU Segmentieren * wieder reassemblieren * Überprüfen der Lebenszeit * Eigenschaften * Verbindungslos und unzuverlässig * Fehleranzeige durch ICMP ## IPv4 * Eigenschaften * 32 bit lang * hierarchisch #### CIDR / Classful Inter Domain Routing * IP-Adresse/Präfixlämge * Netzwerkpräfix => Bits welche das Netzwerk beschreiben * Subnetz * Definition * Netzwerkpräfix * Subnetz-ID * Host-ID (Adressbits) * Subnetzid => Alle Adressbits auf 0 * Broadcast => Alle Addressbits auf 1 ## IPv6 * Eigenschaften * 128 bits lang * 16 bits Blöcke hexadezimal kodiert * Führende Nullen unterdrücken * Einmal können Nullerblöcke zusammengefasst werden (...4FA1::12AC... anstatt ...4FA2:0000:0000:12AC...) * Aufteilung * Global Unicast * Präfix (001 => 3 bits) * Global Routing Präfix (48 (inkl. Präfix)) => hierarchisch * Subnetz ID (16) => Kennzeichnung eines SUbnets * Interface ID (64) * Unique Local * Präfix = fc00 (1111 110 => 7) * L / Local (1) * Global ID (40) * Subnetz ID (16) * Interface ID (16) * Link Local => wird bei Systemstart automatisch vergeben * Präfix = fe80 (1111 1110 10 => 10 ) * Interface ID * Multicast * Präfix = ff00 * Interface ID kann aus MAC gebildet werden * Dual Stack als übergangsphase (IPv4 & IPv6 (default) ) ## DHCP * Client Server PRotokoll zur Adresskonfiguration * DHCP Server * verwaltet Adresspool * permanente Adressen * temporäre Adressen * DHCP Relay leitet die Nachrichten in Subnetze weiter #### Ablauf 1. DHCP Discover * S-IP: 0.0.0.0 * D-IP: 255.255.255.255 * S-MAC: Station/Client Mac * D-MAC: ff-ff-ff-ff-ff-ff * DHCP Offer * S-IP: Server IP * D-IP: 255.255.255.255 * S-MAC: Server-MAC * D-MAC: Client MAC * IP, Subnetzmaske, Lifetime * DHCP Request * S-IP: 0.0.0.0 * D-IP 255.255.255.255 * S-MAC: Client MAC * S-Name: IP-Server * Parameter der Offer * DHCP-Ack * S-IP: IP-Server * D-IP: 255.255.255.255 * D-MAC: Client MAC * Parameter der Offer ## ICMP * Fehlermeldungen * Zieladresse nicht erreichbar * Zeit abgelaufen * Flasche Parmeter * Statusanfragen * Echo Request / Reply * Zeitstempel (Paketumlaufzeit) * Beispiel traceroute * ICMP Echo Requests * Pakete mit erhöhtem TTL Wert * Läuft dieser ab wird eine Fehlermeludung zurückgegeben ICMP TTL expired * Empfänger antwortet mit ICMP Echo Reply ## ARP * IP auf MAC abbilden * Ablauf * ARP Request (Broadcast) * ARP reply (Rechner schickt seine MAC) * MAC adressen werden für eine gewisse Zeit zwischengespeichert ## Routing * Kopplung von Netzwerken * Wegewahl * FIFO => First in First out * Datagramm wird als einzelne Einheit gesehen * alle Pakete werden gleichbehandelt * Gesamtverzögerung * Processing Delay * Queing Delay * Transmission Delay (Länge des Paketes) * Propagation Delay (Zeit auf Link) ### Routingtabelle * Aufbau * Ziel * Netzmaske * Gateway * Interface * Bitweises Und aus Ziel IP und Netzmaske => Vergleich mit Netzmaske * Standardroute über Standard Router (Default Gateway) ### Dijkstra Algorithmus * Verteilt und Adaptives Routing * jeder trifft seine eigene Entscheidung * Informationen werden periodisch ausgetauscht (Topologie Änderungen) * Link State Routing (Informationen werden in Hello World Paketen geflutet) * Open Shortest Path First ## NAT * pakete mit privaten Adressen weleche nicht ins Internet geroutet werden sollen * NAT Router setzen private IP in öffentliche IP:PORT Kombination um * AUsgehende Pakete: Sende IP/Port werden von lokaler IP auf Router IP + eigener Port umegschrieben, in Tabelle gespeichert * Empfangende Pakete: Empfangs IP wird auf lokale IP:PORT umgeschrieben werden anhand Daten in NAT Tabelle ## VPN * Netzwerk welches über Tunnel angesprochen werden kann * Site to Site oder Host to Site * Original Paket wird verschlüsselt und erhält Tunnel Header mit Ziel VPN Gateway # Protokolle ## Grundlagen ### Port * Dient der Addressierung einer Anwendung * well known portes (0 - 1023) * registered ports (1024 - 49151) * dynamic ports (49152 - 65535) ### Socket * eindeutiger Verbindungsendpunkt * protokoll://ip:port ## TCP * zuverlässiges und verbindungsorientiertes Transportprotokoll * Multiplexen / Demultiplexen über IP * Eigenschaften * Reihenfolgegetreu * Flusskontrolle * Fehlerkontrolle * Staukontrolle ### Verbindungen #### Verbindungsaufbau 1. Syn (A) 2. Syn, Ack (B) 3. Ack (A) #### Verbindungabbau 1. Fin (A) 2. Ack (B) 3. evtl. Daten (B) 4. Fin (B) * Station geht in Time Wait und wartet ob ACK eintrifft 6. Ack (A) * Geht ein Paket verloren wird es wiederholt, da kein ACK eingetroffen wird. ![](https://i.imgur.com/nGuDLb3.png) ### Sequenznummern * Bytes werden nummeriert (Sequenz 0 erstes Byte) * kumulative Quittung * SACK oermitted als Option * geht was verloren werden über left edge und right edge diese Pakete selektiv quittiert ### Flusskontrolle * Sliding Window * Acknowledgment gibt das nächste erwartete Byte an * Window Size gibt an wie viele bytes noch akzeptiert werden * Sender & Empfänger verwalten Puffer * Window Size = MaxRcvBuffer - (LastByteRcvd - LastByteRead) ### Staukontrolle * siehe oben ### Beispiel Webanfragen #### HTTP 1.1 * persistente Verbindungen * Head of Line Blocking => geht ein Paket verloren blockiert dies alle anderen * Pipelining (mehrere ANfragen ohne auf Antwort zu warten) #### HTTP 2 * mehrere Streams über eine Verbindung ## UDP * unzuverlässiges und verbindungsloses Transportprotokoll ### RTP (Real Time Transport Protocol) * definiert Basisoperationen für Paketformate * Codierung * Seuqenznummer * Zeitstempel * keine garantierte Datenqualität ## TLS * auf den 3 Wege Handshake folgt ein TLS Handshake * anschließend weren über das Record Protocol Daten übertragen ## QUIC * aufgebaut auf UDP * verbindungsortientiert und zuverlässig * minimale Verbindungsaufbauverzögerung * Multistreaming (mehrere parallele Streams) * Sicherer Tramsport (TLS 1.3) # Anwendungen ## DNS * IP Adressen auf logische Namen abbilden * verteilte Datenbank mit hierarchischen Nameservern * UDP, Port 53 * DNS-Namensraum * Top Level Domain * unterteilt nach Funktion / Ländern * Fully Qualified DOmain Name * eindeutiger Hiost Name über den Pfad bis zur Wurzel (im hierarchischen Baum) * IDN * landesspezifische Zeichen (codiert) * Aufteilung in Zonen * jeweils mit primären und sekundärem DNS Server * Hierarchie * Root Name Server * TLD Name Server * Authoritative Name-Server * DNS-Query & DNS-Reply nutzen das gleiche Format * DNS Eintrag: * Typ (A, AAAA, MX, NS, CNAME) * Time TO Live * Class = IN * Wert * Abfragen * iterativ * ist die Antwort auf die Anfrage unbekannt wird im DNS Reply auf den nächsten DNS Server verwiesen * rekursiv * der DNS Server stellt die folgeanfragen selber * Caching um system effizient zu machen * ## Streaming (DASH) * Client beginnt abspielen bevor alle Daten da sind * Qualität * Zuverlässigkeit (Paketverlust, Bitfehler, Duplikate) * Bandbreite (benötigte Datenrate) * Jitter (Verzögerungsschwankung der Pakete) * Delay (Ende zu Ende Verzögerung) * Jitter Puffer beim Empfänger ### DASH * Mediendatei in Chunks zerlegt * Chunks in mehreren Versionen (Bitrate / Qualität) * Server erstellt Manifest mit Versionen * Client fragt Manifest ab und sucht sich selber die passende Version aus (anhand der Bandbreite) ## VoIP / SIP * Verzögerung ist wichtig als Qualitätsfaktor * FEC / Piggybacking * Redundanzpakete mitschicken * höhere Kompression als ursprüngliches Paket ### SIP * Signalisierungsprotokoll zum Auf/ABbau von Sitzungen * UDP, Port 5060 * Akteure * SIP-Client: Software im Endsystem * SIP-Registrar: akzeptiert Registrierungen * speichert SIP URIs im Location Service * SIP Benutzer teilt Kontaktadresse über REGISTER Nachricht mit * SIP-Proxy: leitet Anfragen weiter * SIP URI * Adresse des Benutzers (sip:felix@rufmichan.io) #### Sizungsaufbau/abbau (A mit B) * A sendet INVITE an ihren Proxy * dieser Leitet INVITE an Proxy von B weiter * Proxy von B leitet den INVITE an B weiter * die Antwort wird auf den gleichen Weg zurückgeschickt * Datenübertragung findet anschließend direkt statt * Sitzungsabbau über Bye Nachricht direkt * ist ein Nutzer bei einem fremden Domäne meldet er dies über eine REGISTER Nachricht bei seinem Heimat-Registrar * Session Forwarding * Bs Ursprungsproxy leitet den Invite weiter * bergleichbar mit rekursiv bei DNS * Redirect * SIP Proxy von Unrsprungsdomäne antwortet mit REDIRECT * As Proxy kontaktiert nun den neuen SIP Proxy direkt ## Firewalls * Internes Netz vor Zugriff von außen schützen * arbeitet auf Anwendungsebene oder Paketebene ### stateless * Filter * IP-Adresse * Transportprotokoll * Port * TCP Bits | Schnittstelle | Sende-IP | Ziel-IP | Sende-Port | Ziel-Port | Protokoll | Anwendung | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | Internet | * | Webserver-IP | * | 443 | TCP | Accept | Internet | * | * | dynamisch | 53 | UDP | Accept | Internet | * | * | 53 | dynamisch | UDP | Accept | * | * | * | * | * | * | Deny ### stateful * Pakete werden nicht isoliert betractet * Access Control List definiert wann Eintrag erstellt (Set) oder geprüft (Check) wird * Beispiel * TCP Pakete nur für bestehende Verbindungen * UDP Antwrtpakete nur wenn Anfrage gestelllt wurde * höhere Sicherheit als reiner Paketfilter *