Inhaltsverzeichnis

1. Das OSI-Schichtenmodell

2. Bitübertragungsschicht

2.1 Einführung

2.2 Nachrichten und Informationen

2.3 Signale

2.4 Kodierung und Impulsformung

2.5 Übertragungsmedien

3. Sicherungsschicht

3.1 Direktverbindungsnetze

3.2 Medienzugriff

3.3 Rahmenbildung

4. Vermittlungsschicht

4.1 Vermittlungsarten

4.2 Adressierung im Internet

4.3 ICMP

4.4 DHCP

4.5 IPv6

4.6 Statisches Routing

4.7 Dynamisches Routing

4.8 Routing Protokolle

5. Transportschicht

5.1 Verbindungslose Übertragung

5.2 Verbindungsorientierte Übertragung

5.3 TCP

5.4 Network Address Translation

6. Kommunikationssteuerungsschicht

7. Datendarstellungsschicht

8. Anwendungsschicht

8.1 WWW - World Wide Web

8.2 HTTP

8.3 e-Mail

9. Zusammenfassung der Schichten


1. Das OSI-Schichtenmodell

Das OSI-Modell [Open Systems Interconnection Model] stellt ein Referenzmodell für Netzwerkprotokolle dar und ist folgendermaßen aufgebaut:

OSI-Schichtenmodell - Wikipedia


2. Physical Layer

2.1 Einführung

Der Physical Layer ist die erste Schicht des OSI-Schichtenmodells und wird auch Bitübertragungsschicht genannt.
Hier findet die Erzeugung der Signale in den entsprechenden Frequenzen durch elektromagnetische Wellen statt.

2.2 Nachrichten und Informationen

Informationstheorie nach Shannon

I=Informationsgehalt in bitI = \text{Informationsgehalt in bit}
P(a)=Wahrscheinlichkeit eines Zeichens zum Zeitpunkt tP(a) = \text{Wahrscheinlichkeit eines Zeichens zum Zeitpunkt } t

I(P(a))=log2(P(a))I(P(a)) = -log_2 (P(a))

Beispiel (es wird konstant “a” gesendet): Ia(1)=log2(1)=0bitI_a(1) = -log_2 (1) = 0 bit

Entropie

Beispiel:
Σ={a,b},P(b)=0,12\Sigma = \{a, b\}, P(b) = 0,12
I(a)=?,H(x)=?I(a) = ?, H(x) = ?

P(a)=1P(b)=0,88P(a) = 1 - P(b) = 0,88
I(a)=log2(P(a))=log2(0,88)0,18I(a) = - log_2 (P(a)) = - log_2 (0,88) \approx 0,18
P(b)=0,12P(b) = 0,12
I(b)=log2(P(b))=log2(0,12)3,06I(b) = - log_2 (P(b)) = - log_2 (0,12) \approx 3,06

H(x)=aΣP(a)log2(P(a))=P(a)I(a)+P(b)I(b)0,53H(x) = - \sum\limits_{a \in \Sigma} P(a) * log_2(P(a)) = P(a) * I(a) + P(b) * I(b) \approx 0,53

Transinformationen (mutual information)

Gedächtnisloser Kanal:
https://upload.wikimedia.org/wikipedia/commons/c/cf/Entroy_XY.png

2.3 Signale

Ein Signal xx ist

Symbole können einer definierten Signaländerung Δx\Delta x zugewiesen werden.

Signale lassen sich in folgende Kategorien unterteilen:

Wertkontinuierlich Wertdiskret
Zeitkontinuierlich x=x(t),xR,tRx = x(t), x \in \R, t \in \R x=x(t),xN,tRx = x(t), x \in \N, t \in \R
Zeitdiskret x=x(t),xR,tNx = x(t), x \in \R, t \in \N x=x(t),xN,tNx = x(t), x \in \N, t \in \N

Größen, wie die Spannung UU und der Strom II sind Wert- und Zeitkontinuierlich

https://www.gut-erklaert.de/images/mathematik/ohmsches-gesetz-dreieck.jpg

Probleme:

Lösung:
Konvertierung des

Analogsignale werden durch den ÀDC = Analog Digital Converter in eine zeit- und wertdiskrete Repräsentation überführt (x=x(t),xN,tNx = x(t), x \in \N, t \in \N).

Analoge Signale

Digitale Signale

Aspekte der Übertragung von Nachrichten

Dirac-Distribution

https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Dirac_distribution_PDF.svg/1200px-Dirac_distribution_PDF.svg.png

Faltung

Heaviside-Funktion

Rechteckfunktion

Rampenfunktion

Taktsignal

SPI und UART:

