Kommunikationsstrukturen - Exam.pdf

Kommunikationsstrukturen - Exam
Kommunikationsstrukturen - Exam Aufgabe 1) Gegeben sind vier verschiedene physikalische Netzwerktopologien: Bus, Ring, Stern und Mesh. Diese Netzwerktopologien unterscheiden sich hinsichtlich ihrer physischen Anordnung von Geräten und der Art der Verbindungen zwischen diesen Geräten. In einem Rechnernetzwerk mit N Geräten können je nach Topologie verschiedene Vor- und Nachteile hinsichtlich Datend...

© StudySmarter 2024, all rights reserved.

Kommunikationsstrukturen - Exam

Aufgabe 1)

Gegeben sind vier verschiedene physikalische Netzwerktopologien: Bus, Ring, Stern und Mesh. Diese Netzwerktopologien unterscheiden sich hinsichtlich ihrer physischen Anordnung von Geräten und der Art der Verbindungen zwischen diesen Geräten. In einem Rechnernetzwerk mit N Geräten können je nach Topologie verschiedene Vor- und Nachteile hinsichtlich Datendurchsatz, Ausfallsicherheit und Skalierbarkeit auftreten.

a)

Angenommen, Du hast ein Netzwerk mit 5 Geräten (N = 5). Für jede der vier Topologien (Bus, Ring, Stern, Mesh), zeichne die Netzwerkanordnungen. Erläutere für jede Topologie die Auswirkungen auf die Ausfallsicherheit, wenn eines der Geräte ausfällt. Welche Topologie bietet unter diesen Bedingungen die höchste Ausfallsicherheit? Begründe Deine Antwort mit Bezug auf die physikalische Anordnung der Geräte.

Lösung:

Netzwerktopologien mit 5 Geräten (N = 5)

  • 1. Bus-Topologie:Bus-TopologieIn der Bus-Topologie sind alle Geräte entlang eines einzelnen Kabels verbunden, das als Backbone (Rückgrat) fungiert. Alle Geräte teilen sich diese Verbindung.
  • 2. Ring-Topologie:Ring-TopologieIn der Ring-Topologie sind die Geräte kreisförmig miteinander verbunden. Jeder Knoten ist direkt mit genau zwei anderen Geräten verbunden, einem vorhergehenden und einem nachfolgenden.
  • 3. Stern-Topologie:Stern-TopologieIn der Stern-Topologie sind alle Geräte mit einem zentralen Hub oder Switch verbunden. Jedes Gerät hat eine eigene Verbindung zu diesem zentralen Punkt.
  • 4. Mesh-Topologie:Mesh-TopologieIn der Mesh-Topologie ist jedes Gerät mit mehreren anderen Geräten direkt verbunden. Es gibt keinen zentralen Punkt.

Auswirkungen auf die Ausfallsicherheit bei Ausfall eines Geräts:

  • Bus-Topologie: Ein Ausfall eines Geräts wirkt sich normalerweise nicht auf die Kommunikation der anderen Geräte aus, es sei denn, das zentrale Backbone-Kabel wird beschädigt. Der Ausfall des Backbone führt zum Ausfall des gesamten Netzwerks.
  • Ring-Topologie: Fällt ein Gerät aus, wird der Ring unterbrochen, was die Netzkommunikation vollständig lahmlegt. Es gibt jedoch Ansätze wie Dual-Ring-Topologien, um solche Ausfälle zu kompensieren.
  • Stern-Topologie: Fällt ein Gerät aus, bleibt das Netzwerk aktiv, da jedes Gerät eine eigene Verbindung zum zentralen Hub hat. Fällt jedoch der zentrale Hub aus, geht das gesamte Netzwerk offline.
  • Mesh-Topologie: Ein Ausfall eines Geräts hat aufgrund der mehreren Verbindungen zu anderen Geräten minimalen Einfluss. Die Netzwerkverbindung bleibt bestehen, da alternative Pfade zur Verfügung stehen.

Höchste Ausfallsicherheit:Die Mesh-Topologie bietet die höchste Ausfallsicherheit unter den erwähnten Bedingungen. Dies liegt an der physischen Anordnung der Geräte, bei der jedes Gerät mit mehreren anderen direkt verbunden ist, sodass alternative Kommunikationspfade vorhanden sind, selbst wenn eines oder mehrere Geräte ausfallen.

b)

Berechne die Anzahl der Verbindungen, die erforderlich sind, um ein Netzwerk mit N Geräten (N = 5) für jede der physikalischen Topologien (Bus, Ring, Stern, Mesh) aufzubauen. Zeige Deine Berechnungsschritte. Zusätzlich, für jedes Gerät im Netzwerk, berechne die maximale Anzahl von Hops, die ein Datenpaket nehmen muss, um ein Zielgerät zu erreichen, wenn das Netzwerk in der jeweiligen Topologie strukturiert ist.

Lösung:

