# Internetworking
> ![image_685.png](image_685.png)

## MAC und IP-Adressen im Heimatnetzwerk
![image_686.png](image_686.png)

**Bleiben MAC und IP-Adresse immer gleich?**
- MAC-Adresse
  - gelten nur im LAN
- IP-Adresse
  - muss unverändert festbleiben

## MAC-Adressierung
### Beispiel Ethernet-Header
![image_687.png](image_687.png)

### Beispiel WLAN-Header
![image_688.png](image_688.png)
- nicht mehr nur Quell- und Zieladresse
- gezwungener Nachrichtenweg über den Router


## Übersicht Network-Layer
> ![image_689.png](image_689.png)

### IP und ICMP
- **Eigenschaften**
  - IP
    - stellt Header im Network Layer zur Verfügung
      - einfache Spezifikation auf beiden Seiten
      - einziges Problem: Fragmentierung von IP-Paketen
  - ICMP
    - Fehlermeldungen und Test des Netzwerks
      - Zwischen Host/Router und Router
      - Fehler werden verursacht durch
        - fehlerhafte IP-Pakete
        - "Nichterreichbarkeit" von Netzen, Hosts, Routern, Diensten
    - Kein Client von L3, sondern von IP

#### Internet Protocol V6
> ![image_736.png](image_736.png)

##### Neighbor Discovery Protocol (NDP) in IPv6
![image_737.png](image_737.png)
![image_738.png](image_738.png)
![image_739.png](image_739.png)

#### Internet Protocol V4
- realisiert verbindungslose Kommunikation auf L3
- bietet Hardware-unabhängiges Paketformat
- ![image_690.png](image_690.png)

> ![image_735.png](image_735.png)

##### IPv4 Adressierung
![image_691.png](image_691.png)
- Netz
  - _bspw. anderes Netz für MK/FBI_
  - je feiner man die trennt, desto besser ist Performance, Sicherheit
- Host
  - Endgerät
  - braucht eine individuelle IP-Adresse

##### IPv4 Lebenszeit
- beim Routen durch vermaschte Netze könnten Datagramme ziellos unendlich lang kreisen 
  - Ressourcen werden vergeudet
> **Lösung: TTL-Feld**
> 
> Jeder Router reduziert TTL um `1`,
> bei Erreichen von `0` wird Paket gelöscht

###### Subnetting
- gleich großer Host/Netz Anteil
- Falls man vom einen mehr braucht → umrechnen

#### ICMP
![image_699.png](image_699.png)
- Falls IP Fehler bei Zustellung hat, ICMP zur Benachrichtigung des Senders nutzen
  - Destination Unreachable
  - Fragmentation Needed and DF set
    - _Fragmentierung benötigt, aber nicht erlaubt_
  - Time To Live Exceeded
  - Source Quench
    - _Host kann Datagramme nicht so schnell verarbeiten, wie diese vom Netzwerk eintreffen_

**Eigenschaften**
- ICMP-Nachrichten als Nutzdaten in IP-Paketen
- enthält
  - Typ
    - ![image_700.png](image_700.png)
  - Code
  - ggf. erste 8 Byte des IP-Pakets, das die Fehlermeldung verursacht hat
- wird direkt von `Ping` und `Traceroute` verwendet

##### ICMP: Traceroute
- Sender schickt IP-Paket mit TTL=1
  - 1. Router sendet ICMP zurück
- Sender schickt IP-Paket mit TTL=2
  - 2. Router sendet ICMP zurück
- ...


##### ICMP-Flooding-Angriff
- Angreifer überflutet Zielgerät mit ICMP-Echo-Request-Paketen
  - Zielgerät beantwortet alle
    - verbraucht Ressourcen

##### ICMP Smurf-Angriff
- Angreifer schickt ICMP-Paket mit gefälschter Quell-IP-Adresse
- Netzwerk antwortet an gefälschte IP-Adresse
- → DDoS-Angriff auf OSI-Schicht 3

##### ICMP Umleitungen in Mehrpunkt-Ethernet-Netzwerken

|                                 |            |
|---------------------------------|------------|
| Host                            | 10.0.0.100 |
| Router G1 (Standardgateway)     | 10.0.0.1   |
| Router G2 (nächster Hop von G1) | 10.0.0.2   |