5-4-3 Regel

In einem Netzwerk gilt:

Abtastung

Verfahren der Analog-Digital-Umwandlung

  1. Sample and hold
  1. Diskretisierung und Quantisierung

Abtasttheorem nach Shannon

Die gestrichelte Linie zeigt mögliche andere Signale mit demselben Ergebnis bei der gegebenen Abtastrate

Allgemeine Werte

2.4 Kodierung und Impulsformung

Basisimpuls 1 - NRZ

https://upload.wikimedia.org/wikipedia/commons/5/55/NRZcode.png

Basisimpuls 2 - RZ

https://www.ijunoon.com/sw-store/images/dictionary/Return-to-zero.jpg

Basisimpuls 3 - Manchesterkodierung

https://upload.wikimedia.org/wikipedia/commons/0/0a/Manchester_code.png

2.5 Übertragungsmedien

Übertragungsmedien lassen sich unterteilen in:

Kabel

Hub


3. Sicherungsschicht

3.1 Direktverbindungsnetze

Aufgaben der Sicherungsschicht:

verschiedene Aufbaustrukturen:

1. Punkt zu Punkt:

2. Stern:

3. Vermaschung:

4. Vollvermascht:

5. Baum:

6. Bus (Binary Unit System):

Verbindungscharakteristik

Nachrichtenflussdiagramm

Verbindungsarten

simplex, halbduplex und vollduplex:
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSkHSneyZshgPRp7iPzsxLBFQeFLQdCSaiSxcu-xyOxHan2Fjk4kA&s

3.2 Medienzugriff

asynchrone-Verfahren:

ALOHA

Slotted ALOHA

CSMA (Carrier Sense Multiple Access)

synchrone-Verfahren:
Im Gegensatz zu den asynchronen Verfahren kommuniziert bei den synchronen Verfahren nur ein Knoten zur Zeit.

Token passing

3.3 Rahmenbildung

Auseinanderhalten von Nachrichten in einer Sequenz von Bits

  1. Nachrichtenlänge angeben durch
  1. Bitstuffing: Anfang und Ende einer Nachricht werden mit einer bestimmten Bitfolge, die nicht Teil der Nachricht ist und zwischen Sender und Empfänger vereinbart wurde, markiert. (Bsp. 01111110 101110101101110 01111110)

  2. Coderegelverletzung: Markierung einer Nachricht durch Auslassen definierter Signalwechsel bei gleichanteilsfreien Codierungen (Bsp. Manchestercodierung) vor- und hinter der Nachricht.

Adressierung

Bedingung:

MAC-Adressen (Media Access Control)

Ziel MAC-Adresse Ursprungs MAC-Adresse (Control) L3-PDU (Daten) Prüfsumme
Empfänger Sender optional - für die Unterstützung virtueller LANs über Ethernet PDU = Protocol Data Unit zur Fehlererkennung

Übertragungsfehler erkennen und korrigieren

Prüfsummenbildung mit Hilfe von CRC (cyclic redundancy check)

  1. Die Nachricht mm erfüllt die Bedingung m>k|m| \gt k, wobei kk der Grad des Generatorpolynoms gg ist
  2. Die Nachricht mm erhält am Ende kk Nullen (w0kw \circ 0^k)
  3. Die Nachricht mit den zusätzlichen Nullen wird mit dem Generatorpolynom gg XOR verknüpft 00=001=110=111=00 \oplus 0 = 0 \\ 0 \oplus 1 = 1 \\ 1 \oplus 0 = 1 \\ 1 \oplus 1 = 0
  4. Der Rest rr mit rk|r| \leq k wird an die ursprüngliche Nachricht angehängt
  5. Der Empfänger der Nachricht mit Prüfsumme teilt diese durch das Generatorpolynom und sollte nach der fehlerfreien Übertragung keinen Rest erhalten.

Beispiel
Generatorpolynom g=100111    k=5g = 100111 \implies k = 5 (da g=x5+x2+x1+x0g = x^5 + x^2 + x^1 + x^0)
Nachricht: m=100101110011101    m=15m = 10010 11100 11101 \implies |m| = 15

  1. m>k=15>5=true|m| \gt k = 15 \gt 5 = true
  2. m05=10010111001110100000m \circ 0^5 = 10010 11100 11101 00000
  3. Polynomdivision:
10010111001110100000
100111 
------
0000101100
    100111 
    ------
    00101111
      100111 
      ------
      00100010
        100111
        ------
        000101100
           100111 
           ------
           00101100
             100111
             ------
             0010110 = r
  1. rk=55=true|r| \leq k = 5 \leq 5 = true
    mr=10010111001110110110=10010111001110110110m \circ r = 10010 11100 11101 \circ 10110 = 10010 11100 11101 10110

  2. Empränger prüft auf Korrektheit

