# Netze ## OSI Referenzmodell ![2024_07_08-17_20_22](https://hackmd.io/_uploads/S15AmtFvC.png) ### OSI Modell vs. TCP/IP Modell ![2024_07_08-17_27_35](https://hackmd.io/_uploads/rywuSKtPC.png) ![2024_07_09-16_33_07](https://hackmd.io/_uploads/Hki4565D0.png) ### Schicht 1: Physical Layer Übertragung und empfangen von Datenströmen in binärer Darstellung über ein physikalisches Medium. - Objekte: Bits - Geräte: Repeater, Hubs - Protokol: ### Schicht 2: Data link Übertragung von Dataframes zwischen zwei Nodes verbunden mit einem Physikalischen Medium. - Objekte: Frame - Geräte: Switches - Protokol: Address Resolution Protocol (ARP), Neighbor Discovery Protocol (NDP) - Adressen: MAC ### Schicht 3: Network Layer Strukturierung und Verwaltung von mehrknotigen Netzwerken, dies beinhaltet adressierung, routing und traffic control. - Objekte: Pakete - Geräte: Router - Protokol: IPv4, IPv6 - Adressen: IP-Adresse ### Schicht 4: Transport Layer Ende-zu-Ende Kommunitikation zwischen zwei Endpunkten in einem Netzwerk. - Objekte: Segment (TCP), Datagram (UDP) - Protokol: TCP, UDP - Adressen: Ports ### Schicht 5-7: Anwendungsschicht - Objekte: Daten - Protokol: HTTP, DNS - Adressen: Socket ### Komponenten des OSI-Modells - Systeme (systems) - Schichten (layers) - Dienste (services) - Instanzen (entities) - Protokolle (protocols) - Medien (media) ![2024_07_12-16_32_14](https://hackmd.io/_uploads/r1-Y02AvC.png) ##### PDUs und Einkapselung - Von Schicht zu Schicht werden Protokollkontrollinformationen, meist in Form von sog. „Headern“ hinzugefügt, „Einkapselung“ (führt zu => Protokolloverhead) - Von Instant in Schicht n von System A hinzugefügte Header wird in System B von der „Partner-Instanz“ derselben Schicht entfernt und ausgewertet ![2024_07_12-16_32_31](https://hackmd.io/_uploads/Bk3YAnRwA.png) #### Instanzen in einem System SAP = Service Accesspoint (Dienstzugangspunkt, hier wird ein Dienst zur Verfügung gestellt) ![2024_07_12-16_33_00](https://hackmd.io/_uploads/r1YjA2CwC.png) - Bezeichnungen: Instanz / Entität / Entity - Aktives Element einer Schicht, das eine Menge von Fähigkeiten (capabilities) beinhaltet. - Realisierung einer Entity - als Hardware (z.B. auf einer LAN-Karte) - als Softwaremodul im Betriebssystem - als Anwendungsprozess - Kommunikation der Entitäten läuft immer und nur über die Layer-Schnittstellen: eine (N)-entity kommuniziert "nach oben" über einen (N)-SAP und nach unten über einen (N-1)-SAP **Ausnahme:** - Entitäten der Schicht 7 (diese können untereinander direkt kommunizieren) und - Entitäten der Schicht 1 (diese sind ohne einen SAP an das physische Medium angebunden) - Instanzen können mehrere SAPs der darunterliegenden Schicht nutzen - Instanzen können ihre Dienste an mehreren SAPs der darüber liegenden Schicht anbieten. - Jeder (N)-SAP ist genau einer (N)-Instanz und höchstens einer (N+1) Instanz zugeordnet. - Der **Dienst einer Schicht** wird durch systemübergreifenden Zusammenspiel von Partner Instanzen (**peer entities**) in dieser Schicht erbracht. - Hierzu tauschen die Partnerinstanzen einer Schicht (N)-Daten nach genau festgelegten Regeln aus (=> (N)-protocol). Diese Daten werden (N)-protocol data units (**(N)-PDU**s, (N)-Protokolldateneinheiten) genannt. - Ein **Protokoll** definiert sich aus Regeln für **Syntax, Semantik** und **Timing** des PDU-Austausches. ### Kommunikation über "Relay Open Systems" ![2024_07_12-16_34_26](https://hackmd.io/_uploads/H1gbypRP0.png) ## Netztopologien ### Vollvermaschtes Netz ![image](https://hackmd.io/_uploads/SkuVdKKvC.png) > **Bewertung** - sehr teuer - vielfach redundant - Ausfallsicherheit hoch - //Lösung - hohe Zuverlässgkeit - hohe leistungsfähigkeit - sehr hohe kosten für leitungen - sehr hoher aufwand für wartung - Wo: Kritische Infrastruktur --- ### Teilvermaschtes Netz ![image](https://hackmd.io/_uploads/S17IOttD0.png) > **Bewertung** - hohe Zuverlässgkeit - hohe leistungsfähigkeit - sehr hohe kosten für leitungen - sehr hoher aufwand für wartung - Wo: Kritische Infrastruktur --- ### einfacher gerichteter Ring ![image](https://hackmd.io/_uploads/Hy8hOKYvR.png) > **Bewertung** - Vorteile: - Große Netzausdehnung(Nodes sind Verstärker vs Bus-Topologie) - Geringer Kabelzuwachs bei hinzufügen einer neuen Station vgl zu Stern - Nachteile: - Hoher Verkabelungsbedarf - Störung eines Nodes führt zu Netzausfall - Aufwändige Fehlersuche --- ### doppelt (gegenläufig) gerichteter Ring ![image](https://hackmd.io/_uploads/H1VTdYKD0.png) > **Bewertung** Bessere Ausfallsicherheit und Leistung als einfach gerichteter Ring. Jedoch höhere Kosten durch doppelte Verkabelung --- ### Baum ![image](https://hackmd.io/_uploads/rktDdKFvC.png) > **Bewertung** - **Vorteil** - Der Ausfall eines Blattes hat keine Konsequenzen - Gute Struktur für Erweiterungen - Große Entfernungen realisierbar - Nachteil: - Bei Ausfall eines zentralen Knoten ist der ganze "Ast" betroffen - Lange Dauer für die Nachrichtenübermittlung bei sehr tiefen Bäumen - Skalierbarkeit ist definiert durch die Wurzelknoten --- ### Bus ![image](https://hackmd.io/_uploads/r1OtuYFvR.png) > **Bewertung** - Vorteile: - Einfache Verkabelung - geringe kosten für leistungen - Aus eines Nodes hat keine konsequenzen für netz - Nachteil: - Begrenzte Skalierbarkeit - Leitungsbruch führt zu Netzausfall - Übertragungen können abgehört werden - Aufwändige Zugriffsmethoden (Wer sendet wann ? ) --- ### Sterntopologie ![image](https://hackmd.io/_uploads/ryDidFFwR.png) > **Bewertung** - Vorteile: - Einfache Vernetzung und Erweiterung - Keine Störung, wenn ein Node ausfällt - Leichte Fehlersuche - Nachteile: - Netzausfall bei Ausfall oder Überlastung des Knotens --- ### Hierarchisches Netz (Core Network) ![image](https://hackmd.io/_uploads/Hk1kYKKP0.png) --- ## Verkabelungssysteme ### Parmeter zur Beschreibung eines Mediums - **Laufzeit** der Signale und auftretende **Verzögerungen** - **Kompatibilität** / Charakterisierung der Leitungen (häufig mittels "Wellenwiderstand") - **Leistungsverlust** bei der Übertragung - **Störanfälligkeit** durch Signale von außen / durch benachbarten Leitungen - Maximale übertragbare **Datenrate** ### Signallaufzeit Typische Signalausbreitungsgeschwindigkeit in einem Kupfer-Kabel: 0,6 c (wobei c = Lichtgeschwindigkeit = 300.00km/s) Parameter bei Twisted-Pair-Verkabelung - **Delay:** maximal zulässige Laufzeit eines Signals, normiert auf 100 m Kabellänge. - **Delay Skew:** maximal zulässiger Laufzeitunterschied zwischen Aderpaaren eines Kabels (typisch 10% vom Delay-Wert). Wichtig bei viel paarigen Ü-Verfahren, wie z.B. Gigabit-Ethernet. ### Wellenwiderstand (Impedanz) - **Charakteristische Größe** eines Kabels, die durch Geometrie und Material des Kabelaufbaus bestimmt wird. (Ist **kein** Qualitätsmerkmal, sollte aber überall gleich sein!) - Kabel müssen den gleichen **Wellenwiderstand** haben. - Änderung des Wellenwiderstands führen zu **Reflexionen** des Signals - Um **Reflexionen** zu verhindern, müssen Kabel außerdem mit einem Widerstand in Größe des Wellenwiderstandes abgeschlossen werden. ### Dämpfung (=Leistungsverlust längs einer Leitung) $a = 10 \log_{10(P_{in}/P_{out})}$ a Dämpfung (attenuation) $P_{in}$ Leistung des Eingangssignals $P_{out}$ Leistung des Ausgangssignals übliche Einheit: db/100 m => das beschreibt dann die Dämpfung eines 100 m langen Leitungsstückes ### Nahübersprechdämpfung - NEXT (Near End Cross Talk) ![2024_07_08-18_03_36](https://hackmd.io/_uploads/B1jyCFFPC.png) $NEXT = 10 \log_{10}(P_{in}/P_{noise})$ $NEXT$ near end cross talk $P_{Sender}$ Leistung des Senders $P_{noise}$ Leistung des Nebensprechsignals (gemessen am Eingang eines benachbarten Kabels) ### ACR - attenuation to cross talk ratio $ACR = NEXT - a$ $NEXT$ near end cross talk $a$ Dämpfung - Im ACR werden im Grunde das Übersprechen (NEXT) und die Dämpfung (a) "zusammengefasst" - Der ACR-Wert sollte bei einem Kabel möglichst groß sein, beschreibt die "Qualität" eines Kabels ## Bandbreite - **Frequenzbereich**, der von einem Medium "gut" übertragen werden kann. Ergibt sich aus der Differenz der höchsten und der niedrigsten Frequenz, die übertragen werden kann => **Das zu übertragende Signal und die Übertragungsleitung müssen "zusammenpassen".** - Analoges Telefon: benötigt nur 4 kHz ![2024_07_08-18_06_31](https://hackmd.io/_uploads/ryE5RYYDA.png) ### Kanalkapazität **Fragestellung:** - Welche Datenmenge kann über eine Datenleitung übertragen werden ? - **Maßeinheit:** Bit pro Sekunde, Bit/s **Einflussfaktoren** - **Bandbreite** der Datenleitung - Art der Kodierung des digitalen Signals - Störungen auf der Leitung - **Impulsstörungen** ("Knacken" in der Leitung) - **Netzbrummen** ("Brummen" in der Leitung) - Echobildung, Nebensprechen - **weißes Rauschen* (ideale, völlig zufällige Störung)** #### Kanalkapazität ohne Einbezug der Störungen ##### Kanalkapazutät bei 2 Signalebenen bzw. Signalwerten: (z.B. Abbildungsvorschrift: 1 => +5V, 0 => -5V) $C = 2B\ bit$ - Banbreite: B - Kanalkapazität: C (=Übertragungsrate) ##### Kanalkapazität bei M Signalebenen (z.B. bei Abbildungsvorschrift mit 4 Werten, M=4) $C = 2B \log_2(M)\ bit$ - Banbreite: B - Kanalkapazität: C (=Übertragungsrate) **Baudrate** = Schrittgeschwindigkeit = Zahl der Signalparameter-Zustandswechsel Bei 2 Signalweten (z.B. "0" = 0 Volt, "1" = 5 Volt): Bitrate = Baudrate ##### Beispiel: Digitales Signal mit 4 Signalwerten (d.h. M = 4) $C = 2B \log_2(4)\ bit = 2B 2\ bit = 4B\ bit$ ![2024_07_08-18_08_41](https://hackmd.io/_uploads/BydzkqYvR.png) #### Rauschabstand und Kanalkapazität (unter Einbeziehung von Störungen) Rauschabstand: SNR = $10\log_{10}(P_S/P_N)$ SNR = signal to noise ratio $P_S$ = Leistung des Nutzsignals $P_n$ = Leistung des Rauschsignals (noise) Gesetz von C.Shannon $C=B \space\log_2 (1+P_S/P_n) \space bit$ C = Kanalkapazität B = Bandbreite $P_S$ = Leistung des Nutzsignals $P_n$ = Leistung des Rauschsignals (noise) ## Strukturierte Verkabelung - Struturierung durch Einteilung in Verkabelungsbereiche - **Primärbereich:** Verkabelung zwischen Gebäuden - Anforderungen: - größere **Entfernung** - hohe **Bandbreite** - hohe **Datensicherheit** - hohe **Verfügbarkeit** - hoher **Schutz vor Störeinflüssen** - **Sekundärbereich**: Verkabelung zwischen den einzelnen Stockwerken (Verbindung zwischen Gebäudeverteiler und Etagenverteiler) - Anforderungen_ - ähnlich wie Primärbereich - **Tertiärbereich**: Verkabelung der einzelnen Büros eines Stockwerks (Verbindung zwischen Endgerät und Etagenverteiler) - Anforderungen - mittleres **Datenaufkommen** - Überbrückung geringer **Entfernungen** - hohe **Kabeldichte** - mittlere **Verfügbarkeit** - wechselnde **Nutzung** ## Medienzugriffsprotokolle ### Carrier Sense Multiple Access with Collision Detection (CSMA/CD) - Ethernet - Jede Station überwacht das **Medium** - Carrier sensing - listen before talking - **Kollisionen** sind **möglich** werden aber vom Sender erkannt durch: - Vergleich Pegel des Ausgangssignals mit dem des Eingangssignals $\to$ Sofortiger Abbruch und senden eines Störsignals - Nach Random **Wartezeit** (wächst mit der Anzahl der Fehlversuche) $\to$ neuer Versuch ### Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) - WLAN - Antenne kann nur **Senden ODER Empfangen** - Daher **Collision Avoidance** - Jede Datenübertragung wird mit **ACK** bestätigt (Ausnahme: Broadcast) - ACK wird nach SIFS gesendet - **DIFS** $\to$ Data-Inter-Frame-Spacing [$50 \mu s$] - Wartezeit vor Normaler Datenübertr. - **SIFS** $\to$ Short-Inter-Frame-Spacing [$10 \mu s$] - Wartezeit vor ACK Senden - Kürzer als normale Wartezeit - **PIFS** $\to$ Point Coordination Function-Inter-Frame-Spacing [$30 \mu s$] ### Ablauf CSMA/CA 1. Sendewillige Station **hört** Medium **ab** 2. Medium frei! Darf nach **DIFS+Rnd**. Wartezeit gesendet werden 3. Medium nicht frei! warten bis Medium frei und nach **DIFS+Rnd**. Wartezeit senden. 4. Sender quittiert mit **ACK** - Nach erhalt **ACK** ist die Übertragung abgeschlossen 5. Bei Ausbleiben des **ACK** werden die Daten erneut gesandt mit doppeltem Wettbewerbsfenster 6. Beginnt eine Andere Station vorher mit senden $\to$ **Warten** und **Datanübermittlung** verschieben - Allerdings mit der **Restwartezeit**. 7. Kommt es trotzdem zur **Kollision** werden beide **zufälligen Wartezeiten verdoppelt** und nach **Erfolg wieder zurück** gesetzt. ## MAC-Adressauflösung - Um ein Datenpaket zu versenden, müssen die **Ziel IP-Adresse** und auch die **Ziel MAC-Adresse** des *Empfängers* bekannt sein. - Auflösung der IP-Adressen in MAC-Adressen mit dem Adress Resolution Protocol (ARP) oder Neighbour Discovery Protocol (NDP). - Die **Ziel IP-Adresse** entspricht dem **Empfänger**. - Die **Ziel MAC-Adresse** gilt immer nur im **lokalen Netz** und adressiert den **nächsten Knoten**. ### Address Resolution Protocol (ARP) [ARP on Wikipedia](https://de.wikipedia.org/wiki/Address_Resolution_Protocol) - Der Sender überprüft, ob sich der Empfänger (die IP-Adresse) im selben (lokalen) Netz befindet. - Falls **ja**: wird für die folgenden Schritte diese IP-Adresse verwendet - Falls **nein**: wird die IP-Adresse des **Standard-Gateways** verwendet. - Es wird überprüft ob sich das **IP-MAC-Adresspaar** bereits im **ARP Cache/Neighbor Cache** (=temporärer Speicher) des Senders befindet. - Falls **nicht:** wird ein ARP-Request an alle Rechner im lokalen Netz gesendet d.h. mit der ** -Ethernet-Adresse** und **Ziel IP-Adresse** - Alle im lokalen Netzwerk überprüfen ob sie der Besitzer der **Ziel IP-Adresse** sind. Nur der Besitzer der gesuchten IP-Adresse antwortet mit einem **ARP Reply** mit seiner MAC-Adresse an den **Absender** des **ARP-Requests** - **Absender** und **Empfänger** speichern das erhaltente **IP-MAC-Adressenpaar** in deren ARP Cache (heute: Neighbor Cache) und sendet das Datenpaket los #### ARP Request - MAC-Adresse und der IP-Adresse des **anfragenden Computers** als **Sender-IP-Adresse** - IP-Adresse des **gesuchten Computers** als **Empfänger-IP-Adresse** an alle Computer des lokalen Netzwerkes gesendet. - Als **Empfänger-MAC-Adresse** wird dazu die **Broadcast-Adresse** ff-ff-ff-ff-ff-ff$_{16}$ im Ethernet-Frame verwendet - Jedoch wird die **Ziel-MAC-Adresse** innerhalb der **ARP-Anforderung** mit 00-00-00-00-00-00$_{16}$ gefüllt, um anzuzeigen, dass der **Sender** der ARP-Anforderung diese **MAC-Adresse** herausfinden möchte #### ARP Reply - Er **antwortet** mit dem Zurücksenden seiner MAC-Adresse und IP-Adresse ![image](https://hackmd.io/_uploads/HJbIBRqwR.png) ![image](https://hackmd.io/_uploads/rkfKz05DR.png) ### Neighbour Discovery Protocol (NDP) #### Unterschied zur ARP - **IPv6 Adresse** - **Multicast** statt Broadcast bei Request (da es kein Broadcast bei IPv6 gibt) - ARP Request => hier: **Neighbor Soliciation** (deutsch: "ansuchen") - ARP Reply => hier: **Neighbor Advertisment** TODO: Missing ## IPv4-Adressierung ### Aufbau einer IPv4 Adresse ![image](https://hackmd.io/_uploads/rJb8d09wA.png) - Anzahl der **IPv4-Adressen:** $2^{32} = 4.294.967.296$ - Anzahl der **IPv6-Adressen:** $2^{128} = 3,4*10^{38}$ #### Ursprüngliche Aufteilung der IP-Adresse in drei Teile: - Klasse (= verschiedene Netzgrößen) - **Netzadresse** - **Hostadresse** oder Hostadresse **Beachte:** Oft wird auch die Kombination aus Klasse + Netzadresse + Hostadresse 0 als **Netzwerkadresse** oder Netzwerk-Id bezeichnet. ### Klassen von IPv4-Neten | Bezeichnung | Use-Case | Aufbau | Rechneranzahl | | ----------- | ----------------- | --------------------------------------------------- | --- | | **Class A** | Sehr große Netze | "0" <Netzadresse (7 Bit)> <Rechneradresse (24 Bit)> | $2^{24}$ | | **Class B** | Mittelgroße Netze | "10" <Netzadresse (14 Bit)> <Rechneradresse (16 Bit)> | $2^{16}$ | | **Class C** | Kleinere Netze | "110" <Netzadresse (21 Bit)> <Rechneradresse (8 Bit)> | $2^{8}$ | | Class D | | "1110" <Multicastadresse (28 Bit)>, nur lokal gültig | | | Class E | | "1111" + (28 Bit) z. Zt. reservierter Adressbereich (28 Bit) | | ### Spezielle IPv4-Adressen - **Netzwerkadresse:** Hostanteil = 0 (Bezeichnung eines bestimmten Netzes) - Beispiel: 194.95.66.0 "Das Netz 194.95.66.0" - **gerichtete Broadcast-Adresse:** Hostteil = "1" Bits - Beispiel: 194.95.66.255 "Broadcast an alle Rechner im Netz 194.95.66.0" - **begrenzte Broadcast-Adresse:** nur "1" Bits - Beispiel: 255.255.255.255 "Broadcast an alle Rechner im lokalen Netz" - **Loopback-Adresse:** Netz-Präfix = 127 (überlicherweise mit Hossteil 1, für Testzwecke) - Beispiel 127.0.0.1 "ab den eigenen Rechner" - **Konvention:** Router erhalten als Hostteil die Adresse 1 - Beispiel: 194.95.66.1 "Router im Netz 194.95.66.0" - **Private IP-Netze** => werden in öffentlichen Netzen nicht weitergeleitet - 10.0.0.0 - 10.255.255.255 privates Netz der Klasse A - 172.16.0.0 - 172.31.255.255 privates Netz der Klasse B (16 möglich) - 192.168.0.0 - 192.168.255.255 privates Netz der Klasse C (256 möglich) ### Classless Inter-Domain Routing (CIDR) - Adressraum sollte **flexibler** aufgteilt werden; es sollten mehr als drei Netzgrößen möglich sein - Nach wie vor besteht jede Adresse aus **Netzadresse und Rechnerandresse**, wobei die Netzgröße d.h. Länge des Netzadressbreichs an die jeweiligen Randbedingung angepasst wird. - Angegeben werden immer die IP-Adresse **und** die Netzmaske (mit Anzahl der Netzadressenbits). - **Beispiel:** 12.19.1.64/26 - Eigentlich bezeichnet diese adresse die Adresse eines Klasse A Netzes, aber mit CIDR enthält die Adresse selbst keine Anhaltspunkt mehr auf die Größe des Netzadressbereichs! Daher ist zusätzlich die Angabe der Netzmaske notwendig. In diesem Beispiel hat die Netzadresse eine Länge von 26 Bit. Für die Adressierung der Rechener bleiben nur 6 Bit! ### Subnetzbildung Bei der Subnetzbildung teilen wir ein Netzwerk in **kleinere Teilnetzwerke**. Zur Bildung von Subnetzen wird die **Netzadresse** lokal **erweitert**. > Bits die zur Kodierung der Rechneradresse vorgesehen sind, werden für die Adressierung der Teilnetze verwendet. - Die Subnetze (Teilnetze) haben somit alle verschiedene **Netzadressen** - Mit den Teilnetzen können wir organisatorische Einheiten aufspalten - Die Interfaces der Router erhalten dadurch unterschiedliche **Subnetzadressen** und Daten können eindeutig weitergeleitet werden. #### Netzmaske - Ist wie die IP-Adresse 32 Bit lang - Unterteilt IP-Adressen in Netzanteil und Hostanteil. - Eine Netzmaske besteht aus einer Serie von Einsen (die den Netzanteil repräsentieren) - Gefolgt von Null (die den Hostanteil repräsentieren) - Beispiel: Die Netzmaske: 255.255.255.0 (Decimalschreibweise) - 11111111.11111111.11111111.00000000 (Binärschreibweise) ![Untitled Diagram.drawio](https://hackmd.io/_uploads/rJAmxGTPC.png) #### Beispiel - Ein Klasse B Netz hat die IPv4-Adresse 140.64.0.0 - Die urpsprüngliche Netzmaske dafür lautet: 255.255.0.0 - 4 Bits werden für die Subnetzadressierierung verwendet (d.h. 16 Subnetze können gebildet werden) - Die Subnetzmaske lautet dann 255.255.240.0 = /20 - 11111111.11111111.1111.0000.00000000 - Adresse eines Subnetzes: 140.64.32.0 - Beispiel: für eine IP-Adresse - 11000010.01000000.00100000.00000100 ### Internet Control Message Protocol (ICMP) - ICMP dient zur Übermittlung von **Fehler- und Statusmeldungen** und wird zur IP Schicht gerechnet - Die ICMP Protokoll Informationen folgen direkt dem IP Header und sind durch eine Prüfsumme gechützt - ICMP Nachrichten werden gekennzeichnet durch ein Typen- und ggf. ein Codefeld - Wichtige ICMP Nachrichtentypen: - Ziel nicht erreichbar (der Code gibt dann genauere Informationen z.B. Netzwerk nicht erreichbar, Host nicht erreichbar, Port nicht erreichbar...) - Zeitüberschreitung (bei TTL=0) - Parameter Probleme etc. - Echo Request und Echo Reply (werden bei "Ping" verwendet) #### Allgemeines zu ICMP - ICMP Fehlernachrichten werden niemals erzeugt als Reaktion - eine ICMP Fehlermeldung (wohl aber auf eine ICMP Information) - eine IP Broadcast Nachricht - eine Schicht 2 Broadcast Nachricht - IP Fragmente - eine IP Nachrciht, die mit eienr IP Quelladresse aus "Nullen", einer Loopback- oder Multicast-Adresse ### PING - Basiert auf den ICMP Typen Echo Request und Echo Response jeweils mit Code = 0 - Kann für grundlegende Verbindungstests verwendet werden - Kennung und Sequenznummer können von Absender des Echo Request auf einen beliebigen Wert gesetzt werden. Diese Werte werden im Echo Reply zurückgesendet. - Bei mehrfachen Ping wird die Sequenznummer hochgezählt. ## IPv6-Adressierung ![image](https://hackmd.io/_uploads/rJorz1sDR.png) - Länge der Adressen: 128 Bit - Darstellung in 8 Gruppen von 4x4 Bit davon je 4 Bit in Hexadezimaldarstellung getrennt durch ":" (4711:0000:0000:0000:0000:0005:EEC1:0008) - **Eine** Folge von Nullen kann weggelassen werden und wird dann durch **::** gekennzeichnet (4711::0005:EEC1:0008) - Nullen am Anfang einer Hexadezimalgruppe d.h. **"führende"** Nullen können ebenfalls weggelassen werden (4711::5:EEC1:8) --- - IPv6 verwendet Adressen-„**Präfixe**“, die durch ein „/“ abgetrennt werden. - z.B. IPv6-Adresse/n entspricht dem **Adressbereich des Netzes**. - Das „n“ bezeichnet die ersten **n Bit der Adresse**, die für das Präfix relevant sind. - Dieser Bereich der Adresse kann vom „Besitzer“ der Adresse nicht verändert werden und zeigt in der Regel den für das **Routing** relevanten Bereich der Adresse. - **Provider** erhalten in der Regel deutlich **größere Adressbereiche** und versorgen damit ihre Kunden mit kleineren (dem Bedarf angepassten) IPv6-Adressbereichen. - **Beispiel**: Ein **Provider** erhält den **Adressbereich** 4711:A::/32. Eine größere Firma könnte von **diesem** Provider den Adressbereich 4711:A:1::/48 erhalten und eine **kleine Firma** (oder ein Privathaushalt) den Adressbereich 4711:A:B:C::/64. ### IPv6 - Adresstypen - **Unicast-Adressen** - bezeichnen immer eine Schnittstelle - **Multicast-Adressen** - bezeichnen mehrere Schnittstellen - **Anycast-Adressen** - bezeichnen mehrere Schnittstellen - wobei die Daten nur an **eine** und zwar an die **nächstgelegene** Schnittstelle (d.h. die mit dem kürzesten Pfad) ausgeliefert werden - **Es gibt bei IPv6 keine Broadcast-Adressen!** #### Globale Unicast-Adressen - **Allgemeine Struktur** einer globalen Unicast-Adresse ![2024_07_09-18_45_04](https://hackmd.io/_uploads/H1GEKyiPR.png) - Alle globalen Unicast Adressen, die nicht mit "000" beginnen, haben eine **Schnitstellen-ID** mit einer Länge von **64 Bit** --- - Das gloable Routingpräfix kennzeichnet den Standort einer Firma oder Organisation - Die Subnetz-ID kann zur Definition von Subnetzen in mehreren Ebenen verwendet werden - Abhängig von dem vom Provider vergebenen Adressbereich ist eine Subnetzbildung **möglich oder nicht.** - Die Schnittstellen-ID bezeichnet eine Schnittstelle im Subnetz einer Organisation ##### Die 3 Ebenen einer globalen Unicast-Adresse - Die ersten n Bit bezeichnen die **Öffentliche Topologie** - Die nächsten m Bit bezeichnen die **Standort Topologie** - Der letzte Bereich bezeichnet eine **Schnittstelle** ##### Beispiel: Präfox bei IPv6-Adressen ![2024_07_12-19_33_18](https://hackmd.io/_uploads/SJMlt1kuR.png) ### Zusammenhang MAC-Adresse und IPv6-Adresse #### Ableitung der Schnittstellen-ID aus der MAC-Adresse nach EUI-64 - Abbildung von 48 Bit auf 64 Bit notwendig - Einfügen von FF und FE (11111111 11111110) in der "**Mitte**" d.h. nach dem 24. Bit - Eine weltweiteindeutige Adresse ist durch eine "0" im vorletzen Bit des ersten Byte markiert - Markierung einer lokal gültigen Adresse durch eine "1" im vorletzten Bit des ersten Byte ![2024_07_09-18_57_40](https://hackmd.io/_uploads/rJ7z2Jjw0.png) ### Lokale Unicast-Adressen #### Verbindungslokale Adressen **(Link Lokal)** ![2024_07_09-19_01_00](https://hackmd.io/_uploads/Byvkakiv0.png) - Beginnen mit FE80 und werden immer automatisch generiert und z.B. für Zwecke der Nachbarerkennung verwendet - Gültigkeitsbereich ist die lokale Verbindung - z.B. mit Präfix für "Local Link" Adresse: FE 80 (= 1111 1110 1000 0000), - dann 48 Bit 00.00 und - 64 Bit eindeutige Schnittstellen ID aus MAC-Adresse nach EUI-64 #### Standortlokale Adressen (Site Local, veraltet und werden nicht mehr verwendet) ![2024_07_09-19_03_23](https://hackmd.io/_uploads/ryyJAkjwA.png) - Konnten in private Intranets verwendet werden - Waren von anderen Standorten aus nicht erreichbar und wurden nicht ins Internet weitergeleitet - Wurden nicht automatisch konfiguriert - Entsprachen den privaten IPv4 Adressen #### Standordlokale Adressen (Unique Local) ![2024_07_09-19_05_05](https://hackmd.io/_uploads/BkR6p1iwA.png) - Mit 40 Bit langer zufällig erzeugter Side-ID xxx...xxx (dadurch ist die Side-ID mit hoher Wahrscheinlichkeit eindeutig!) - Dadurch sind diese Adressen auch mit hoher Wahrscheinlichkeit eindeutig - Könnnen in privaten Intranets verwendet werden - Entsprechen den privaten IPv4 Adressen ### Spezielle IPv6 Adressen - **Nicht spezifizierte Adresse** (0:0:0:0:0:0:0:0 oder ::) - Zeigt an, dass keine Adresse vorhanden ist - Wird niemals zugewiesen oder als Zieladresse verwendet - **Loopback-Adresse** (0:0:0:0:0:0:0:1 oder ::1) - Kennzeichnet eine Loopbackschnittstelle d.h. damit kann ein Knoten Pkete an sich selbst schicken - Wird niemals von einem IPv6-Router weitergeleitet - Entspricht bei IPv4 127.0.0.1 ### Multicast-Adressen ![2024_07_09-20_07_43](https://hackmd.io/_uploads/BJ0_2xoD0.png) - Beginnen immer mit FF - Flags und Scope enthalten Informationen über den Geltungsbereich und Aufbau der Adresse - Group ID gibt die Multicast Gruppe an | Flags + Scope | Definition | | ------------- | ---------------------------------------------------------------------------------------------------------------- | | ff02:: | Link Local: spans the same opological region as the corresponding unicast scope, i.e. all nodes on the same LAN. | | ff05:: | Site local: is intended to span a single site | | ff08:: | Organization scope: Intended to span multiple sizes within the same organization | | ff0e:: | Global scope, assigned by IANA | FF02::1 - All local Nodes Address FF02::2 - All local Routers Address ## LAN-Komponenten ### Repeater, Hub ![2024_07_12-17_10_50](https://hackmd.io/_uploads/B1I9v6RDC.png) Funktionen: - arbeitet auf OSI-Schicht 1 - taktgerechte **Signalregenerierung** - "Abtrennung" fehlerhafter Kabelsegmente (= bei Ausfall eines Netzteils fällt nur dieser Teil des Netzes aus) - **Aber: Kollisionen werden nicht begrenzt!** ### Switch, Bridge **LAN ohne Switch:** - Last im Lan? ![2024_07_09-20_20_35](https://hackmd.io/_uploads/ByZFJbiDC.png) **LAN mit Switch:** - **Filterfunktion anhand der MAC Adresse** - zusätzlich: Filterung fehlerhafter Rahmen (durch CRC Prüfung) - Auftrennung von Kollisionsdomänen - **Last im Lan?** ![2024_07_09-20_23_17](https://hackmd.io/_uploads/rJ2Qx-swR.png) #### Aufbau der Adresstabelle eines Switches ![2024_07_09-20_24_15](https://hackmd.io/_uploads/HyRUlZivR.png) ![2024_07_09-20_24_41](https://hackmd.io/_uploads/rkFtebsD0.png) #### Grundfunktionen und -merkmale einer Bridge/eines Switches Ein Switch ist eine Netzkomponente, die auf Schicht 2 arbeitet. Grundfunktionen und -merkmale eines Switches: - **Lasttrennung** durch Frame-Filterung - Bedeutet das der Switch Datenpakete auf Schicht 2 analysiert und entscheidet ob ein Paket, weitergeleitet werden soll oder nicht - **Auftrennung von Kollisionsdomänen** - **Transparenz** des Switch für die angeschlossenen Stationen, - Weiterleitung von Braodcast- und Multicast-Nachrichten (führt zum Begriff der **Broadcast-Domäne**) - Eine Braodcastdomäne wird typischerweise durch einen Router begrenzt, da Router keine (Layer2)-Broadcast-Nachrichten weiterleiten - **Selbstlernend, selbstkonfigurierend** und **Agingmechanismus** sowie: - **Brücke bzw. Bridge**: eher Begriff aus der Historie zum Verbinden verschiedener Technologien (z.B. Ethernet mit Token-Ring, dann meist 2-Ports) - Unterstützung redundanter Netzwerkpfade (=> **Spanning Tree Protokoll**) #### Abgrenzung zwischen Brücke und Switch - Switche **arbeiten wie Brücken** auf der Leitungsschicht (= Schicht 2) und entsprechen diesen in ihrer grundlegenden Funktionsweise. - Switche sind auf **hohe Leistung** getrimmt. - Große Anzahl von Ports ("**Portdichte**") - **Mikrosegmentierung** (=Anbindung einer einzelnen Station an einen Switchport, Ein-Port-Segment) (=> Keine Kollisionen, optimaler Vollduplex-Betrieb) - Store-and-Forward-Switching (Vorteil: Fehlererkennung, Nachteil: langsamer) - **Cut-Through-Switching:** Direkte Weiterleitung nach Auswertung der Zieladrese - Fragment-Free Switching (=> Überprüfung auf minimale Rahmenlänge von 64 Byte => Vermeidung von "Rahmen-Bruchstücken") - **Unterstützung von VLANs (=Virtuelles Lan)** #### Backplane eines Switches ![2024_07_09-20_36_02](https://hackmd.io/_uploads/By7m7ZiDR.png) - Im Puffer wird das Frame komplett gespeichert und geprüft. Falls es fehlerhaft ist, wird es verworfen. - Entscheidend für die Leistungsfähigkeit eines Switches ist die Backplane (verschiedene Ausblildungen möglich) #### Mikrosegmentierung ![2024_07_09-20_37_31](https://hackmd.io/_uploads/r1ddX-iwA.png) - Eine Worksation oder ein PC pro Switch-Port - Bei "Vollduplex" (d.h. ein Leitungspaar pro Richtung können keine Kollisonen auftreten!) #### Cut-Through-Switching - Keine Fehlerüberprüfung - Es reicht die MAC-Zieladresse auszuwerten ![2024_07_12-18_56_53](https://hackmd.io/_uploads/BJEYx1JdC.png) ## VLAN - Ein VLAN (virtuelles LAN), ist ein LAN, das **nicht hardwaregemäß**, sondern auf **logischer Ebene definiert** ist. - Jedes VLAN benötigt eigenen IP-Adressbereich! - Ein VLAN kann innerhalb eines **Switches** oder auch über eine größeres **physichses Netzwerk** hinweg definiert werden. - Jedes VLAN bildet eine **Broadcast-Domäne.** - Jedes VLAN verhält sich so, als ob mit einem eignen Switch aufgebaut worden wäre. - Die **Kommunikation** zwischen zwei VLANs ist nur **über** einen **Router** möglich. - **Vorteile** von VLAN - Flexibilität bei der Integration von Endgeräten in die **Netzinfrastruktur** - Priosierung von Datenverkehr (z.B. VLAN für VoIP) - Sicherheitsaskpekte ### (Portbasierte) VLANs auf einem Switch ![2024_07_10-18_44_26](https://hackmd.io/_uploads/SkZFcV2PR.png) - Prinzp: - ein Switch, Konfiguration von mehreren LANs ### Layer-2 Verbindung portbasierte VLANs ![2024_07_10-18_45_25](https://hackmd.io/_uploads/B173qEnPA.png) - Zwei komplett gertrennte VLANS - grün und rot - Zuweisung der Ports zu je einem VLAN. Stationen in verschiedenen VLAN liegen in verschiedenen IP-Adressbereichen ### Layer-3 Koppelung portbasierter VLANs über einen Router ![2024_07_10-18_47_08](https://hackmd.io/_uploads/r1dfj4hvA.png) ### Verbindung ovn tagged VLANs nach IEEE 802.1q ![2024_07_10-18_47_36](https://hackmd.io/_uploads/By7Vj4nPC.png) - Zwei momplett gertrennte VLAN: **rot** und **grün** - Auf dem Trunkinng (=Verbidnungs-) Link A-7 / B-3 laufen getaggte (d.h. markierte) Frames beider VLANs ### Ethernet-Frames mit VLAN-Tag ![2024_07_10-18_47_36](https://hackmd.io/_uploads/H1twoN2vA.png) ## Router ### Bestandteile von Routern - Router arbeitet auf **Schicht 3** - wertet **IP-Protokollinformationen** aus - Die Entscheidung an welches Interface ein Paket geleitet wird, trifft der Router auf der Basis von **Routing-Tabellen** - Eine IP-Routiiing-Tabelle enthält **IP-Adressen**, denen bestimmte **Interfaces** zugeordnet sind. - Pakete mit Adressen, die nicht in der Tabelle vorhanden sind, werden in der Regel an ein **Standard Gateway** gelietet - Meistens bildet das Standard Gateway den Zugang zum Internet - Router begrenzen **Broadcastdomänen** d.h. alle Broadcasts innerhalb eines Netzes gehen immer bis zum nächsten Router #### Interne Komponenten eines Routers - Computer, ohne Festplatte, Monitor und Tastatur - Enhält: Prozessor, CPU Bus, System Bus, Leistungsversorgung - **Verfügt über verschiedene Schnittstellen und verschiedene interne Speicherbausteine** - Der System Bus verbindet die verschiedenen Schnittstellen mit der CPU, der CPU Bus verbindet die verschiedenen Speicherbausteine mit der CPU - Wichtige Speicherbausteine im Router - (Boot) **ROM** - **"Flash Memory"** (enhält i.dR. das Betriebssystem des Routers) - **NVRAM** (Non-Volatile RAM, behält den Inhalt beim Ausschalten und enthält z.B. das "Start-Up" Konfigurationsfile) - **RAM** (=Arbeitsspeicher, enthält die "Running-config" d.h. die aktuelle Konfigurationsdatei, die Routingtabelle und den schnellen Switching-Zwischenspeicher und verliert beim Ausschalten den Dateninhalt) #### Wichtige Konfigruationsschritte bei Routern - Konfiguration der **Interfaces**: -** IP-Adresse** des Interfaces - **IP-Netzadresse** mit **Netzmaske** des angeschlossenen Netzes - (Routing-)**Protokolle**, die über das Interface ausgetauscht werden sollen - Schicht 2 Protokolle des Interfaces (ev. mit Parametern z.B. Ethnernet) - Konfiguration der verwendeten **Routingprotokolle** (welches Routingprotokoll, welche Metrikwerte) - Konfiguration zusätzlicher Protokolle wie **DHCP**, oder **NAT/NAPT** - Zusätzlich möglich: - Zugangsbeschränkung für das Interface (z.B.: wichtige Anwendungen haben einen festen Port, wenn auf einem Interface dieser Port "gesperrt ist", ist damit auch die Anwendung gesperrt; Sperren bestimmer IP-Adressbereiche) ### Routing Protkolle #### Autonomes System - Im Internet werden oft Netze zu größeren Einheiten zusammengeschlossen - Ein **Autonomous System** ist eine administrative Einheit unter der Kontrollen einer **einzigen** Instanz bzw. **Firma** - **Internes Routing** bedeutet Routing innerhalb eines Autonomous Systems - Internes Routing kann **statisch** mit Tabellen oder **dynamisch** auf der Basis von Routingprotkollen realsiert werden - **Externes Routing** bedeutet Routing zwischen verschiedenen Atuonomous Systems - Exterens Routing erfolgt immer auf der Basis von Routing Protokollen - in den Grenzgebieten werden über Protkolle Routing-Daten (Erreichbarkeitsinformationen) ausgetauscht - wichtiges Protokoll: Border Gateway Protocol (BGP) #### Routing innerhalb und zwischen von Autonomous Systems ![2024_07_10-19_12_10](https://hackmd.io/_uploads/rkOgWrnPC.png) #### Statisches Routing - Die einfachste Möglichkeit für den Aufbau einer Routing-Tabelle - Die Einträge der Routing-Tabelle werden manuell eingeben, d.h. das Routing basiert auf fest vorgegebenen Informationen - Einsatzgebiet: in **kleineren Netzen **mit wenigen Routern - Änderungen müssen von Hand eingegeben werden d.h. die Tabellen müssen "**gepflegt**" werden - Bestimmte Adressen werden immer an bestimmte, **festgelgte Interfaces **geleitet - **Unbekannte** Adressen werden an ein "**Standard Gateway**" gelietet, das in der Regel den Zugang zum Internet bildet. #### Dynamisches Routing - Routing auf der Basis von Routing-Protkollen - Einsatzgebiet: **größeren Netzen** d.h. in Netzen mit vielen Routern - **Topoligeänderungen** werden automatisch erfasst, aber es gibt eine System-/Netzwerkbelastung durch die Routing-Protkolle - **wichtige Protokolle:** - Routing Information Protocol (RIP) - Open Shortest Path First (OSPF) - Interior Gateway Routing Protocol (IGRP) Die **Routinginformationen** werden in regelmäßigen zeitlichen Abständen über die gleichen **Interfaces** und **Netzverbindungen** übertragen wie die Nutzdaten ("im Hintergrund") #### Metriken von Routing-Protokollen - Allgemeine **Bewertungskritieren** verschiedener Pfade bei Routing-Protokollen werden Metriken genannt - Diese Werte werden benutzt, um unterschiedliche WEge zu bewerten und miteinander vergleichen zu können - Mögliche Parameter: - **Hop Count** - **Bandbreite** - Verzögerung - Belastung - Zuverlässigkeit - Kosten #### Übersicht über Routing-Protokollen ![2024_07_10-19_20_43](https://hackmd.io/_uploads/rywxXB2P0.png) ### Link State Routing ![2024_07_10-19_21_13](https://hackmd.io/_uploads/SJrzXS2vC.png) - Kernstück des Link State Routing ist die "Nachbarschaftserkundung": Benachbarte Router tauschen in regelmäßigen Abständen Keepalives sogenannte **Hello Nachrichten** aus. Durch das Ausbleiben einer Hello Nachricht können die Router den Ausfall von benachbarten Routern feststellen. - Die Informationen über den Status und **die Kosten der Verbindungen zu seinen dirketen Nachbarn** fasst jeder Router in **Link State Advertisments** (=LSA) zusammen. Diese LSAs werden an **an alle Router** im Netz verteilt. - Ein Link State Advertisement enthält: - die Quelladresse d.h. die Adresse des Routers, der das Paket erzeugt hat - eine Sequenznummer - eine Zeitmarke - die Liste der direkten Nachbarn und Informationen über die Links zu ihnen - Wichtiger Vertreter der Link State Routing Protokolle: OSPF (Open Shortest Path First) #### Ablauf des Link State Routing - Ermittlung der Nachbarn (unter Verwendung von "Hello-Paketen"/Keepalives) - Bestimmung der Übertragungsbandbreite/Kosten zu den Nachbarn - LSA zusammenstellen und an alle Router verteilen - Verteilung der LSAs über "Flooding": ein Router verteilt ein neues, empfangenes LSA an alle Ausgänge (außer dem Empfangs-Link) - LSAs, die ein Router schon erhalten/gespeichert hat, werden nicht weiterverteilt - ein LSA wird bei Netz-Änderungen generiert - Nach Empfang der LSAs unter Verwendung des **Dijkstras Algorithmus** den kürzesten Pfad zu allen anderen Routern berechnen - Jeder Router erhält ein komplettes Abbild des Netzes d.h. alle Wege sind sichtbar. Konvergenzprobleme gibt es nicht - => Protokoll ist sehr robust, aber es hat einen höheren Speicherbedarf als Distance Vector Routing Protokolle und benötigt mehr Router-Rechenleistung. #### Dijkstra Algorithmus Schrittweiser Aufbau der Routing-Tabelle, der jeweils "günstigste Knoten" wird weiterverfolgt ![2024_07_11-18_51_35](https://hackmd.io/_uploads/HJ3oTtTD0.png) **Vorraussetzung:** Jeder Router hat die Link-State Pakete **aller** anderen Router gespeichert. 1. Sich selbst kann der Router zu den Kosten "0" erreichen 2. **Erste Einträge in der Routingtabelle:** Die direkten Nachbarn des Routers 3. Auswahl des Nachbarn mit den geringsten Kosten 4. **Weitere Enträge in der Routingtabelle:** Auswertung der State Advertisements des ausgewählten Routers 5. Itterative Verbesserung der Routingtabelle, wenn sich bei der Auswertung der LSAs kleinere Kosten ergeben ## Adressierung und Multiplexing ![2024_07_11-18_58_40](https://hackmd.io/_uploads/Hy1d196vR.png) - In der Transportschicht werden Ports verwendet um die Daten der richtigen Applikation zu übergeben. - Ports werden für das Multiplexen und Demultiplexen beim Sender und Empfänger verwendet ![2024_07_11-19_02_41](https://hackmd.io/_uploads/rkaVl5TDA.png) - Prozesse verwendet "**Sockets**" zum Senden und Empfangen von Daten - Mutliplexing als Sender: Hinzufügen eines Transportschicht Headers - Demultiplexing als Empfänger: Auswertung der HEader Informationen um Segmente über den Socket zum korrekten Prozess zu leiten. ### Verbindungsloses Demultiplexen - Beispiel: UDP - Empfänger (Transportschicht) wertet nur **die Zielportnummer** aus und nutzt anschließend den passenden Socket - Alle IP/UDP Segemente mit der selben Zielportnummer, landen im selben Socket und damit auch im selben Prozess ![image](https://hackmd.io/_uploads/HJzHgcpwA.png) ### Verbindungsorientiertes Demultiplexen - Beispiel: TCP - Beim verbindungsorientierten Mutliplexing wird der Empfänger Prozess an Hand von **IP-Quelladresse, Quellport, IP-Zieladresse und Zielport** (4-Tuple) identifiziert. - Für jede angenomme Verbindung wird ein neuer Socket eröffnet. ![2024_07_11-19_07_52](https://hackmd.io/_uploads/ry8_-cTDR.png) ### Sockets "application programming interface (API)" - Das Betriebssystem stellt Anwendungen einen einheitlichen zugang zur Transportschicht bereit: Socket - Zentrale Funktionen für alle Socket Typen: ![2024_07_11-19_09_54](https://hackmd.io/_uploads/SJAkM9pPR.png) ### Beispiele für Ports und Transportprotokolle - Die Portnummer von 0 bis 1023 sind für gängige Anwendungen reserviert und werden als bekannte Ports (well-known Ports) bezeichnet. ![2024_07_13-11_25_56](https://hackmd.io/_uploads/rJhVd6k_A.png) ## Netzwerkprotokolle ### Transmission Control Protcol (TCP) - TCP überträgt Daten zuverlässig über unzuverlässige IP-Netze - TCP öffnet eine Verbindung, bevor die Übertragung beginnt - TCP kann mit den folgenden Eigenschaften unzuverlässiger IP-Netze umgehen - verlorene Daten - beschädigte Daten - Vertrauschte Reihenfolge der Daten - Duplikate - TCP reguliert den Datenfluss, um Überlastungen des Netzes zu vermeiden - TCP bietet einen verbindungsorientierten, zuverlässigen Service zur Übertragung eines Byte-Stroms unter Beachtung der aktuellen Lastsituation. #### Verbindungsorientiert ![2024_07_11-19_25_20](https://hackmd.io/_uploads/rymcS9TwC.png) - Verbindungsaufbau (3-Wege-Handschlag) - SYN => SYN-ACK, ACK - Datenübertragung - *bidirektional* - Verbindungsabbau - FIN, kann von beiden ausgehen #### 3-Wege-Handshake ![2024_07_11-19_27_15](https://hackmd.io/_uploads/S1BZI9pDA.png) ![2024_07_11-19_27_21](https://hackmd.io/_uploads/r1ezU9TPC.png) #### TCP-State-Machine ![2024_07_11-19_28_37](https://hackmd.io/_uploads/HJUUU5pD0.png) #### Übertragung eines Byte-Strom ![2024_07_11-19_30_03](https://hackmd.io/_uploads/rJwjU9TPR.png) - **TCP ist byte orientiert, nicht Paket orientiert** - Der TCP Strom wird in Segmenten übertragen - Ein Segment wird gesendet wenn: - Das Segment voll ist - Ein Timeout abläuft - Die Applikation ein Signal gibt #### Zuverlässige Übertragung Zuverlässigkeit im Falle von TCP: - Daten werden **korrekt** übermittelt (oder garnicht) - Daten werden **vollständig** übermittelt - **Duplikate** werden **eleminiert** - Daten werden in der **korrekten Reihenfolge** übertragen Umsetzung des Ende-zu-Ende Prinzip für die Zuverlässigkeit. ##### Typische Fehler und deren Erkennung - Bitfehler → Internet Checksum (siehe UDP) - Verlust kompletter Nachrichten → Fehlende Bestätigung (Acknowledgement) - Duplikate → Sequenznummer - Falsche Reihenfolge → Sequenznummer #### Automatic Repeat reQuest (ARQ) Die wichtigste Strategie zur Erkennung (und Korrektur) des Verlusts ganzer Nachrichten wird **Automatic Repeat reQuest (ARQ)** genannt. 1. Der Sender fordert vom Empfänger eine Bestätigung (ein Acknowledgement (ACK)), dass die Daten korrekt empfangen wurden 2. Kommt nach Ablauf eines Timeouts keine Bestätigung, wird das Paket erneut gesendet. Sendet man die nächste Nachricht erst, wenn die vorherige erfolgreich übertragen wurde spricht man von **Stop-and-Wait**. ![2024_07_11-19_38_07](https://hackmd.io/_uploads/HyP5u5pwR.png) ##### Beispielhafte Szenarien ###### Szenarien 1. Übertragung erfolgreich 2. Paket geht verloren oder ist beschädigt (Timeout) 3. ACK geht verloren oder ist beschädigt (Timeout) 4. ACK kommt zu spät an (Timeout) ![2024_07_11-19_39_34](https://hackmd.io/_uploads/r1KJKc6PC.png) ##### Stop-and-Wait ist ineffizent - Obowhl der Sender viele Daten und mehrere Segmente (D2 bis D6) verschicken könnte, muss er **warten** bis D1 durch A1 bestätigt wurde - Sehr **ineffizent** bei kleinen Datenpaketen und langen Laufzeiten zwischen Sender und Empfänger - Beispiel - Datenpakete: 500 Byte - Round Trip Time (RTT): 20ms - Übertragungsrate im besten Fall: $\frac{500\ Byte}{20\ ms} = 0.2\ Mb/s$ ![2024_07_11-19_43_00](https://hackmd.io/_uploads/rye3F5aDA.png) // Warning: Berechnung ##### Verbesserung: Sliding Window - Der Sender darf nicht nur ein Segment versenden sondern N, bevor er ein ACK erwartet - Wenn Segmente fortlaufend nummeriert werden (Sequenznummer) entstehen ein sogenanntes **Window** welches die aktuell zu versendeten Segmente angibt - Sobald ein Paket(e) bestätigt wird, verschiebt sich Anfang und Ende des Window. Es entsteht ein **Sliding Window** ![2024_07_11-19_45_13](https://hackmd.io/_uploads/Hkq4qqTw0.png) ![2024_07_11-19_45_17](https://hackmd.io/_uploads/ByJHccTDA.png) ###### Herausforderungen für das Sliding Window **Animation:** [Animation zu Go-Back-N und Selective Repeat](https://www2.tkn.tu-berlin.de/teaching/rn/animations/gbn_sr/) **Herausforderung: Wie geht man mit Übertragungsfehlern um?** - Bedenke, die Reihenfolge beim Empfänger muss eingehalten werden! - Verschiedene Strategien - **Go-Back-N** - **Selective Repeat** - Selective Reject #### Go-Back-N ![2024_07_11-19_47_11](https://hackmd.io/_uploads/HyoicqpvA.png) Viele Segmente sind gebenenfalls gleichzeitig unterwegs. Verlust eines einzelnen Segments führt zu vielen (unnötigen Wiederholungen!) **Empfänger:** - Wenn ein Segment mit Sequenznummer n empfangen wird und die Reihenfolge korrekt ist, sende ein ACK(n) - Sollte eine falsche Sequenznummer eintreffen (n+2), sende weiterhin ACK mit n bis n+1 eintrifft. - Sehr einfache Implementierung beim Empfänger (ohne Puffer!) #### Selective Repeat ![2024_07_11-19_51_05](https://hackmd.io/_uploads/ryO9oq6wC.png) Empfänger: - Individuelle Bestätigung der Segmente, selbst wenn diese in falscher Reihenfolge eintreffen - Empangspuffer, um auf fehlende Lücken warten zu können. #### TCP timeout und die Round Trip Time (RTT) - Herausforderung: Welchen Wert sollte das TCP (ACK) Timeout haben? - Länger als die RTT, aber die RTT, variiert (WLAN vs. Glasfaster, Entfernung zwischen Sender und Empänger,...) - **RTT** zu kurz: Unnötig verworfene Segmente - **RTT zu lang:** Langsame Reaktion bei Fehlern - Lösung: Kontinuierliche Messung der RTT über vergangene, erfolgreiche ACKs - Nutzung des Exponential Weighted Moving Average (EWMA) um aktuelle Werte stärker einzubeziehen ![2024_07_11-19_55_04](https://hackmd.io/_uploads/BJwF29TvR.png) $EstimatedRTT = (1- \alpha) * EstimatedRTT + \alpha * SampleRTT$ $\alpha \approx 0.125$ #### TCP ARQ in der Realität - In der Realität werden nicht Segmente sondern Bytes (siehe Byte-Strom besätigt) ![2024_07_11-19_56_49](https://hackmd.io/_uploads/BJklTq6w0.png) - Es existieren verschiedenste TCP Implementierungen die entweder Go-Back-N, Selective Repeat oder eine kombinierte Abwandlung verwenden. #### TCP Flow Control **Animation:** [Animation TCP Flow Control](https://www.tkn.tu-berlin.de/teaching/rn/animations/flow/) - **Situation:** Sender schickt schneller Daten als der Prozess beim Empfänger diese aus dem Puffer lesen kann. $\lambda_{in} > \lambda_{out}$ - **Resultat:** Der Puffer beim Empfänger läuft ggf. voll und Segmente müssen verworfen werden => unnötigtes wiederholtes Senden. - **Lösungsansatz:** Der Empfänger teilt dem Sender den aktuell freien Platz im Puffer mit - **Der Empfänger kontrolliert die Geschwindikgeit des Senders** ![2024_07_12-12_02_53](https://hackmd.io/_uploads/rkmv1FRDA.png) 1. Der Empfänger teilt die Größe des aktuell freien Puffers (recieve window (rwnd)) im Window Feld des TCP headers dem Sender mit 2. Sender limitiert sein Sendefenster basierend auf der Größe des Pfuffers beim Empfänger ![2024_07_12-12_04_32](https://hackmd.io/_uploads/Bks2yFCDR.png) ![2024_07_12-12_04_45](https://hackmd.io/_uploads/BkYaJF0wA.png) ##### Herausforderungen beim TCP Flow Control | Zero Window Probing | Silly Window Syndrom | | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | Der Empfänger meldet rwnd = 0 | Segmente mit wenig Daten sind ineffizient. Volle Puffer (und geringe Leserate) führen zu vielen kleinen Paketen. | | Der Sender, shcickt keine Daten mehr, erhält auch kein Update über rwnd | MSS (Maximum Segement Size): bspw. 536 Bytes | | Lösung: Warten und ein 1-Byte Paket senden um einen neuen rwnd Wert zu bekommen | Empfänger wartet bis der freie Puffer >= MSS bis er ein neues rwnd bekannt gibt. | #### TCP Congestion Control - **Situation:** Viele Sender schicken zu viele Daten zu schnell und überlasten das Netzwerk. - **Resultat:** Lange **Verzögerungszeiten** (Warteschlange in Routern) und **Packetverluste** (Verworfene Pakete durch volle Puffer in Routern) - **Lösungsansatz:** Das Problem ist deutlich komplexer im Vergleich zu Flow Control. ##### Einfaches künstliches Beispiel - **Einfaches Szenario:** - Ein Router, **unendliche** Puffer - Kapazität: R - Zwei Verbindungen - $\lambda_{in}, \lambda_{out}$ - Kleine Verluste / Wiederholungen ![2024_07_12-12_24_27](https://hackmd.io/_uploads/S1OPVFRwA.png) Was passiert, wenn $\lambda_{in}$ sich R/2 annähert? ##### Einfaches realistischeres Beispiel - **Einfaches Szenario:** - Ein Router, **endliche** Puffer - Kapazität: R - Zwei Verbindungen - $\lambda_{in}, \lambda_{out}$ - Wiederholungen von Paketen durch verworfene Pakete an vollen Puffern - Timeout von Paketen (ACK-Timeout) und dadurch unnötige doppelte Pakete ![2024_07_12-12_27_43](https://hackmd.io/_uploads/S1Q4rtAw0.png) Die Kapaziät von $\lambda_{in}$ von R/2 kann nicht erreicht werden. ##### Viele Sender schicken zu viele Daten zu schnell und überlasten das Netzwerken. ![2024_07_12-12_28_43](https://hackmd.io/_uploads/ByvwBF0DR.png) - Lange Verzögerungen und dadurch Doppelungen - Paket Verlust und durch Wiederholung => **Stau in Netzwerken führt zwangsläufig zu Doppelungen und Wiederholungen und sollte deshalb vermieden werden.** ##### Ansätze für Congestion Control ###### Netzgestützte Congestion Control ![2024_07_12-12_31_23](https://hackmd.io/_uploads/HkvWUKAwC.png) - Router melden Überlastsituation an Sender und Empfänger - Veränderung des IP/TCP Headers - Bspw. TCP ECN ###### Abgeleitete Congestion Control ![2024_07_12-12_31_23](https://hackmd.io/_uploads/BkgHUYAwR.png) - Überlastsituation wird aus Verbindungsdaten abgeleitet - Segmentverlust, Verzögerung, ... - Bspw. **TCP** ##### TCP Congestion Control: AMID **Grundidee:** Sender **erhöhen** die **Paketrate** sukzessive und **verringern** diese im Fall von Paketverlusten (Congestion) => "Sondierung" der maximalen Datenrate > **A**dditive **I**ncrease **M**ultiplicate **D**ecrease (AMID) - **Addtive Increase** - Erhöhe die Anzahl an zu übertragenen Daten (bis zum nächsten ACK) um eine (+1) maximale Segment Größe für jede erfolgreiche Übertragung - **Multiplikative Decrease:** Bspw. halbiere /2 die Anzahl an zu übertragenen Daten im Falle von Verlusten ![2024_07_12-12_55_22](https://hackmd.io/_uploads/BJ8iot0DA.png) - Genaues Verhalten Abhängig vom TCP Algorithmus: - TCP Cubic - TCP Westwood - TCP Reno - TCP New Reno - TCP Tahoe ##### Additive Increase Multiplicative Decrease (AMID) - Warum **multiplikative Verringerung?** - Congestion ist schlecht für alle Teilnehmer (**Fairness**) daher aggressive Reaktion nötig - Warum **additive Eröhung**? - Sukzessive Erhöhung um ein Gleichgewicht zu finden Sender Rate $\approx$ Anzahl an Maximum Segment Size (MSS) Bytes die gleichzeitig verschickt werden! Diese Sende Rate nennt man **Congestion Window**. ###### Herausforderung: Mit welcher "Sender Rate" sollte gestartet werden? ![2024_07_12-13_01_59](https://hackmd.io/_uploads/B1PEaF0DR.png) - Zu **Hoch**: Neue Verbindungen überlastet das Netz - Zu **Niedrig**: Sehr lange Zeit bis hohe Datenraten erreicht werden ##### TCP Slow Start - Die initiale Rate ist gering ($\approx 1$ MSS) - Anschließend **Verdoppelung** der Rate für jede erfolgreiche Roung Trip Time (RTT) - Exponentielles Wachstum! - Aber das widerspricht **AI**MD!? - **TCP Slow Start** - Ab einem bestimmten Wert **ssthresh** wird die Rate nur noch um 1 MSS erhöht - Im Faolle eines Fehlers (bspw. Timeout) wird bspw. **ssthresh** auf cwnd halbiert ![2024_07_12-13_07_02](https://hackmd.io/_uploads/rJUPCtADA.png) ###### TCP Slow Start - Tahoe ![2024_07_12-13_07_37](https://hackmd.io/_uploads/rJ8Y0FCw0.png) ###### TCP Slow Start - Tahoe vs Reno ![2024_07_12-13_08_06](https://hackmd.io/_uploads/r1GoAtRDR.png) #### Reciever Window und Congestion Window ![2024_07_12-13_08_42](https://hackmd.io/_uploads/ry5T0YAvA.png) ### User Datagram Protocol (UDP) - **Verbindungslos** - Kein "Handshake" zwischen Sender und Empfänger - Keine Abhängigkeit zwischen individuellen UDP Segmenten - schnörkellose Erweiterung des "best-effort" von IP - Segmente können verloren gehen oder in falscher Reihenfolge zum Prozess gelangen #### Warum überhaupt UDP? - Kein Verbindungsaufbau (zusätzliche Latenz) - **Einfach.** Kein vorhalten eines Status beim Sender und Empfänger nötig - Kleiner Paket-Header (geringer Overhead) #### Beispiele - **Media Streaming** - Sprach und Videokonferenzen - Verlorene Segemente sind ok! - Gaming - Insbesondere solche Spiele wo Rekationen entscheidend sind - Latenz wichtiger als alle Informationen - Tunnel und VPN - Das getunnelte Protokoll mach die Vorgaben ### QUIC - Ersetzt TCP und TLS - Bietet gleichwertige Services wie TCP: - Zuverlässigkeit - Flow Control - Congestion Control - zusätzlich Authentifizierung und Verschlüsselung - Läuft: in der Anwendung nicht im OS (Kernel Space) - Nutzt: UDP zur Übertragung Aspekte Handshake: - Quic implementiert zuv. Transport in einer Anwendungsbibliothek (anstatt OS TCP Bibliothek) Aspekte Mobilität: - Quic verwendet **Eindeutige** Verbindungs-ID s - Wenn ein Gerät das Netzwerk wechselt (bspw. von WiFi ⇒ 4G/5G), kann es eine Verbindung wieder aufnehmen (bspw. Video-Streaming), indem es die gleiche QUIC Verbindungs-ID unter einer anderen IP-Adresse (und einem anderen UDP-Port) wieder verwendet. - ![image](https://hackmd.io/_uploads/H18g1MaDA.png) Aspekte Security: - Implementierung von Algorithmen in der Applikation - Folge: Bessere Updatefähigkeit, Anpassung an Kontextdaten - Verschlüsselung und Authetifizierung ist Standard - ![image](https://hackmd.io/_uploads/rJx1utaP0.png) #### Vergleich Handshake QUIC vs TLS ![image](https://hackmd.io/_uploads/HyhfoZ6vC.png) ## TLS ### Was versuchen wir zu beschützen? - Angreifen haben fast komplette Kontrolle über die Kommunikationskanäle - Endgeräte die an einem Protokollaustausch beteiligt sind müssen nicht selbst kompromitiert sein ![2024_07_12-15_39_29](https://hackmd.io/_uploads/ryRMznCvC.png) #### Kommunikationssicherheit - **Confidentiality** / Vertrauchlichkeit - **Integrity** / Integrität - **Authentication** / Authentifizierung (Nutzer beweisen das sie wirklich die Person sind, z.B. über die Eingabe eines Passworts) - (Non-Repudiation) / (Nichtabstreitbarkeit) - (Authorization) / (Ermächtigung) (Das System bestätigt, dass die Benutzer die Erlaubnis haben, auf das sie zugreifen möchten. ) - (Availability) / (Verfügbarkeit) ### Encryption und Decryption ![2024_07_12-15_44_49](https://hackmd.io/_uploads/HyVPQnAPC.png) ### Cryptographic Hash Function ![2024_07_12-15_45_24](https://hackmd.io/_uploads/SkbFX3RDC.png) ### Message Authentication Codes ![2024_07_12-15_45_41](https://hackmd.io/_uploads/rJB9X2CDR.png) ### Diffie-Hellman ![2024_07_12-15_46_02](https://hackmd.io/_uploads/BJIoQnAvC.png) ### Digital Signature ![2024_07_12-15_46_20](https://hackmd.io/_uploads/HkYn720vR.png) ### Summary: Symmetric vs. Asymmetric Algorithms | Syemmtische Algorithmen | Asymetrische Algorithmen | | ------------------------------------------------------------------------- | ------------------------------------------------------ | | Identischer Schlüssel für Encryption und Decryption (das gleiche für MAC) | Zwei Schlüssel: Einen Public-key und einen Private-Key | | Typische Länge: 128 bit | Typische länge hängt vom Algorithmus ab (z.B. 2048 bit bei RSA) | | Effizenz bei der Rechenleistung und Arbeitsspeicher vorraussetzungen, kleiner Oerhead bei der Nachrichtengröße | Teure Rechenlesitung, Hohe Arbeitsspeicher Vorrausetzungen, Viel Code für die Umsetzung von nöten | ### PKCS (Public Key Cryptography Standards) ![2024_07_12-15_51_15](https://hackmd.io/_uploads/SyokSnRP0.png) Loren Kohnfelder initially described the concept of certificates and the PKI in his thesis at MIT #### RFC 5280 - Definiert the grundlegenden Zertifikatformate, Zertifikatswiederufslisten und PKI (Public key infrastructure) Konzepte - Entwickelt bei der IETF Public-Key Infrastructure (X.509)(pkix) Arbeitsgruppe - Heutzutage wird die Standardisierung von der IETF Limited Additonal Mechanisms for PKIX and SMIME (lamps) Arbeitsgruppe fortgesetzt ### Public Key Certificate ![2024_07_12-15_54_06](https://hackmd.io/_uploads/B1htr2CD0.png) ### Path Validaiton ![2024_07_12-15_54_24](https://hackmd.io/_uploads/BJpcr2APA.png) ### TLS 1.3: Public Key based Authentification ![2024_07_12-15_54_52](https://hackmd.io/_uploads/Skd3S3RwA.png) ![2024_07_12-15_55_02](https://hackmd.io/_uploads/BkukI3RwR.png) ## Autokonfiguration #### Ziel: - Automatische Übergabe von Paramtern zur optim. Integration in das aktuelle Netz. #### Gründe für Autoconfig - Geräte benötigen min. Konfiguration - Manuelle Konfiguration in Mobilen Szenarien unpraktikabel #### Verfahren zur Autokonfiguration **IPv4** - Bootstrap Protocol (BOOTP) - DHCPv4 **IPv6** - Stateless Address Autoconfiguration (SLAAC) - DHCPv6 - Beide Protokolle in Kombination #### DHCPv4 Basics - DHCPv4 $\to$ Client-Server-Dienst - DHCP-Server stellt bereit auf Anfrage - IP-Adresse (aus Adresspool) - Subnetzmaske - Standard-Gateway-Adresse - zusätzlich **DNS-Server-Adresse** möglich Mehrmalige Anfrage desselben Clients führt (häufig) zur Vergabe derselben Adresse. ![image](https://hackmd.io/_uploads/BJjmaFTvR.png) #### Ablauf DHCPv4 ![image](https://hackmd.io/_uploads/rk4LpKaP0.png) 1. **DHCP Discover** wir als lokaler Broadcast (255.255.255.255) mit der Absenderadresse 0.0.0.0 versendet. 2. Inhalte eines **DHCP-Offer**: - mögliche IP Adresse - Dauer der Gültigkeit - Subnetzmaske - IP Adresse des DHCP-Servers 3. **DHCP Request** (Broadcast) forder der Client eine IP Adresse (ggf. mehr) an. 4. **DHCP-ACK** (Broadcast) bestätigt die Auswahl. #### Ablauf Stateless Address Autoconfiguration bei IPv6 (SLAAC) 1. **Erzeugung einer link-lokalen IPv6 Adresse** - FE80::\<InterfaceIdentifier> 3. **Aufspüren von Routern im lokalen Netz (optional)** - Router-Solicitation-Nachrichten an die link-lokale Multicast Adresse „All Router“ FF02::2 4. **Router verteilt IPv6 Präfixe** - Router-Advertisement Nachrichten mit einem geeigneten Präfix an die link-lokale Multicast Adresse „All Nodes“ FF02::1 - Es fehlen für den Client wichtige Informationen wie DNS oder NTP-Server ![image](https://hackmd.io/_uploads/B1GPk5avA.png) #### NAT >Network-Address-Translation ![image](https://hackmd.io/_uploads/HJzHgcpwA.png) ## DNS >Domain-Name-System ### Eigenschaften - verteilte - hierarchische Datenbank - baumförmiger Struktur - Nameserver öffentlich erreichbar - DNS-Protokoll (UDP, Port 53) DNS Informationen $\to$ Ressource Records werden in Zonen aufgeteilt und auf verschiedenen Knoten $\to$ Namensservern verwaltet ### Domainname Syntax - einzelteile $\to$ Labels - Hierarchie von Labels $\to$ Level (gelesen von rechts nach links ) - Null-Label ist für den Wurzelknoten - max Length Label $\to$ 63 Zeichen - max Length Domain $\to$ 253 Zeichen ![image](https://hackmd.io/_uploads/HyMAJLCwA.png) ### DNS Resolver Ablauf 1. Der DNS resolver fragt bei seinem lokal konfigurierten Namensserver nach der IP von en.wikipedia.org 2. Diese liegt nicht im Cache von „Local“ und muss deshalb erfragt werden. „Local“ fragt bei Namensserver „root“ nach en.wikipedia.org. 4. Namensserver „root“ verweist auf „org“-Zone mit Namen und IP der Namensserver von „org“ 5. „Local“ fragt bei Namensserver „org“ nach en.wikipedia.org. 6. Namensserver „org“ verweist auf „wikipedia.org.“-Zone mit Namen und IP der Namensserver von „wikipedia.org“ 7.„Local“ fragt bei Namensserver „wikipedia.org.“ nach en.wikipedia.org. 8. Namensserver „wikipedia.org.“ antwortet mit IP von en.wikipedia.org. 9. „Local“ leitet die Antwort an den DNS Resolver. ![image](https://hackmd.io/_uploads/Sk_3eL0wC.png) ### Typen von DNS Namesservern #### autoritativer Namensserver - gibt gesicherte Antworten - Root Namensserver - TLD Namensserver - primary und secondary autoritativer Namesserver - primary $\to$ werden manuell vom Admin der Zone definiert - secondary $\to$ beziehen ihre Informationen über automatische Update Mechanismen. #### nicht autoritativer Namensserver - Recursive Resolver, DNS Infos aus zweiter Hand - DNS Infos werden im Cache gespeichert - Meist vom ISP auf Router vorkonfig. - Viele Unternehmen bieten Öffentliche DNS-Server an. - Google 8.8.8.8, 8.8.4.4 - Cloudflare 1.1.1.1, 1.0.0.1 - OpenDNS (208.67.222.222) ### DNS Resource Records > DNS Informationen werden als Resource Records gespeichert. - Sie liegen als **Text in Zonen-Dateien** auf den **Nameservern** oder in **komprierter Form in DNS-Paketen** oder in **DNS-Caches** vor. #### Typische Textform - ```<name><ttl><class><type><rdata>``` - name $\to$ Domänenname zu dem der RR gehört - ttl $\to$ Gültigkeit des RR in Sekunden - class $\to$ IN für Internet - type $\to$ Art des Resource Records - 𝐴: IPv4 Adresse eines Node - 𝐴𝐴𝐴𝐴: IPv6 Adresse eines Node - 𝑁𝑆: Hostname eines autoritativen Namensservern - 𝐶𝑁𝐴𝑀𝐸: Abbildung eines Hostnamen auf einen anderen (canonical = anerkannt). ![image](https://hackmd.io/_uploads/r1E-2KCvA.png) ### Lastverteilung mit DNS ![image](https://hackmd.io/_uploads/r1l7pKCwC.png) ### Blacklisting und Datenschutz > DNS ist eine sehr kritische Komponente des Internets. > ## HTTP > ***Hypertext Transfer Protocol*** #### Eigenschaften - HTTP ist ein Request $\to$ Response Protocol - HTTP ist zustandslos - TLS + HTTP = HTTPS ![image](https://hackmd.io/_uploads/S1IaEqTDA.png) ### Protokoll Format #### Methode - GET: Anfrage, um Daten beim Server abzurufen - POST: Daten senden (bsp.login) - PUT, PATCH, DELETE: spezielle Protokollelemente #### Statuscodes: - 200 OK - 401 Unauthorized - 404 Not Found - 500 Internal Server Error - 418 Im a teapot - 425 Too Early - 402 Payment Required - 226 IM Used - 451 Unavailable For Legal Reasons ![image](https://hackmd.io/_uploads/rkeZw5pvR.png) ### Caching im Browser **Ziel:** Reduktion von Daten die durch Client beim Server angefragt werden. **Lösung**: - Server schicken beim HTTP-Response mit wie lange die Daten gültig sind. - Clients können im HTTP-Request mitschicken welche Daten sie noch haben und von welchem Zeitpunkt die Version der Daten ist. - Server prüft beim Request wann sich die Daten das letzte mal verändert haben. - Response 304 (Not Modified) - Repsonse 200 (Ok) ![image](https://hackmd.io/_uploads/r1cRO96D0.png) ### Session trotz zustandslosem HTTP - Viel Szenarien brauchen Sessions (Banken,Shopping) Idee der COOKIES: - Client Requests enthalten Cookies - Server kann Client identifizieren ![image](https://hackmd.io/_uploads/HJ8vF5aw0.png) - Nutzer können mit Cookie getrackt/nachverfolgt werden. - Jeweilige Seite bekommt ihre Cookies, stellt fest wo sie eingebunden ist (Referrer) und so den Nutzer Tracken. ![image](https://hackmd.io/_uploads/SkDW5qTPR.png) ### Unterschied Webserver früher vs. heute ![image](https://hackmd.io/_uploads/rymN99awA.png) ## Mobilfunk ### Geschichte ![2024_07_12-15_56_42](https://hackmd.io/_uploads/rkv7L2CPC.png) ### Zukünfitge Anwendungsfälle ![2024_07_12-15_57_02](https://hackmd.io/_uploads/HJ54Lh0PR.png) ### Zentrale Elemente in einem 4G Mobilfunknetzt ![2024_07_12-15_57_29](https://hackmd.io/_uploads/HkvPUhCDR.png) #### Endgeräte (Mobile Devices): - Smartphone, Tablet, Laptop, IoT (bspw. Sensor, Auto) mit einem 4G Modem - 64-bit International Mobile Subscriber Identity (ISMI), gespeichert auf einer Subscriber Identity Module (SIM) Karte - Jargon: User Equipment (UE) #### Basis station: - Zugangspunkt zum Mobilfunknetzwerk, befindet sich am Rand des Netzes - Verwaltet und verteilt Zugangsmöglichkeiten an Endgeräte in einer Zelle - Koordiniert (gemeinsam mit anderen Elementen) die Authentifizierung von Endgeräten #### Home Subscriber Service (HSS): - Speichert Informationen über die SIm im "Heimnetzwerk" #### Mobility Managment Entity (MME): - Zentrales Steuerungselement in einem LTE Netzwerk #### PDN Gateway (P-GW) - Internet-Router und NAT #### Service Gateway (S-GW) - Router fpr ein lokales Gebiet (bspw. merhere Zellen) ## Low-Power Wide-Area Network (LPWAN) ### Smart City ![2024_07_12-16_06_25](https://hackmd.io/_uploads/Sy8_dhADC.png) ![2024_07_12-16_06_30](https://hackmd.io/_uploads/rJquu30vR.png) ### Drahtlose Kommunikationstechnologien ![2024_07_12-16_05_58](https://hackmd.io/_uploads/Sypu_3AwR.png) - **Reichweite:** Maximale Sendeleitstung und Frequenz - **Datenrate:** Bandbreite und Empfangsleistung ### Low-Power Wide-Area Network (LPWAN) #### Merkmale von LPWANs: - **Lange Batterielaufzeit** - Geringe Datenmenge bei der Übertragung - Geringe Anforderungen an die Hardware - **Viele Sensoren auf einer großen Fläche** - Koordination der Teilnehmer - Sehr gute Reichweite ### Long Range (LoRa) Lora ist eine drathlose Kommunikationstechnologie, bei der einSender **geringer Leistung** (mW) **kleine Datenpakete** (kbps) über eine **große Entfernung** (km) übertrag. Die Innovation ist eine Modulation names **Chirp Spread Spectrum.** ![2024_07_12-16_09_51](https://hackmd.io/_uploads/HyqNF20PC.png) ### LoRa vs. LoRaWAN ![2024_07_12-16_10_11](https://hackmd.io/_uploads/S1RHKnRDC.png) ### LoRaWAN — Netzwerküberblick ![2024_07_12-16_10_24](https://hackmd.io/_uploads/B1i8Y2CPR.png) - **Ein Sensore (End Node)** sammelt Daten, die über **LoRa** an ein oder mehrere Gateways übertragen werden - **Gateways** dekodieren die Daten und leiten diese an einen Network Server weiter - **Network server**: Intellignez im LoraWAN Netzwerk - Sicherheitsprüfungen, dynamische Anpassung der Modulation und Umgang mit **redundanten** Paketen - Anschließend werden die Nachrichten gekapselt und an das endgültige Ziel weitergeleitet den **Application Server** - **Topologie:** Mehrere miteinander verbundene Sterne mit Gateways als Zentrum ### The Things Netowrk - TTN ist ein gemeinschaftliches System, an dem sich jeder beteiligen kan - Die Betreiber der Gatewys berechnen keine Kosten üfr den Empfang und Weiterleitung der Daten ## Starlink ### Motiviation - Digitale Spaltung Ein Problem besteht darin, **Breitband** (bspw. 100 Mbps) pro Haushalt in **ländlichen Gebieten** anzubieten: je dünn besiedelter das Gebiet ist, desto höher sind die **Kosten pro Nutzer** und desto geringer (wenn nicht sogar negativ) ist der erwartete Gewinn für den Internet Service Provider. ### Internet aus dem Himmel - "Alternative Netzwerke" wurden/werden evaluiert - Global Player wollen die unerschlossenen Märkte für sich gewinnen - Problem: Belastbare technische Informationen vs. Medienberichterstattung ![2024_07_12-16_23_37](https://hackmd.io/_uploads/HkEd32Rw0.png) ### Satelliten - Geosynchronous Earth Orbit (GEO) - Geosynchronous Earth Orbit (GEO)-Satellitensysteme (Umlaufbahn bei 35700 km) sind seit Jahrzehnten im Einsatz - Das Hauptproblem der GEO-Satellitenkommunikation ist die typische RTT $\approx$ 500 ms: $2 * 2 * \frac{35700\ km}{c} = 476 ms$ ![2024_07_12-16_25_29](https://hackmd.io/_uploads/Hkrk62RPR.png) ### Satelliten - Medium Earth Orbit (MEO) and Low Earth Orbit (LEO) - MEO- oder LEO-Systeme arbeiten in einer niedrigeren Umlaufbahn (zwischen 160 km und 2000 km) und reduzieren die RTT erheblich. - MEO- oder LEO-Unternehmen behaupten, die digtale Spaltung zu schließen, indem sie Statelliten-Konstellationen starten, die einen kontinuierlichen Internetdienst für fast alle Gebiete der ERde bieten könnte. - **Herausforderungen:** - Fragwürdiger Business Cases - Die Bodenstationen - Inter-Statellite Communication - Weltraummüll in der unteren Erdumlaufbahn - Sicht für die Astronomen ## 5 Übungsblätter 1. Referenzmodelle 2. Kabeleigenschaften 3. Fehlererkennung 4. Subnetzbildung 5. IPv6 ## 5 Praktikumsaufgaben 1. Adressierung und Protokollanalyse 2. Kommunikation mit IPv4 3. Kommunikation mit IPv6 4. Statisches Routing 5. Webkommunikationanimation 6. DHCP ## Altklausuren ?