Wenn Host Paket an Zielnetzwerk X sendet:
1. G1 empfängt von Host in Netzwerk in dem es verbunden ist
2. G1 überprüft Routing-Tabelle und erhält IP von G2 auf Route zu X 
3. Wenn G2 und Host in gleichem Netzwerk:
   - ICMP-Umleitungsnachricht an Host, dass er es in Zukunft direkt an G2 schicken soll
     - kürzer als Weg über G1
4. G1 schickt Datenpaket an Ziel weiter

- Abhängig von Host-Konfiguration
  - ICMP-Umleitungsnachricht ignorieren oder anwenden


###### Suboptimaler Pfad mit statischem Routing
![image_701.png](image_701.png)

###### Layer-3-Switch ersetzt Konfiguration mit einem Router
![image_702.png](image_702.png)




## Einfaches Internetwork als Beispiel
![image_692.png](image_692.png)
- von H1 aus zu H8
  - R1 packt es aus, schaut wohin, packt es ein und weiter
  - R2 packt es aus, schaut wohin, packt es ein und weiter
  - R3 packt es aus, schaut wohin, packt es ein und weiter

![image_693.png](image_693.png)
- PPP hat weniger max. Payload als ETH
  - IP muss fragmentieren in kleinere Pakete

- Zwei wichtige Punkte
  - Jedes Fragment ist ein in sich abgeschlossenes IP-Diagramm
    - Übertragung unabhängig von anderen Fragmenten über eine Reihe physikalischer Netzwerke
  - Jedes IP-Diagramm wird für jedes zu durchquerendes physikalische Netzwerk in ein entsprechendes Frame gekapselt


### Laptop and DevBoard communication within LAN
#### Step 0: Überblick
![image_694.png](image_694.png)

#### Step 1: Open the Webbrowser and Enter IP Address for the Development Board
#### Step 2: PC Generates and Transmits a Frame
![image_695.png](image_695.png)

#### Step 3: Frame is Forwarded through the Switch
![image_696.png](image_696.png)
- falls nicht bekannt an welchem Port die richtige MAC-Adresse hängt
  - an alle (bis auf Sender-Port, da ist MAC-Adresse ja bekannt) rausschicken

#### Step 4: Frame arrives at the Development Board and is forwarded to the Webserver
![image_697.png](image_697.png)
- auf jedem Layer überprüfen ob an richtiger Stelle
  - Layer 2: MAC richtig?
  - Layer 3: IP richtig?
  - Layer 4: PortNumber running auf dem device?

#### Step 5: Webserver on DevBoard generates Frame and sends the page to the pc
![image_698.png](image_698.png)

#### Step 6: Step 3 with new frame
- Frame kommt am Switch an
- Switch schaut, ob er die MAC kennt 
- Switch sendet weiter an PC (Port 3)
- PC öffnet frame und schaut, ob er für ihn ist
- PC öffnet Packet und schaut, obs passt
- PC öffnet Message 

## Network Address Translation (NAT) (nicht klausurrelevant)
- mehrere Computer teilen sich eine im Internet sichtbare IP-Adresse
  - Private Adressräume werden nicht weitergeleitet
    - ![image_703.png](image_703.png)

### NAT-Beispiel
![image_705.png](image_705.png)

### Transport Layer NAT (NAPT)
- Löst folgendes Problem
  - Browser auf 192.168.0.1:3000 greift auf www.google.de auf Port 80 zu
  - Browser auf 192.168.0.2:3000 greift auf www.google.de auf Port 80 zu
  - → reines NAT funktioniert nicht
- NAPT nutzt Port-Nummern aus TCP oder UDP
  - Gewährleistung Eindeutigkeit in Zuordnung der Pakete
- In der Praxis ist NAT Synonym für NAPT

#### NAPT Beispiel
![image_706.png](image_706.png)

### Local Router with NAT
#### NAT entry and forward Frame to ISP Router
![image_707.png](image_707.png)

#### NAT translation in local Router
![image_708.png](image_708.png)


### Übersicht NAT im globalen Netzwerk
![image_709.png](image_709.png)


## Address Resolution Protocol ARP
> Übersetzung von IP- in physikalische MAC-Adresse

### Beispiel: MAC vom Router
#### Step 1: ARP Request
![image_710.png](image_710.png)

#### Step 2: ARP Response
![image_711.png](image_711.png)

