# 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.

### 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
*