Anzahl der Verbindungen und maximalen Hops in verschiedenen Netzwerktopologien bei 5 Geräten (N = 5)

  • 1. Bus-Topologie:
    • Anzahl der Verbindungen: Da alle Geräte entlang eines einzigen Kabels verbunden sind, ist lediglich eine einzelne Verbindung (das Backbone-Kabel) erforderlich.Anzahl der Verbindungen = 1
    • Maximale Anzahl von Hops: Im schlimmsten Fall muss ein Datenpaket durch jedes der anderen 4 Geräte (4 Hops) reisen, um das Ziel zu erreichen.Maximale Hops = 4
  • 2. Ring-Topologie:
    • Anzahl der Verbindungen: Jedes Gerät ist mit zwei weiteren Geräten (einem vorhergehenden und einem nachfolgenden) verbunden, sodass insgesamt 5 Verbindungen erforderlich sind.Anzahl der Verbindungen = 5
    • Maximale Anzahl von Hops: Im schlimmsten Fall, z.B. wenn das Datenpaket den gesamten Ring durchqueren muss, beträgt die maximale Anzahl von Hops 2 (die Hälfte der Geräte im Netzwerk, da es eine kreisförmige Anordnung ist).Maximale Hops = 2
  • 3. Stern-Topologie:
    • Anzahl der Verbindungen: Jedes der 5 Geräte ist direkt mit einem zentralen Hub verbunden, sodass 5 Verbindungen erforderlich sind.Anzahl der Verbindungen = 5
    • Maximale Anzahl von Hops: Da alle Datenpakete immer über den zentralen Hub gehen, beträgt die maximale Zahl der Hops 2 (ein Hop zum Hub und ein weiterer Hop zum Zielgerät).Maximale Hops = 2
  • 4. Mesh-Topologie:
    • Anzahl der Verbindungen: Jedes Gerät ist mit jedem anderen Gerät verbunden. Für N Geräte gibt es insgesamt \(\frac{N(N-1)}{2}\) Verbindungen.Anzahl der Verbindungen = \(\frac{5(5-1)}{2} = 10\)
    • Maximale Anzahl von Hops: In einer vollständig verbundenen Mesh-Topologie beträgt die maximale Anzahl von Hops nur 1, da jedes Gerät direkt mit jedem anderen Gerät verbunden ist.Maximale Hops = 1

Aufgabe 2)

ISO/OSI-Referenzmodell: Schichten und ihre FunktionenDas ISO/OSI-Referenzmodell ist ein grundlegendes Modell für die Netzwerkkommunikation, das aus sieben hierarchischen Schichten besteht. Jede Schicht hat spezifische Funktionen zur Unterstützung der Datenübertragung.

  • Anwendungsschicht (7): Diese Schicht stellt die Schnittstelle zu Anwendungsprogrammen bereit, die Netzwerkdienste benötigen.
  • Darstellungsschicht (6): Diese Schicht ist für die Datenformatierung, -verschlüsselung und -kompression verantwortlich.
  • Sitzungsschicht (5): Diese Schicht steuert die Kommunikationssitzungen zwischen Anwendungen.
  • Transportschicht (4): Diese Schicht sorgt für eine Ende-zu-Ende-Verbindung und bietet Mechanismen zur Fehlerkontrolle und Datenflusssteuerung.
  • Vermittlungsschicht (3): Diese Schicht kümmert sich um das Routing der Datenpakete durch das Netzwerk.
  • Sicherungsschicht (2): Diese Schicht übernimmt die Fehlererkennung und -korrektur sowie die Flusskontrolle auf der Datenverbindungsebene.
  • Bitübertragungsschicht (1): Diese Schicht befasst sich mit der physikalischen Übertragung der Bitströme über das Medium.

a)

Erkläre detailliert die Funktion der Transportschicht im ISO/OSI-Referenzmodell. Welche Protokolle sind in dieser Schicht typischerweise zu finden und wie gewährleisten sie eine zuverlässige Datenübertragung?

Lösung:

Funktion der Transportschicht im ISO/OSI-Referenzmodell

Die Transportschicht, auch als die vierte Schicht im ISO/OSI-Referenzmodell bekannt, hat die Hauptfunktion, eine zuverlässige Ende-zu-Ende-Datenübertragung zwischen den Kommunikationspartnern zu gewährleisten. Dies bedeutet, dass die Schicht sicherstellt, dass die Daten korrekt, vollständig und in der richtigen Reihenfolge von der Quelle zum Ziel übermittelt werden.

  • Zu den wichtigsten Aufgaben der Transportschicht gehören:
  • Segmentierung und Reassembly: Die Transportschicht zerlegt große Datenblöcke in kleinere Segmente, die einfacher übertragen werden können. Am Empfangsort setzt sie die Segmente wieder zu den ursprünglichen Datenblöcken zusammen.
  • Fehlerkontrolle: Die Transportschicht führt Fehlererkennungs- und Fehlerkorrekturmechanismen ein, um sicherzustellen, dass die Daten ohne Fehler übertragen werden. Dies erfolgt typischerweise durch Prüfsummen und Quittungen (ACKs).
  • Datenflusssteuerung: Die Transportschicht reguliert den Datenfluss zwischen Sender und Empfänger, um Überlastungen zu vermeiden und die Netzwerkressourcen effizient zu nutzen. Techniken wie das Stop-and-Wait- und Sliding-Window-Protokoll sind Beispiele dafür.
  • Verbindungssteuerung: Die Transportschicht kann Verbindungen aufbauen, verwalten und abbauen. Ein bekanntes Verbindungsmuster ist das Three-Way-Handshake-Verfahren.