#### Step 3: Entry in ARP Table
![image_712.png](image_712.png)
- Jeder Punkt im Netzwerk wartet seine eigene ARP-Tabelle
  - Layer 2 Protokoll, das auf IP Adressen referenziert, sie aber NICHT nutzt

### 2. Beispiel ARP Request
![image_713.png](image_713.png)

### ARP Header
![image_714.png](image_714.png)


### ARP-Quiz
- Die ARP-Request Nachricht wird per Postcast verschickt ✓
- ~~ARP kann zu einer MAC-Adresse eine IP-Adresse vermitteln~~  (Reverse ARP (RARP))
- Die ARP-Tabelle enthält nur die Adressabbildungen der Systeme im LAN, mit denen kommuniziert wurde ✓
- ~~Der ARP-Reply wird per Broadcast geschickt~~  (Unicast)
- ARP kann zu einer IP-Adresse eine MAC-Adresse ermitteln ✓
- Der ARP-Reply wird nur an die anfragende Station geschickt ✓

## Dynamic Host Configuration Protocol (DHCP)
- Vereinfachung der Installation und Verwaltung von vernetzten Rechnern
- DHCP integriert weitgehend automatisch einen Rechner in das Internet bzw. Intranet

### Charakteristika
- Server
  - mehrere DHCP-Server können konfiguriert werden
    - Koordination z. Zt aber noch nicht standardisiert
- Erneuerung der Konfiguration
  - IPs müssen regelmäßig erneut angefordert werden
    - vereinfachtes Verfahren
- Optionen
  - Verfügbar für:
    - Router
    - Netzmaske
    - NTP (Network Time Protocol)-Timeserver
    - SLP (Service-Location Protocol)-Verzeichnis
    - DNS (Domain Name System)

### DHCP Header
![image_724.png](image_724.png)

| Field   | Octets | Description                                                             |
|---------|--------|-------------------------------------------------------------------------|
| op      | 1      | Messagetyp                                                              |
| htype   | 1      | Typ der Hardware-Adresse                                                |
| hlen    | 1      | Länge der Hardware-Adresse                                              |
| hops    | 1      | used in case of relay agents. Clients sets them to 0                    |
| xid     | 4      | Transaktions-ID, die vom Client und Server für die Session genutzt wird |
| secs    | 2      | Zeit [s] seit Client Prozess requested hat                              |
| flags   | 2      | Flags                                                                   |
| ciaddr  | 4      | Client IP                                                               |
| yiaddr  | 4      | IP, die dem Client vom Server zugewiesen wird                           |
| siaddr  | 4      | Server IP                                                               |
| giaddr  | 4      | IP Adresse vom Relay-Agent                                              |
| chaddr  | 16     | Client Hardware-Adresse (MAC)                                           |
| sname   | 64     | Server Hostname                                                         |
| file    | 128    | Boot filename                                                           |
| options | var    | Additional options                                                      |



### Client Server Exchange
![image_715.png](image_715.png)

### Arbeitsweise von DHCP

| Fall A                          | Fall B (`Broadcast Bit = 1`)    |
|---------------------------------|---------------------------------|
| ![image_716.png](image_716.png) | ![image_717.png](image_717.png) |

![image_718.png](image_718.png)

| **DHCP Discover**               | **DHCP Offer**                  | **DHCP Request**                | **DHCP ACK**                    | _DHCP NACK_                     |
|---------------------------------|---------------------------------|---------------------------------|---------------------------------|:--------------------------------|
| ![image_719.png](image_719.png) | ![image_720.png](image_720.png) | ![image_721.png](image_721.png) | ![image_722.png](image_722.png) | ![image_723.png](image_723.png) |


### DHCP Zustandsdiagramm
![image_725.png](image_725.png)

### DHCP Snooping
![image_726.png](image_726.png)


## Domain Name Service (DNS)
- weltweit verteilte Namensdatenbank
- besitzt hierarchische Namensstruktur
  - aufgeteilt in nicht überlappende Zonen
    - ![image_730.png](image_730.png)
    - ![image_731.png](image_731.png)
- bildet Namen auf Informationen (bspw. IP-Adressen) ab
  - www.ieee.org → 199.172.136.40
  - Vorteil: Information/Adresse, auf die abgebildet wird, kann sich ändern

### DNS Levels
![image_732.png](image_732.png)

### DNS Funktionsweise
![image_733.png](image_733.png)
![image_734.png](image_734.png)