10010111001110110110
100111 
------
0000101100
    100111
    ------
    00101111
      100111
      ------
      00100010
        100111
        ------
        000101110
           100111
           ------
           00100111
             100111
             ------
             0000000

Kollisionsdomäne

4. Vermittlungsschicht

4.1 Vermittlungsarten

  1. Leitungsvermittlung (verbindungsorientierte Verbindung)
  1. Nachrichtenvermittlung
  1. Paketvermittlung

4.2 Adressierung im Internet

Checksumme berechnen (Hexadezimal)

  1. Alle bis auf die Checksumme addieren
  2. Übertrag in jedem Schritt hinzuzählen
  3. Einerkomplement des Ergebnis bilden

Beispiel
Header:
0x4500 0x3621
0x1211 0x4000
0x0108 0xEEA8
0xB29B 0x4D3A
0xC0A8 0x0203

4500 + 3621 + 1211 + 4000 + 0108 + B29B + 4D3A + C0A8 + 0203 = 90BC

Einerkomplement (Hex in Binär, Bits flippen und in Hex zurück umwandeln):
90BC16=1001000010111100290BC_{16} = 1001 0000 1011 1100_2
Bits flippen: 01101111010000112=6F43160110 1111 0100 0011_2 = 6F43_{16}

ARP - Address Resolution Protocol

ARP Spoofing

Beispiel-Szenario:

A
Gateway
B
C
D

Angenommen Host A möchte Host D eine Nachricht schicken und es sind zwei Netze (A, B) und (C, D)

  1. HostAHost A erkennt, dass HostDHost D nicht in dem Direktnetz liegt
  2. HostAHost A löst die MAC-Adresse zu der Adresse des Gateways auf und schickt die Nachricht mit der IP Adresse von HostDHost D los
  3. Das Gateway kennt die IP Adresse des Ziels und löst diese dann im anderen Netz auf die MAC-Adresse auf und leitet die Nachricht an das Ziel HostDHost D weiter

ℹ️ Beim Routing werden die Ziel-MAC-Adressen zwischendurch verändert, aber die IP-Adresse bleibt gleich.

4.3 ICMP - Internet Control Message Protocol

4.4 DHCP - Dynamic Host Configuration Protocol

Die Zuteilung von IP-Adressen kann auf zwei Wegen erfolgen:

  1. Statisch
  1. Dynamisch
1. DHCP-Discover
2. DHCP-Offer
3. DHCP-Request
4. DHCP-ACK/NACK
Host
DHCP

4.5 IPv6

IPv4 Adressraum ist knapp und die IPv4 Header sind unnötig komplex, also wurde IPv6 entwickelt

4.6 Statisches Routing

Subetting

Beispiel:
IP-Adresse: 192.168.178.20 = 1100 0000 . 1010 1000 . 1011 0010 . 0001 0100
Subnetzmaske: 255.255.255.0 = 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
kombinierte Schreibweise für IP-Adresse mit Subnetzmaske: 192.168.178.20/24

ℹ️ In diesem Fall sind die ersten drei Blöcke (24-Bit) der Netzanteil und der letzte Block der Hostanteil (8-Bit), woraus sich 256 Adressen [0000 0000 bis 1111 1111] ergeben. Der Hostanteil wird durch die Anzahl der Nullen der Subnetzmaske bestimmt bzw. der Netzanteil durch die Anzahl der Einsen.

Berechnung der Netzadresse durch die UND-Verknüpfung:

1100 0000 . 1010 1000 . 1011 0010 . 0001 0100
1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
----------------------------------------------
1100 0000 . 1010 1000 . 1011 0010 . 0000 0000

Netzadresse: 192.168.178.0

Die Broadcastadresse kann ebenfalls ermittelt werden, da sie reserviert die letzte Adresse des Hostanteils ist. In diesem Fall lautet die Broadcastadresse 192.168.178.255

Routing Tabellen

Longest Prefix Matching

4.7 Dynamisches Routing

Kruskal Algorithmus

  1. Sortierung der Kanten nach Kantengewicht
  2. Zwei Mengen initialisieren (Menge der Kanten und Menge der Knoten des MST)
  3. Kante mit dem geringsten Gewicht wählen und zur Menge der Kanten des MST hinzufügen, solange sich dadurch kein Kreis bildet.
  4. Die Knoten der ausgewählten Kante werden zur Menge der Knoten des MST hinzugefügt