Typische Protokolle der Transportschicht

  • In der Transportschicht sind verschiedene Protokolle implementiert, die unterschiedliche Anforderungen an die Datenübertragung erfüllen:
  • Transmission Control Protocol (TCP): TCP ist ein verbindungsorientiertes Protokoll, das eine zuverlässige Datenübertragung sicherstellt. Es verwendet Mechanismen wie Sequenznummern, Bestätigungen (ACKs) und Fehlerkorrektur, um sicherzustellen, dass die Daten korrekt und in der richtigen Reihenfolge ankommen. TCP ist für Anwendungen geeignet, die eine hohe Zuverlässigkeit erfordern, wie z.B. Web- und E-Mail-Kommunikation.
  • User Datagram Protocol (UDP): UDP ist ein verbindungsloses Protokoll, das keine Garantie für die Zuverlässigkeit oder Reihenfolge der Daten liefert. Es ist jedoch schneller und hat weniger Overhead als TCP. UDP wird für Anwendungen verwendet, die geringe Latenz und hohe Geschwindigkeit erfordern, wie z.B. Videostreaming und Online-Gaming.

Zusammenfassend lässt sich sagen, dass die Transportschicht eine entscheidende Rolle bei der Sicherstellung einer zuverlässigen und effizienten Datenübertragung spielt. Sie bietet Mechanismen zur Fehlerkontrolle, Datenflusssteuerung und Segmentierung, um eine reibungslose Kommunikation zwischen den Endgeräten zu gewährleisten.

b)

Vergleiche die Aufgaben der Sicherungsschicht und der Vermittlungsschicht. Wie bauen diese beiden Schichten aufeinander auf, um die Datenkommunikation sicher und effizient zu gestalten?

Lösung:

Vergleich der Aufgaben der Sicherungsschicht und der Vermittlungsschicht im ISO/OSI-Referenzmodell

Sowohl die Sicherungsschicht (Schicht 2) als auch die Vermittlungsschicht (Schicht 3) spielen essentielle Rollen im Rahmen des ISO/OSI-Referenzmodells, um eine sichere und effiziente Datenkommunikation zu gewährleisten. Jede dieser Schichten hat spezifische Aufgaben, und sie bauen aufeinander auf, um eine nahtlose Datenübertragung zu ermöglichen.

Sicherungsschicht (Layer 2)

  • Fehlererkennung und Fehlerkorrektur: Die Sicherungsschicht erkennt und korrigiert Fehler, die auf der physikalischen Übertragungsebene auftreten können. Dies geschieht häufig durch Mechanismen wie Prüfsummen und zyklische Redundanzprüfungen (CRC).
  • Flusskontrolle: Diese Schicht steuert den Datenfluss zwischen zwei direkt verbundenen Geräten, um sicherzustellen, dass der Sender den Empfänger nicht mit Daten überflutet, was zu einem möglichen Verlust oder einer Verzögerung von Datenpaketen führen könnte.
  • Rahmenbildung: Die Sicherungsschicht segmentiert den Bitstrom aus der Bitübertragungsschicht in kleinere Datenframes. Dies macht die Übertragung und Steuerung handhabbarer.
  • Zugriffskontrolle: Die Sicherungsschicht verwaltet den Zugriff auf das Übertragungsmedium, indem sie Regeln und Protokolle wie CSMA/CD (Carrier Sense Multiple Access with Collision Detection) oder Token Passing implementiert.

Vermittlungsschicht (Layer 3)

  • Routing: Die Vermittlungsschicht bestimmt den besten Pfad für die Datenpakete durch das Netzwerk. Routing-Protokolle wie OSPF (Open Shortest Path First) und BGP (Border Gateway Protocol) sind für diese Aufgabe verantwortlich.
  • Logische Adressierung: Während die Sicherungsschicht physikalische Adressen (z.B. MAC-Adressen) verwendet, führt die Vermittlungsschicht logische Adressen ein (z.B. IP-Adressen), die eine globale eindeutige Identifizierung von Geräten ermöglichen.
  • Fragmentierung und Reassembly: Wenn Datenpakete zu groß für die Übertragung in einem Netzwerksystem sind, fragmentiert die Vermittlungsschicht diese in kleinere Stücke und setzt sie am Zielort wieder zusammen.
  • Zwischenspeicherung und Weiterleitung: Datenpakete werden an Routern zwischengespeichert und basierend auf den Routing-Tabellen weitergeleitet.

