Vermittlung-vermittlungdeiner5.0 (IP, ARP, etc)

| Back to Overview

Ne quatsch

Willkommen im Neuland

Wie immer erstmal nen bisschen Einführung.

IP-Aufbau

Der Hauptgrund warum wir überhaupt eine IP brauchen ist, ist die IP-Adresse. Sie ist als globale Adresse eines Computers gedacht, anders als die MAC-Adresse die nur lokal gedacht ist. Somit verbinden wir in der Vermittlungsschicht mehrere Netzwerke miteinander.

Also nun dröseln wir zunächst mal IPv4 auf.

IPv4

Also gehen wir mal den Header durch

  • Version [4 Bit]: Entweder 4 oder 6.

  • Header Length (IHL) [4 Bit]: wie lang der Header ist, da es optionale Optionen gibt, kann es sich unterscheiden. Wichtig wo die Nutzdaten anfangen.

  • Type of Service (TOS) [8 Bit]: Priorität, etc. (unnötig)

  • Total Length [16 Bit]: Gesamtlänge des Pakets inklusive Header

  • Identification [16 Bit]: Identifiziert das Paket, wenn es fragmentiert wird (in mehrere Pakete aufgeteilt).

  • Flags [3 Bit]:

    • Bit 0 (Reserved): Muss 0 sein
    • Bit 1 (Don't Fragment): Wenn 1, darf das Paket nicht fragmentiert werden
    • Bit 2 (More Fragments): Wenn 1, gibt es noch weitere Fragmente. Wichtig für die Rekonstruktion.
  • Fragment Offset [13 Bit]: Offset des Fragments.

  • Time to Live (TTL) [8 Bit]: Wie lange das Paket noch lebt. Wenn 0, wird es verworfen. Wird in Schritten (hops) gezählt nicht in Zeit oder so :|

  • Protocol [8 Bit]: Welches Protokoll verwendet wird. z.B. TCP, UDP, ICMP, etc.

  • Header Checksum [16 Bit]: Prüft ob der Header korrekt ist. unnötig wird auch nichtmehr überprüft, wegen Stressig und so.

  • Source Address [32 Bit]: Quelladresse

  • Destination Address [32 Bit]: Zieladresse

  • Options: Zusatzinfos.

Fragmentierung

Ich würde schätzen es kommt irgendeine Aufgabe über IP-Fragmentierung dran also hier nochmal detailierter.

Ein Paket (1) mit 1976 Bytes wird aufgeteilt in 2 Pakete mit 1480 (2), 496 (3) Bytes. die Total Length von (1) ist 1996, ID = 42. MF-Flag = 0. Offset = 0.

So nun hat Paket 2 das MF-Flag = 1 und Offset = 0 aber auch die ID=42 und eine Total Length von 1500.

Paket 3 hat das MF-Flag = 0 und Offset = 185 (*8 = 1480 implizit) und auch die ID=42 und eine TotalLength von 516.

Ein Router der 2 erhält merkt das noch was fehlt, durch das MF-Flag und merkt sich die id. Wenn er dann 3 erhält, merkt er das es das letzte Paket ist und rekonstruiert das Paket 1 dank des Offsets.

IPv6

Das objektiv bessere Protokoll. Es hat mehr Adressen, ist besser, schneller, stärker. Es wurde viel weggelassen, da die Adressen auf 128-Bit erweitert wurden. Aber in IPv4 war auch viel Schwachsinn.

  • Version [4 Bit]: Entweder 4 oder 6.

  • Traffic Class [8 Bit]: Priorität, etc. (mittelmäßig unnötig... Ja DSCP gibt es aber naja) und hier ist noch bissle was wegen Congestion Notification drin.

  • Flow Label [20 Bit]: Pakete die den gleichen Flow Label haben, werden gleich behandelt.

  • Payload Length [16 Bit]: Länge des Pakets ohne Header, da der eine feste Größe hat, finaly.

  • Next Header [8 Bit]: Welches Protokoll verwendet wird. z.B. TCP, UDP, ICMP, etc. Es gibt auch ein Erweiterungsheader auf den verwiesen werden könnte.

  • Hop Limit = TTL [8 Bit]: Wie lange das Paket noch lebt. Wenn 0, wird es verworfen. Wird in Schritten (hops) gezählt nicht in Zeit oder so :|

  • Source Address [128 Bit]: Quelladresse

  • Destination Address [128 Bit]: Zieladresse

ARP

Also IP-Adressen sind eigentlich nur virtuell ausgedachte Adressen. Die echte Adresse ist die MAC-Adresse. Jeder PC-hört nur ab ob seine MAC-Adresse im Ethernet Paket drin ist. Also muss man IP-Adressen auflösen zu MAC-Adressen. Das macht ARP.

Erstmal wir das Paket soweit mit IP-geroutet bis es nichtmehr geht.

Dann überprüft ARP als erstes einen Cache, ob an schon die MAC-Adresse kennt, falls nicht Broadcastet ARP eine Frage

Heee ich brauch die MAC-Adresse von IP-xxx.xxx.xxx.xxx

Die Antwort kommt dann entweder von nem anderen Router oder vom Gerät selber.

Nun hat man die MAC-Adresse

Hacks

IPv4 war nicht auf die immense Menge von 8k Katzenvideos vorbereitet, deswegen wurde bis zur IPv6 eingesetzt wird umwege gesucht, um ein Hauptproblem zu umgehen: Adressknapheit

Früher gab es sogenannte Adressklassen (Namentlich A, B, C, D, E) die Adressen unterteilt haben, eine A Klasse hat zum Beispiel die Adressen 123.xxx.xxx.xxx123.xxx.xxx.xxx bekommen. Da wurde aber schon schnell klar, das es so viel zu viele Adressen gibt, die nicht genutzt werden, weil die Unterteilung einfach zu steif war.

Deswegen => Subnetzmasken, der Schmerz der IT.

Subnetzmasken

Eine Subnetzmaske ist eine 32-Bit Zahl, die eine Adresse in einen Host-Teil und einen Netzwerk-Teil unterteilt, man bekommt ihn indem die Subnetzmaske mit der Adresse verundet. Hier für ein Beispiel

137.243.21.1/22 => 137.243.20.0 Netzwerk-Teil und 0.0.1.1 Host-Teil

//TODO genaue Aufteilung

NAT

Network Adress Translation ist ein Verfahren, um praktisch nur eine global Adresse für ein gesamtes lokales Netzwerk zu verwenden. Dafür gibt es einen NAT-Router, der sich mit einer Abbbildungstabelle speichert welche IP-Adresse mit welchem Port kommuniziert. Ein Beispiel einer solchen Tabelle:

Protocollokaler Socketglobaler SocketZiel Socket
TCP192.168.0.4:53211137.226.12.32:53211134.130.5.1:80
TCP192.168.0.5:45201137.226.12.32:45201134.130.5.1:80

Wenn nun also ein Paket von 134.130.5.1 an die 137.226.12.32 gesendet wird, wird vom NAT-Router der Port überprüft an den lokalen Socket gesendet.

Das wars auch schon. So muss die Telekom für deine scheiß Studenten"wohnung" nur eine IP-Adresse haben und nicht 1000.

DHCP

DHCP sorgt dafür, dass dich dein PC nicht immer wenn du in einem neuen Netzwerk bist, nach der IP-Adresse fragen muss die er haben soll. Der DHCP-Server (meist auch der Router) verteilt die IP-Adressen.

DHCP-Request als Broadcast: Hey ich brauch ne IP-Adresse meine MAC ist xx:xx:xx:xx:xx:xx

DHCP-Response an das Gerät: Wer

DHCP-Request als Broadcast: Ich bin das Gerät mit der MAC xx:xx:xx:xx:xx:xx

DHCP-Response an das Gerät: Wer hat gefragt. Ne Hier hast du deine IP-Adresse xxx.xxx.xxx.xxx mit dem Default Gateway xxx.xxx.xxx.xxx und der Subnetzmaske xxx.xxx.xxx.xxx und jetzt halts maul.

Ja oke ohne die zwei in der mitte aber so gehts.

ICMP

Für Fehlermeldungen und so. z.B. wenn ein Paket nicht ankommt, wird ein ICMP-Paket zurückgeschickt. Aber nicht immer ist ja auch viel Arbeit.

Routing

Routing ist scheiße

Auch hier gibt es wieder verschiedene Ansätze aber für effizienz Messungen müssen erstmal Metriken entworfen werden. Eine ist die Hop-Count, aber auch Sachen wie Verzögerung und Netzdurchsatz sind wichtig.

  • Das einfachste zuerst: Static Routing Es gibt eine Routing-Tabelle jeder Zielknoten hat eine Zeile. In dieser Zeile gibt es mehrere Wahlen mit einer relativen Gewichtung der Wahl. Dann wähle zufällig mit den Gewichtungswahrscheinlichkeiten.

  • Backward Learning Jeder Router trift seine eigene Entscheidung isoliert. Es funktioniert also ähnlich zu einem Switch. Routing während des lernens ungünstig und Ausfälle sind nicht bedacht und werden nicht weitergemeldet.

  • Distance Vector

Jeder Router sendet seine Abstandswerte an alle (lokal) anderen Router. Die anderen Router fügen die Routing-Tabelle des anderen hinzu und wählen die beste Route.

Das Vector kommt von der Notation dahinter, in der Routing Tabelle stehen (Ziel, Next Hop, Kosten), eine Übertragung der Abstände wird als Vector bezeichnet ((A,4), (B,2), (C,0), (D,3), ...).

Dat Problem bei dem ganzen shit ist der Bouncing Effect. Wenn B mit 1 direkt zu A kann und C mit 2 zu A über B und mit 5 direkt zu A kann, aber dann die Verbindung A-B ausfällt, sendet C seinen Traffic an B mit Kosten 1, B sendet ihn zurück, da es der beste/einzige Weg ist mit Kosten 2, C denkt aber weiterhin B währe der beste Weg und sendet ihn wieder zurück, B währe der beste Weg und so weiter. Bis Kosten 5 wo C es dann auch irgendwann mal checkt.

Falls man gar nicht nach A kommt gibt es ein Count-To-Infinity.

  • Link State

Link state verteilt das Wissen über die Verbindungen und die Kosten. Jeder Router sendet seine Nachbarkosten per Flooding ins Netz mit Altersangaben und Sequenznummer für Duplikate.

Nun nutzt man Dijkstra um den kürzesten Weg zu finden.

Um das komplete Flooding zu verhindern, werden Duplikate mit Sequenznummern und Altersangaben verworfen.

Ich glaube Dijkstra guckt ihr euch kurz eine Animation an.

Uff das war anstrengend aber fürs üben sind Aufgaben wichtig:

Aufgaben

Du bekommst ein Netzwerk mit Subnetzen und Routern. Du musst die IP-Adressen und die Routing-Tabelle ausrechnen.

Du bekommst eine Network-Adresse wie 137.222.25.0/22 und musst sie in 6 Subnetze aufteilen. mit Subnetz 1 und 2 doppelt so groß wie die anderen

Erkläre die Unterschiede zwischen IPv4 und IPv6

Erkläre was das Problem bei Distance Vector Routing ist

Führe mit einer gegebenen Tabelle Dijkstra aus

Aufgabe 7.3 a) Kosten für i) Untersee kabel benachteiligen, ii) Hohe Kapazität bevorzugen iii) load balancen