Aufgabe 1)
Du arbeitest in einem Projekt, das die Netzwerkkommunikation zwischen mehreren Systemen optimieren soll. Dabei orientierst du dich am OSI-Schichtenmodell, um die verschiedenen Aspekte der Kommunikation besser zu verstehen und zu verbessern. Du sollst dich dabei auf spezifische Schichten und deren Funktionalitäten konzentrieren.
a)
Ashorement der Zuverlässigkeit: Beschreibe die Hauptunterschiede zwischen TCP und UDP im Kontext der vierten Schicht (Transport) des OSI-Modells. Gib mindestens drei konkrete Szenarien an, in denen TCP bevorzugt gegenüber UDP eingesetzt wird, und erkläre die Gründe für diese Präferenz.
Lösung:
Im Kontext der vierten Schicht (Transport) des OSI-Modells sind TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) zwei der bekanntesten Protokolle. Sie unterscheiden sich in mehreren Aspekten, die ihre jeweiligen Einsatzmöglichkeiten bestimmen:
- Zuverlässigkeit: TCP bietet zuverlässige Datenübertragung mit Fehlerkorrektur und Bestätigung (ACKs) der empfangenen Datenpakete. UDP hingegen bietet keine Mechanismen zur Fehlerkorrektur oder Bestätigung der Datenlieferung.
- Verbindungsorientierung: TCP ist verbindungsorientiert, d.h. vor dem Datenaustausch wird eine Verbindung zwischen Sender und Empfänger aufgebaut. UDP ist verbindungslos und sendet Datenpakete ohne vorherige Verbindung.
- Flusskontrolle und Überlaststeuerung: TCP verfügt über Mechanismen zur Flusskontrolle und Überlaststeuerung, um sicherzustellen, dass der Datenfluss dem Netzwerkzustand angepasst wird. UDP verzichtet auf solche Mechanismen und lässt die Verwaltung der Datenübertragung dem Anwendungsschicht über.
Hier sind drei konkrete Szenarien, in denen TCP bevorzugt gegenüber UDP eingesetzt wird:
- Dateiübertragung (z.B. FTP): Bei der Dateiübertragung ist es wichtig, dass alle Daten korrekt und vollständig ankommen. TCP stellt sicher, dass verlorene oder beschädigte Pakete erneut gesendet werden, bis sie korrekt empfangen wurden. Dies macht TCP zur bevorzugten Wahl für solche Anwendungen.
- Webanfragen (HTTP/HTTPS): Der Zugriff auf Webseiten erfordert zuverlässige Datenübertragung, um sicherzustellen, dass der Benutzer die vollständige und korrekte Seite erhält. Da HTTP und HTTPS auf TCP basieren, wird garantiert, dass alle Datenpakete korrekt und in der richtigen Reihenfolge ankommen.
- E-Mail (SMTP, IMAP, POP3): E-Mails müssen zuverlässig und vollständig zugestellt werden. Die Protokolle SMTP, IMAP und POP3 basieren alle auf TCP, um sicherzustellen, dass die Nachrichten ohne Fehler übertragen werden, was für die Integrität der Kommunikation unerlässlich ist.
Zusammenfassend lässt sich sagen, dass TCP aufgrund seiner Zuverlässigkeits- und Kontrollmechanismen in Anwendungen bevorzugt wird, bei denen Datenintegrität und vollständige Zustellung entscheidend sind, während UDP in Anwendungen bevorzugt wird, die geringere Latenzzeiten und eine schnellere Datenübertragung ohne die zusätzlichen Zuverlässigkeits- und Kontrollmechanismen erfordern.
b)
IP-Adressierung und Routing: Erläutere die Rolle der IP-Adressen und des Routings in der Netzwerkschicht (Schicht 3) des OSI-Modells. Erkläre anhand eines Beispiels, wie ein Datenpaket von einem Absender zu einem Empfänger über mehrere Zwischenknoten (Router) transportiert wird. Zeichne ein Diagramm zur Verdeutlichung des Prozesses.
Lösung:
In der Netzwerkschicht (Schicht 3) des OSI-Modells spielen IP-Adressen und Routing eine zentrale Rolle. IP-Adressen dienen dazu, die Absender- und Empfängergeräte eindeutig zu identifizieren und die Datenpakete korrekt zu adressieren. Das Routing ermöglicht die Weiterleitung dieser Pakete durch mehrere Zwischenknoten, um die effizienteste Route von der Quelle zum Ziel zu finden.
Rolle der IP-Adressen:
- Identifikation: Jede Netzwerkschnittstelle hat eine eindeutige IP-Adresse, die sie im Netzwerk identifiziert.
- Adressierung: IP-Adressen sind notwendig, um den Ursprung und das Ziel eines Datenpakets zu bestimmen und sicherzustellen, dass das Paket an der richtigen Stelle ankommt.
- Netzwerksegmentierung: IP-Adressen helfen bei der Unterteilung eines physischen Netzwerks in logische Subnetzwerke, was das Routing und die Verwaltung vereinfacht.
Rolle des Routings:
- Pfadfindung: Routing-Protokolle wie OSPF, BGP und RIP bestimmen den besten Pfad durch das Netzwerk basierend auf Metriken wie Anzahl der Hops, Bandbreite und Verzögerung.
- Datenweiterleitung: Router lesen die Ziel-IP-Adresse eines Pakets und entscheiden anhand ihrer Routing-Tabelle, über welchen Netzwerkschnittstelle das Paket weitergeleitet wird.
- Skalierbarkeit: Das Routing ermöglicht die Kommunikation zwischen Geräten in großen und komplexen Netzwerken, indem es die Netzwerklast effizient verteilt.
Beispiel: Angenommen, ein Datenpaket soll von einem Computer A in Netzwerk 192.168.1.0/24 zu einem Computer B in Netzwerk 192.168.2.0/24 gesendet werden. Das Netzwerk umfasst mehrere Zwischenknoten (Router).
Hier ist ein vereinfachtes Diagramm zur Veranschaulichung:
- Computer A (192.168.1.10) → Router 1 (192.168.1.1)
- Router 1 (192.168.1.1) → Router 2 (10.0.0.1)
- Router 2 (10.0.0.1) → Router 3 (10.0.0.2)
- Router 3 (10.0.0.2) → Router 4 (192.168.2.1)
- Router 4 (192.168.2.1) → Computer B (192.168.2.10)
Diagramm:
Prozessbeschreibung:
- Computer A sendet das Datenpaket mit Zieladresse 192.168.2.10 an Router 1.
- Router 1 sieht die Zieladresse und leitet das Paket entsprechend seiner Routing-Tabelle an Router 2 weiter.
- Router 2 empfängt das Paket und leitet es an Router 3 weiter.
- Router 3 empfängt das Paket und leitet es an Router 4 weiter.
- Router 4 empfängt das Paket und leitet es schließlich an Computer B weiter.
Durch diesen Prozess der schrittweisen Weiterleitung über verschiedene Router erreicht das Datenpaket sein Ziel.
c)
Anwendungsprotokolle: Wähle zwei Anwendungsprotokolle (z.B. HTTP, FTP, SMTP) aus der Anwendungsschicht (Schicht 7) des OSI-Modells und vergleiche ihre Funktionsweise und Anwendungsbereiche. Diskutiere, wie diese Protokolle zur Interoperabilität und Modularität in Netzwerken beitragen.
Lösung:
Die Anwendungsschicht (Schicht 7) des OSI-Modells stellt verschiedene Protokolle zur Verfügung, die direkt von Endanwenderprogrammen genutzt werden. Diese Protokolle ermöglichen die Kommunikation und Datenübertragung zwischen verschiedenen Anwendungen. Hier vergleichen wir zwei weit verbreitete Anwendungsprotokolle: HTTP und FTP.
HTTP (HyperText Transfer Protocol)
- Funktionsweise: HTTP ist ein zustandsloses Protokoll, das hauptsächlich für die Übertragung von Webinhalten (HTML-Seiten, Bilder, Videos usw.) verwendet wird. Es basiert auf dem Anfrage-Antwort-Modell, bei dem der Client (Browser) eine Anfrage an den Server sendet, und dieser daraufhin die angeforderte Ressource zurücksendet.
- Anwendungsbereich: HTTP wird primär im World Wide Web genutzt. Es ermöglicht den Zugriff auf Webseiten und andere Ressourcen im Internet.
- Port: Standardmäßig verwendet HTTP Port 80.
FTP (File Transfer Protocol)
- Funktionsweise: FTP ist ein Protokoll zur Übertragung von Dateien zwischen einem Client und einem Server. Es unterstützt sowohl die Verwaltung von Dateien (wie Erstellen, Löschen und Umbenennen) als auch den Transfer großer Datenmengen.
- Anwendungsbereich: FTP wird hauptsächlich für die Dateiübertragung und das Datei-Management zwischen Computern verwendet. Es eignet sich besonders für die Bereitstellung von Downloads und das Hochladen großer Dateien.
- Port: Standardmäßig verwendet FTP Port 21 für Befehle und Port 20 für die Datenübertragung.
Vergleich der Funktionsweise:
- Zustandslosigkeit vs. Zustandsbehaftet: HTTP ist zustandslos, was bedeutet, dass jede Anfrage unabhängig von vorherigen Anfragen behandelt wird. FTP hingegen ist zustandsbehaftet, da es eine Sitzung zwischen dem Client und dem Server aufrechterhält, in der mehrere Befehle und Dateiübertragungen durchgeführt werden können.
- Datenübertragung: HTTP ist optimiert für den schnellen Abruf von Webinhalten, während FTP für den zuverlässigen Transfer großer Dateien und die Verwaltung von Dateisystemen geeignet ist.
- Sicherheit: Übertragenes HTTP kann unverschlüsselt sein, aber mit HTTPS kann man SSL/TLS verwenden, um die Verbindungen zu sichern. FTP kann auch mit SSL/TLS gesichert werden (FTPS), aber es gibt auch eine neuere Variante von FTP, die direkt SSL/TLS unterstützt (FTPES).
Beitrag zur Interoperabilität und Modularität:
- Interoperabilität: Beide Protokolle ermöglichen die Kommunikation zwischen unterschiedlichsten Systemen und Anwendungen, unabhängig von den verwendeten Betriebssystemen oder Hardwareplattformen. Dies gewährleistet dasselbe Protokoll zur Datenübertragung auf verschiedensten Geräten und Anwendungen.
- Modularität: Durch ihre spezifischen Anwendungsbereiche erlauben HTTP und FTP die modularen Konstruktion von Netzwerken und Diensten. Entwickler können z.B. HTTP für Webanwendungen und FTP für Dateiübertragungsdienste einsetzen, wodurch die Komplexität reduziert und die Wartbarkeit verbessert wird.
Zusammenfassend ermöglichen HTTP und FTP durch ihre spezielle Funktionsweise und Anwendungen eine effektive und effiziente Kommunikation und Datenübertragung im Netzwerk. Ihre Interoperabilität und Modularität tragen wesentlich zur Flexibilität und Skalierbarkeit moderner Netzwerkinfrastrukturen bei.
d)
Schichtordnung und Dienste: Erkläre, warum die Schichten des OSI-Modells in der angegebenen Reihenfolge strukturiert sind und wie die Dienste jeder Schicht die Funktionen der darüberliegenden Schichten unterstützen. Verwende dazu ein konkretes Beispiel einer Netzwerkkommunikation, um deine Erklärung zu verdeutlichen.
Lösung:
Das OSI-Modell (Open Systems Interconnection Model) besteht aus sieben Schichten, die jeweils spezifische Funktionen und Dienste bereitstellen. Diese Schichten sind in einer bestimmten Reihenfolge angeordnet, um eine klare Struktur und Modularität in der Netzwerkkommunikation zu gewährleisten. Jede Schicht baut auf den Diensten der darunterliegenden Schicht auf und bietet Dienste für die darüberliegende Schicht an. Dies ermöglicht eine sehr flexible und skalierbare Architektur.
Die sieben Schichten des OSI-Modells sind:
- Schicht 1: Physikalische Schicht
- Schicht 2: Sicherungsschicht
- Schicht 3: Netzwerkschicht
- Schicht 4: Transportschicht
- Schicht 5: Sitzungsschicht
- Schicht 6: Darstellungsschicht
- Schicht 7: Anwendungsschicht
Erklärung der Schichten und deren Dienste:
- Schicht 1: Physikalische Schicht Die physikalische Schicht ist für die Übertragung von Rohdaten als elektrische, optische oder elektromagnetische Signale über physische Verbindungen verantwortlich. Sie umfasst Hardwarekomponenten wie Kabel, Hubs und Netzwerkkarten.
- Schicht 2: Sicherungsschicht Die Sicherungsschicht stellt einen zuverlässigen Übertragungsweg zwischen zwei direkt verbundenen Geräten bereit. Sie sorgt für Fehlererkennung und -korrektur auf der MAC-Adressenebene. Beispiele sind Ethernet und Wi-Fi.
- Schicht 3: Netzwerkschicht Die Netzwerkschicht ist für das Routing und die logische Adressierung zuständig. Sie bestimmt den optimalen Weg durch das Netzwerk und verwendet IP-Adressen zur Identifikation. Ein Beispiel ist das Internet Protocol (IP).
- Schicht 4: Transportschicht Die Transportschicht stellt eine zuverlässige Datenübertragung zwischen Endgeräten sicher, indem sie Datenpakete segmentiert, verteilt und wieder zusammensetzt. Sie verwendet Protokolle wie TCP und UDP.
- Schicht 5: Sitzungsschicht Die Sitzungsschicht verwaltet die Sitzungen oder Verbindungen zwischen Anwendungen. Sie sorgt dafür, dass die Kommunikation synchronisiert und geordnet abläuft.
- Schicht 6: Darstellungsschicht Die Darstellungsschicht sorgt dafür, dass die Daten in einem Format sind, das die Anwendungsschicht verstehen kann. Sie übernimmt Aufgaben wie Datenkomprimierung und Verschlüsselung.
- Schicht 7: Anwendungsschicht Die Anwendungsschicht stellt die Schnittstelle zur Verfügung, durch die Anwendungen auf Netzwerkdienste zugreifen können. Hier finden Protokolle wie HTTP, FTP und SMTP Anwendung.
Beispiel einer Netzwerkkommunikation:
Betrachten wir das einfache Beispiel des Herunterladens einer Webseite durch einen Webbrowser (HTTP-Anfrage):
- Schicht 7 (Anwendungsschicht): Der Benutzer gibt eine URL in den Webbrowser ein. Der Browser erzeugt eine HTTP-Anfrage.
- Schicht 6 (Darstellungsschicht): Die Anfrage kann komprimiert oder verschlüsselt werden.
- Schicht 5 (Sitzungsschicht): Eine Sitzung wird zwischen dem Browser und dem Webserver aufgebaut.
- Schicht 4 (Transportschicht): Die HTTP-Anfrage wird in kleinere Datenpakete segmentiert und TCP sorgt dafür, dass diese Pakete zuverlässig übertragen werden.
- Schicht 3 (Netzwerkschicht): Jedes Datenpaket erhält eine IP-Adresse, um den Weg durch das Netzwerk zu bestimmen.
- Schicht 2 (Sicherungsschicht): Die Pakete werden in Frames eingekapselt und MAC-Adressen werden verwendet, um sie über die physische Verbindung an den nächsten Router oder Switch zu senden.
- Schicht 1 (Physikalische Schicht): Die Frames werden als elektrische oder optische Signale über Kabel oder drahtlose Verbindungen übertragen.
Jede Schicht verarbeitet die Daten und fügt dabei spezifische Informationen (Header) hinzu, bevor sie die Daten an die nächste Schicht weiterleitet. Dadurch werden komplexe Kommunikationsprozesse vereinfacht und erlaubt eine modulare und flexible Gestaltung und Verwaltung der Netzwerke.
Aufgabe 2)
Das TCP/IP-Modell ist ein Schichtenmodell zur Strukturierung der Netzwerkkommunikation in Rechnernetzen und besteht aus vier Schichten:
- Link-Schicht: Verantwortlich für die physische Übertragung von Daten, zum Beispiel durch Ethernet.
- Internet-Schicht: Zuständig für das Routing von Paketen, wie es beispielsweise durch das IP-Protokoll ausgeführt wird.
- Transport-Schicht: Gewährleistet eine End-to-End-Kommunikation durch Protokolle wie TCP und UDP.
- Anwendungsschicht: Bietet Netzwerkdienste und Anwendungen, wie HTTP und FTP an.
- Das TCP/IP-Modell ist der Standard sowohl für das Internet als auch für private Netzwerke und wird für Aufgaben wie die Adressierung, Datenübertragung und das Verbindungsmanagement verwendet.
a)
Betrachte eine Datenübertragung über ein Netzwerk, in welchem ein Client über das HTTP-Protokoll eine Webseite von einem Server anfordert. Erläutere detailliert, wie die Daten bei dieser Anfrage und anschließenden Antwort durch die einzelnen Schichten des TCP/IP-Modells transportiert werden. Berücksichtige dabei die folgenden Punkte:
- Wie wird die Anfrage in den verschiedenen Schichten des Modells behandelt?
- Welche Protokolle kommen in den jeweiligen Schichten zum Einsatz und welche Informationen werden hinzugefügt?
- Wie werden Fehler behandelt, die während der Übertragung auftreten können?
Lösung:
Lösung der Übung
Betrachten wir die Datenübertragung über ein Netzwerk, bei der ein Client über das HTTP-Protokoll eine Webseite von einem Server anfordert. Wir werden den Prozess detailliert beschreiben, wie die Daten durch die verschiedenen Schichten des TCP/IP-Modells transportiert werden.
Anfrage in den verschiedenen Schichten
Die Datenübertragung lässt sich in die folgenden vier Schichten des TCP/IP-Modells unterteilen:
- Anwendungsschicht:Der Prozess beginnt in der Anwendungsschicht, wo der Client über einen Webbrowser eine HTTP-Anfrage erstellt, um eine Webseite anzufordern. Das HTTP-Protokoll definiert die Form dieser Anfrage.- Protokoll: HTTP- Hinzugefügte Informationen: HTTP-Header (z.B. Host, User-Agent, Accept, etc.) und der eigentliche Anfrageinhalt (z.B. GET /index.html HTTP/1.1).
- Transport-Schicht:Die HTTP-Anfrage wird an die Transportschicht übergeben, wo sie von TCP (in den meisten Fällen) verarbeitet wird. TCP stellt sicher, dass die Daten zuverlässig und in der richtigen Reihenfolge übertragen werden.- Protokoll: TCP- Hinzugefügte Informationen: TCP-Header (z.B. Quell- und Zielportnummern, Sequenznummern, Prüfsumme, etc.). Diese Informationen gewährleisten die Zuverlässigkeit und Integrität der Übertragung.- Fehlerbehandlung: TCP verwendet Mechanismen wie Bestätigungen (ACK), erneute Übertragungen und Prüfsummen, um Fehler zu erkennen und zu korrigieren.
- Internet-Schicht:Die TCP-Segmente werden an die Internetschicht übergeben, wo das IP-Protokoll verwendet wird, um die Datenpakete zu adressieren und zu routen.- Protokoll: IP- Hinzugefügte Informationen: IP-Header (z.B. Quell- und Ziel-IP-Adressen, TTL, Protokoll-ID, etc.).- Fehlerbehandlung: Das IP-Protokoll enthält eine einfache Prüfsumme zur Fehlererkennung des Headers. Wenn ein Fehler erkannt wird, verwirft der Empfänger das fehlerhafte Paket.
- Link-Schicht:Schließlich erreichen die IP-Pakete die Link-Schicht, die für die physische Übertragung der Daten über das Netzwerkmedium verantwortlich ist (z.B. Ethernet).- Protokoll: Ethernet (oder ein anderes Link-Schicht-Protokoll)- Hinzugefügte Informationen: Ethernet-Frame-Header (z.B. MAC-Adressen, Typ-Feld, etc.).- Fehlerbehandlung: Die Link-Schicht verwendet ebenfalls Prüfsummen (z.B. CRC) zur Fehlererkennung. Fehlerhafte Frames können verworfen oder mit Fehlerkorrekturmechanismen wie ARQ (Automatic Repeat reQuest) behandelt werden.
Zusammenfassung der Antwort auf die Anfrage
Nachdem die ursprüngliche HTTP-Anfrage den Server erreicht hat, wiederholt sich der gesamte Prozess in umgekehrter Reihenfolge für die Antwort des Servers:
- Link-Schicht: Der Server sendet die Ethernet-Frames an den Client.
- Internet-Schicht: Die IP-Pakete werden von Router zu Router weitergeleitet und beim Client empfangen.
- Transport-Schicht: TCP stellt sicher, dass die Segmente korrekt und in der richtigen Reihenfolge beim Client ankommen.
- Anwendungsschicht: Der Webbrowser des Clients empfängt die HTTP-Antwort und stellt die angeforderte Webseite dar.
Fehler während der Übertragung werden auf jeder Schicht entsprechend behandelt, wobei die Transport-Schicht (TCP) die Hauptverantwortung für die Zuverlässigkeit und Integrität der End-to-End-Kommunikation übernimmt.
b)
Der Server soll eine große Datei an den Client senden, wobei sich beide in unterschiedlichen Netzwerken befinden. Angenommen, die Transport-Schicht verwendet das TCP-Protokoll. Erläutere die Funktionsweise von TCP in diesem Kontext und gehe insbesondere auf folgende Aspekte ein:
- Wie wird die Verbindung zwischen Client und Server etabliert?
- Was versteht man unter 'Segmentierung' und wie funktioniert sie in diesem Szenario?
- Beschreibe die TCP-Fehlerbehandlung und wie sie Sicherstellt, dass die Datei vollständig und korrekt übertragen wird.
- Erkläre anhand einer mathematischen Formel, wie die Prüfsumme (Checksum) berechnet wird, die zur Fehlererkennung im TCP verwendet wird. Gehe dabei davon aus, dass der Datenstrom in 16-bit Wörtern repräsentiert wird.
Lösung:
Lösung der Übung
Der Server soll eine große Datei an den Client senden, wobei sich beide in unterschiedlichen Netzwerken befinden und die Transport-Schicht das TCP-Protokoll verwendet. Wir werden die Funktionsweise von TCP in diesem Kontext detailliert erläutern und dabei auf die geforderten Aspekte eingehen.
Verbindungsetablierung
Die Verbindung zwischen Client und Server wird durch einen Dreiphasenprozess, bekannt als 'Three-Way Handshake', etabliert:
- SYN: Der Client sendet ein TCP-Segment mit der SYN-Flagge an den Server, um die Verbindung anzufordern.
- SYN-ACK: Der Server antwortet mit einem TCP-Segment mit sowohl der SYN- als auch der ACK-Flagge, um die Anfrage zu bestätigen und gleichzeitig seine eigene Anfrage zu starten.
- ACK: Der Client sendet ein abschließendes TCP-Segment mit der ACK-Flagge, um die Bestätigung des Servers zu bestätigen. Jetzt ist die Verbindung etabliert.
Segmentierung
Unter 'Segmentierung' versteht man die Aufteilung der zu übertragenden Daten in kleinere Einheiten, die als TCP-Segmente bezeichnet werden. Dies erfolgt, weil:
- Eine zu große Datei nicht in einem einzigen IP-Paket übertragen werden kann.
- Die Netzwerkschicht effizientere Übertragungsraten mit kleineren Paketgrößen erreichen kann.
In diesem Szenario:
- Die große Datei wird in kleinere, handhabbare Segmente aufgeteilt.
- Jedes Segment wird mit einem TCP-Header versehen, der Informationen wie die Sequenznummer enthält, die die Reihenfolge der Segmente angibt.
- Der Empfänger (Client) setzt die Dateien unter Verwendung dieser Sequenznummern wieder korrekt zusammen.
TCP-Fehlerbehandlung
Die TCP-Fehlerbehandlung stellt sicher, dass die Datei vollständig und korrekt übertragen wird durch:
- Prüfsummen (Checksums): Zur Fehlererkennung wird in jedem TCP-Segment eine Prüfsumme berechnet und gesendet.
- Bestätigungen (ACKs): Der Empfang von Daten wird durch ACK-Segmente bestätigt. Wenn der Sender ein ACK nicht innerhalb einer bestimmten Zeitspanne erhält, geht er davon aus, dass das Segment verloren ging und sendet es erneut.
- Sequenznummern: Diese sorgen dafür, dass die Daten in der richtigen Reihenfolge ankommen.
- Flusssteuerung: TCP verwendet einen Mechanismus namens „Sliding Window“, um die Datenmenge zu kontrollieren, die gesendet wird, bevor eine Bestätigung vom Empfänger benötigt wird.
Berechnung der Prüfsumme
Die Prüfsumme (Checksum) wird verwendet, um Fehler in den übertragenen Daten zu erkennen. Wenn der Datenstrom aus 16-Bit-Wörtern besteht, wird die TCP-Prüfsumme wie folgt berechnet:
Die Prüfsummenberechnung läuft nach dem One’s Complement-Verfahren ab. Hier ist die mathematische Formel:
- Betrachte den Datenstrom als eine Folge von 16-Bit-Wörtern.
- Berechne die Summe aller 16-Bit-Wörter in der Nachricht.
- Füge dabei alle Überträge (carry) vom höchsten Bit zum niedrigsten Bit hinzu.
- Bilde das Einerkomplement (one's complement) dieser Summe.
Die Prüfsumme wird also folgendermaßen berechnet:
- \[\text{Lass den Datenstrom sein: } [w_1, w_2, ..., w_n]\]
- \[\text{Sum} = w_1 + w_2 + \text{...} + w_n\]
- \[\text{Falls die Summe einen Übertrag hat, füge diesen Übertrag zur Summe hinzu}\]
- \[\text{Übertrag hinzufügen (falls vorhanden)}\]
- \[\text{Prüfsumme} = \text{One's Complement der Summe}\]
- \[\text{Ein Beispiel:}\]
- \[w_1 = 0x1234, w_2 = 0xABCD, w_3 = 0x5678, ..., w_n = 0xFFFF\]
- \[\text{Sum} = 0x1234 + 0xABCD + 0x5678 + ... + 0xFFFF = \text{ Gesamtsumme}\]
- \[\text{Prüfsumme} = \text{Einerkomplement der Summe}\]
Aufgabe 3)
Routing-Protokolle spielen eine wesentliche Rolle bei der effizienten Bestimmung von Pfaden in Netzwerken. Sie lassen sich primär in Interior Gateway Protocols (IGP) und Exterior Gateway Protocols (EGP) einteilen. Zwei prominente Vertreter dieser Kategorien sind OSPF (Open Shortest Path First) für IGP und BGP (Border Gateway Protocol) für EGP.
OSPF ist ein Link-State-Routing-Protokoll, das den Dijkstra-Algorithmus verwendet, um die kürzesten Pfade zu bestimmen. Hierbei versenden die Router LSAs (Link State Advertisements) an ihre Nachbarn, um Informationen über Nachbarn und Link-Kosten zu kommunizieren. Das Area-Konzept von OSPF hilft dabei, die Größe der Routing-Tabellen zu reduzieren und den Netzwerkverkehr zu minimieren.
BGP hingegen ist ein Pfadvektor-Routing-Protokoll, das TCP für den zuverlässigen Verbindungsaufbau nutzt. Es verwendet das AS-Path-Attribut, um Routing-Schleifen zu vermeiden und Policies für die Pfadauswahl basierend auf verschiedenen Metriken wie Pfadlänge und AS-Verbindungen zu bestimmen.
a)
1. Subnetze und OSPF
Angenommen, Du hast ein Netzwerk mit den folgenden Subnetzen und Verbindungen:
- Subnetz A: 192.168.1.0/24
- Subnetz B: 192.168.2.0/24
- Subnetz C: 192.168.3.0/24
- Verbindung A-B: 10 Gbps
- Verbindung B-C: 1 Gbps
- Verbindung A-C: 5 Gbps
Verwende den Dijkstra-Algorithmus und berechne den optimalen Pfad von Subnetz A zu Subnetz C basierend auf den gegebenen Verbindungsbandbreiten. Zeige alle Schritte und kalkuliere die Gesamtkosten für den optimalen Pfad.
Lösung:
Um den optimalen Pfad von Subnetz A zu Subnetz C basierend auf den gegebenen Verbindungsbandbreiten zu berechnen, verwenden wir den Dijkstra-Algorithmus. Hier sind die einzelnen Schritte:
1. Darstellung des Netzwerks als Graph:
- Subnetz A: Knoten A
- Subnetz B: Knoten B
- Subnetz C: Knoten C
Die Bandbreiten der Verbindungen werden in Gewichte umgewandelt, indem wir die Inversen der Bandbreiten verwenden:
- Verbindung A-B: Gewicht = \(\frac{1}{10}\) = 0.1
- Verbindung B-C: Gewicht = \(\frac{1}{1}\) = 1
- Verbindung A-C: Gewicht = \(\frac{1}{5}\) = 0.2
2. Initialisierung:
Setze die Kosten von A zu A auf 0 und alle anderen auf unendlich:
- Dist[A] = 0
- Dist[B] = ∞
- Dist[C] = ∞
Setze die Vorgänger aller Knoten auf null:
- Vorgänger[A] = null
- Vorgänger[B] = null
- Vorgänger[C] = null
3. Verarbeitung des Knotens A:
- Besuchte Knoten: {A}
- Unbesuchte Knoten: {B, C}
Ermittle die Kosten für die Nachbarn von A:
- Dist[B] = min(∞, 0 + 0.1) = 0.1
- Dist[C] = min(∞, 0 + 0.2) = 0.2
Aktualisiere die Vorgänger:
- Vorgänger[B] = A
- Vorgänger[C] = A
4. Verarbeitung des Knotens B:
- Besuchte Knoten: {A, B}
- Unbesuchte Knoten: {C}
Ermittle die Kosten für die Nachbarn von B:
- Dist[C] = min(0.2, 0.1 + 1) = 0.2
Da sich Dist[C] nicht ändert, bleibt Vorgänger[C] unverändert.
5. Verarbeitung des Knotens C:
- Besuchte Knoten: {A, B, C}
- Unbesuchte Knoten: {}
Da keine weiteren unbesuchten Knoten vorhanden sind, ist der Algorithmus beendet.
6. Bestimmung des optimalen Pfades:
Beginne am Ziel (C) und folge den Vorgängern:
- Vorgänger[C] = A
- Optimaler Pfad: A -> C
7. Gesamtkosten des optimalen Pfades:
- Die Gesamtkosten für den optimalen Pfad (A -> C) betragen 0.2.
Zusammenfassung:
- Der optimale Pfad von Subnetz A zu Subnetz C ist A -> C.
- Die Gesamtkosten des optimalen Pfades betragen 0.2, was der umgekehrten Bandbreite von 5 Gbps entspricht.
b)
2. AS-Path und BGP
Betrachte ein Szenario, bei dem drei autonome Systeme (AS1, AS2 und AS3) wie folgt verbunden sind:
- AS1 ist direkt mit AS2 verbunden,
- AS2 ist direkt mit AS3 verbunden,
- AS1 ist auch direkt mit AS3 verbunden.
Angenommen, Du möchtest eine Route von einem Netzwerk innerhalb AS1 zu einem Netzwerk in AS3 festlegen. Falls die Pfadlänge die ausschlaggebende Metrik ist, welche Route wird BGP wählen? Zeige den Entscheidungsprozess von BGP unter Berücksichtigung des AS-Path-Attributs und erläutere, warum der gewählte Pfad optimal ist.
Lösung:
Um den besten Pfad von einem Netzwerk innerhalb AS1 zu einem Netzwerk in AS3 unter Berücksichtigung des AS-Path-Attributs zu bestimmen, müssen wir verstehen, wie BGP die Pfadlänge als wichtigste Metrik verwendet. Hier ist der Entscheidungsprozess detailliert beschrieben:
Verbindungsszenario:
- AS1 ist direkt mit AS2 verbunden
- AS2 ist direkt mit AS3 verbunden
- AS1 ist auch direkt mit AS3 verbunden
Entscheidungsfindung mit dem AS-Path-Attribut:
Das AS-Path-Attribut in BGP enthält die Liste der durchlaufenen autonomen Systeme. BGP bevorzugt Routen mit kürzeren AS-Pfaden. Der Entscheidungsprozess von BGP sieht folgendermaßen aus:
1. Ermittlung der möglichen Routen:
- Route 1: AS1 -> AS3 (AS-Pfad: AS3)
- Route 2: AS1 -> AS2 -> AS3 (AS-Pfad: AS2, AS3)
2. Bewertung der Pfadlängen:
- Pfadlänge Route 1: 1 AS (AS3)
- Pfadlänge Route 2: 2 AS (AS2, AS3)
3. Auswahl des optimalen Pfads:
- Da Route 1 eine kürzere Pfadlänge hat (1 AS) im Vergleich zu Route 2 (2 AS), wird BGP Route 1 bevorzugen.
Erklärung, warum der gewählte Pfad optimal ist:
BGP verwendet die Pfadlänge als eine der primären Metriken zur Pfadauswahl. Kürzere Pfade haben einen geringeren Overhead und sind in der Regel effizienter. Durch die Wahl von Route 1 (AS1 -> AS3) wird sichergestellt, dass der Verkehr direkt zum Ziel geleitet wird, ohne über ein zusätzliches autonomes System (AS2) zu gehen. Dies minimiert die Latenz und die Möglichkeit von Störungen und reduziert den administrativen Aufwand, der durch längere AS-Pfade entstehen würde.
Zusammenfassung:
- Der optimale Pfad von einem Netzwerk innerhalb AS1 zu einem Netzwerk in AS3 basierend auf der Pfadlänge ist: AS1 -> AS3.
- BGP wählt diesen Pfad, weil er die kürzeste AS-Pfad-Länge hat, was Effizienz und geringeren Overhead sicherstellt.
Aufgabe 4)
Client-Server-ModellModell für die Kommunikation in Rechnernetzen, bei dem ein Client Dienste von einem Server anfordert.
- Client sendet Anfragen an Server
- Server bearbeitet Anfragen und sendet Antworten
- Konzepte: Request-Response, Statelessness
- Mögliche Implementierungen: HTTP, FTP
- Server: Feste IP-Adresse, oft zustandslos
- Client: Initiiert Verbindung, oft dynamische IP-Adresse
a)
Erkläre das Konzept der Statelessness im Kontext des Client-Server-Modells und diskutiere, welche Vorteile es für die Skalierbarkeit von Webanwendungen bietet. Gehe in Deiner Antwort auch auf mögliche Nachteile ein.
Lösung:
Konzept der Statelessness im Client-Server-ModellDas Konzept der Statelessness bedeutet, dass jeder Request (Anfrage) eines Clients an den Server in sich abgeschlossen und unabhängig von vorhergehenden Requests ist. Der Server speichert somit keine Informationen über den Zustand oder den Kontext der Kommunikation zwischen dem Client und dem Server.
- Jeder Request enthält alle notwendigen Informationen, die der Server benötigt, um ihn vollständig zu bearbeiten.
- Der Server kann jeden Request isoliert behandeln, ohne sich auf vorhergehende Requests zu beziehen.
- HTTP ist ein typisches Beispiel für ein stateless Protokoll.
Vorteile der Statelessness für die Skalierbarkeit von Webanwendungen- Einfachere Skalierung: Da keine Zustandsinformationen zwischen Requests gespeichert werden, können Requests problemlos auf verschiedene Server verteilt werden. Dies erleichtert die horizontale Skalierung (Hinzufügen weiterer Server).
- Fehlertoleranz: Fällt ein Server aus, kann ein anderer Server die Anfragen übernehmen, da keine Zustandsinformationen verloren gehen.
- Reduzierte Serverlast: Ohne Speicherung von Zustandsinformationen wird weniger Speicherressourcen auf dem Server beansprucht, was die Last reduziert.
Nachteile der Statelessness- Erhöhte Datenübertragung: Da jede Anfrage alle notwendigen Informationen enthalten muss, kann die Menge der übertragenen Daten steigen.
- Komplexere Client-Seite: Weil der Server keine Zustandsinformationen speichert, muss der Client selbst den Zustand verwalten, was zu einer komplexeren Implementierung auf der Client-Seite führen kann.
- Wiederholte Authentifizierung: Ohne Zustandsinformationen muss sich der Client bei jedem Request erneut authentifizieren, was zu erhöhter Latenz und zusätzlichem Aufwand führen kann.
b)
Betrachte ein Szenario, in dem ein Webbrowser (Client) eine HTTP-Anfrage an einen Webserver sendet.
- Beschreibe den Ablauf eines HTTP-Request-Response-Zyklus im Detail.
- Berechne die zu erwartende Antwortzeit, wenn der komplette Prozess 200 ms dauert, wobei das Senden der Anfrage 50 ms und das Bearbeiten der Anfrage auf dem Server 100 ms in Anspruch nimmt. Vergiss nicht, die Antwortzeit zu spezifizieren.
Lösung:
Client-Server-Modell: HTTP-Request-Response-Zyklus
Szenario: Ein Webbrowser (Client) sendet eine HTTP-Anfrage an einen Webserver.
- Ablauf eines HTTP-Request-Response-Zyklus im Detail:
- Aufbau der Verbindung: Der Client (Webbrowser) initiiert eine TCP-Verbindung zum Webserver, der unter einer festen IP-Adresse erreichbar ist. Dies erfordert den dreifachen Handshake-Prozess (SYN, SYN-ACK, ACK).
- Senden der Anfrage: Nach dem Verbindungsaufbau sendet der Client eine HTTP-Anfrage (Request) an den Server. Diese Anfrage enthält alle nötigen Informationen, wie die angeforderte Ressource (z.B. eine Webseite), die HTTP-Methode (z.B. GET), Header-Felder und möglicherweise einen Anfrage-Body.
- Bearbeitung der Anfrage: Der Webserver empfängt die Anfrage und verarbeitet sie. Dies kann beispielsweise die Abfrage einer Datenbank, das Rendern einer Webseite oder das Abrufen von Dateien umfassen.
- Senden der Antwort: Nachdem die Anfrage verarbeitet wurde, sendet der Server eine HTTP-Antwort (Response) zurück an den Client. Diese Antwort enthält einen Statuscode (z.B. 200 OK), Header-Felder und den Antwort-Body (z.B. HTML-Inhalt der angeforderten Seite).
- Verbindung trennen: Nachdem die Antwort erfolgreich übertragen wurde, wird die TCP-Verbindung entweder sofort geschlossen oder für weitere Anfragen offen gehalten (Keep-Alive).
- Berechnung der Antwortzeit:
- Gesamtdauer des Prozesses: 200 ms
- Senden der Anfrage: 50 ms
- Bearbeitung der Anfrage: 100 ms
- Senden der Antwort: Der verbleibende Teil der Latenz umfasst sowohl das Zurücksenden der Antwort als auch die eventuell verbleibende Verarbeitungszeit. Da die Gesamtdauer 200 ms beträgt und das Senden der Anfrage 50 ms und die Bearbeitung 100 ms in Anspruch nimmt, bleiben für das Senden der Antwort 50 ms (200 ms - 50 ms - 100 ms = 50 ms).
Die zu erwartende Antwortzeit (Zeit vom Senden der Anfrage bis zum Empfang der Antwort durch den Client) beträgt somit 200 ms.- Anfragezeit: 50 ms
- Verarbeitungszeit: 100 ms
- Antwortzeit: 50 ms
Die spezifizierte Antwortzeit ist insgesamt 200 ms.