Zusammenspiel und Aufbau der Schichten

Die Sicherungsschicht sorgt für eine zuverlässige Datenübertragung innerhalb eines lokalen Netzwerks (LAN), indem sie Fehler erkennt, den Datenfluss kontrolliert und den Zugriff auf das Medium steuert. Sie wirkt direkt auf die Bitübertragungsschicht ein, die die physikalische Übermittlung der Daten sicherstellt.

Die Vermittlungsschicht baut auf den Diensten der Sicherungsschicht auf, indem sie Datenpakete über verschiedene Netzwerke hinweg transportiert. Sie übernimmt die logische Adressierung, die Routenwahl und die Fragmentierung und Neuzusammensetzung von Datenpaketen, um die Daten effizient und sicher von der Quelle zum Ziel zu befördern.

Zusammen stellen diese beiden Schichten sicher, dass Daten sicher und effizient innerhalb und zwischen Netzwerken übertragen werden können, indem sie ihre jeweiligen Funktionen und Mechanismen nahtlos integrieren.

c)

Beschreibe ein Szenario, in dem die Darstellungsschicht eine zentrale Rolle spielt. Welche Probleme könnten auftreten, wenn diese Schicht nicht korrekt funktioniert, und wie kann die Darstellungsschicht zur Lösung dieser Probleme beitragen?

Lösung:

Die Rolle der Darstellungsschicht im ISO/OSI-Referenzmodell

Die Darstellungsschicht, auch bekannt als Layer 6 des ISO/OSI-Referenzmodells, spielt eine wesentliche Rolle bei der Umwandlung von Datenformaten, der Verschlüsselung und der Datenkompression. Diese Schicht dient als Übersetzer zwischen der Anwendungs- und der Sitzungsschicht, um sicherzustellen, dass die von der Anwendungsschicht erzeugten Daten in ein geeignetes Format umgewandelt werden bevor sie über das Netzwerk gesendet werden.

Szenario: Verschiedene Datenformate und -strukturen

Stell Dir ein Szenario vor, in dem ein deutscher Benutzer eine E-Mail-Anwendung verwendet, um eine mit Bildern und Text formatierte E-Mail an einen chinesischen Benutzer zu senden. Aufgrund der unterschiedlichen Zeichensätze (UTF-8 für den deutschen Inhalt und GB2312 für den chinesischen Inhalt) und der verschiedenen Formate für die Bilder kann es Schwierigkeiten geben, diese Inhalte korrekt darzustellen und zu übertragen.

Mögliche Probleme ohne eine funktionierende Darstellungsschicht

  • Inkompatible Zeichencodierungen: Der Text in der E-Mail könnte aufgrund von unterschiedlichen Zeichencodierungen unlesbar sein oder fehlerhaft angezeigt werden.
  • Fehlende Datenkompression: Große Bilddateien könnten ohne passende Kompressionstechniken zu einer erhöhten Übertragungszeit und möglicher Netzwerküberlastung führen.
  • Unzureichende Datenverschlüsselung: Ohne angemessene Verschlüsselung könnte die E-Mail während der Übertragung abgefangen und ausgelesen werden, was ein Sicherheitsrisiko darstellt.

Lösungen durch die Darstellungsschicht

Die Darstellungsschicht kann mehrere Mechanismen nutzen, um die oben genannten Probleme zu lösen:

  • Zeichencodierung: Die Darstellungsschicht wandelt den Textinhalt in eine einheitliche Zeichencodierung um, z.B. UTF-8, um sicherzustellen, dass beide Seiten die Nachricht korrekt sehen können.
  • Datenkompression: Die Darstellungsschicht kann Kompressionstechniken wie JPEG für Bilder und ZIP für andere Dateitypen anwenden, um die Übertragungszeit zu verringern und die Netzwerkressourcen effizient zu nutzen.
  • Datenverschlüsselung: Um die Sicherheit der Daten zu gewährleisten, kann die Darstellungsschicht Verschlüsselungsmethoden wie SSL/TLS verwenden, um sicherzustellen, dass die Nachricht sicher übertragen wird und nur vom Empfänger gelesen werden kann.

Zusammenfassend lässt sich sagen, dass die Darstellungsschicht eine zentrale Rolle in der Datenkommunikation spielt, indem sie sicherstellt, dass Daten in einem geeigneten, kompatiblen und sicheren Format übertragen werden. Sie trägt zur Lösung von Problemen bei, die durch unterschiedliche Datenformate, mangelnde Kompression und unzureichende Verschlüsselung entstehen könnten.

Aufgabe 3)