Beispiel:
https://www.oreilly.com/library/view/c-data-structures/9781788833738/assets/f5ee36e3-7ca4-425f-8907-e1830736b7bc.png

Prim Algorithmus

Beispiel:
https://im-coder.com/images2/153780463448531.gif

Suchstrategien

Dijkstra-Algorithmus

  1. Jeder Knoten erhält die Eigenschaften “Vorgänger” und “Distanz”
  2. Alle Knoten mit unbekannter Entfernung (alle Knoten, die keine direkten Nachbarn des Startknotens sind) erhalten die Entfernung “\infty
  3. Initialisierung einer Prioritätswarteschlange der Nachbarknoten nach Entfernung
  4. Prioritätswarteschlange abbauen und Distanzen eintragen

Beispiel:

100
50
100
100
50
250
250
A
B
D
C
E

Ermittlung der Distanzen nach Dijkstra von Knoten A nach E:

Knoten A B C D E Queue
\empty 0 \infty \infty \infty \infty {A}
A 0 100 \infty 50 \infty {D, B}
D 0 150 > 100     \implies 100 \infty 50 300 {B, C, E}
B 0 100 200 50 350 > 300     \implies 300 {C, E}
C 0 100 200 50 250 < 300     \implies 250 {E}
E 0 100 200 50 250 {}

A*-Algorithmus

Der obige Graph wurde mit zusätzlichen Distanzschätzungen vom Start (A) zum Ziel (E) versehen:

100
50
100
100
50
250
250
A - 300
B - 200
D - 300
C - 30
E

Ermittlung der Distanzen nach Dijkstra von Knoten A nach E:

Knoten A B C D E Queue
\empty 0 + 300 = 300 \infty \infty \infty \infty {A}
A 300 100 + 200 = 300 \infty 50 + 300 = 350 \infty {B, D}
B 300 300 100 + 100 + 30 = 230 350 100 + 250 = 350 {C, D, E}
C 300 300 230 350 100 + 100 + 50 = 250 < 350     \implies 250 {D, E}
D 300 50 + 100 + 200 = 350 > 300     \implies 300 230 350 50 + 250 = 300 > 250     \implies 250 {E}
E 300 300 230 350 250 {}

Bellman-Ford Algorithmus

  1. Distanz vom Startknoten zu jedem anderen Knoten auf unendlich setzen
  2. Alle Kanten müssen nach dem kürzesten Weg überprüft werden
  3. Der Algorithmus ist beendet, wenn in einer Iteration keine Änderungen mehr zur vorherigen Iteration auftreten. Sollte dies der Fall sein, enthält der Graph einen negativen Zyklus
3
11
-9
A
B
C
Iteration Kante A B C
1 A, B 0 \infty \infty
1 B, C 0 3 [A] \infty
1 A, C 0 3 [A] 11 [A]
2 A, B 0 3 [A] 11 [A]
2 B, C 0 11 + (-9) = 2 [C] < 3 [A]     \implies 2 [C] 11 [A]
2 A, C 0 3 [A] 11 [A]
3 A, B 0 3 [A] 11 [A]
3 B, C 0 2 [C] 11 [A]
3 A, C 0 3 [A] 11 [A]

Distanzvektor Routing

  1. Kostenmatrix erzeugen (Enthält die Kosten der direkten Nachbarn)
  2. Schicke die Informationen, welche Router am besten erreicht werden können zu den Nachbarn
  3. Die Informationen anderer Router, welche Knoten sie am besten erreichen können wird nun in die eigene Informationsbasis einberechnet
  4. Bei minimierten Kosten für den Zugriff auf direkte Nachbarn wird eine aktualisierte Form der Information-Zusammenstellung erneut an die Nachbarn gesendet

4.8 Routing Protokolle

AS = Autonomes System ist eine Menge von Routern, die mehrere Netzwerke verwalten und Pakete innerhalb des autonomen Systems vermitteln. Das Internet besteht aus einem Verbund vieler autonomer Systeme.

Intra-AS-Routing (innerhalb des autonomen Systems)

Interieur Gateway Protokolle:

ℹ️

Inter-AS-Routing (über mehrere autonome Systeme hinweg)

EGP = Exterieur Gateway Protocol

5. Transportschicht

5.1 Verbindungslose Übertragung

verbindungslose Transportdienste

UDP = User Datagram Protocol

5.2 Verbindungsorientierte Übertragung

Drei-Wege-Handschlag

Der Drei-Wege-Handschlag besteht aus 3 Phasen:

  1. Verbindungsaufbau
  2. Datenübertragung
  3. Verbindungsabbau
