# 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) - 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 | Trasaktions-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](#dhcp-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)