Huffman-Codierung: Prinzipien und Anwendungen

  • Verlustfreies Komprimierungsverfahren basierend auf der Häufigkeit von Symbolen.
  • Erstelle Häufigkeitstabelle für jedes Symbol.
  • Konstruiere binären Baum nach Huffman-Prinzip (kleinste Häufigkeiten zu Knoten zusammenführen).
  • Weise den Pfaden von der Wurzel zu den Blättern Binärcodes zu (links 0, rechts 1).
  • Kürzere Codes für häufigere Symbole, längere für seltenere.
  • Anwendungen: Dateikomprimierung (ZIP, GZIP), Multimedia-Codierung (JPEG), Netzwerkprotokolle.
  • Dekomprimierung: Durchlaufe den Baum anhand des Binärcodes.

a)

Gegeben sei die Zeichenfolge AABACDAD. Erstelle eine Häufigkeitstabelle für jedes Symbol und konstruiere den Huffman-Baum für die Zeichenfolge. Zeige dabei die einzelnen Schritte vom Erstellen der Häufigkeitstabelle bis zur Konstruktion des Baumes. Weise den Pfaden des Baumes die entsprechenden Binärcodes zu und bestimme die resultierenden Huffman-Code für jedes Symbol.

Lösung:

Lösung zur Aufgabe: Huffman-Codierung für die Zeichenfolge AABACDAD

Schritt-für-Schritt-Lösung:

  • Zeichenfolge analysieren: AABACDAD
  • Häufigkeitstabelle erstellen:
SymbolHäufigkeit
A4
B1
C1
D2
  • Huffman-Baum konstruieren:
  1. Erstelle eine Prioritätswarteschlange mit allen Symbolen und deren Häufigkeiten:
    • A: 4
    • B: 1
    • C: 1
    • D: 2
  2. Kombiniere die beiden Knoten mit der kleinsten Häufigkeit: B (1) und C (1) zu einem neuen Knoten BC (2)
  3. Aktualisierte Liste:
    • A: 4
    • BC: 2
    • D: 2
  4. Kombiniere erneut die beiden Knoten mit der niedrigsten Häufigkeit: BC (2) und D (2) zu BCD (4)
  5. Aktualisierte Liste:
    • A: 4
    • BCD: 4
  6. Kombiniere abschließend die restlichen beiden Knoten: A (4) und BCD (4) zu einem neuen Knoten ABCD (8)
  • Binärcodes zuweisen: Weisen wir den Pfaden von der Wurzel bis zu den Blättern des Baumes die Binärcodes zu (links 0, rechts 1):
  1. ABCD (Wurzel)
  2. ABCD |--0--> A
  3. ABCD |--1--> BCD
  4. BCD |--0--> BC
  5. BCD |--1--> D
  6. BC (innerhalb von BCD) |--0--> B
  7. BC (innerhalb von BCD) |--1--> C
  • Resultierende Huffman-Codes:
  • A: 0
  • B: 100
  • C: 101
  • D: 11

Zusammenfassung:

Durch die Huffman-Codierung erhält jedes Symbol eine unterschiedlich lange Binärsequenz basierend auf seiner Häufigkeit in der Zeichenfolge. Häufigere Symbole erhalten kürzere Binärcodes, während seltenere Symbole längere Codes bekommen.

b)

Betrachte jetzt die Zeichenfolgen: BAAACDCCABAA und EECAFEEFFAD. Bestimme die Häufigkeitstabelle und konstruiere den Huffman-Baum erneut für diese beiden Zeichenfolgen. Vergleiche die resultierenden Huffman-Codes und analysiere, wie sich unterschiedliche Häufigkeitsverteilungen auf die Länge der resultierenden Codes auswirken.

Lösung:

Lösung zur Aufgabe: Huffman-Codierung für die Zeichenfolgen BAAACDCCABAA und EECAFEEFFAD

Schritt-für-Schritt-Lösung:

Zeichenfolge 1: BAAACDCCABAA

  • Häufigkeitstabelle erstellen:
SymbolHäufigkeit
A5
B2
C3
D1
  • Huffman-Baum konstruieren:
  1. Erstelle eine Prioritätswarteschlange mit allen Symbolen und deren Häufigkeiten:
    • A: 5
    • B: 2
    • C: 3
    • D: 1
  2. Kombiniere die beiden Knoten mit der kleinsten Häufigkeit: D (1) und B (2) zu einem neuen Knoten DB (3)
  3. Aktualisierte Liste:
    • A: 5
    • DB: 3
    • C: 3
  4. Kombiniere erneut die beiden Knoten mit der niedrigsten Häufigkeit: DB (3) und C (3) zu DBC (6)
  5. Aktualisierte Liste:
    • A: 5
    • DBC: 6
  6. Kombiniere abschließend die restlichen beiden Knoten: A (5) und DBC (6) zu einem neuen Knoten ABCD (11)
  • Binärcodes zuweisen: Weisen wir den Pfaden von der Wurzel bis zu den Blättern des Baumes die Binärcodes zu (links 0, rechts 1):
  1. ABCD (Wurzel)
  2. ABCD |--0--> A
  3. ABCD |--1--> DBC
  4. DBC |--0--> DB
  5. DBC |--1--> C
  6. DB (innerhalb von DBC) |--0--> D
  7. DB (innerhalb von DBC) |--1--> B
  • Resultierende Huffman-Codes für Zeichenfolge 1:
  • A: 0
  • B: 111
  • C: 10
  • D: 110