i                                                          j
| ----------------SYN,SequenceNumber = x-----------------> |
| <----SYN,SequenceNumber = y, AcknowledgeNumber = x+1---- |
| ---------------AcknowledgeNumber = y+1 ----------------> |

Nachteile
- es kann nur ein Segment übertragen und bestätigt werden

Verbesserung des Drei-Wege-Handschlag

Sliding Window Verfahren

Beispiel: Sendefenster von 5 Segmenten

i                                                      j
| ----------------SequenceNumber = 0-----------------> |
| ----------------SequenceNumber = 1-----------------> |
| ----------------SequenceNumber = 2-----------------> |
| ----------------SequenceNumber = 3-----------------> |
| ----------------SequenceNumber = 4-----------------> |
| <-------------AcknowledgeNumber = 5----------------- |
| ----------------SequenceNumber = 5-----------------> |
| ----------------SequenceNumber = 6-----------------> |
| ----------------SequenceNumber = 7-----------------> |
| ----------------SequenceNumber = 8-----------------> |
| ----------------SequenceNumber = 9-----------------> |
| <-------------AcknowledgeNumber = 10----------------- |

Go-Back-N

i                                                      j
| ----------------SequenceNumber = 0-----------------> |
| --------SequenceNumber = 1 (fehlgeschlagen)--------> |
| ----------------SequenceNumber = 2-----------------> |
| ----------------SequenceNumber = 3-----------------> |
| ----------------SequenceNumber = 4-----------------> |
| <-------------AcknowledgeNumber = 1----------------- |
| ----------------SequenceNumber = 1-----------------> |
| ----------------SequenceNumber = 2-----------------> |
| ----------------SequenceNumber = 3-----------------> |
| ----------------SequenceNumber = 4-----------------> |
| ----------------SequenceNumber = 5-----------------> |
| <-------------AcknowledgeNumber = 6----------------- |

Selective Repeat

i                                                      j
| ----------------SequenceNumber = 0-----------------> |
| --------SequenceNumber = 1 (fehlgeschlagen)--------> |
| ----------------SequenceNumber = 2-----------------> |
| ----------------SequenceNumber = 3-----------------> |
| ----------------SequenceNumber = 4-----------------> |
| <-------------AcknowledgeNumber = 1----------------- |
| ----------------SequenceNumber = 1-----------------> |
| ----------------SequenceNumber = 5-----------------> |
| <-------------AcknowledgeNumber = 6----------------- |

5.3 TCP - Transmission Control Protocol

TCP - Flusskontrolle

TCP - Staukontrolle

5.4 NAT - Network Address Translation

6. Kommunikationssteuerungsschicht (Sitzungsschicht)

Session

Connection-Oriented Mode

  1. Verbindungsaufbau
  2. Datentransfer
  3. Verbindungsabbau

Connectionless Mode

ℹ️ Verbindungen auf der Sitzungsschicht differenziert sich von Verbindungen auf der Transportschicht. Eine Session kann z.B. mehrere TCP- oder UDP-Verbindungen beinhalten.

7. Datendarstellungsschicht

ermöglicht den Kommunikationspartnern eine einheitliche Interpretation der Daten

Kompression von Nachrichten

8. Anwendungsschicht

Wichtige Dienste:

8.1 WWW - World Wide Web

Ablauf einer Abfrage im WWW:

  1. Browser verarbeitet die eingegebene URL (Uniform Resource Locator)
  2. Mit Hilfe des DNS (Domain Name System) wird die IP-Adresse der URL ermittelt
  1. Es wird eine TCP-Verbindung über Port 80 (HTTP) zur IP-Adresse aufgebaut
  2. Die Datei des Pfads wird vom Server angefordert

8.2 HTTP

	GET - Abfrage einer bestimmten Ressource
	HEAD - Abfrage des Headers einer bestimmten Ressource
	PUT - Anfordern des Schreibens einer Ressource
	POST - Anhängen neuer Daten an die bekannte Ressource
	DELETE - Anforderung der Löschung einer bestimmten Ressource
	1xx - Information
	2xx - Erfolg (Bsp. 200 - OK)
	3xx - Umleitung
	4xx - Client-Fehler (Bsp. 400 - Bad Request)
	5xx - Server-Fehler (Bsp. 502 - Bad Gateway)

Proxy

8.3 e-Mail

zwei bedeutende Teilsysteme:

  1. User-Agent (e-Mails lesen oder verwalten)
  2. Message-Transfer-Agents (Übermittlung von Nachrichten)

wichtige Protokolle für e-Mail

9. Zusammenfassung der Schichten

Physical Layer

Network Layer

Transport Layer

Session Layer

Presentation Layer

Application Layer