Fragenkatalog Flashcards
Zeichnen Sie in den gegebenen Koordinatensystemen die entsprechenden Kurven ein und beschriften Sie diese. Markieren und benennen Sie außerdem wichtige Stellen
1: konstante Laufzeit
2: Maximaler Speedup / Theoretisch
3: Realistisch (Gut verteilt und gut implementiert)
4: Nicht verteilbarer, aber dennoch verteilt implementiert
Beschreiben Sie folgende Kurven. Nennen Sie Unterschiede und mögliche Ursachen
Grafik mit ABC
a: hoher Speed-Up mit großem Nutzen bei verteilter Berechnung. Anfangs jedoch unplausibel sogar oberhalb des theoretischen Maximums (linear). Ggf. wegen Cache-Effekten oder falscher Messung.
b: schwächerer aber realistischer Speed-Up. Bei steigender Rechnerzahl stellt sich ein Gleichgewicht aus Gewinn durch verteilte Berechnung und Verlust durch höheren Verteilungsaufwand ein.
c: noch schwächerer und ebenfalls realistischer Speed-Up, bei steigender Rechnerzahl ist der Verlust durch höheren Verteilungsaufwand größer als der Gewinn durch verteilte Berechnung.
Ist Amdahls Gesetz realistisch? Wieso, wieso nicht?
Nein, Amdahls Gesetz geht davon aus dass die serielle Arbeit (s = Tv + Te) mit steigender Rechneranzahl konstant bleibt. Allerdings erhöht sich der Aufwand für die Verteilung (Tv) und Zusammenführung der Ergebnisse (Te) mit steigender Rechnerzahl und somit auch s.
Der Durchsatz ist nicht gleich der Bandbreite, wieso?
Bandbreite ist die physikalische obere Schranke der Transferrate. (Was in die Leitung passt) Durchsatz beschreibt die tatsächlichen Nutzdaten, die beim Empfänger ankommen. Ohne Fehler und Overhead, der durch Sender und Empfänger entsteht.
Beschreiben Sie die Zusammenhänge von Laufzeit und Effizienz in Hinsicht auf VSS. Angaben in Stichpunkten oder mit Formeln.
Laufzeit (Tg) = (Tv) + (Ta) + (Te) Tv = Zeit für die Verteilung der Arbeit Ta = Zeit für die eigentliche Arbeit Te = Zeit für das Zusammenführen der Ergebnisse Effizienz im Bezug auf VSS ist die optimale Verteilung der Arbeit (Ta) im verteilten System zur größtmöglichen Optimierung der Laufzeit. (Sinnvolle Arbeit durch geleistete Arbeit)
Warum ist die Zuverlässigkeit bei verteilten Systemen erhöht oder reduziert?
Erhöhte/Gesteigerte Zuverlässigkeit: - Redundante, fehlerhafte Systeme (Replikation etc.) - Berücksichtigung bereits beim Systemdesign - Datenhaltung in gut gesicherten Räumen
Reduzierte Zuverlässigkeit: - Alle Glieder der Kette erforderlich (Abhängigkeiten im System - schwächstes Glied etc.) - Mehr Ausfallmöglichkeiten - „Kommt von allein“
Nennen Sie 2 Gründe für und ein Grund gegen verteilte Systeme
Dafür: - Gemeinsame Nutzung von Ressourcen (Drucker, Dateien, Speicher, …) - Parallelität: Verschiedenen Prozesse können gleichzeitig auf verschiedenen Prozessoren ausgeführt werden
Dagegen: - Komplexität: Hoher Entwicklungsaufwand und Entwicklungsrisiken, Großer Pflegeaufwand - Sicherheit: Zugänglichkeiten schwer kontrollierbar. “Mithören” ist möglich.
Erklären Sie 3 der 7 in der Vorlesung gezeigten Transparenzpunkte
Zugriffstransparenz: Zugriffsmechanismen für entfernte und lokale Elemente sind identisch Lokationstransparenz: Der physische Ort von Elementen ist irrelevant, der Zugriff erfolgt über einen unabhängigen Namen
Fehlertransparenz: Das Gesamtsystem bietet bei bestimmten Fehlern weiterhin die geforderte Funktionalität, die Daten bleiben konsistent
Welche OSI-Schicht haben die angegebenen Protokolle und welche Funktion erfüllen sie im Kontext von IPv4?
Protokoll OSI-Schicht Funktion
Ethernet 1 und 2 Datenaustausch mit Dataframes
TCP 4 Zeichenstromübertragung
UDP 4 Paketübertragung
IP 3 Adressierung
HTTP 5, 6 und 7 Datenaustausch mit Anwendungsschicht
HTTPS 5, 6 und 7 Gesicherte Datenaustausch mit Anwendungsschicht (SSL-Verschlüsselt)
DNS 5, 6 und 7 Namensauflösung
Warum ist das Man-in-the-Middle Problem für das Zwei-Armeen-Problem nicht relevant?
Zwei-Armeen-Problem: Korrekte Prozesse, fehlerhafte Kommunikation. Beim Man-in-the-Middle Problem können Nachrichten von einem Mittelsmann gelesen oder verändert werden. Dies ist beim Zwei-Armeen-Problem nicht möglich, hier werden Nachrichten nur abgefangen, aber weder gelesen noch manipuliert.
Die Byzantinischen Generäle: Was für Anforderungen stellen wir an Prozesse und Kommunikation? Was ist hierbei für VSS wichtig?
Byzantinische Generäle: Fehlerhafte Prozesse, korrekte Kommunikation Für VSS ist wichtig, dass es eine Einigung auf eine gemeinsame Entscheidung gibt. Anforderungen: Einigung bei k Verrätern und n Personen: n >= 3k+1
Sie haben 2 Ethernet Segmente und setzen einen Router dazwischen. Was ist seine Aufgabe und wie kommt er dieser nach?
Problem: A will B ein Paket schicken, aber sie sind nicht im gleichen Subnetz. Aufgabe des Routers: Verbinde die beiden Segmente A stellt fest das das die Ziel-IP des Pakets nicht in seinem Subnetz ist. Also schickt er Das Packet an den Router. Router bekommt das Paket und stellt fest, dass dessen Ziel-IP in einem anderen Subnetz ist. Jetzt schickt der Router eine ARP-Anfrage in diesem Subnetz an die IP, damit er die MAC-Adresse von B bekommt. Jetzt kann das Paket an B geschickt werden.
Was für eine Bedeutung haben Well-Known Ports im Internet und geben Sie exemplarisch einen solchen Port an. Nennen Sie außerdem einen Grund wieso man diese nicht immer verwenden kann.
Standardisierte Ports für Serverdienste: Der Vorteil hierbei ist, dass Standard-Ports wie für http oder dns nicht „gewusst“ werden müssen. Die Verwaltung dieser Ports von 0-1023 erfolg durch IANA. Bsp.: http = port 80, dns = 53. Manchmal kann man diese Ports allerdings nicht verwenden, da man beispielsweise nicht die Berechtigung dafür besitzt, oder weil man es nicht will um Angriffe zu reduzieren.
Erläutern Sie das Schichten-Konzept in verteilten Systemen anhand von TCP/IP in einem Ethernet-Netzwerk. Gehen Sie dabei auch auf OSI-Schichten-Nummern ein.
Im Gegensatz zum siebenschichtigen OSI-Schichtenmodell der ISO besteht das TCP/IPSchichtenmodell des Internet nur aus vier Schichten. Die OSI-Schichten 5-7 werden hier zur Anwendungsschicht und die Schichten 1-2 zur Netzzugangsschicht zusammengefasst.
Die Daten der oberen Schicht werden jeweils mit einem Header versehen und an die nächste Schicht weitergereicht. (Umschlag im Umschlag im Umschlag)
Skizzieren Sie in zeitlich korrekter Abfolge einen TCP-Client und einen TCP-Server Verbindungsaufbau.
Client —- SYN seq = x —- > Server
Client Server
Verbindung offen für Daten
Client —- FIN seq = x + n —> Server
Client Server
Aufbau der Verbindung vom Client durch Senden eines SYN (mit zufälliger Sequenznummer x). Bestätigung vom Server durch Senden von SYN ACK (ACK mit x+1 und SYN mit eigner zufälliger Sequenznummer y). Abschließende Bestätigung des Clients durch ACK (mit y+1). -> Verbindung ist offen für Daten. Beim Abbau wird die Verbindung analog mit FIN über drei Pakete geschlossen. Bei Paketverlust tritt allgemeines Zwei-Armeen-Problem (korrekte Prozesse, fehlerhafte Kommunikation) auf. D.h. das Beenden der Verbindung kann nicht endlos bestätigt werden. -> Lösung bei TCP: Bestätigung von FIN, aber keine Bestätigung der Bestätigung. 2
Tragen Sie in der untenstehenden Tabelle eine Gemeinsamkeit von TCP und UDP ein sowie 2 nicht triviale Unterschiede.
Gemeinsamkeit 1: Beide befinden sich in der OSI-Schicht 4
Gemeinsamkeit 2: Beide besitzen 16 Bit Portnummern Unterschied: 1 Zeichenorientiert(TCP) Paketorientiert(UDP)
Unterschied: 2 Automatischer(TCP) Retransmit Kein Retransmit (Fire and Forget)(UDP)
Unterschied 3: Besitzt Puffer(TCP) Besitzt keinen Puffer (UDP)
Wieso wird auch bei Peer-to-Peer Netzwerken das Client-Server-Paradigma angewandt?
In einem Peer-to-Peer Netzwerk nimmt ein Peer gleichzeitig die Stellung des Servers und die des Clients ein. Er ist quasi Client von anderen Peers und Server von anderen Peers.
TCP Socket als Code und erklären / TCP Sockets, welche Java Ausrufe sind bei Client und Server in der richtigen zeitlichen Abfolge notwendig um eine Kommunikation zu gewährleisten.
1 Anlegen eines TCP-Server-Sockets: new ServerSocket(int port); Socket accept(); 2 Anlegen eines TCP-Client-Sockets: new Socket(String host, int port); new Socket(InedAddress addr, int port); 3 Kommunikation mittels TCP-Socket: OutputStream getOutputStream(); InputStream getInputStream(); 4 Schließen eines TCP-Sockets: void close(); void shutdownOutput(); void shutdownInput();
Schreiben Sie einen UDP Server und Client in Java
//Server
DatagramSocket socket = new DatagramSocket(4711);
//Receive Packet
DatagramPacket inPacket = new DatagramPacket(new byte[512], 512);
socket.receive(inPacket);
//Send Packet
DatagramPacket outPacket = new DatagramPacket(byte[] data, int datalength, InetAdress adr, int toPort);
socket.send(outPacket);
// Schließen der Sockets
socket.close();
UDP Client == UDP Server
Schreiben sie einen TCP Server
// Create ServerSocket with Port 4711 ServerSocket serverSocket = new ServerSocket(4711); // Create ClientSocket and wait for Connection Socket clientSocket = serverSocket.accept(); // Handels für In-Output BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); // Sockets schließen serverSocket.close(); clientSocket.close();
Schreiben Sie einen TCP Client
// Create new Socket to the Server Socket socket = new Socket(); // Connect to Server socket.connect(new InetSocketAdress("localhost",4711)); // Handles für Input und Output BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // Socket schließen socket.close();
Erklären Sie kurz die Funktionsweise von Cookies und wann sie eingesetzt werden
HTTP ist ein vollständig zustandsloses Protokoll, Benutzer-Aktionen aber sind oft zustandsbehaftet sind (z.B. Login, persönlicher nichtöffentlicher Bereich usw.). Um Sitzungsdaten über mehrere Requests hinweg zu speichern, werden oft Cookies eingesetzt. Der Server sendet dabei ein Cookie an den Client. Dieser speichert das Cookie und sendet dieses nun bei jedem Request zu dieser Seite wieder an den Server zurück. Der Server kann die Anfrage nun dank dem Cookie zuordnen.