Zeichenfolge 2: EECAFEEFFAD

  • Häufigkeitstabelle erstellen:
SymbolHäufigkeit
A2
D1
E4
F3
C1
  • Huffman-Baum konstruieren:
  1. Erstelle eine Prioritätswarteschlange mit allen Symbolen und deren Häufigkeiten:
    • A: 2
    • D: 1
    • E: 4
    • F: 3
    • C: 1
  2. Kombiniere die beiden Knoten mit der kleinsten Häufigkeit: D (1) und C (1) zu einem neuen Knoten DC (2)
  3. Aktualisierte Liste:
    • A: 2
    • DC: 2
    • E: 4
    • F: 3
  4. Kombiniere erneut die beiden Knoten mit der niedrigsten Häufigkeit: A (2) und DC (2) zu ADC (4)
  5. Aktualisierte Liste:
    • ADC: 4
    • E: 4
    • F: 3
  6. Kombiniere erneut die beiden Knoten mit der niedrigsten Häufigkeit: F (3) und ADC (4) zu FADC (7)
  7. Aktualisierte Liste:
    • FADC: 7
    • E: 4
  8. Kombiniere abschließend die restlichen beiden Knoten: E (4) und FADC (7) zu einem neuen Knoten EFCAD (11)
  • Binärcodes zuweisen: Weisen wir den Pfaden von der Wurzel bis zu den Blättern des Baumes die Binärcodes zu (links 0, rechts 1):
  1. EFCAD (Wurzel)
  2. EFCAD |--0--> E
  3. EFCAD |--1--> FADC
  4. FADC |--0--> F
  5. FADC |--1--> ADC
  6. ADC |--0--> A
  7. ADC |--1--> DC
  8. DC (innerhalb von ADC) |--0--> D
  9. DC (innerhalb von ADC) |--1--> C
  • Resultierende Huffman-Codes für Zeichenfolge 2:
  • A: 110
  • D: 1110
  • E: 0
  • F: 10
  • C: 1111

Vergleich und Analyse:

  • Die Huffman-Codes für beide Zeichenfolgen unterscheiden sich erheblich aufgrund der verschiedenen Häufigkeitsverteilungen.
  • In der Zeichenfolge BAAACDCCABAA erhielt das häufigste Symbol 'A' den kürzesten Code (0), während das seltenste Symbol 'D' einen längeren Code (110) erhielt. Die längsten Codes wurden 'B' und 'C' mit drei Bit Länge zugewiesen.
  • In der Zeichenfolge EECAFEEFFAD erhielt das häufigste Symbol 'E' den kürzesten Code (0), während die anderen Symbole je nach ihrer Häufigkeit längere Codes erhielten. Besonders 'C' und 'D', die am seltensten vorkamen, erhielten die längsten Codes (1111 und 1110 respektive).
  • Dies zeigt, dass sowohl die Häufigkeit als auch die Verteilung der Symbole innerhalb einer Zeichenfolge stark beeinflusst, wie effizient eine Huffman-Codierung sein kann.

c)

Betrachte die Zeichenfolge aus dem ersten Teil (AABACDAD) und die Huffman-Codes der Symbole. Schreibe ein Python-Programm, das diese Zeichenfolge mithilfe der Huffman-Codes komprimiert und anschließend wieder dekomprimiert. Zeige, dass der Dekomprimierungsprozess korrekt ist, indem das ursprüngliche Symbol zurückgegeben wird. Verwende folgenden Python-Code als Ausgangspunkt:

def huffman_compress(sequence, codebook):     compressed = ''     for symbol in sequence:         if symbol in codebook:             compressed += codebook[symbol]     return compresseddef huffman_decompress(compressed_sequence, root_node):     decompressed = ''     ...     return decompressed# Beispielhafte Nutzung (füge hier den generierten Huffman-Baum und Codes ein): codebook = {...} root_node = ... compressed = huffman_compress('AABACDAD', codebook) decompressed = huffman_decompress(compressed, root_node) print(decompressed)

Lösung:

Python-Programm zur Komprimierung und Dekomprimierung einer Zeichenfolge unter Verwendung von Huffman-Codes

Schritt-für-Schritt-Lösung:

  • Zeichenfolge: AABACDAD
  • Resultierende Huffman-Codes:
    • A: 0
    • B: 100
    • C: 101
    • D: 11
  • Konstruktion des Huffman-Baums: (siehe vorherige Lösung)

Python-Code:

