---
# System prepended metadata

title: Grundlagen

---

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