class Node:    def __init__(self, symbol=None, left=None, right=None):        self.symbol = symbol        self.left = left        self.right = right# Der Huffman-Baum basierend auf vorherigen Berechnungenroot_node = Node()root_node.left = Node('A')root_node.right = Node(None)root_node.right.left = Node(None)root_node.right.left.left = Node('B')root_node.right.left.right = Node('C')root_node.right.right = Node('D')# Huffman-Codescodebook = {    'A': '0',    'B': '100',    'C': '101',    'D': '11'}def huffman_compress(sequence, codebook):    compressed = ''    for symbol in sequence:        if symbol in codebook:            compressed += codebook[symbol]    return compresseddef huffman_decompress(compressed_sequence, root_node):    decompressed = ''    current_node = root_node    for bit in compressed_sequence:        if bit == '0':            current_node = current_node.left        else:            current_node = current_node.right        if current_node.symbol is not None:            decompressed += current_node.symbol            current_node = root_node    return decompressed# Beispielhafte Nutzungsequence = 'AABACDAD'compressed = huffman_compress(sequence, codebook)decompressed = huffman_decompress(compressed, root_node)print(f'Original: {sequence}')print(f'Compressed: {compressed}')print(f'Decompressed: {decompressed}')

Erklärung:

  • Die Funktion huffman_compress nimmt die Zeichenfolge und das Codebook und erzeugt eine komprimierte Binärfolge.
  • Die Funktion huffman_decompress nimmt die komprimierte Binärfolge und den Huffman-Baum und erzeugt die ursprüngliche Zeichenfolge.
  • Verwendung des Programms zur Komprimierung und Dekomprimierung der Zeichenfolge 'AABACDAD'.
  • Überprüfung, dass die dekomprimierte Zeichenfolge der ursprünglichen entspricht, um die Korrektheit zu demonstrieren.
Beispielausgabe:
Original: AABACDADCompressed: 001000100110Decompressed: AABACDAD

Aufgabe 4)

Paritätsbits und Paritätsprüfung: Prinzipien und AnwendungenParitätsbits werden zur Fehlererkennung in der Datenübertragung und zur Bewertung der Datenintegrität verwendet. Ein einzelnes Bit wird zur Darstellung der Parität hinzugefügt, welches entweder 0 oder 1 sein kann. Es gibt zwei Arten von Parität:

  • Gerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine gerade Zahl.
  • Ungerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine ungerade Zahl.
Paritätsbits finden Anwendung in serielle Datenübertragung und Speicherfehlerkorrektur, allerdings können sie nur einzelne Bitfehler erkennen und keine Fehlerkorrektur durchführen.

a)

Gegeben ist die binäre Datenfolge 1010101. Füge ein Paritätsbit hinzu, um eine gerade Parität sicherzustellen. Verifiziere anschließend die Datenfolge mit dem Paritätsbit, um zu bestätigen, dass die Parität korrekt implementiert wurde.

Lösung:

Paritätsbits und Paritätsprüfung: Prinzipien und AnwendungenParitätsbits werden zur Fehlererkennung in der Datenübertragung und zur Bewertung der Datenintegrität verwendet. Ein einzelnes Bit wird zur Darstellung der Parität hinzugefügt, welches entweder 0 oder 1 sein kann. Es gibt zwei Arten von Parität:

  • Gerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine gerade Zahl.
  • Ungerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine ungerade Zahl.
Paritätsbits finden Anwendung in serielle Datenübertragung und Speicherfehlerkorrektur, allerdings können sie nur einzelne Bitfehler erkennen und keine Fehlerkorrektur durchführen.Aufgabe:Gegeben ist die binäre Datenfolge 1010101. Füge ein Paritätsbit hinzu, um eine gerade Parität sicherzustellen. Verifiziere anschließend die Datenfolge mit dem Paritätsbit, um zu bestätigen, dass die Parität korrekt implementiert wurde.Schritt-für-Schritt-Lösung:
  • Datenfolge: 1010101.
  • Zähle die Anzahl der 1-Bits in der Datenfolge:
1 + 0 + 1 + 0 + 1 + 0 + 1 = 4
  • Es gibt insgesamt 4 Einsen in der Datenfolge; 4 ist eine gerade Zahl.
  • Für gerade Parität muss die Gesamtanzahl der 1-Bits, einschließlich des Paritätsbits, gerade bleiben.
  • Da die Anzahl der 1-Bits bereits gerade ist, muss das Paritätsbit 0 sein, um die Anzahl der 1-Bits unverändert zu lassen.
  • Die neue Datenfolge mit dem Paritätsbit wird:
10101010
  • Verifiziere die neue Datenfolge mit dem Paritätsbit:
1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 = 4
  • Die Gesamtanzahl der 1-Bits in der neuen Datenfolge ist 4, was eine gerade Zahl ist. Somit ist die gerade Parität korrekt implementiert.
Die Datenfolge mit einem korrekt implementierten Paritätsbit für gerade Parität lautet: 10101010.

b)

Angenommen, Du hast eine Datenübertragungssequenz von 11100011 mit einem bereits beigefügten Paritätsbit, das eine ungerade Parität sicherstellen soll. Überprüfe, ob die Parität korrekt ist. Wenn nicht, identifiziere den Fehler.

Lösung:

Paritätsbits und Paritätsprüfung: Prinzipien und AnwendungenParitätsbits werden zur Fehlererkennung in der Datenübertragung und zur Bewertung der Datenintegrität verwendet. Ein einzelnes Bit wird zur Darstellung der Parität hinzugefügt, welches entweder 0 oder 1 sein kann. Es gibt zwei Arten von Parität:

  • Gerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine gerade Zahl.
  • Ungerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine ungerade Zahl.
Paritätsbits finden Anwendung in serielle Datenübertragung und Speicherfehlerkorrektur, allerdings können sie nur einzelne Bitfehler erkennen und keine Fehlerkorrektur durchführen.Aufgabe:Angenommen, Du hast eine Datenübertragungssequenz von 11100011 mit einem bereits beigefügten Paritätsbit, das eine ungerade Parität sicherstellen soll. Überprüfe, ob die Parität korrekt ist. Wenn nicht, identifiziere den Fehler.Schritt-für-Schritt-Lösung:
  • Datenfolge: 11100011.
  • Zähle die Anzahl der 1-Bits in der Datenfolge:
1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 = 5
  • Es gibt insgesamt 5 Einsen in der Datenfolge; 5 ist eine ungerade Zahl.
  • Für ungerade Parität muss die Gesamtanzahl der 1-Bits, einschließlich des Paritätsbits, ungerade sein.
  • Da die Anzahl der 1-Bits ungerade ist, ist die Parität korrekt implementiert.
Die Datenfolge mit einem korrekt implementierten Paritätsbit für ungerade Parität lautet: 11100011.

c)

Mathematische Anwendung: Wenn ein Datenblock 0101010 (inklusive Paritätsbit) mit gerader Parität übertragen wird und ein einzelnes Bit während der Übertragung verfälscht wird, zeige mathematisch und mit Hilfe des Paritätsbits, wie der Fehler erkannt werden kann.

Lösung:

Paritätsbits und Paritätsprüfung: Prinzipien und AnwendungenParitätsbits werden zur Fehlererkennung in der Datenübertragung und zur Bewertung der Datenintegrität verwendet. Ein einzelnes Bit wird zur Darstellung der Parität hinzugefügt, welches entweder 0 oder 1 sein kann. Es gibt zwei Arten von Parität:

  • Gerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine gerade Zahl.
  • Ungerade Parität: Die Summe der Bits inklusive Paritätsbit ergibt eine ungerade Zahl.
Paritätsbits finden Anwendung in serielle Datenübertragung und Speicherfehlerkorrektur, allerdings können sie nur einzelne Bitfehler erkennen und keine Fehlerkorrektur durchführen.Aufgabe:Mathematische Anwendung: Wenn ein Datenblock 0101010 (inklusive Paritätsbit) mit gerader Parität übertragen wird und ein einzelnes Bit während der Übertragung verfälscht wird, zeige mathematisch und mit Hilfe des Paritätsbits, wie der Fehler erkannt werden kann.Schritt-für-Schritt-Lösung:
  • Gegebener Datenblock mit gerader Parität: 0101010
0 + 1 + 0 + 1 + 0 + 1 + 0 = 3 (ungerade Anzahl von 1-Bits).
  • Da der Datenblock eine gerade Parität haben soll, ist das letzte Bit (Paritätsbit) 0, um die Gesamtanzahl der 1-Bits auf eine gerade Zahl zu bringen.
  • Der ursprüngliche Datenblock ist also korrekt.
  • Angenommen, ein einzelnes Bit wird während der Übertragung verfälscht:
Beispiel: Ein Bitfehler bei Bitposition 3.
Ursprünglicher Block: 0101010Fehlerhafter Block: 0111010
  • Zähle die Anzahl der 1-Bits im fehlerhaften Block:
0 + 1 + 1 + 1 + 0 + 1 + 0 = 4 (gerade Anzahl von 1-Bits).
  • Es gibt nun eine gerade Zahl von 1-Bits, was bedeutet, dass das Paritätsbit (0) falsch ist, weil für eine korrekte gerade Parität die ursprüngliche Zustand hätte gerade sein sollen (inklusive Bitfehler). Hier wäre die Verfälschung eindeutig zu erkennen.
  • Dieser Fehler kann erkannt werden, weil die Summe im fehlerhaften Block nicht mehr den Regeln der geraden Parität entspricht.
Zusammenfassung:Die mathematische Überprüfung der Parität in der übertragenden Datenfolge zeigt uns einfacher: Wenn ein Bit während der Übertragung verfälscht wird, ändert sich die Anzahl der 1-Bits und es ergibt eine unlogische Zustandsänderung. Das Paritätsbit weist darauf hin, dass ein Fehler aufgetreten ist, der genau durch diese Paritätserkennung aufgedeckt wird.
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden