<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Verteilte Systeme Archive - Maximilian Krieg</title>
	<atom:link href="https://maximiliankrieg.de/category/studium/bachelor-of-science/6-semester-b-sc/verteilte-systeme/feed/" rel="self" type="application/rss+xml" />
	<link>https://maximiliankrieg.de/category/studium/bachelor-of-science/6-semester-b-sc/verteilte-systeme/</link>
	<description>Wissen, Technik &#38; Erfahrungen</description>
	<lastBuildDate>Mon, 14 Sep 2026 00:09:21 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://maximiliankrieg.de/wp-content/uploads/2026/05/cropped-20260524_logo_2_512-2-32x32.png</url>
	<title>Verteilte Systeme Archive - Maximilian Krieg</title>
	<link>https://maximiliankrieg.de/category/studium/bachelor-of-science/6-semester-b-sc/verteilte-systeme/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Verteilte Systeme (Klausurvorbereitung)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-klausurvorbereitung/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-klausurvorbereitung/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 21:45:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2962</guid>

					<description><![CDATA[<p>Heute haben wir die wichtigsten Inhalte der gesamten Vorlesung nochmal besprochen. Skript-Anfang VS_0_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70 Hinweise</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-klausurvorbereitung/">Verteilte Systeme (Klausurvorbereitung)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Heute haben wir die wichtigsten Inhalte der gesamten Vorlesung nochmal besprochen.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_0_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Hinweise</h3>



<ul class="wp-block-list">
<li>Programmieren ist nur als Pseudocode gefordert</li>



<li>Man sollte die Unterschiede des Receive bei UDP und TCP kennen</li>



<li>Die Folien 3-90 sind nicht klausurrelevant</li>



<li>Hilfsmittel sind keine erlaubt</li>



<li>Die Fragen aus dem Skript sind wichtig, aber nur die konkret beantwortbaren Fragen</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-klausurvorbereitung/">Verteilte Systeme (Klausurvorbereitung)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-klausurvorbereitung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Teil 6)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-6/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-6/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 20:38:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3328</guid>

					<description><![CDATA[<p>Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 6 behandelt die Sicherheit von verteilten Systemen. Skript-Anfang VS_1_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70 Sicherheit Als Sicherheit bezeichnet man Eigenschaften von informationsverarbeitenden und -lagernden Systemen, [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-6/">Verteilte Systeme (Teil 6)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 6 behandelt die Sicherheit von verteilten Systemen.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_1_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Sicherheit</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Als Sicherheit bezeichnet man Eigenschaften von informationsverarbeitenden und -lagernden Systemen, die die Schutzziele Vertraulichkeit, Verfügbarkeit und Integrität sicherstellen. Informationssicherheit dient dem Schutz vor Gefahren bzw. Bedrohungen, der Vermeidung von wirtschaftlichen Schäden und der Minimierung von Risiken.</p>
</blockquote>



<h4 class="wp-block-heading">Schutzziele</h4>



<p class="wp-block-paragraph">Welche Schutzziele gibt es?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Zeichen</th><th>Name (engl.)</th><th>Name (dt.)</th><th>Bedrohung</th><th>Beispiel</th></tr><tr><td>C</td><td>Confidentiality</td><td>Vertraulichkeit</td><td>Unerlaubtes Lesen</td><td>Mitlesen (<em>eavesdropping</em>)</td></tr><tr><td rowspan="3">I</td><td rowspan="3">Integrity</td><td rowspan="3">Integrität</td><td rowspan="3">Unerlaubtes Schreiben</td><td>Vortäuschen einer Identität (<em>masquerading</em>)</td></tr><tr><td>Nachrichten verändern/verfälschen</td></tr><tr><td>Nachrichten wiederholen (<em>replaying</em>)</td></tr><tr><td>A</td><td>Availability</td><td>Verfügbarkeit</td><td>Störung des Betriebs (<em>Grund für skalierbare fehlertolerante Systeme</em>)</td><td>DDoS, Viren, Trojaner, etc.</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Welche Schutzmaßnahmen gibt es?</p>



<ul class="wp-block-list">
<li>Firewalls</li>



<li>VPNs</li>



<li>Verschlüsselung</li>
</ul>



<h4 class="wp-block-heading">Firewall</h4>



<p class="wp-block-paragraph">Was sind Firewalls?</p>



<ul class="wp-block-list">
<li>Können als Hard- oder Software realisiert sein (<em>iptables, Windows Firewall, WLAN Router</em>)</li>



<li>Befindet sich als Schutzmauer zwischen sicherem Netz (<em>LAN</em>) und unsicherem Netz (<em>Internet</em>)</li>
</ul>



<p class="wp-block-paragraph">Wovor schützen Firewalls?</p>



<ul class="wp-block-list">
<li>Sie halten unerwünschter Pakete fern</li>



<li>Beschränkt den Netzwerkzugriff (<em>Absender, Empfänger, Transportprotokoll und Dienste</em>)</li>



<li>Filterung des Absender und Empfängers anhand <strong>IP-Adresse</strong></li>



<li>Filtern des Transportprotokolls nach <strong>UDP/TCP</strong></li>



<li>Filtern nach Anwendung bzw. Dienst anhand <strong>Port</strong></li>
</ul>



<p class="wp-block-paragraph">Wovor schützen Firewalls nicht?</p>



<ul class="wp-block-list">
<li>Unerlaubtes Mitlesen von unverschlüsselten Nachrichten</li>
</ul>



<p class="wp-block-paragraph">Welche Firewall-Typen gibt es?</p>



<ul class="wp-block-list">
<li>Paketfilter</li>



<li>Application Level Gateway</li>



<li>Proxy</li>



<li>Intrusion Prevention System (IPS)</li>



<li>Intrusion Detection System (IDS)</li>
</ul>



<p class="wp-block-paragraph">Was sind Paketfilter-Firewalls?</p>



<ul class="wp-block-list">
<li>Blockieren von Paketen anhand von Regeln</li>



<li>Zwei Varianten <em>(stateful/stateless)</em></li>



<li>Stateless = Jedes Paket wird unabhängig und stur nach den Regeln verarbeitet (<em>einfach</em>)</li>



<li>Stateful = Stellt Zusammenhang zwischen ein- und ausgehenden Paketen her (<em>komplex</em>)</li>
</ul>



<p class="wp-block-paragraph">Was sind Nachteile der Paketfilter-Firewalls?</p>



<ul class="wp-block-list">
<li>Die Menge der Regeln kann schnell unübersichtlich werden</li>



<li>Die korrekte Konfiguration wird durch kryptische Syntax erschwert</li>



<li>Eigentlich erwünschte Kommunikation kann erschwert und verhindert werden</li>
</ul>



<p class="wp-block-paragraph">Was könnte ein Beispiel für eine stateful Firewall sein?</p>



<ol class="wp-block-list">
<li>Die Firewall blockt alle eingehende Pakete</li>



<li>Ein Client aus dem LAN versendet ein Paket an einen Server außerhalb des LANs</li>



<li>Nun wird die Antwort <em>(Pakete)</em> von der Adresse des Servers durchgelassen</li>
</ol>



<p class="wp-block-paragraph">Welchen Vorteil hat die stateful Firewall?</p>



<ul class="wp-block-list">
<li>Bei der stateless Firewall müssen feste Regeln eingetragen werden, um die Kommunikation in beide Richtungen zu erlauben</li>



<li>Bei der stateful Firewall werden dynamisch Einträge für angeforderte eingehende Pakete erzeugt und wieder entfernt</li>
</ul>



<p class="wp-block-paragraph">In welche Richtung wird Kommunikation von einer Firewall verhindert?</p>



<ul class="wp-block-list">
<li>Die Kommunikation wird von Außen nach Innen verhindert</li>
</ul>



<p class="wp-block-paragraph">Welche Anwendungen haben mit Firewalls Probleme?</p>



<ul class="wp-block-list">
<li>Peer-To-Peer-Anwendungen</li>
</ul>



<p class="wp-block-paragraph">Was sind Application Level Gateways (ALG)?</p>



<ul class="wp-block-list">
<li>Pakete werden nun anhand ihres Inhalts gefiltert</li>



<li>Sie arbeiten dafür auf OSI-Layer 7 und kennen die Anwendungsprotokolle (<em>z.B. HTTP</em>)</li>
</ul>



<p class="wp-block-paragraph">Was sind die Vorteile von ALGs?</p>



<ul class="wp-block-list">
<li>Sie können unabhängig vom Port die Pakete auf ihren eigentlichen Inhalt prüfen</li>
</ul>



<p class="wp-block-paragraph">Was sind Proxy Server?</p>



<ul class="wp-block-list">
<li>Sie fangen Verbindungen nach Außen von den internen Systemen ab</li>



<li>Sie öffnen stattdessen selbst mit dem Ziel eine Verbindung</li>



<li>Sie schicken die Anfrage selbst an das Ziel und verhalten sich wie &#8222;Stellvertreter&#8220;</li>



<li>Schlussendlich leiten sie die Antworten des Ziels an den Anfragenden weiter</li>



<li>Sie speichern die Antworten als Caching-Mechanismus</li>
</ul>



<p class="wp-block-paragraph">Was ist ein HTTP Proxy?</p>



<ol class="wp-block-list">
<li>Ein Browser (<em>Client</em>) will eine Website aufrufen</li>



<li>Der Client stellt die Verbindung mit dem Proxy her</li>



<li>Der Proxy wertet den HTTP Header aus, um das Ziel zu erfahren</li>



<li>Der Proxy stellt die Anfrage an den Webserver</li>



<li>Die Antwort des Webservers wird gecached und an den Client weiter geleitet</li>
</ol>



<p class="wp-block-paragraph">Woher weiß der Proxy welcher Webserver kontaktiert werden soll?</p>



<ul class="wp-block-list">
<li>Das steht im HTTP Header</li>
</ul>



<p class="wp-block-paragraph">Welches Probleme kann der HTTP Proxy haben?</p>



<ul class="wp-block-list">
<li>Er kann nicht in verschlüsselte Nachrichten hinein schauen</li>



<li>Aber er muss die Nachrichten auswerten, um das Ziel zu kennen</li>



<li>Der Client bedient sich deshalb der <code>HTTP CONNECT</code> Nachrichten</li>
</ul>



<p class="wp-block-paragraph">Wie läuft eine verschlüsselte Kommunikation über HTTP Proxy ab?</p>



<ol class="wp-block-list">
<li>Client baut TCP-Verbindung zum Proxy auf</li>



<li>Client sendet <code>HTTP CONNECT</code> mit IP und Port des Zielservers an den Proxy</li>



<li>Proxy öffnet normale TCP-Verbindung zum Server (<em>Tunnel aufgebaut</em>)</li>



<li>Nun können beliebige Daten in beide Richtungen versendet werden</li>
</ol>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="619" height="348" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_tunnel.png" alt="" class="wp-image-3329" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_tunnel.png 619w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_tunnel-350x197.png 350w" sizes="(max-width: 619px) 100vw, 619px" /></figure>



<p class="wp-block-paragraph">Was ist Tunneling?</p>



<ul class="wp-block-list">
<li>Mit Hilfe der <code>HTTP CONNECT</code> Nachrichten lassen sich beliebige TCP basierte Protokolle durch einen HTTP Proxy tunneln</li>
</ul>



<p class="wp-block-paragraph">Wie beendet der Client den Tunnel?</p>



<ul class="wp-block-list">
<li>Indem er die TCP-Verbindung zum Server beendet</li>



<li>Der Proxy erkennt dies in den Paketen und schließt den Tunnel</li>
</ul>



<p class="wp-block-paragraph">Was sind Intrusion Detection Systeme (IDS)?</p>



<ul class="wp-block-list">
<li>System zur Erkennung von Angriffen</li>



<li>Wahrnehmung wird durch Sensoren (<em>Firewall</em>) ermöglicht</li>



<li>Mustererkennung überprüft Verhaltensmuster</li>



<li>Reaktion wird bei Bedarf ausgelöst (<em>z.B. E-Mail an Administrator</em>)</li>
</ul>



<p class="wp-block-paragraph">Was sind Intrusion Prevention Systeme (IPS)?</p>



<ul class="wp-block-list">
<li>Intrusion-Detection-Systeme, die nicht nur Benachrichtigungen erzeugen, sondern einen entdeckten Angriff abwehren können</li>
</ul>



<h4 class="wp-block-heading">Virtual Private Network (VPN)</h4>



<p class="wp-block-paragraph">Wofür benötigt man VPNs?</p>



<ul class="wp-block-list">
<li>Stellen die Vertraulichkeit von Kommunikation her (<em>kein unerlaubtes Mitlesen</em>)</li>



<li>Verschlüsselung des gesamten Datenverkehrs zwischen Endpunkten im Netzwerk</li>



<li>Entfernte Systeme verhalten sich so, als ob sie sich im gleichen lokalen Netzwerk befinden</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="755" height="196" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_vpn.png" alt="" class="wp-image-3330" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_vpn.png 755w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_vpn-350x91.png 350w" sizes="(max-width: 755px) 100vw, 755px" /></figure>



<h4 class="wp-block-heading">Verschlüsselung</h4>



<p class="wp-block-paragraph">Was ist Verschlüsselung?</p>



<ul class="wp-block-list">
<li>Ein Klartext wird in einen Geheimtext (<em>Chiffrat</em>) übersetzt</li>



<li>Ein Geheimtext wird in den Klartext zurück übersetzt</li>
</ul>



<p class="wp-block-paragraph">Was sind die Suites der NSA?</p>



<ul class="wp-block-list">
<li>Suite B sind öffentlich bekannte und empfohlene Algorithmen</li>



<li>Suite A sind streng geheime Algorithmen für hochsensitive Daten</li>
</ul>



<p class="wp-block-paragraph">Was ist symmetrische Verschlüsselung?</p>



<ul class="wp-block-list">
<li>Beide Seiten kennen einen gemeinsamen geheimen Schlüssel</li>



<li>Die Daten werden mit dem Schlüssel ent- und verschlüsselt</li>



<li>Wird bei Blockchiffren und One-Time-Pad verwendet</li>
</ul>



<p class="wp-block-paragraph">Was ist das One-Time-Pad?</p>



<ul class="wp-block-list">
<li>Zufälliger Schlüssel mit exakter Länge der Nachricht</li>



<li>Schlüssel darf nicht mehrmals verwendet werden und muss geheim bleiben</li>



<li>Nachricht wird mit dem Schlüssel über XOR kombiniert</li>



<li>Bietet eine sehr starke Verschlüsselung</li>



<li>Durch seine Nachteile aber nur selten zu gebrauchen</li>
</ul>



<p class="wp-block-paragraph">Was sind Nachteile vom One-Time-Pad?</p>



<ul class="wp-block-list">
<li>Der Schlüssel darf nicht mehrmals verwendet werden</li>



<li>Die Erzeugung eines zufälligen langen Schlüssels ist kompliziert</li>



<li>Bei großen Datenmengen muss auch ein ebenso großer Schlüssel ausgetauscht werden (<em>Doppelte Datenmenge</em>)</li>
</ul>



<p class="wp-block-paragraph">Was sind Blockchiffren?</p>



<ul class="wp-block-list">
<li>Nachrichten mit einer festen Länge werden ver- und entschlüsselt</li>



<li>Längere Nachrichten werden in Blöcke segmentiert</li>



<li>Bei Bedarf werden Blöcke mittels Padding aufgefüllt</li>



<li>Jeder Block wird mit dem gleichen Schlüssel verschlüsselt</li>



<li>Typische Implementierung ist AES (<em>Nachfolger von DES, 3-DES</em>)</li>
</ul>



<p class="wp-block-paragraph">Welches Problem tritt bei Blockchiffren auf?</p>



<ul class="wp-block-list">
<li>Gleiche Textblöcke erzeugen gleiche Chiffrate</li>



<li>Dadurch können Angreifer Rückschlüsse auf den Klartext ziehen</li>
</ul>



<p class="wp-block-paragraph">Wie löst man das Problem der gleichen Chiffrate?</p>



<ul class="wp-block-list">
<li>Mittels eines Betriebsmodus wie dem Cipher Block Chaining</li>
</ul>



<p class="wp-block-paragraph">Was macht man, um den gesamten Text zu verschlüsseln?</p>



<ul class="wp-block-list">
<li>Auftrennung des Textes in Blöcke geeigneter Länge</li>



<li>Einsatz von Betriebsmodi wie dem CBC</li>
</ul>



<p class="wp-block-paragraph">Was ist das Cipher Block Chaining?</p>



<ul class="wp-block-list">
<li>Erweitert die Blockchiffre</li>



<li>Der aktuelle Klartext wird mit dem vorherigen Chiffrat über XOR verknüpft</li>



<li>Dadurch werden Muster im Klartext verhindert und keine identischen Chiffrate gebildet</li>



<li>Zum Entschlüsseln wird das letzte und vorletzte Chiffrat und der Schlüssel benötigt</li>
</ul>



<p class="wp-block-paragraph">Wie verschlüsselt man den ersten Block?</p>



<ul class="wp-block-list">
<li>Mit einem zufälligen Initialisierungsvektor IV</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="328" height="321" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_cbc_kodieren.png" alt="" class="wp-image-3331" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_cbc_kodieren.png 328w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_cbc_kodieren-300x294.png 300w" sizes="(max-width: 328px) 100vw, 328px" /></figure>



<p class="wp-block-paragraph">Wie entschlüsselt man das überhaupt?</p>



<ul class="wp-block-list">
<li>Mit den letzten zwei Chiffren</li>



<li>Der IV wird nicht benötigt</li>
</ul>



<p class="wp-block-paragraph">Welche Auswirkung hat ein Übertragungsfehler in einem Block?</p>



<ul class="wp-block-list">
<li>Der betroffene Block und sein Nachfolger können nicht mehr entschlüsselt werden</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="523" height="402" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_cbc.png" alt="" class="wp-image-3332" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_cbc.png 523w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_cbc-350x269.png 350w" sizes="auto, (max-width: 523px) 100vw, 523px" /></figure>



<p class="wp-block-paragraph">Was ist asymmetrische Verschlüsselung?</p>



<ul class="wp-block-list">
<li>Es gibt einen öffentlichen und einen privaten Schlüssel</li>



<li>Nachrichten werden mit dem öffentlichen Schlüssel verschlüsselt</li>



<li>Nachrichten können nur mit dem privaten Schlüssel entschlüsselt werden</li>



<li>Wird für Verschlüsselung und Signaturen genutzt</li>



<li>Typische Implementierung ist RSA</li>
</ul>



<p class="wp-block-paragraph">Wofür wird RSA genutzt?</p>



<ul class="wp-block-list">
<li>Vereinbarung symmetrischer Schlüssel (<em>Session Key</em>)</li>



<li>Signieren von Nachrichten</li>
</ul>



<p class="wp-block-paragraph">Was sind Signaturen?</p>



<ul class="wp-block-list">
<li>Verfahren um die Authentizität zu gewährleisten</li>
</ul>



<p class="wp-block-paragraph">Was sind Zertifikate?</p>



<ul class="wp-block-list">
<li>Verbindung von Name mit einer Signatur</li>



<li>Selbstsigniert oder von einer vertrauenswürdigen Organisation ausgestellt</li>
</ul>



<p class="wp-block-paragraph">Was ist Hashing?</p>



<ul class="wp-block-list">
<li>Eine Einwegfunktion <code>f(x) = y</code></li>



<li>y ist leicht zu Berechnen</li>



<li>x aus y hingegen nicht</li>



<li>Dient dazu Daten beliebiger Länge auf Daten mit fester Länge abzubilden</li>
</ul>



<p class="wp-block-paragraph">Wo verwendet man kryptographisches Hashing?</p>



<ul class="wp-block-list">
<li>Erzeugung eines Fingerprints einer Nachricht</li>



<li>Siehe auch Digitale Signatur</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert die Signatur mit RSA?</p>



<ol class="wp-block-list">
<li>Verschlüsselung der Nachricht mit privatem Schlüssel</li>



<li>Empfänger entschlüsselt mit öffentlichem Schlüssel</li>



<li>Gewährleistet Integrität und Authentizität</li>



<li>Das darf auf diese Weise aber nur zwei Mal angewendet werden</li>
</ol>



<p class="wp-block-paragraph">Wie signiert man eine Nachricht besser?</p>



<ol class="wp-block-list">
<li>Signatur der Nachricht mittels kryptographischer Hashfunktion berechnen</li>



<li>Signatur mit privatem Schlüssel verschlüsseln</li>



<li>Nachricht versenden an den Empfänger</li>



<li>Signatur mit öffentlichem Schlüssel entschlüsseln</li>



<li>Hashwert über die Nachricht bilden und mit dem in 4 erlangten Hash vergleichen</li>
</ol>



<h4 class="wp-block-heading">SSL/TLS</h4>



<p class="wp-block-paragraph">Was sind SSL und TLS?</p>



<ul class="wp-block-list">
<li>Protokolle zum Schlüsselaustausch und Verschlüsselung von TCP-Verbindungen</li>



<li>Liegen als Schicht zwischen TCP und Application-Layer</li>



<li>Häufig für verschlüsselten Verbindungen im WWW genutzt (<em>HTTPS auf Port 443</em>)</li>



<li>Benötigen keine externe Schlüsselverwaltung</li>



<li>Client und Server handeln die Algorithmen für Authentifizierung und Verschlüsselung selbst aus</li>
</ul>



<p class="wp-block-paragraph">Wie ist TLS aufgebaut?</p>



<ul class="wp-block-list">
<li>Besteht aus Record, Handshake, ChangeCipherSpec und Alert Protocol</li>



<li>Der Client schlägt ein PreMaster Secret vor</li>



<li>Client und Server handeln eine ciphersuite und Parameter aus</li>



<li>Aus den Parametern und dem PreMaster werden auf beiden Systemen das Master Secret und alle nötigen Schlüssel erzeugt</li>
</ul>



<p class="wp-block-paragraph">Was ist das Handshake Protocol?</p>



<ul class="wp-block-list">
<li>Handelt die Sicherheitseinstellungen zwischen Client und Server aus</li>



<li>Authentisiert den Server (<em>und optional den Client</em>)</li>
</ul>



<p class="wp-block-paragraph">Was ist das ChangeCipherSpec Protocol?</p>



<ul class="wp-block-list">
<li>Beendet das Aushandeln der Sicherheitsparameter</li>



<li>Startet die verschlüsselte Kommunikation</li>
</ul>



<p class="wp-block-paragraph">Was ist das Alert Protocol?</p>



<ul class="wp-block-list">
<li>Informiert über Fehler und abnormale Zustände</li>
</ul>



<p class="wp-block-paragraph">Was ist das Record Protocol?</p>



<ul class="wp-block-list">
<li>Besitzt den verschlüsselten und nicht verschlüsselten Zustand</li>



<li>Transportiert Daten anhand der ausgehandelten Sicherheitsparameter</li>



<li>Mit ihm kommunizieren TCP und Anwendungen</li>
</ul>



<p class="wp-block-paragraph">Wie kann man SSL/TLS Verbindungen in eigenen Programmen nutzen?</p>



<ul class="wp-block-list">
<li>Bibliotheken bieten Funktionen, mit denen man normale Sockets mit SSL/TLS aufrüsten kann</li>



<li>Die Authentifizierung und Verschlüsselung wird von der Bibliothek erledigt</li>



<li>Um Senden und Empfangen von Daten kümmern sich die Entwickler (<em>Sockets</em>)</li>
</ul>



<p class="wp-block-paragraph">Beispiele für OpenSSL-Schnittstellen</p>



<ul class="wp-block-list">
<li><code>SSL_accept</code> &#8211; Verbindung annehmen</li>



<li><code>SSL_connect</code> &#8211; verbinden</li>



<li><code>SSL_read</code> &#8211; empfangen</li>



<li><code>SSL_write</code> &#8211; senden</li>



<li><code>SSL_set_fd</code> &#8211; Socketdeskriptor setzen</li>
</ul>



<p class="wp-block-paragraph">Was ist Perfect Forward Secrecy?</p>



<ul class="wp-block-list">
<li>Wenn der private Schlüssel erspäht wird, kann jede vorherige Kommunikation (<em>wurde aufgezeichnet</em>) entschlüsselt werden</li>



<li>Bei Perfect Forward Secrecy werden die Schlüssel zum Authentifizieren und Verschlüsseln voneinander getrennt</li>



<li>Siehe auch Diffie-Hellman</li>
</ul>



<p class="wp-block-paragraph">Was ist das Diffie-Hellman-Verfahren?</p>



<ul class="wp-block-list">
<li>Zwei Teilnehmer erzeugen einen Sitzungsschlüssel (K<sub>A</sub> = K<sub>B</sub>)</li>



<li>Die ausgetauschten Nachrichten müssen dabei stets signiert werden</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="379" height="579" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140603_diffie_normal.png" alt="" class="wp-image-3333" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140603_diffie_normal.png 379w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140603_diffie_normal-229x350.png 229w" sizes="auto, (max-width: 379px) 100vw, 379px" /></figure>



<p class="wp-block-paragraph">Was passiert, wenn Alice und Bob ihre Nachrichten nicht signieren?</p>



<ul class="wp-block-list">
<li>Ein Angreifer täuscht beide Seiten mittels ARP Spoofing (<em>Angeblicher Besitz einer IP-Adresse</em>)</li>



<li>Er handelt mittels Diffie-Hellman selbst den Schlüssel aus</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="541" height="855" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140603_diffie_mitm.png" alt="" class="wp-image-3334" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140603_diffie_mitm.png 541w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140603_diffie_mitm-221x350.png 221w" sizes="auto, (max-width: 541px) 100vw, 541px" /></figure>



<h4 class="wp-block-heading">Kerberos</h4>



<p class="wp-block-paragraph">Was ist Kerberos?</p>



<ul class="wp-block-list">
<li>Key Distribution Center (KDC) erzeugt Schlüssel für Sitzungen</li>



<li>Kerberos erzeugt Schlüssel (<em>tickets</em>) mit begrenzter Lebensdauer</li>



<li>Diese Schlüssel werden dann verwendet, um sich gegenüber Diensten zu authentifizieren</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="779" height="474" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_kerberos.png" alt="" class="wp-image-3335" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_kerberos.png 779w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_kerberos-350x213.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140702_vs_kerberos-768x467.png 768w" sizes="auto, (max-width: 779px) 100vw, 779px" /></figure>



<p class="wp-block-paragraph">Warum schickt der Server B nicht K<sub>A,B</sub>(t)?</p>



<ul class="wp-block-list">
<li>Der Server B will sich gegenüber dem Client A gegenüber authentisieren</li>



<li>Da symmetrisch verschlüsselt wird, muss von Server B der Besitz des symmetrischen Schlüssels K<sub>A,B</sub> nachgewiesen werden</li>



<li>Indem er den inkrementierten Wert (<em>t+1</em>) verschlüsselt sendet kann er sich gegenüber dem Client A authentisieren</li>
</ul>



<h4 class="wp-block-heading">Anonymisierung mit TOR</h4>



<p class="wp-block-paragraph">Was ist TOR?</p>



<ul class="wp-block-list">
<li>Bietet Anonymität für TCP-Verbindungen</li>



<li>TOR besteht aus vielen einzelnen &#8222;Onion Routern&#8220; (OR)</li>



<li>Onion Router sind kaskadiert (<em>hintereinander geschaltet</em>)</li>



<li>Das Ziel sieht nur die Adresse des letzten Onion Routers</li>



<li>Die Pakete enthalten die Header für alle Router der Kaskade ineinander verschachtelt (<em>Auspacken wie eine Zwiebel</em>)</li>



<li>Jeder Router entfernt seinen Header und schickt nur den ausgepackten Teil weiter</li>



<li>Jeder Router kennt deshalb nur den Vorgänger, sich selbst und das nächste Ziel</li>



<li>Zwischen den Routern sorgt TLS für Sicherheit</li>
</ul>



<p class="wp-block-paragraph">Wie wird eine Kaskade aufgebaut?</p>



<ul class="wp-block-list">
<li>Die Quelle wählt eine Menge von Onion Routern</li>



<li>Die Quelle vereinbart einen zeitlich begrenzt gültigen Schlüssel mit dem ersten Router der Kaskade (<em>Diffie Hellman</em>)</li>



<li>Schlüssel werden über die Kaskade ausgetauscht</li>
</ul>



<p class="wp-block-paragraph">Würde onion routing so auch mit UDP funktionieren?</p>



<ul class="wp-block-list">
<li>Onion Routing funktioniert nur bedingt mit UDP</li>



<li>Durch die Begrenzung der UDP-PDU auf 64 KB ist nur eine begrenzte Anzahl von Onion Routern möglich</li>
</ul>



<p class="wp-block-paragraph">Wie findet ein Client die benötigten Onion Router?</p>



<ul class="wp-block-list">
<li>Ein Namendienst auf den bekannten TOR Knoten hält Listen von Onion Routern</li>



<li>Neu gestartete Router melden sich beim Namensdienst an</li>
</ul>



<p class="wp-block-paragraph">Welche Gefahr birgt dieses System?</p>



<ul class="wp-block-list">
<li>Das Einschleusen von bösartigen Onion Routern</li>
</ul>



<p class="wp-block-paragraph">Was bringt das Einschleusen eines bösartigen Onion Routern?</p>



<ul class="wp-block-list">
<li>Das Einschleusen macht nur Sinn, wenn hostile Onion Router dann Ein- und Ausgangsknoten sind</li>



<li>Dadurch kann man Ein- und nach Ausgangsknoten analysieren und versuchen und Quell- und Zieldatenströme zuzuordnen</li>



<li>Das ist dennoch schwer zu realisieren</li>
</ul>



<p class="wp-block-paragraph">Was ist eine Leaky Pipe?</p>



<ul class="wp-block-list">
<li>Verkehr kann an jedem Onion Router der Kaskade ans Ziel geleitet werden</li>



<li>Hilft, wenn eine Quelle mehr als einen TCP Strom unterhält</li>



<li>Erschwert das Zuordnen von ein- und ausgehenden Paketen</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-6/">Verteilte Systeme (Teil 6)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Teil 5)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-5/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-5/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 20:00:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3337</guid>

					<description><![CDATA[<p>Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 5 behandelt verteilte Dateisysteme und Namensdienste. Skript-Anfang VS_1_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70 Dienste Der Begriff Dienst beschreibt in der Informatik allgemein eine technische, autarke [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-5/">Verteilte Systeme (Teil 5)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 5 behandelt verteilte Dateisysteme und Namensdienste.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_1_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Dienste</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Der Begriff Dienst beschreibt in der Informatik allgemein eine technische, autarke Einheit, die zusammenhängende Funktionalitäten zu einem Themenkomplex bündelt und über eine klar definierte Schnittstelle zur Verfügung stellt. Typische Beispiele sind hier z. B. Webservices, die Funktionalitäten für Dritte über das Inter- bzw. Intranet verfügbar machen, Netzwerkdienste, Systemdienste oder auch Telekommunikationsdienste.</p>
</blockquote>



<h4 class="wp-block-heading">Verteilte Dateisysteme</h4>



<p class="wp-block-paragraph">Wozu braucht man verteilte Dateisysteme?</p>



<ul class="wp-block-list">
<li>Summe einzelner Systeme ist größer als ein lokales System (<em>Kapazität</em>)</li>



<li>Zugriff von unterschiedlichen Systemen möglich (<em>Gemeinsame Verwendung</em>)</li>



<li>Unterstützung plattenloser Geräte</li>
</ul>



<p class="wp-block-paragraph">Welche Transparenzeigenschaften sollten sie erfüllen?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Transparenz</td><td>Beschreibung</td></tr><tr><td>Zugriff</td><td>Gleicher Zugriff wie bei lokalen Dateien</td></tr><tr><td>Ort</td><td>Man muss nicht wissen, wo eine Datei sich befindet (<em>Adresse identisch für jeden Client</em>)</td></tr><tr><td>Nebenläufigkeit</td><td>Mehrere Benutzer können gleichzeitig zugreifen (<em>Parallele Schreibzugriffe sind problematisch</em>)</td></tr><tr><td>Fehler</td><td>Der Ausfall eines Systems beeinträchtigt keine anderen Systeme (<em>Daten müssen immer verfügbar sein</em>)</td></tr><tr><td>Last</td><td>Last darf die Antwortzeiten nicht beeinflussen</td></tr><tr><td>Migration</td><td>Dateiverschiebungen zwischen Servern bleiben unbemerkt (<em>Verzeichniswechsel muss bemerkbar sein</em>)</td></tr><tr><td>Replikation</td><td>Client sieht immer nur eine Version der Datei</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Wie integriert sich ein verteiltes Dateisystem?</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="388" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_vfs.png" alt="" class="wp-image-3451" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_vfs.png 800w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_vfs-350x170.png 350w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_vfs-768x372.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Welche Zugriffsmodelle gibt es?</p>



<ul class="wp-block-list">
<li>Remote-Access</li>



<li>Upload/Download</li>
</ul>



<p class="wp-block-paragraph">Was ist Remote-Access?</p>



<ul class="wp-block-list">
<li>Alle Zugriffe finden auf dem Server statt</li>



<li>Datei wird nicht kopiert</li>



<li>Vollständige Funktion im Server</li>



<li>Komplexe Schnittstelle</li>



<li>Ständiger Netzwerkzugriff mit kleinen Datenmengen</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="384" height="202" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_remoteaccess.png" alt="" class="wp-image-3452" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_remoteaccess.png 384w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_remoteaccess-350x184.png 350w" sizes="auto, (max-width: 384px) 100vw, 384px" /></figure>



<p class="wp-block-paragraph">Was ist Upload/Download?</p>



<ul class="wp-block-list">
<li>Datei wird auf den Client verschoben</li>



<li>Nach Ende der Nutzung wird Datei zurück auf den Server kopiert</li>



<li>Teile der Funktionalität auf dem Client</li>



<li>Einfache Schnittstelle</li>



<li>Viel Speicherplatz auf dem Client benötigt</li>



<li>Netzwerkzugriff nur beim Öffnen und Schließen</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="400" height="301" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_uldl.png" alt="" class="wp-image-3453" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_uldl.png 400w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_uldl-350x263.png 350w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure>



<p class="wp-block-paragraph">Was sind zustandslose Server?</p>



<ul class="wp-block-list">
<li>Alle Informationen werden mit jedem Aufruf übertragen (<em>Weniger Speicherbedarf im Server</em>)</li>



<li>Keine Operation zum Öffnen oder Schließen von Dateien</li>



<li>Leichter zu implementieren (<em>Fehlertoleranz und Lastverteilung</em>)</li>



<li>Keine Probleme beim Absturz eines Clients (<em>Keine Zustandsinformationen zum Löschen</em>)</li>
</ul>



<p class="wp-block-paragraph">Was sind zustandsbehaftete Server?</p>



<ul class="wp-block-list">
<li>Weniger Kommunikationsaufwand, weil weniger Informationen benötigt werden</li>



<li>Lese- und Schreibzugriffe sind effizienter (<em>Zeiger sind schon am richtigen Platz</em>)</li>



<li>Alle Clients und verwendete Dateien sind bekannt (<em>ermöglicht Precaching</em>)</li>



<li>Sperren sind einfach zu realisieren</li>
</ul>



<p class="wp-block-paragraph">Sind zustandslose oder zustandsbehaftete Server besser?</p>



<ul class="wp-block-list">
<li>Zustandslos ist besser, wenn der die Koppelung von Client und Server gering ist und Daten nur bedingt geschrieben werden (<em>HTTP</em>)</li>



<li>Zustandsbehaftet ist besser, wenn viel mit Lese- und Schreiboperationen auf Dateien gearbeitet wird (<em>FTP</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Änderungs-Semantiken gibt es?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Semantik</td><td>Beschreibung</td></tr><tr><td>UNIX</td><td>Änderungen sofort sichtbar</td></tr><tr><td>Sitzung</td><td>Änderungen erst beim Schließen sichtbar</td></tr><tr><td>Unveränderbare Dateien</td><td>Keine Änderungen möglich</td></tr><tr><td>Transaktion</td><td>Atomare Änderungen</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Network File System (NFS)</h4>



<p class="wp-block-paragraph">Was ist COMPOUND4args bei NFS v4?</p>



<ul class="wp-block-list">
<li>Mehrere Operationen in einem RPC-Aufruf</li>



<li>Dadurch können RPCs eingespart werden</li>
</ul>



<p class="wp-block-paragraph">Woher kennen wir diese Art der Verarbeitung schon?</p>



<ul class="wp-block-list">
<li>Es wird beim Pipelining von idempotenten und unabhängigen HTTP-Anfragen genutzt</li>
</ul>



<p class="wp-block-paragraph">Welche Funktionen hat NFSv4?</p>



<ul class="wp-block-list">
<li><code>LOOKUP</code> &#8211; Dateiname suchen und Handle liefern</li>



<li><code>CREATE</code> &#8211; Besondere Dateien erzeugen (<em>Verzeichnisse und Links</em>)</li>



<li><code>OPEN</code> &#8211; Öffnen (<em>und erzeugen</em>) von normalen Dateien</li>



<li><code>CLOSE</code> &#8211; Schließen</li>



<li><code>READ</code> &#8211; Datei lesen</li>



<li><code>WRITE</code> &#8211; Datei schreiben</li>



<li><code>MKDIR</code> &#8211; Verzeichnis erzeugen</li>



<li><code>READDIR</code> &#8211; Verzeichniseintrag lesen</li>



<li><code>REMOVE</code> &#8211; Datei löschen</li>
</ul>



<p class="wp-block-paragraph">Wie läuft ein Lesezugriff im NFS ab?</p>



<ol class="wp-block-list">
<li><code>LOOKUP</code></li>



<li><code>OPEN</code></li>



<li><code>READ</code> (<em>Position-Lesezeiger, Anzahl zu lesender Bytes</em>)</li>



<li>&#8230;</li>



<li><code>CLOSE</code></li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="385" height="313" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_nfsread.png" alt="" class="wp-image-3454" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_nfsread.png 385w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_nfsread-350x285.png 350w" sizes="auto, (max-width: 385px) 100vw, 385px" /></figure>



<p class="wp-block-paragraph">Welche Vor- und Nachteile gibt es, wenn der Client die Datenmenge bestimmt?</p>



<ul class="wp-block-list">
<li>Es kann zu Speicherzugriffsverletzungen kommen</li>



<li>Bei einem timeout muss ggf. alles neu gesendet werden</li>



<li>Deswegen bestimmt der Server die Datenmenge (<em>Aber nicht mehr als der Client anfragt</em>)</li>
</ul>



<p class="wp-block-paragraph">Was passiert, wenn ein Aufruf sehr lange dauert?</p>



<ul class="wp-block-list">
<li>Verbindungsabbruch (<em>timeout</em>)</li>



<li>Client wird zu einem RPC-Server für asynchrone Benachrichtigungen (<em>callbacks</em>)</li>
</ul>



<p class="wp-block-paragraph">Ist NFS zustandslos?</p>



<ul class="wp-block-list">
<li>Nein, da die locking und delegation Funktionen mit Zuständen arbeiten</li>
</ul>



<p class="wp-block-paragraph">Implementiert NFS das Modell remote access oder upload/download?</p>



<ul class="wp-block-list">
<li>Es implementiert remote access</li>
</ul>



<p class="wp-block-paragraph">Wie wird NFS in ein lokales Dateisystem eingebunden?</p>



<ul class="wp-block-list">
<li>Mittels <code>mount</code> (<em>Virtuelles Dateisystem</em>)</li>



<li>Als neues Laufwerk</li>
</ul>



<p class="wp-block-paragraph">Was passiert, wenn ein Server Dateien von einem anderen Server importiert?</p>



<ul class="wp-block-list">
<li>Die Weitergabe von solchen Dateien ist nicht erlaubt</li>



<li>Die Unterverzeichnisse müssen ausdrücklich importiert werden</li>
</ul>



<p class="wp-block-paragraph">Wie werden Dateinamen aufgelöst?</p>



<ul class="wp-block-list">
<li>Rekursiv über mehrere Server</li>



<li>Client stellt LOOKUP an Server</li>



<li>Server leitet die Anfrage an nächsten Server weiter</li>



<li>Server gibt einen Handle der Datei zurück</li>



<li>LOOKUP liefert alle Server zurück (<em>Wechsel bei Ausfall</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Probleme gibt es beim Zugriff auf Dateien?</p>



<ul class="wp-block-list">
<li>Replikation (<em>Konsistenz geht verloren</em>)</li>



<li>Sperren</li>



<li>Synchronisation</li>



<li>Performance</li>
</ul>



<p class="wp-block-paragraph">Unterstützt NFS Replikation?</p>



<ul class="wp-block-list">
<li>Ja, aber nur für read-only Dateisysteme</li>



<li><code>LOOKUP</code> liefert alle Server mit Repliken</li>
</ul>



<p class="wp-block-paragraph">Welche Änderungs-Semantik implementiert NFS?</p>



<ul class="wp-block-list">
<li>Sitzungssemantik</li>
</ul>



<p class="wp-block-paragraph">Was sind Dateisperren?</p>



<ul class="wp-block-list">
<li>Lese- und Schreibsperren durch Clients beim Aufruf (<em>READ, WRITE, BOTH</em>)</li>



<li>Sperren einen Bereich von Byteposition plus Länge</li>



<li>Verweigerungssperren (<em>share reservations</em>) sperren ganze Dateien</li>



<li>Laufende Zugriffe können nicht gesperrt werden</li>



<li><code>LOCK</code> &#8211; Sperrt</li>



<li><code>LOCKT</code> &#8211; Testet die Sperre</li>



<li><code>LOCKU</code> &#8211; Aufheben</li>
</ul>



<p class="wp-block-paragraph">Wie erreicht man eine &#8222;at-most-once&#8220; Semantik bei Sperren?</p>



<ul class="wp-block-list">
<li>Ist in NFSv4 durch Sequenz-IDs und lease-Zeiten implementiert</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert Caching bei NFS?</p>



<ul class="wp-block-list">
<li>Schreiboperationen können im Cache durchgeführt werden</li>



<li>Beim Schließen werden die Änderungen synchronisiert</li>



<li>Beim Öffnen wird der Cache immer neu eingelesen</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert die Delegierung von Dateien</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="450" height="194" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_delegierung.png" alt="" class="wp-image-3455" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_delegierung.png 450w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_delegierung-350x151.png 350w" sizes="auto, (max-width: 450px) 100vw, 450px" /></figure>



<p class="wp-block-paragraph">Wie funktioniert Sicherheit in NFS?</p>



<ul class="wp-block-list">
<li>Aufsatz auf RPCSEC_GSS, Framework für unterschiedliche Sicherheitsmechanismen (<em>wie Kerberos</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Benutzer gibt es in NFS?</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="700" height="416" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_user.png" alt="" class="wp-image-3456" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_user.png 700w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_user-350x208.png 350w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<h4 class="wp-block-heading">Andrew File System (AFS)</h4>



<p class="wp-block-paragraph">Welche Ziele bzw. Annahmen werden mit AFS verfolgt?</p>



<ul class="wp-block-list">
<li>Skalierbarkeit</li>



<li>Performanz</li>



<li>Dateisystem für Universitäten</li>



<li>Hauptsächlich READ-Operationen</li>



<li>Sequentieller Zugriff (<em>Anfügen</em>)</li>



<li>Dateizugriff von einem User</li>



<li>Kleine Dateien</li>



<li>Dateizugriffe über lange Zeit verteilt (<em>Lokalitätsprinzip</em>)</li>
</ul>



<p class="wp-block-paragraph">Was ist whole file sharing?</p>



<ul class="wp-block-list">
<li>Dateien werden komplett (<em>bzw. 64 KB Blöcke</em>) übermittelt</li>
</ul>



<p class="wp-block-paragraph">Was ist whole file caching?</p>



<ul class="wp-block-list">
<li>Lokale Kopien beim Client</li>



<li>Synchronisierung nach Schließen</li>



<li>Kopie wird aufgehoben (<em>Cache</em>)</li>
</ul>



<p class="wp-block-paragraph">Wie ist AFS aufgebaut?</p>



<ul class="wp-block-list">
<li>Venus ist der Client</li>



<li>Vice ist der Server</li>



<li>Venus fängt Remote-Zugriffe ab</li>



<li>Basiert auf Sockets und RPCs</li>



<li>Verwendet UDP</li>
</ul>



<p class="wp-block-paragraph">Wie läuft ein Aufruf ab?</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="531" height="356" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_afs.png" alt="" class="wp-image-3457" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_afs.png 531w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_afs-350x235.png 350w" sizes="auto, (max-width: 531px) 100vw, 531px" /></figure>



<p class="wp-block-paragraph">Was passiert, wenn eine Datei beim Öffnen bereits von einem anderen Prozess geöffnet wurde?</p>



<ul class="wp-block-list">
<li>Inkonsistenzen durch WRITE</li>
</ul>



<p class="wp-block-paragraph">Was ist die callback promise?</p>



<ul class="wp-block-list">
<li>Vice informiert alle betroffenen Clients über schreibenden Zugriff auf Datei (<em>Überschreiben dennoch möglich</em>)</li>
</ul>



<p class="wp-block-paragraph">Warum bietet AFS keine garantierte Konsistenz?</p>



<ul class="wp-block-list">
<li>Kleiner Overhead für mehr Performanz</li>



<li>Anwendungen sollen sich darum kümmern</li>



<li>Mehrfache Benutzung ohnehin selten (<em>Annahme</em>)</li>
</ul>



<p class="wp-block-paragraph">In welchen Szenarien werden Dateien häufig gemeinsam benutzt?</p>



<ul class="wp-block-list">
<li>Unternehmen</li>



<li>Datenbanken</li>



<li>Cloud-Dienste</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert Sicherheit in AFS?</p>



<ul class="wp-block-list">
<li>Kerberos-Authentifizierung</li>



<li>Verschlüsselung (<em>weil DES ist obsolet</em>) ist dem User überlassen</li>
</ul>



<h4 class="wp-block-heading">Google File System (GFS)</h4>



<p class="wp-block-paragraph">Welche Ziele bzw. Annahmen werden von GFS verfolgt?</p>



<ul class="wp-block-list">
<li>Fehlertoleranz (<em>Ausfälle sind normal</em>)</li>



<li>Skalierbarkeit</li>



<li>Heterogene Systeme (<em>HW und SW</em>)</li>



<li>Viele verteilte große Dateien</li>



<li>Sequentieller Zugriff (<em>Anfügen</em>)</li>



<li>Bandbreite wichtiger als Latenz</li>



<li>Kein Caching (<em>Größe und sequentielle Zugriffe</em>)</li>
</ul>



<p class="wp-block-paragraph">Welches Verfahren benötigt so etwas?</p>



<ul class="wp-block-list">
<li>Map reduce</li>
</ul>



<p class="wp-block-paragraph">Welche Befehle beherrscht GFS zusätzlich?</p>



<ul class="wp-block-list">
<li>snapshot (<em>Kopie</em>)</li>



<li>record append (<em>Anfügen, atomar mit Nebenläufigkeit</em>)</li>
</ul>



<p class="wp-block-paragraph">Wie ist GFS aufgebaut?</p>



<ul class="wp-block-list">
<li>Variante der Master/Slave-Architektur</li>



<li>Quorom Algorithmus (<em>QW=3, QR=1</em>)</li>



<li>1 Master-Server</li>



<li>Master verwaltet die chunk-Server (<em>Heartbeat</em>)</li>



<li>Viele chunk-Server (<em>hier liegen die Repliken</em>)</li>



<li>Master pollt alle Server beim Booten</li>



<li>Master bestimmt einen Server als <strong>primary replica</strong></li>



<li>Primary replica verwaltet alle Schreibzugriffe für bestimmte Repliken</li>
</ul>



<p class="wp-block-paragraph">Was sind Chunks?</p>



<ul class="wp-block-list">
<li>Dateien werden in 64 MB Blöcke aufgeteilt</li>



<li>2<sup>64</sup> Bit Handle pro Chunk</li>



<li>3 Kopien jedes Chunks</li>
</ul>



<p class="wp-block-paragraph">Warum wird nicht versucht eine konsistente Sicht im Master zu halten?</p>



<ul class="wp-block-list">
<li>Master kennt genaue Situation der chunk-Server nicht</li>
</ul>



<p class="wp-block-paragraph">Wie läuft ein Schreibzugriff ab?</p>



<ol class="wp-block-list">
<li>Client fragt beim Server an</li>



<li>Master liefert primary replica des chunks</li>



<li>Client schickt Update an alle Repliken</li>



<li>Client schickt Schreiboperation an primary replica</li>



<li>Primary replica koordiniert den Schreibzugriff (<em>2PC</em>)</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="352" height="303" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_gfs.png" alt="" class="wp-image-3458" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_gfs.png 352w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_gfs-350x301.png 350w" sizes="auto, (max-width: 352px) 100vw, 352px" /></figure>



<p class="wp-block-paragraph">Wie wird Konsistenz sichergestellt?</p>



<ul class="wp-block-list">
<li>Namensänderungen atomar vom Master</li>



<li>Daten mittels at-least-once in unbestimmter Reihenfolge angefügt</li>
</ul>



<p class="wp-block-paragraph">Wann können Inkonsistenzen auftreten?</p>



<ul class="wp-block-list">
<li>Bei Fehlern oder Nachrichtenverlust</li>
</ul>



<p class="wp-block-paragraph">Was ist das Operation Log?</p>



<ul class="wp-block-list">
<li>Alle Operationen sind hier gelagert</li>



<li>Master schreibt das Log</li>



<li>Log auf externen Systemen gesichert</li>



<li>Master führt nach Crash alle offenen Operationen nochmal aus <em>at-least-once</em>)</li>



<li>Regelmäßige Checkpoints</li>
</ul>



<p class="wp-block-paragraph">Wie wird bei GFS repliziert?</p>



<ul class="wp-block-list">
<li>Replikation des operation logs und der Checkpoints auf mehrere Server</li>



<li>Replikation der Daten mittels chunk replication</li>



<li>Replikation des Masters mittels shadow masters (<em>Lesezugriff auf operation log</em>)</li>
</ul>



<h4 class="wp-block-heading">Namendienste</h4>



<p class="wp-block-paragraph">Wozu braucht man Namendienste?</p>



<ul class="wp-block-list">
<li>Einfache Namen anstelle von kryptischer Adressen</li>



<li>Die Adresse bildet den Zugriffspunkt zu einer Entität</li>



<li>Hinter einem Namen stehen Entitäten von Dateien, Objekten, Funktionen, Rechnern oder Ressourcen</li>
</ul>



<p class="wp-block-paragraph">Welche Funktionen bietet ein Namensdienst?</p>



<ul class="wp-block-list">
<li>Binden und Speichern eines Namens an Adressen (<em>IP und MAC</em>) oder Attribute (<em>Username und PW</em>)</li>



<li>Auflösen und Liefern der Adressen oder Attribute (<em>resolution</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Namensdienste gibt es?</p>



<ul class="wp-block-list">
<li>DNS</li>



<li>LDAP</li>



<li>VoIP</li>



<li>Dateisysteme</li>



<li>Java RMI und Corba (<em>Objekte haben Namen</em>)</li>



<li>MPI (<em>Rechenknoten haben IDs</em>)</li>



<li>GFS (<em>Masterknoten lokalisiert Chunks</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Anforderungen werden an einen Namensdienst gestellt?</p>



<ul class="wp-block-list">
<li>Zuverlässigkeit (<em>DNS</em>)</li>



<li>Nebenläufigkeitstransparenz (<em>Parallel Lesen und Schreiben</em>)</li>



<li>Fehlertransparenz (<em>für Zuverlässigkeit</em>)</li>



<li>Skalierbarkeit (<em>für Geschwindigkeit</em>)</li>



<li>Sicherheit (<em>siehe Schutzziele</em>)</li>



<li>Konsistenz (<em>siehe Nebenläufigkeitstransparenz</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Anforderungen gelten für welche Schicht?</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="700" height="316" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dns.png" alt="" class="wp-image-3459" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dns.png 700w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dns-350x158.png 350w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<p class="wp-block-paragraph">Wie läuft iterative Namensauflösung ab?</p>



<ul class="wp-block-list">
<li>Zustandslose Server</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="433" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_resolute.png" alt="" class="wp-image-3460" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_resolute.png 800w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_resolute-350x189.png 350w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_resolute-768x416.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Wie läuft rekursive Namensauflösung ab?</p>



<ul class="wp-block-list">
<li>Caching und Geschwindigkeit</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="401" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_rekursiv.png" alt="" class="wp-image-3461" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_rekursiv.png 800w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_rekursiv-350x175.png 350w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_rekursiv-768x385.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Wie läuft hybride Namensauflösung ab?</p>



<ul class="wp-block-list">
<li>Server übernimmt iterative Auflösung anstelle des Clients</li>
</ul>



<h4 class="wp-block-heading">Domain Name System (DNS)</h4>



<p class="wp-block-paragraph">Was ist DNS?</p>



<ul class="wp-block-list">
<li>Hierarchischer Namensdienst</li>



<li>13 Wurzelzonen (<em>je 1 primärer Server und mehrere synchronisierte Sekundärserver</em>)</li>



<li>Verwendet meist UDP, aber auch TCP möglich (<em>je </em><em>Port 53</em>)</li>



<li>Lokaler DNS Cache (<em>hosts</em>) und Resolver im Client</li>



<li>Client sollte min. 2 DNS-Server kennen</li>



<li>Iterative und rekursive Auflösung möglich (<em>Client wählt aus</em>)</li>



<li>Anfragen sind bündelbar und besitzen eine TTL</li>



<li>Filtern von Anfragen mittels White- und Blacklist möglich</li>
</ul>



<p class="wp-block-paragraph">Wie sind Nachrichten aufgebaut?</p>



<ul class="wp-block-list">
<li>Query und Reply-Nachrichten (<em>identisches Format</em>)</li>



<li>Flags mit Parametern</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="583" height="391" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dnsformat.png" alt="" class="wp-image-3462" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dnsformat.png 583w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dnsformat-350x235.png 350w" sizes="auto, (max-width: 583px) 100vw, 583px" /></figure>



<p class="wp-block-paragraph">Warum kann ein DNS-Server rekursive Aufrufe verweigern?</p>



<ul class="wp-block-list">
<li>Bei diesem Verfahren nimmt der DNS-Server Anfragen entgegen und bearbeitet sie stellvertretend weiter</li>



<li>Angreifer können dies ausnutzen, indem sie eine große Menge an Anfragen an den Server stellen</li>



<li>Dadurch wird der DNS-Dienst legitimen Anfragen gegenüber verweigert</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert DNS?</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="448" height="496" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dnsres.png" alt="" class="wp-image-3463" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dnsres.png 448w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_dnsres-316x350.png 316w" sizes="auto, (max-width: 448px) 100vw, 448px" /></figure>



<p class="wp-block-paragraph">Was ist DNSSEC?</p>



<ul class="wp-block-list">
<li>Namensauflösungen werden durch Signaturen authentifiziert</li>



<li>Dadurch können keine falschen Adressen untergeschoben werden</li>
</ul>



<h4 class="wp-block-heading">Lightweight Directory Access Protocol (LDAP)</h4>



<p class="wp-block-paragraph">Was ist LDAP?</p>



<ul class="wp-block-list">
<li>Verzeichnisdienst für beliebige Daten und Attribute</li>



<li>Speicherung von Username und Passwort</li>



<li>Passwort wird als Hash gespeichert</li>
</ul>



<p class="wp-block-paragraph">Was ist der Directory Information Tree (DIT)?</p>



<ul class="wp-block-list">
<li>Objekte sind eindeutige Knoten durch Relative Distinguished Name (<em>RDN</em>)</li>



<li>Alle RDNs von Objekt bis Wurzel sind der Distinguished Name (<em>DN</em>)</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="292" src="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_ldap.png" alt="" class="wp-image-3464" srcset="https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_ldap.png 800w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_ldap-350x128.png 350w, https://maximiliankrieg.de/wp-content/uploads/2014/07/20140703_vs_ldap-768x280.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Welche Operationen kennt LDAP?</p>



<ul class="wp-block-list">
<li><code>bind</code> &#8211; Authentifizierung</li>



<li><code>unbind</code> &#8211; Beenden einer Sitzung</li>



<li><code>search</code> &#8211; Suche nach Einträgen</li>



<li><code>modify</code> &#8211; Änderung eines bestehende Eintrags</li>



<li><code>add</code> &#8211; Hinzufügen eines Eintrags</li>



<li><code>delete</code> &#8211; Löschung eines Eintrags</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-5/">Verteilte Systeme (Teil 5)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Teil 4)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-4/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-4/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 19:22:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3265</guid>

					<description><![CDATA[<p>Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 4 behandelt die Zeit in verteilten Systemen, Replikation, Konsistenz und Fehlertoleranz. Skript-Anfang VS_1_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70 Algorithmen und Verfahren Ein Algorithmus ist eine [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-4/">Verteilte Systeme (Teil 4)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 4 behandelt die Zeit in verteilten Systemen, Replikation, Konsistenz und Fehlertoleranz.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_1_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Algorithmen und Verfahren</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen. Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. Somit können sie zur Ausführung in einem Computerprogramm implementiert, aber auch in menschlicher Sprache formuliert werden. Bei der Problemlösung wird eine bestimmte Eingabe in eine bestimmte Ausgabe überführt.</p>
</blockquote>



<h4 class="wp-block-heading">Zeit in verteilten Systemen</h4>



<p class="wp-block-paragraph">Welche Motivation steckt dahinter?</p>



<ul class="wp-block-list">
<li>Korrekte Uhrzeit</li>



<li>Korrekte Reihenfolge von Ereignissen</li>



<li>Abhängigkeit von Ereignissen</li>
</ul>



<h4 class="wp-block-heading">Physikalische Zeit</h4>



<p class="wp-block-paragraph">Was ist physikalische Zeit?</p>



<ul class="wp-block-list">
<li>Genutzt zur Synchronisation</li>



<li>Typische Implementierung ist NTP</li>



<li>Genauigkeit abhängig von Netzwerkeigenschaften</li>



<li>Abschätzung der Nachrichtenlaufzeit</li>
</ul>



<p class="wp-block-paragraph">Was ist Universal Time, Coordinated (UTC)?</p>



<ul class="wp-block-list">
<li>Basiert auf internationaler Atomzeit</li>



<li>Physikalische Zeit</li>
</ul>



<p class="wp-block-paragraph">Wie lässt sich die Atomzeit empfangen?</p>



<ul class="wp-block-list">
<li>Jeder Rechner bekommt einen Atomzeitempfänger (<em>einfach, teuer</em>)</li>



<li>Innerhalb einer Gruppe bekommt ein Rechner einen Atomzeitempfänger (<em>komplex, günstig</em>)</li>
</ul>



<p class="wp-block-paragraph">Was macht man, wenn die Systemuhr zu langsam war?</p>



<ul class="wp-block-list">
<li>Uhr vorstellen</li>
</ul>



<p class="wp-block-paragraph">Was macht man, wenn die Systemuhr zu schnell war?</p>



<ul class="wp-block-list">
<li>Uhr verlangsamen</li>
</ul>



<p class="wp-block-paragraph">Was ist Christian&#8217;s Algorithm?</p>



<ul class="wp-block-list">
<li>Ein Rechner mit Atomzeitempfänger synchronisiert eine Gruppe von Rechnern</li>



<li>Alle δ/2ρ Zeiteinheiten wird Nachricht mit C<sub>UHR</sub> an Zeitserver gesendet</li>



<li>C<sub>UHR</sub> > C<sub>UTC</sub> → Client-Uhr wird verlangsamt</li>



<li>C<sub>UHR</sub> &lt; C<sub>UTC</sub> → C<sub>UHR</sub> = C<sub>UTC</sub></li>



<li>Immer C<sub>UHR</sub> = C<sub>UHR</sub> + 1/2 RTT</li>



<li>round-trip time (RTT) = (+ Client-Empfang &#8211; Client-Absenden &#8211; Server-Absenden + Server-Empfang)/2</li>
</ul>



<p class="wp-block-paragraph">Was ist das Network Time Protocol (NTP)?</p>



<ul class="wp-block-list">
<li>Standard zur Synchronisierung von Uhren in Computersysteme</li>



<li>Hierarchisch aufgebautes Netzwerk aus Rechnern</li>



<li>Primärserver synchronisieren sich gegenseitig und mit dem UTC</li>



<li>NTP-Dämon auf jedem System (<em>Wählt beste Quelle aus festem Pool aus</em>)</li>



<li>NTP nutzt also mehrere Server zum Abgleich</li>



<li>Kriterien sind Erreichbarkeit, Antwortzeit und Schwankungsbreite der Antworten</li>



<li>Ebene n (<em>aka Stratum</em>) korrigiert Ebene n+1</li>



<li>Läuft über UDP-Port 123</li>
</ul>



<p class="wp-block-paragraph">Wie korrigiert NTP die Zeit?</p>



<ul class="wp-block-list">
<li>NTP speichert Paare von Offset und RTT</li>



<li>Der Offset mit der kleinsten RTT wird genommen</li>
</ul>



<p class="wp-block-paragraph">Wie berechnet NTP die RTT?</p>



<ul class="wp-block-list">
<li>δ = t<sub>3</sub> &#8211; t<sub>0</sub> &#8211; t<sub>2</sub> + t<sub>1</sub></li>
</ul>



<p class="wp-block-paragraph">Wie berechnet NTP den Offset?</p>



<ul class="wp-block-list">
<li>θ = t<sub>2</sub> +δ/2 &#8211; t<sub>3</sub></li>
</ul>



<p class="wp-block-paragraph">Was ist der Berkeley Algorithmus?</p>



<ul class="wp-block-list">
<li>Verwendet keine Atomzeit</li>



<li>Ein zentraler Zeitserver</li>
</ul>



<p class="wp-block-paragraph">Wie wird die Zeit bei Berkeley synchronisiert?</p>



<ul class="wp-block-list">
<li>Zeitserver übermittelt seine Zeit an die Clients</li>



<li>Clients liefern die Differenz an den Server</li>



<li>Server berechnet den Durchschnittswert</li>



<li>Durchschnittswert wird an die Clients übermittelt</li>



<li>Alle Systeme aktualisieren ihre Zeit (<em>inkl. Server</em>)</li>
</ul>



<p class="wp-block-paragraph">Spielt die Nachrichtenlaufzeit auch bei Berkeley&#8217;s Algorithmus eine Rolle?</p>



<ul class="wp-block-list">
<li>Ja, die Laufzeit zwischen Anfrage und Rückgabe beeinflusst den Durchschnitt</li>
</ul>



<p class="wp-block-paragraph">Welchen weiteren Nachteil hat Berkeley&#8217;s Algorithmus?</p>



<ul class="wp-block-list">
<li>Ohne zentralen Server gibt es keine Synchronisierung</li>



<li>Anderer Rechner muss diese Rolle dann übernehmen</li>
</ul>



<h4 class="wp-block-heading">Logische Zeit</h4>



<p class="wp-block-paragraph">Was ist logische Zeit?</p>



<ul class="wp-block-list">
<li>Definiert eine Reihenfolge von Ereignisse</li>



<li>Genauer Zeitpunkt von Ereignissen ist unwichtig</li>



<li>Wichtiger ist, ob a vor b oder b vor a stattfindet (<em>Welche Kopie ist aktueller?</em>)</li>



<li>Lamport-Zeit (<em>mit globaler Ordnung</em>)</li>



<li>Vektorzeit (<em>Wenn 2 Ereignisse definitiv nacheinander stattfinden</em>)</li>



<li>Synchronisation und Sperre von gemeinsamen Ressourcen</li>
</ul>



<p class="wp-block-paragraph">Wo könnten sich die logischen Uhren in einem verteilten System befinden?</p>



<ul class="wp-block-list">
<li>Unter der Anwendungsschicht und über der Netzwerkschicht</li>



<li>Sie liegen in der Middleware-Schicht</li>



<li>Vor dem Senden werden Nachrichten mit einem Zeitstempel versehen</li>



<li>Nach dem Empfangen von Nachrichten wird die Uhr justiert</li>
</ul>



<p class="wp-block-paragraph">Was ist die Relation &#8222;happened before&#8220;?</p>



<ul class="wp-block-list">
<li>Kausale Ordnung der Ereignisse</li>



<li>a → b (<em>a findet vor b statt</em>)</li>



<li>a → b und b → c = a → c (<em>Transitiv</em>)</li>
</ul>



<p class="wp-block-paragraph">Wann gilt &#8222;happened before&#8220;?</p>



<ul class="wp-block-list">
<li>a und b müssen zum gleichen Prozess gehören</li>



<li>a ist das Sendeereignis und b ist das Empfangsereignis</li>
</ul>



<p class="wp-block-paragraph">Wann gilt &#8222;happened before&#8220; nicht?</p>



<ul class="wp-block-list">
<li>Wenn a und b unabhängig sind</li>



<li>Dies gilt wenn a → b und b → a</li>



<li>Dann sind a || b nebenläufig</li>
</ul>



<p class="wp-block-paragraph">Was ist der Algorithmus von Lamport?</p>



<ul class="wp-block-list">
<li>Jeder Prozess hat eine eigene logische Zeit</li>



<li>Nachrichten werden beim Senden mit einem logischen Zeitstempel versehen</li>



<li>Beim Eintreffen wird die lokale logische Zeit angepasst</li>



<li>Korrekturen werden nur durchgeführt, wenn der neue Wert größer ist</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="335" height="192" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_lamportdefault.png" alt="" class="wp-image-3266" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_lamportdefault.png 335w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_lamportdefault-300x172.png 300w" sizes="auto, (max-width: 335px) 100vw, 335px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="223" height="223" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_lamportcorrect.png" alt="" class="wp-image-3267" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_lamportcorrect.png 223w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_lamportcorrect-150x150.png 150w" sizes="auto, (max-width: 223px) 100vw, 223px" /></figure>



<p class="wp-block-paragraph">Was ist die totale Ordnung von Ereignissen?</p>



<ul class="wp-block-list">
<li>Globale Ordnung aller Nachrichten</li>



<li>Auslieferung von Nachrichten abhängig von globaler Reihenfolge des Eintreffens</li>
</ul>



<p class="wp-block-paragraph">Wie kann man die Lamport-Zeit erweitern, um eine globale Ordnung herzustellen?</p>



<ul class="wp-block-list">
<li>Totalordnung durch Einbeziehung von eindeutigen und total geordneten Knotenkennungen</li>



<li>Jedes Ereignis bekommt zusätzlich eine (<em>Prozessor-</em>)ID als Wert</li>



<li>Wenn L(a)=L(b) dann wird PID<sub>p</sub> und PID<sub>q</sub> verglichen</li>



<li>Vorgetäuschte Ordnung (<em>PID ist zufällig</em>)</li>
</ul>



<p class="wp-block-paragraph">Was ist die Vektorzeit?</p>



<ul class="wp-block-list">
<li>Alle Prozesse beginnen bei 0</li>



<li>Für jeden Prozess gibt es eine Dimension im Vektor</li>



<li>Jedes Ereignis inkrementiert den Vektor um 1</li>



<li>Es wird nur die Dimension des Prozesses erhöht</li>



<li>Benötigt viel Speicher</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="339" height="185" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_vektor.png" alt="" class="wp-image-3268" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_vektor.png 339w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_vektor-300x164.png 300w" sizes="auto, (max-width: 339px) 100vw, 339px" /></figure>



<p class="wp-block-paragraph">Wie sind die Relationen definiert?</p>



<ul class="wp-block-list">
<li>u ≤ v ⇔ u[i] ≤ v[i] für alle i=1,&#8230;,n</li>



<li>u &lt; v ⇔ u[i] ≤ v[i] und u ≠ v</li>



<li>u || v ⇔ ¬(u ≤ v) und ¬(v ≤ u)</li>



<li>e → e&#8216; ⇔ V(e) &lt; V(e&#8216;)</li>



<li>e || e&#8216; ⇔ V(e) || V(e&#8216;)</li>
</ul>



<p class="wp-block-paragraph">Was wird z.B. jeweils über die Reihenfolge von c und g ausgesagt? Was über d und g ?</p>



<ul class="wp-block-list">
<li>L(c) || L(g)</li>



<li>V(c) || V(g)</li>



<li>L(c) &lt; L(d)</li>



<li>V(c) &lt; V(d)</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="423" height="162" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_uebung.png" alt="" class="wp-image-3269" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_uebung.png 423w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_uebung-350x134.png 350w" sizes="auto, (max-width: 423px) 100vw, 423px" /></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Ereignis</th><th>Lamport</th><th>Vektor</th></tr><tr><td>a</td><td>1</td><td>(1,0,0)</td></tr><tr><td>b</td><td>2</td><td>(2,0,0)</td></tr><tr><td>c</td><td>3</td><td>(3,0,0)</td></tr><tr><td>d</td><td>4</td><td>(3,1,0)</td></tr><tr><td>e</td><td>5</td><td>(3,2,0)</td></tr><tr><td>f</td><td>1</td><td>(0,0,1)</td></tr><tr><td>g</td><td>3</td><td>(2,0,2)</td></tr><tr><td>h</td><td>6</td><td>(3,2,3)</td></tr><tr><td>i</td><td>7</td><td>(3,2,4)</td></tr><tr><td>j</td><td>8</td><td>(4,2,4)</td></tr><tr><td>k</td><td>9</td><td>(5,2,4)</td></tr><tr><td>l</td><td>10</td><td>(5,3,4)</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Wechselseitiger Ausschluss</h4>



<p class="wp-block-paragraph">Wie kann man wechselseitigen Ausschluss realisieren?</p>



<ul class="wp-block-list">
<li>Jeder Prozess verwaltet die Warteschlange mit Anfragen</li>



<li>Logische Zeit mit Totalordnung zur Sortierung der Warteschlange</li>



<li>Nachrichten werden verlustfrei und in der richtigen Reihenfolge übertragen (<em>TCP</em>)</li>
</ul>



<p class="wp-block-paragraph">Wie läuft der Ausschluss ab?</p>



<ul class="wp-block-list">
<li>REQUEST mit Zeitstempel an alle anderen via Broadcast</li>



<li>Anfragen werden mittels Totalordnung in Warteschlange eingereiht</li>



<li>Empfangsbestätigung via ACK an den Absender</li>



<li>Wenn man Vorne in der Warteschlange steht → Zugriff</li>



<li>Wenn Zugriff abgeschlossen → RELEASE via Broadcast</li>



<li>Wenn RELEASE empfangen → Eintrag aus der Warteschlange entfernen</li>



<li>Es gibt also 3*(n-1) Nachrichten</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="672" height="244" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_ausschluss.png" alt="" class="wp-image-3270" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_ausschluss.png 672w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_ausschluss-350x127.png 350w" sizes="auto, (max-width: 672px) 100vw, 672px" /></figure>



<p class="wp-block-paragraph">Wie funktioniert der wechselseitige Ausschluss nach Ricart/Agrawala?</p>



<ul class="wp-block-list">
<li>RELEASE und ACK werden durch REPLY ersetzt</li>



<li>Absender greift erst auf Ressource zu, nachdem er alle REPLY erhalten hat</li>



<li>Nach einem REQUEST wird REPLY sofort verschickt, falls kein eigenes Interesse besteht</li>



<li>Nach einem REQUEST wird REPLY sofort verschickt, falls der REQUEST einen älteren Zeitstempel als der eigene hat</li>



<li>Nach einem REQUEST wird REPLY nicht sofort verschickt, wenn der eigene REQUEST einen älteren Zeitstempel hat</li>



<li>Der älteste REQUEST setzt sich immer durch</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="557" height="232" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_ricart.png" alt="" class="wp-image-3271" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_ricart.png 557w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_ricart-350x146.png 350w" sizes="auto, (max-width: 557px) 100vw, 557px" /></figure>



<p class="wp-block-paragraph">Kann es bei Lamport bzw. Ricart/Agrawala zum Deadlock kommen?</p>



<ul class="wp-block-list">
<li>Nein, da alle Prozesse die Warteschlange mit den Anfragen in logischer Reihenfolge kennen</li>
</ul>



<p class="wp-block-paragraph">Wie oft muss beim Algorithmus von Ricart/Agrawala ein Prozess einem anderen maximal &#8222;den Vortritt&#8220; lassen?</p>



<ul class="wp-block-list">
<li>Bei n Prozessen muss maximal n-1 mal der Vortritt gelassen werden</li>
</ul>



<h4 class="wp-block-heading">Replikation</h4>



<p class="wp-block-paragraph">Was ist Replikation?</p>



<ul class="wp-block-list">
<li>Objekt kommt mehr als einmal im verteilten System vor</li>



<li>Ohne Replikation ist Konsistenz einfach</li>



<li>Latenz-Optimierung durch Caching</li>



<li>Lastverteilung durch mehrere Server bzw. Threads</li>



<li>Fehlertoleranz durch mehrere Standorte</li>
</ul>



<p class="wp-block-paragraph">Was ist Caching?</p>



<ul class="wp-block-list">
<li>Server speichert Anfragen und die passenden Antworten</li>



<li>Lokale Kopie auf einem System zwischen Client und Server</li>



<li>Server liefert gespeicherte Antworten auf identische Anfragen</li>
</ul>



<p class="wp-block-paragraph">Wo findet man solche Caches?</p>



<ul class="wp-block-list">
<li>Webcaches (<em>Auf Client, Server, Proxy oder Firewall</em>)</li>



<li>Content Distribution Networks (CDN)</li>



<li>REST ist statuslos und ermöglicht Caching</li>
</ul>



<p class="wp-block-paragraph">Was ist besser, hot oder cold stand-by?</p>



<ul class="wp-block-list">
<li>Es kommt ganz auf den Anwendungszweck an</li>
</ul>



<p class="wp-block-paragraph">Wie funktionieren Cluster für Fehlertoleranz?</p>



<ul class="wp-block-list">
<li>1 Hauptserver und n Replikate</li>



<li>Replikate springen nur bei Ausfall ein</li>



<li>Hot stand-by = Der Replikatserver steht immer bereit</li>



<li>Cold stand-by = Der Replikatserver muss erst bereitgestellt und hochgefahren werden</li>
</ul>



<p class="wp-block-paragraph">Wie funktionieren Cluster zur Lastverteilung?</p>



<ul class="wp-block-list">
<li>Cluster aus replizierten Server bietet Lastverteilung und Fehlertoleranz</li>



<li>Loadbalancer verteilt die Anfragen nach Algorithmus (<em>Round Robin</em>)</li>



<li>Mehrere Loadbalancer sorgen für Ausfallsicherheit</li>
</ul>



<p class="wp-block-paragraph">Wie kann man ein Cluster implementieren?</p>



<ul class="wp-block-list">
<li>n-Tier (<em>Zentrale Datenbank synchronisiert im Hintergrund</em>)</li>



<li>Master-slave (<em>Master schreibt und verteilt die Daten</em>)</li>



<li>Verteilte master-slaves (<em>Jeder Server ist für bestimmte Teile ein Master</em>)</li>
</ul>



<p class="wp-block-paragraph">Wie kann Lastverteilung durch den Client geschehen?</p>



<ul class="wp-block-list">
<li>Client bekommt mehrere Adressen</li>



<li>Client wählt zufällige Adresse aus</li>



<li>Wenn der Zugriff nicht klappt wird ein anderer Server gewählt</li>
</ul>



<p class="wp-block-paragraph">Kann es bei Webservern zu Konsistenzproblemen kommen?</p>



<ul class="wp-block-list">
<li>Reine Lesezugriffe sind kein Problem</li>
</ul>



<p class="wp-block-paragraph">Welches Problem stellt sich bei der Implementierung?</p>



<ul class="wp-block-list">
<li>Alle Server benötigen dieselben Statusinformationen (<em>Login</em>)</li>
</ul>



<p class="wp-block-paragraph">Welchen Einfluss hat das Transportprotokoll in einer solchen Architektur?</p>



<ul class="wp-block-list">
<li>TCP ist nicht statuslos (<em>keine Migrationstransparenz</em>)</li>
</ul>



<p class="wp-block-paragraph">Warum könnte man eine Migration einer TCP Verbindung wollen?</p>



<ul class="wp-block-list">
<li>Reparieren einer TCP-Verbindung nach IP-Adresswechsel bzw. Serverausfall</li>
</ul>



<p class="wp-block-paragraph">Wie werden temporäre Daten gespeichert?</p>



<ul class="wp-block-list">
<li>Datenbanken sind zu langsam</li>



<li>Cache im Hauptspeicher des Webservers</li>



<li>Cache auf separaten Rechnern</li>



<li>Zuordnung mittels Hash-Funktion</li>
</ul>



<p class="wp-block-paragraph">Was sind Pipelines?</p>



<ul class="wp-block-list">
<li>Client schickt mehrere Anfragen in einer Nachricht</li>



<li>Anfragen werden sequentiell beantwortet</li>



<li>Werden in HTTP, FTP und TCP realisiert</li>
</ul>



<p class="wp-block-paragraph">Ist Pipelining auch als Verfahren innerhalb eines Servers mit Threads sinnvoll?</p>



<ul class="wp-block-list">
<li>Die Implementierung von Pipelining ist nicht sinnvoll in diesem Zusammenhang</li>
</ul>



<p class="wp-block-paragraph">Was ist Map-Reduce?</p>



<ul class="wp-block-list">
<li>Lastverteilung durch Parallelverarbeitung</li>



<li>Funktioniert nur bei trivialen Partitionierungen</li>



<li>Geschwindigkeitssteigerung</li>



<li>Fehlertoleranz (<em>Bei timeout wird Job dem nächsten Worker gegeben</em>)</li>



<li>Skalierbarkeit (<em>beliebige Menge an Workern</em>)</li>



<li>Häufigkeit von Links in Webseiten</li>



<li>Zuordnung von Links zu Webseiten</li>
</ul>



<p class="wp-block-paragraph">Wie läuft Map-Reduce ab?</p>



<ol class="wp-block-list">
<li>Partitionieren der Eingabe</li>



<li>map = Ein Worker erstellt eine map mit Key und Value-Paaren</li>



<li>Combine im gleichen Worker</li>



<li>Ausgabe der reduzierten maps in einer Datei</li>



<li>reduce = Ein Worker bearbeitet einen Key und fasst zusammen</li>
</ol>



<h4 class="wp-block-heading">Konsistenz</h4>



<p class="wp-block-paragraph">Was ist Konsistenz?</p>



<ul class="wp-block-list">
<li>Alle Kopien eines Objektes sind identisch</li>



<li>Ohne Replikation ist Konsistenz einfach</li>



<li>Lesender Prozess soll aktuellsten Wert bekommen (<em>Was ist der aktuellste?</em>)</li>



<li>Konsistenzanforderungen für jeden Dienst unterschiedlich</li>



<li>Ein Konsistenzmodell beschreibt, wie Konsistenz von Daten aussehen kann</li>



<li>Konsistenzprotokoll ist die Implementierung eines Konsistenzmodells</li>
</ul>



<p class="wp-block-paragraph">Wie sieht die Notation aus?</p>



<ul class="wp-block-list">
<li><code>R(x)a</code> &#8211; Ein Prozess liest aus einer Variablen x den Wert a</li>



<li><code>W(x)a</code> &#8211; Ein Prozess schreibt in eine Variable x den Wert a</li>
</ul>



<p class="wp-block-paragraph">Was ist strikte Konsistenz?</p>



<ul class="wp-block-list">
<li>Jedes Read liefert den letzten Writes</li>



<li>Nicht implementierbar (<em>Wegen der Zeit</em>)</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="600" height="209" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_strikt.png" alt="" class="wp-image-3272" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_strikt.png 600w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_strikt-350x122.png 350w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<p class="wp-block-paragraph">Was ist sequentielle Konsistenz?</p>



<ul class="wp-block-list">
<li>Schwächere Bedingungen</li>



<li>Jede Kombination bzw. Vermischung von Read und Write ist akzeptabel</li>



<li>Alle Prozesse müssen die gleiche Reihenfolge sehen</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="600" height="194" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_sequentiell.png" alt="" class="wp-image-3273" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_sequentiell.png 600w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_sequentiell-350x113.png 350w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<p class="wp-block-paragraph">Was sind urbildbasierte Protokolle?</p>



<ul class="wp-block-list">
<li>Implementieren sequentielle Konsistenz</li>



<li>Eine Replik gilt als Urbild bzw. primary master</li>
</ul>



<p class="wp-block-paragraph">Was ist entferntes Schreiben?</p>



<ul class="wp-block-list">
<li>Urbilder bleiben immer am selben Ort</li>



<li>Master verteilt Updates nach jedem Schreiben</li>



<li>Alle Schreibvorgänge auf demselben Urbild werden serialisiert</li>
</ul>



<p class="wp-block-paragraph">Was ist lokales Schreiben?</p>



<ul class="wp-block-list">
<li>Urbilder wandert zum Ort mit den meisten Schreibzugriffen</li>



<li>Dies beschleunigt die Zugriffe</li>
</ul>



<p class="wp-block-paragraph">Was ist ACID?</p>



<ul class="wp-block-list">
<li>Atomarität &#8211; Nur ganze Operationen</li>



<li>Konsistenz &#8211; Wechsel nur zwischen konsistenten Zuständen</li>



<li>Isolation &#8211; Transaktionen beeinflussen sich nicht</li>



<li>Dauerhaftigkeit &#8211; Nach einer Transaktion ist alles gespeichert</li>
</ul>



<p class="wp-block-paragraph">Was ist der 2 Phasen Commit (2PC)?</p>



<ul class="wp-block-list">
<li>Besteht aus 1 Transaktionsverwalter und n Ressourcenverwaltern</li>



<li>Transaktionsmechanismus, um verteilte Kopien von Daten zu aktualisieren</li>



<li>Fehlertoleranz (<em>toleriert Ausfälle durch timeout</em>)</li>



<li>Blockiert, wenn nach timeout alle anderen Teilnehmer in Ungewissheit sind</li>



<li>Teilnehmer blockieren in der Periode in der Ungewissheit</li>



<li>Benötigt mindestens 3 (<em>+1xACK</em>) und maximal 5 Runden (<em>Terminierung</em>)</li>



<li>Teilnehmer verwalten ein eigenes Log mit Ereignissen</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="781" height="463" src="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_2pc.png" alt="" class="wp-image-3274" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_2pc.png 781w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_2pc-350x207.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/08/20140703_vs_2pc-768x455.png 768w" sizes="auto, (max-width: 781px) 100vw, 781px" /></figure>



<p class="wp-block-paragraph">Was ist der 3PC?</p>



<ul class="wp-block-list">
<li>Einführung einer zusätzlichen Phase</li>



<li>COMMIT wird erst gesendet, wenn alle Teilnehmer Bereitschaft signalisieren</li>



<li>Verhindert, dass ein Teilnehmer den COMMIT durchführt, bevor andere diesen empfangen haben</li>
</ul>



<p class="wp-block-paragraph">Was ist der Quorum Algorithmus?</p>



<ul class="wp-block-list">
<li>Nur auf einer Auswahl von Repliken wird gelesen und geschrieben</li>



<li>QW = Schreiben</li>



<li>QR = Lesen</li>



<li>Verteilung erfolgt später im Hintergrund</li>



<li>Quorum anfordern, aktualisieren und mittels 2PC freigeben</li>
</ul>



<p class="wp-block-paragraph">RPCs, RMI, CORBA arbeiten mit request/reply. Wie kann man in dieser Umgebung Fehler behandeln?</p>



<ul class="wp-block-list">
<li>Client-Auftrag ging verloren &#8211; Wiederholung des Auftrags</li>



<li>Server-Antwort ging verloren &#8211; Zwischenspeicherung der Ergebnisse beim Server, Bereitstellung bei Anfrage</li>



<li>Serverabsturz &#8211; Neustart des Servers und exponential backoff beim Client</li>



<li>Langsamer Server &#8211; Regelmäßige Statusnachrichten vom Server</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-4/">Verteilte Systeme (Teil 4)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Teil 3)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-3/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-3/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 09:27:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3183</guid>

					<description><![CDATA[<p>Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 3 behandelt das Thema Middleware. Skript-Anfang VS_1_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70 Middleware Middleware bezeichnet in der Informatik anwendungsneutrale Programme, die so zwischen Anwendungen vermitteln, [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-3/">Verteilte Systeme (Teil 3)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 3 behandelt das Thema Middleware.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_1_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Middleware</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Middleware bezeichnet in der Informatik anwendungsneutrale Programme, die so zwischen Anwendungen vermitteln, dass die Komplexität dieser Applikationen und ihre Infrastruktur verborgen werden</p>
</blockquote>



<h4 class="wp-block-heading">Allgemeines</h4>



<p class="wp-block-paragraph">Was ist Middleware?</p>



<ul class="wp-block-list">
<li>Eine Infrastruktur mit Standard-Lösungen für Standardaufgaben</li>



<li>Liegt in einer Schicht über dem Betriebssystem und unter den Anwendungen</li>



<li>Vermittelt zwischen Anwendungen, dass die Komplexität dieser Applikationen und ihre Infrastruktur verborgen werden</li>
</ul>



<p class="wp-block-paragraph">Welche Arten von Middleware gibt es?</p>



<ul class="wp-block-list">
<li>Web Services (<em>SOAP/WSDL, REST</em>)</li>



<li>Message-oriented Middleware (<em>MPI/PVM</em>)</li>



<li>Object-oriented Middleware (<em>Java RMI, CORBA</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Transparenzeigenschaften erfüllen sie?</p>



<ul class="wp-block-list">
<li>Verteilungstransparenz</li>



<li>Ortstransparenz</li>
</ul>



<p class="wp-block-paragraph">Was unterscheidet Middleware von den bisher betrachteten Netzwerkdiensten (<em>Sockets und RPCs</em>)?</p>



<ul class="wp-block-list">
<li>Nichts</li>
</ul>



<h4 class="wp-block-heading">Web Services</h4>



<p class="wp-block-paragraph">Welche Vorteile bieten Web Services im Vergleich zu XML-RPC?</p>



<ul class="wp-block-list">
<li>Größere Freiheit bei Definition von Datenstrukturen und Austausch</li>



<li>Unterstützung bei der Codeerzeugung</li>



<li>Veröffentlichung der Definitionen</li>



<li>Web (mit HTTP als Protokoll) als erprobte, standardisierte Basis</li>



<li>Dienste können über ein Verzeichnis automatisiert lokalisiert werden</li>
</ul>



<p class="wp-block-paragraph">Kann man damit Server-Server Kommunikation realisieren?</p>



<ul class="wp-block-list">
<li>Ja</li>
</ul>



<p class="wp-block-paragraph">Aus welchen Komponenten bestehen Web Services?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Komponente</th><th>Beschreibung</th></tr><tr><td>XML (eXtended Markup Language)</td><td>Textformat für den Austausch strukturierter Daten</td></tr><tr><td>XML Schema</td><td>Beschreibung von XML Strukturen</td></tr><tr><td>SOAP (Simple Object Access Protocol)</td><td>Zuständig für Austausch von XML Nachrichten, meist über HTTP</td></tr><tr><td>WSDL (Web Service Description Language)</td><td>XML Beschreibung der Funktionen von Web Services</td></tr><tr><td>UDDI (Universal Description, Discovery and Integration)</td><td>Verzeichnisdienst (ähnlich RMI Registry)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Wie werden Informationen mit XML ausgetauscht?</p>



<ul class="wp-block-list">
<li>XML Header mit Version und Encoding</li>



<li>XML Tags für Objekte und Attribute (<em>Schachtelung</em>)</li>



<li>Tags mit IDs für Objekte zur Identifikation</li>
</ul>



<p class="wp-block-paragraph">Wo ist die Definition der Tags?</p>



<ul class="wp-block-list">
<li>In der Schema-Datei</li>
</ul>



<p class="wp-block-paragraph">Was ist das XML-Schema?</p>



<ul class="wp-block-list">
<li>Bietet vordefinierte Datentypen und Möglichkeiten zur Definition komplexer Datentypen</li>



<li>Dateiendung .xsd</li>



<li>.xml Dateien enthalten Link auf ein (<em>oder mehrere</em>) Schema</li>



<li>.xml Dateien können dann gemäß des Schemas interpretiert werden</li>
</ul>



<p class="wp-block-paragraph">Was ist Simple Object Access Protocol (SOAP)?</p>



<ul class="wp-block-list">
<li>Transportprotokoll für Client-Server-Anwendungen</li>



<li>Zustandslos (<em>wie HTTP</em>)</li>



<li>Besteht aus Envelope, Header und Body</li>



<li>Im Header können Zusatzinformationen definiert werden (<em>Alarm mit Priorität und Ablaufdatum</em>)</li>



<li>Im Body wird die Spezifikation des Headers aufgegriffen (<em>Nachricht des Alarms</em>)</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="193" height="266" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_soap.png" alt="" class="wp-image-3184"/></figure>



<p class="wp-block-paragraph">Was ist die Web Services Description Language (WSDL)?</p>



<ul class="wp-block-list">
<li>Sprache zur Beschreibung von Schnittstellen</li>



<li>Verwendet zur Veröffentlichung von Web Services</li>



<li>Vollständig in XML formuliert, eigenes Schema</li>



<li>Benutzt SOAP für den Nachrichtenaustausch</li>
</ul>



<p class="wp-block-paragraph">Welche Ziele verfolgt die WSDL?</p>



<ul class="wp-block-list">
<li>Maschinenlesbarer Zugang zu Diensten</li>



<li>Weitgehend automatisierte Integration von Diensten in neue Anwendungen</li>



<li>Integration zur Laufzeit</li>



<li>Automatische Erstellung von Beschreibungen und Client/Server Software durch Werkzeuge</li>
</ul>



<p class="wp-block-paragraph">Wie ist die WSDL aufgebaut?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Komponente</th><th>Beschreibung</th></tr><tr><td>description</td><td>Definiert den Namensraum für alle darunterliegenden Teile</td></tr><tr><td>types</td><td>Definiert Datentypen für den Nachrichtenaustausch (<em>element oder complexType</em>)</td></tr><tr><td>interface</td><td><code>operation</code>&nbsp;sind die zur Verfügung gestellten Funktionen</td></tr><tr><td>binding</td><td>Definiert wie Funktionsaufruf und Antwort transportiert werden (<em>SOAP mit HTTP GET</em>)</td></tr><tr><td>service</td><td>Bindet den Dienst aus binding an eine IP-Adresse und legt einen Namen fest</td></tr><tr><td>documentation</td><td>Hier steht die Dokumentation</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Was ist Universal Description, Discovery and Integration (UDDI)?</p>



<ul class="wp-block-list">
<li>Verzeichnisdienst für Web Services</li>



<li>Veröffentlicht WSDL Definitionen von Web Services</li>



<li>Veröffentlicht Zusatzinformationen zu Inhalten und verantwortliche Organisation</li>



<li>Publishing API = Veröffentlichen von Web Services</li>



<li>Inquiry API = Suchen nach Web Services</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-3/">Verteilte Systeme (Teil 3)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Teil 2)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-2/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-2/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 09:24:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3175</guid>

					<description><![CDATA[<p>Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 2 beschreibt die Kommunikation über das Netzwerk mittels TCP, UDP und Sockets. Im Anschluss folgt die Verwendung von Remote Procedure Calls. Skript-Annfang VS_1_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-2/">Verteilte Systeme (Teil 2)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 2 beschreibt die Kommunikation über das Netzwerk mittels TCP, UDP und Sockets. Im Anschluss folgt die Verwendung von Remote Procedure Calls.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Annfang</th><td>VS_1_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Netzwerkkommunikation</h3>



<h4 class="wp-block-heading">Kommunikationsformen</h4>



<p class="wp-block-paragraph">Welche Kommunikationsformen gibt es?</p>



<ul class="wp-block-list">
<li>Verbindungslos (<em>UDP</em>)</li>



<li>Verbindungsorientiert (<em>TCP</em>)</li>



<li>Synchron (<em>Blockiert und wartet auf Antwort</em>)</li>



<li>Asynchron (<em>Kein Blockieren</em>)</li>
</ul>



<p class="wp-block-paragraph">Wo sind die Unterschiede zwischen verbindungsloser und verbindungsorientierter Kommunikation?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>&nbsp;</td><td>Verbindungslos</td><td>Verbindungsorientiert</td></tr><tr><td>Protokoll</td><td>UDP</td><td>TCP</td></tr><tr><td>Reales Beispiel</td><td>Brief</td><td>Telefongespräch</td></tr><tr><td>Verbindung</td><td>Wird nicht ausgehandelt</td><td>Wird ausgehandelt mittels Handshake (<em>Auf- und Abbau</em>)</td></tr><tr><td>Paketverlust</td><td>Kann passieren</td><td>Zustellung wird garantiert</td></tr><tr><td>Reihenfolge</td><td>Nicht gewährleistet und muss von Anwendung geprüft werden</td><td>Reihenfolge wird garantiert</td></tr><tr><td>Broadcast/Multicast</td><td>Ja</td><td>Nein</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Was ist die synchrone Kommunikation?</p>



<ul class="wp-block-list">
<li>Sender wird blockiert bis Antwort eintrifft</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="253" height="286" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_synchron.png" alt="" class="wp-image-3176"/></figure>



<p class="wp-block-paragraph">Was ist die asynchrone Kommunikation?</p>



<ul class="wp-block-list">
<li>Sender wird nicht blockiert</li>



<li>Ergebnis muss explizit gesendet werden</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="253" height="332" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_asynchron.png" alt="" class="wp-image-3177" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_asynchron.png 253w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_asynchron-229x300.png 229w" sizes="auto, (max-width: 253px) 100vw, 253px" /></figure>



<p class="wp-block-paragraph">Welche Kommunikationsform ist am besten geeignet in einem verteilten System?</p>



<ul class="wp-block-list">
<li>Das kommt auf die Art des verteilten Systems an</li>
</ul>



<p class="wp-block-paragraph">Was kann bei synchroner Kommunikation passieren?</p>



<ul class="wp-block-list">
<li>Wenn eine Nachricht verloren geht, wird der Absender blockiert</li>



<li>Wenn der Empfänger ausfällt, wird der Absender blockiert</li>
</ul>



<h4 class="wp-block-heading">Qualitätsparameter</h4>



<p class="wp-block-paragraph">Welche Qualitätsparameter gibt es?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Merkmal</td><td>Beschreibung</td></tr><tr><td>Latenz</td><td>Dauer des Transfers einer leeren Nachricht zwischen Sender und Empfänger</td></tr><tr><td>Datentransferrate</td><td>Datenmenge, die innerhalb einer Zeiteinheit über einen Übertragungskanal übertragen wird</td></tr><tr><td>Nachrichtentransferzeit</td><td>Dauer des Transfers einer Nachricht (<em>Latenz + Datenmenge / Datentransferrate</em>)</td></tr><tr><td>Durchsatz</td><td>Datenmenge pro Zeiteinheit</td></tr><tr><td>Bandbreite</td><td>Maximale Übertragungsrate</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Warum ist Latenz nicht gleich Nachrichtentransferzeit?</p>



<ul class="wp-block-list">
<li>Die Latenzzeit ist die Zeit, die eine Nachricht ohne Nutzdaten durch die Kommunikationsschichten und das Netzwerk braucht</li>



<li>Die Nachrichtentransferzeit errechnet sich aus Latenz + Datenmenge / Datentransferrate</li>
</ul>



<p class="wp-block-paragraph">Bei welchen Anwendungen ist Latenz, wo ist Bandbreite wichtiger?</p>



<ul class="wp-block-list">
<li>Latenz wird benötigt, wenn Informationen schnell von System A zu System B transportieren müssen</li>



<li>Bandbreite wird benötigt, wenn große Datenmengen von System A zu System B transportieren müssen</li>
</ul>



<p class="wp-block-paragraph">Warum kann die Bandbreite i.d.R. von einer Anwendung nicht voll ausgeschöpft werden?</p>



<ul class="wp-block-list">
<li>Pakete werden immer mit einem Header versehen, der selbst einen Teil der Bandbreite beansprucht</li>



<li>Die Bandbreite wird in der Regel von mehreren Anwendungen gleichzeitig beansprucht</li>
</ul>



<p class="wp-block-paragraph">Warum ist das wichtig für verteilte Systeme?</p>



<ul class="wp-block-list">
<li>Der Durchsatz von Daten im Netz ist limitiert</li>



<li>Daten müssen bei Synchronisation schnell übertragen werden</li>
</ul>



<h4 class="wp-block-heading">Netzwerkgrundlagen</h4>



<p class="wp-block-paragraph">Wie ist ein Paket aufgebaut?</p>



<ul class="wp-block-list">
<li>Protokolldaten (<em>Header</em>) besteht aus Adressen, Ports und TTL</li>



<li>Nutzdaten</li>
</ul>



<p class="wp-block-paragraph">Was ist das OSI-Schichtenmodell?</p>



<ul class="wp-block-list">
<li>7 Schichten mit funktionalen Teilaufgaben</li>



<li>Jede Schicht hat eigene Protokolle</li>



<li>Jedes Protokoll fügt seinen eigenen Header an die Pakete an</li>



<li>Nachrichten durchlaufen diese 7 Schichten</li>



<li>Verteilte Systeme arbeiten auf Schicht 4 bis 7</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert das Internet?</p>



<ul class="wp-block-list">
<li>Es besteht aus vielen heterogenen unabhängigen Netzwerken</li>



<li>Diese Netzwerke werden mit Routern verbunden</li>



<li>Die Router stehen miteinander in Verbindung</li>



<li>Pakete werden aus dem Netzwerk an den Router geleitet</li>



<li>Beim Ziel leitet ein Router die Pakete wieder in ein Netzwerk</li>
</ul>



<p class="wp-block-paragraph">Was ist Routing?</p>



<ul class="wp-block-list">
<li>Mehrere mögliche Wege zwischen Sender und Empfänger</li>



<li>Routing wählt anhand einer Metrik den besten Weg</li>



<li>Beeinflusst dadurch die Übertragungsdauer von Nachrichten</li>
</ul>



<h4 class="wp-block-heading">Protokolle</h4>



<p class="wp-block-paragraph">Was ist das IP-Protokoll?</p>



<ul class="wp-block-list">
<li>Logische IP-Adressierung</li>



<li>Arbeitet auf Layer 3</li>



<li>Verbindungslos (<em>Paketverluste möglich</em>)</li>



<li>Duplikate möglich</li>



<li>Keine Reihenfolge</li>
</ul>



<p class="wp-block-paragraph">Was ist das UDP-Protokoll?</p>



<ul class="wp-block-list">
<li>Zusätzliches Attribut &#8222;Port&#8220; für Adressierung von Diensten</li>



<li>Verbindungslos (<em>Paketverluste möglich</em>)</li>



<li>Duplikate möglich</li>



<li>Keine Reihenfolge</li>



<li>Arbeitet auf Layer 4</li>



<li>Multicast-fähig</li>



<li>Kleinerer Header (<em>schneller</em>)</li>



<li>Maximal 64 KB große Pakete</li>
</ul>



<p class="wp-block-paragraph">Was ist das TCP-Protokoll?</p>



<ul class="wp-block-list">
<li>Zusätzliches Attribut &#8222;Port&#8220; für Adressierung von Diensten</li>



<li>Verbindungsorientiert (<em>Keine Paketverluste</em>)</li>



<li>Keine Duplikate (<em>Verwerfen</em>)</li>



<li>Reihenfolge wird eingehalten</li>



<li>Arbeitet auf Layer 4</li>



<li>Kein Multicast</li>



<li>Größerer Header (<em>langsamer</em>)</li>
</ul>



<p class="wp-block-paragraph">Welches Protokoll ist für welche verteilte Anwendung am besten geeignet?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Anwendung</th><th>Protokoll</th></tr><tr><td>Videokonferenz</td><td>UDP</td></tr><tr><td>DNS</td><td>UDP/TCP</td></tr><tr><td>Bank-Transaktionen</td><td>TCP</td></tr><tr><td>Webserver</td><td>TCP</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Für welche Qualitätsparameter ist der Paketaufbau wichtig?</p>



<ul class="wp-block-list">
<li>Für alle Parameter, die von der Datenmenge abhängen wie die Nachrichtentransferzeit</li>
</ul>



<p class="wp-block-paragraph">Welche Probleme kann es dennoch geben?</p>



<ul class="wp-block-list">
<li>Pakete können trotz aller Maßnahmen verloren gehen</li>



<li>Pufferüberlauf oder Nichtabholen von UDP-Paketen</li>



<li>Deadlocks</li>
</ul>



<p class="wp-block-paragraph">Was macht man im Fehlerfall?</p>



<ul class="wp-block-list">
<li>Nicht blockieren</li>



<li>Timeouts</li>



<li><code>setsockopt</code> oder <code>select</code></li>
</ul>



<h4 class="wp-block-heading">Sockets</h4>



<p class="wp-block-paragraph">Was sind Sockets?</p>



<ul class="wp-block-list">
<li>Bi-direktionaler Kommunikationsendpunkt</li>



<li>Wird von UDP und TCP genutzt</li>



<li>Wird als Objekt im Speicher dargestellt</li>



<li>Besteht aus IP-Adresse und Port</li>



<li>Ports von Client und Server können unterschiedlich sein</li>
</ul>



<p class="wp-block-paragraph">Was braucht man zum Datenaustausch, um ein funktionierendes verteiltes System aufzubauen?</p>



<ul class="wp-block-list">
<li>Gemeinsames Datenformat</li>
</ul>



<p class="wp-block-paragraph">Sockets mit UDP</p>



<ul class="wp-block-list">
<li>Entwickler müssen sich selbst um Reihenfolge, Segmentierung und Fehlerkorrektur kümmern</li>



<li><code>send</code>(<em>2x 5 Byte</em>) werden als <code>recv</code>(<em>2x 5 Byte</em>) empfangen</li>



<li>Verlorene Datenpakete müssen beachtet werden</li>



<li>Ein Socket kann an viele Adressen Pakete schicken</li>
</ul>



<p class="wp-block-paragraph">Wie läuft die Kommunikation mit UDP-Sockets ab?</p>



<ul class="wp-block-list">
<li>Nachricht kleiner als 64 KB wird versendet mittels <code>sendto()</code></li>



<li>Socket empfängt mittels <code>recvfrom()</code> &#8211; alles (<em>ok</em>), nichts (<em>Verlust</em>) oder nur einen Teil (<em>Puffer zu klein</em>)</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="542" height="673" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_udp.png" alt="" class="wp-image-3178" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_udp.png 542w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_udp-282x350.png 282w" sizes="auto, (max-width: 542px) 100vw, 542px" /></figure>



<p class="wp-block-paragraph">Was passiert, wenn man den Server an keine Adresse bindet?</p>



<ul class="wp-block-list">
<li>Server bzw. Dienste werden auf festen Adressen angesprochen</li>



<li>Clients wissen sonst nicht, wohin sie sich verbinden sollen</li>



<li>Das System weist dann seinem Dienst selbst einen Port zu</li>



<li>Bei Clients ist das egal, der Server antwortet bei Anfragen auf den Quellport des Clients</li>
</ul>



<p class="wp-block-paragraph">Woher weiß das UDP-Socket wie groß die Nachricht ist?</p>



<ul class="wp-block-list">
<li>Zeichen für Anfang und Ende</li>



<li>Protokoll mit Header-Informationen</li>
</ul>



<p class="wp-block-paragraph">Wie verschickt man Nachrichten größer als 64 KB?</p>



<ul class="wp-block-list">
<li>Aufteilen der Nachricht in kleinere Blöcke</li>



<li>While-Schleife mit <code>recvfrom()</code> bis alle Daten empfangen sind</li>
</ul>



<p class="wp-block-paragraph">Sockets mit TCP</p>



<ul class="wp-block-list">
<li>Verbindung muss im Programm aufgebaut werden</li>



<li>Pakete werden als Datenstrom versendet (<em>Automatische Segmentierung</em>)</li>



<li><code>send</code>(<em>2x 5 Byte</em>) werden als <code>recv</code>(<em>1x 10 Byte</em>) empfangen</li>
</ul>



<p class="wp-block-paragraph">Was passiert wenn der Server eine Anfrage akzeptiert?</p>



<ul class="wp-block-list">
<li>Erzeugt einen neuen Socket über den nun kommuniziert wird</li>



<li>Der eigentliche Socket wartet weiter auf neue Anfragen</li>
</ul>



<p class="wp-block-paragraph">Wie läuft die Kommunikation mit TCP-Sockets ab?</p>



<ul class="wp-block-list">
<li>Nachricht wird definiert und versendet mittels <code>send()</code></li>



<li>Socket auf Empfängerseite empfängt mittels <code>recv()</code> &#8211; alles (<em>ok</em>), nichts (<em>Verlust</em>) oder beliebig viele Teilnachrichten</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="534" height="673" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_tcp.png" alt="" class="wp-image-3179" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_tcp.png 534w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_tcp-278x350.png 278w" sizes="auto, (max-width: 534px) 100vw, 534px" /></figure>



<p class="wp-block-paragraph">Was passiert in der Anwendung wenn Pakete verloren gehen oder vertauscht werden?</p>



<ul class="wp-block-list">
<li>Datenstrom verzögert oder angehalten</li>



<li>Verbindung bricht ab (<em>recv = -1</em>)</li>
</ul>



<p class="wp-block-paragraph">Woher weiß das TCP-Socket wie lang die Nachricht ist?</p>



<ul class="wp-block-list">
<li>Wenn <code>recv()</code> 0 zurück liefert, ist die TCP-Verbindung erfolgreich abgebaut und alle Pakete empfangen</li>



<li>Wenn <code>recv()</code> X > 0 zurück liefert, wurden X Byte empfangen</li>
</ul>



<p class="wp-block-paragraph">Sind Sockets synchron?</p>



<ul class="wp-block-list">
<li>Standardmäßig sind alle Aufrufe synchron bzw. blockierend</li>
</ul>



<p class="wp-block-paragraph">Wie kann man asynchrones Verhalten erreichen?</p>



<ul class="wp-block-list">
<li>Threads mit eigenen Sockets</li>



<li>Socket nicht-blockierend schalten mittels setsockopt und regelmäßig Daten pollen</li>



<li>Select-Funktion überwacht die Sockets</li>
</ul>



<p class="wp-block-paragraph">Warum ist der Einsatz von select asynchron?</p>



<ul class="wp-block-list">
<li>Es wird nur ein Thread blockiert und nicht viele Threads</li>
</ul>



<p class="wp-block-paragraph">Was bringen Sockets im Hinblick auf die Transparenzeigenschaften?</p>



<ul class="wp-block-list">
<li>Nichts</li>
</ul>



<p class="wp-block-paragraph">was bringen Sockets im Hinblick auf die anderen Ziele eines verteilten Systems?</p>



<ul class="wp-block-list">
<li>Offenheit</li>
</ul>



<h4 class="wp-block-heading">Datenformate</h4>



<p class="wp-block-paragraph">Was passiert, wenn man einen Integer über ein Socket zu einem anderen Rechner schickt und dort ausgibt?</p>



<ul class="wp-block-list">
<li>Die Bitfolge der Zahl ist invertiert</li>



<li>Die Zahl befindet sich in network byte order (<em>big endian</em>)</li>



<li>Sie muss über einen Befehl korrigiert werden</li>
</ul>



<p class="wp-block-paragraph">Welche Zahlenumwandlungen gibt es?</p>



<ul class="wp-block-list">
<li><code>ntohs</code> &#8211; network-to-host short</li>



<li><code>ntohl</code> &#8211; network-to-host long</li>



<li><code>htons</code> &#8211; host-to-network short</li>



<li><code>htonl</code> &#8211; host-to-network long</li>
</ul>



<h4 class="wp-block-heading">Remote Procedure Calls (RPC)</h4>



<p class="wp-block-paragraph">Was sind RPCs?</p>



<ul class="wp-block-list">
<li>Technik zur Realisierung von Interprozesskommunikation</li>



<li>1 Funktionsaufruf statt vieler Socketfunktionen</li>



<li>Schnittstellen verbergen Komplexität</li>



<li>Lokaler Funktionsaufruf zu einem Stub für Parameter und Rückgabewert</li>
</ul>



<p class="wp-block-paragraph">Welche Ziele guter verteilter Systeme werden erfüllt?</p>



<ul class="wp-block-list">
<li>Verteilungstransparenz</li>



<li>Einfacher Zugriff auf Ressourcen</li>
</ul>



<p class="wp-block-paragraph">Wie funktioniert ein Stub?</p>



<ol class="wp-block-list">
<li>Client ruft Funktion auf, die auf einen Stub zugreift</li>



<li>Client-Stubs erstellen aus den Parametern Nachrichten (<em>Serialisierung/marshalling</em>)</li>



<li>Stubs transportieren diese Nachrichten mittels Transportprotokoll über das Netzwerk (<em>send/recv</em>)</li>



<li>Server-Stubs werden entpackt (<em>Deserialisierung/demarshalling</em>)</li>



<li>Parameter werden rekonstruiert und die Server-Funktion aufgerufen</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="426" height="557" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_stub.png" alt="" class="wp-image-3180" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_stub.png 426w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_stub-268x350.png 268w" sizes="auto, (max-width: 426px) 100vw, 426px" /></figure>



<p class="wp-block-paragraph">Müssen wie bei Sockets die Zahlen konvertiert werden?</p>



<ul class="wp-block-list">
<li>Nein, das passiert innerhalb der Stubs</li>



<li>RPCs liefern dafür eigene Datentypen mit</li>
</ul>



<p class="wp-block-paragraph">Was sind die Vorteile von RPCs?</p>



<ul class="wp-block-list">
<li>Bequemere, einfachere Beschreibung der Datenübertragung</li>



<li>Synchrone und asynchrone Aufrufe</li>



<li>Transportprotokolle können frei ausgewählt werden</li>
</ul>



<p class="wp-block-paragraph">Was sind die Nachteile von RPCs?</p>



<ul class="wp-block-list">
<li>Kein gemeinsamer Adressraum (<em>keine Pointer oder Referenzen</em>)</li>



<li>RPCs sind standardmäßig unverschlüsselt</li>



<li>RPCs sind weniger performant</li>



<li>Keine Fehlerbehandlung</li>



<li>Sockets sind flexibler (<em>Keine Einschränkungen</em>)</li>



<li>Viele Dinge müssen immer noch selbst erledigt werden (<em>IDL compilieren, Daemons starten und Adressierungen</em>)</li>
</ul>



<p class="wp-block-paragraph">Was ist eine Interface Definition Language (IDL)?</p>



<ul class="wp-block-list">
<li>Jede RPC-Technik hat eine eigene Beschreibungssprache (<em>Interface Definition Language</em>)</li>



<li>Definiert die unterstützen Datentypen</li>



<li>Beschreibt die RPC Funktionen (<em>nur Signatur, keine Implementierung</em>)</li>



<li>Compiler erzeugt Stubs bzw. Quellcode für Client und Server</li>



<li>Der Vorlagen-Code muss dann ergänzt werden</li>
</ul>



<p class="wp-block-paragraph">Woher kommen die Stubs?</p>



<ul class="wp-block-list">
<li>Compiler erzeugt die Stubs aus der IDL</li>
</ul>



<p class="wp-block-paragraph">Wie implementiert man Aufruf und Funktion?</p>



<ul class="wp-block-list">
<li>Werden selbst implementiert</li>
</ul>



<p class="wp-block-paragraph">Welche Programmiersprachen werden unterstützt?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Framework</th><th>Sprachen</th></tr><tr><td>Apache Thrift</td><td>C, C++, Java u.v.m.</td></tr><tr><td>Sun ONC-RPC</td><td>C</td></tr><tr><td>XML-RPC</td><td>RPC Aufrufe als XML codiert</td></tr><tr><td>JSON-RPC</td><td>Wie XML-RPC, nur mit JSON</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Wie implementiert man einen Service?</p>



<ol class="wp-block-list">
<li>Schnittstelle in IDL formulieren</li>



<li>IDL compilieren</li>



<li>Funktionen auf Server implementieren</li>



<li>Funktionsaufrufe im Client implementieren</li>
</ol>



<h4 class="wp-block-heading">Apache Thrift</h4>



<p class="wp-block-paragraph">Welche Protokolle verwendet Thrift?</p>



<ul class="wp-block-list">
<li>Netzwerkprotokolle austauschbar</li>



<li>Standardmäßig wird TCP verwendet</li>
</ul>



<p class="wp-block-paragraph">Wie adressiert man den Server?</p>



<ul class="wp-block-list">
<li>IP-Adresse und Port im Client</li>
</ul>



<p class="wp-block-paragraph">Welche Datentypen kennt Thrift?</p>



<ul class="wp-block-list">
<li>bool</li>



<li>binary</li>



<li>byte</li>



<li>i16, i32 und i64</li>



<li>string</li>



<li>struct</li>



<li>list</li>



<li>set</li>



<li>map</li>
</ul>



<p class="wp-block-paragraph">Wie implementiert man die IDL bzw. Schnittstelle?</p>



<pre class="wp-block-preformatted">service Calculator {
 void ping(),  
} 

 i32 add(1: i32 num1, 2: i32 num2)</pre>



<p class="wp-block-paragraph">Wie kompiliert man die IDL?</p>



<pre class="wp-block-preformatted">$&gt; thrift gen cpp calc.thrift</pre>



<p class="wp-block-paragraph">Wie implementiert man den Server?</p>



<pre class="wp-block-preformatted">class calculatorHandler : virtual public calculatorIf 
{
	public:   
	calculatorHandler() 
	{
		// Your initialization goes here  
	}
	 
	void ping() 
	{    
		// Your implementation goes here   
		printf("ping\n");
	}   

	int32_t add(const int32_t num1, const int32_t num2) 
	{
		// Your implementation goes here    
		printf("add\n");  
	}
};  

int main(int argc, char **argv) {
	int port = 9090;  
	shared_ptr&lt;calculatorHandler&gt; handler(new calculatorHandler());  
	shared_ptr&lt;TProcessor&gt; processor(new calculatorProcessor(handler));  
	shared_ptr&lt;TServerTransport&gt; serverTransport(new TServerSocket(port));   
	shared_ptr&lt;TTransportFactory&gt; transportFactory(new TBufferedTransportFactory());  
	shared_ptr&lt;TProtocolFactory&gt; protocolFactory(new TBinaryProtocolFactory());  
	TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);  
	server.serve();  
	return 0;
}</pre>



<p class="wp-block-paragraph">Wie implementiert man den Client?</p>



<pre class="wp-block-preformatted">#include "calculator.h"

int main() 
{
	try
	{
		// Variablen initialisieren
		int n1 = 2, n2 = 3;
		
		// Verbindung auf Port 9090 öffnen
		shared_ptr&lt;TSocket&gt; socket(new TSocket("localhost", 9090)); 
		shared_ptr&lt;TTransport&gt; transport(new TBufferedTransport(socket));
		shared_ptr&lt;TProtocol&gt; protocol(new TBinaryProtocol(transport));
		CalculatorClient client(protocol); 
		transport-&gt;open();

		// Aufruf der Serverfunktion mit Rückgabewert
		int result = client.add(n1,n2);

		// Verbindung schließen
		transport-&gt;close();

		// Ausgabe
		cout &lt;&lt; n1 &lt;&lt; " + " &lt;&lt; n2 &lt;&lt; " = " &lt;&lt; result &lt;&lt; endl; 
	} 
	catch(TException &amp;tx) 
	{
		cout &lt;&lt; "error calling server: " &lt;&lt; tx.what() &lt;&lt; endl;
	} 
	return 0;
}</pre>



<p class="wp-block-paragraph">Wie implementiert man eigene Datentypen?</p>



<pre class="wp-block-preformatted">struct UserProfile { 
	1: i32 uid,  
	2: string name,  
	3: string blurb 
}

service UserStorage {  
	void store(1: UserProfile user), 
	UserProfile retrieve(1: i32 uid) 
}</pre>



<h4 class="wp-block-heading">ONC RPC</h4>



<p class="wp-block-paragraph">Was ist ONC RPC?</p>



<ul class="wp-block-list">
<li>Eine der ersten RPC Implementierungen</li>



<li>Implementiert im Network File System (NFS)</li>



<li>Entwickler schreibt IDL, Client und Server</li>



<li>Im Server wird keine IP-Adresse und kein Port angegeben</li>



<li>Server wird über einen Daemon adressiert</li>
</ul>



<p class="wp-block-paragraph">Welche Datenformate unterstützt ONC RPC?</p>



<ul class="wp-block-list">
<li>(unsigned) int</li>



<li>(unsigned) float</li>



<li>string</li>



<li>bool</li>



<li>struct</li>



<li>union</li>
</ul>



<p class="wp-block-paragraph">Wie sieht eine Schnittstelle aus?</p>



<pre class="wp-block-preformatted">/* calc.x: Remote calculator */
struct numbers {  
 int n1;
 int n2; 
};
 
 program CALCULATORPROG {
     version CALCULATORVERS {
        int add(numbers) = 1;
   } = 1;
} = 0x20000001; 

//version = 0x20000001
//program = 1</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="564" height="542" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_onc.png" alt="" class="wp-image-3181" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_onc.png 564w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_onc-350x336.png 350w" sizes="auto, (max-width: 564px) 100vw, 564px" /></figure>



<p class="wp-block-paragraph">Wie findet der Client den Server ohne Port?</p>



<ul class="wp-block-list">
<li>Man benötigt einen Mechanismus, um RPC Server adressieren zu können</li>



<li>RPC daemon (<em>rpcbind/portmap</em>) auf jedem der beteiligten Rechner (<em>Client und Server</em>)</li>



<li>Beim Start des Servers registriert sich der Server bei einem lokalen Daemon</li>



<li>Der Client muss die IDs für <code>version</code> und <code>program</code> angeben</li>



<li>Client benötigt nur die IP-Adresse des Servers</li>



<li>Port des Daemons ist festgelegt auf 111</li>
</ul>



<h4 class="wp-block-heading">XML-RPC</h4>



<p class="wp-block-paragraph">Was ist XML-RPC?</p>



<ul class="wp-block-list">
<li>XML als Datenaustauschformat</li>



<li>Große Anzahl an unterstützten Sprachen</li>



<li>HTTP als Transportprotokoll</li>



<li>Als Server kann ein Webserver dienen, der XML-RPC versteht</li>



<li>Keine Schnittstellensprache</li>
</ul>



<p class="wp-block-paragraph">Wie sieht ein Aufruf aus?</p>



<pre class="wp-block-preformatted">POST /RPC2 HTTP/1.0 
User-Agent: Frontier/5.1.2 (WinNT) 
Host: betty.userland.com 
Content-Type: text/xml 
Content-length: 181 

&lt;?xml version="1.0"?&gt;  
 &lt;methodCall&gt; 
  &lt;methodName&gt;examples.getStateName&lt;/methodName&gt; 
  &lt;params&gt; 
   &lt;param&gt; &lt;value&gt;&lt;i4&gt;41&lt;/i4&gt;&lt;/value&gt; &lt;/param
  &lt;/params&gt; 
 &lt;/methodCall&gt;  
&lt;/?xml&gt;</pre>



<p class="wp-block-paragraph">Wie sieht eine Antwort aus?</p>



<pre class="wp-block-preformatted">HTTP/1.1 200 OK 
Connection: close 
Content-Length: 158 
Content-Type: text/xml 
Date: Fri, 17 Jul 1998 19:55:08 GMT  
Server: UserLand Frontier/5.1.2-WinNT

&lt;?xml version="1.0"?&gt;  
 &lt;methodResponse&gt; 
  &lt;params&gt; 
   &lt;param&gt; &lt;value&gt;&lt;string&gt;South Dakota&lt;/string&gt;&lt;/value&gt; &lt;/param&gt;  
  &lt;/params&gt; 
 &lt;/methodResponse&gt;  
 &lt;/?xml&gt;</pre>



<p class="wp-block-paragraph">Wie sieht ein Client aus?</p>



<pre class="wp-block-preformatted">string const serverUrl("http://localhost:8080/RPC2"); 
string const methodName("sample.add");

xmlrpc_c::clientSimple myClient; 
xmlrpc_c::value result;  

// Aufruf
myClient.call(serverUrl, methodName, "ii", &amp;result, 5, 7); 

// Ergebnis
int const sum = xmlrpc_c::value_int(result); 

cout &lt;&lt; "Result of RPC (sum of 5 and 7): " &lt;&lt; sum &lt;&lt; endl;</pre>



<p class="wp-block-paragraph">Wie sieht ein Server aus?</p>



<pre class="wp-block-preformatted">class sampleAddMethod : public xmlrpc_c::method { 
public:  
 sampleAddMethod() { 
// signature and help strings are documentation -- the client 
// can query this information with a system.methodSignature and  
// system.methodHelp RPC. 
this-&gt;_signature = "i:ii"; 
// method's result and two arguments are integers 
this-&gt;_help = "This method adds two integers together";  
} 
 void execute(xmlrpc_c::paramList const&amp; paramList,  
      xmlrpc_c::value * const retvalP) { 
  int const addend(paramList.getInt(0)); 
  int const adder(paramList.getInt(1)); 
  paramList.verifyEnd(2);  
  *retvalP = xmlrpc_c::value_int(addend + adder); 
 }</pre>



<h4 class="wp-block-heading">Protocol Buffers</h4>



<p class="wp-block-paragraph">Was sind Protocol Buffers?</p>



<ul class="wp-block-list">
<li>Austauschformat für Datenstrukturen</li>



<li>Bieten Serialisierung und Deserialisierung an</li>



<li>Übertragung läuft über Sockets</li>
</ul>



<p class="wp-block-paragraph">Was sind die Vorteile?</p>



<ul class="wp-block-list">
<li>Maximale Flexibilität bei der Implementierung der Übertragung</li>
</ul>



<p class="wp-block-paragraph">Was sind die Nachteile?</p>



<ul class="wp-block-list">
<li>Netzwerkkommunikation über Sockets muss selbst erledigt werden</li>
</ul>



<p class="wp-block-paragraph"></p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-2/">Verteilte Systeme (Teil 2)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Teil 1)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-1/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-1/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 09:22:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Klausurvorbereitung]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3170</guid>

					<description><![CDATA[<p>Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 1 gibt uns eine allgemeine Einleitung in verteilte Systeme. Skript-Anfang VS_1_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70 Einleitung Definition Was sind verteilte Systeme? Qualitätsmerkmale Wie sollte [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-1/">Verteilte Systeme (Teil 1)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 1 gibt uns eine allgemeine Einleitung in verteilte Systeme.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_1_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Einleitung</h3>



<h4 class="wp-block-heading">Definition</h4>



<p class="wp-block-paragraph">Was sind verteilte Systeme?</p>



<ul class="wp-block-list">
<li>Ansammlung unabhängiger Computer</li>



<li>System erscheint den Benutzern kohärent</li>



<li>Kohärenz ist der Zusammenhang des Gesamtsystems</li>



<li>Verteilung ist unsichtbar für Benutzer (<em>Verteilungstransparenz</em>)</li>



<li>Multicore Rechner sind keine verteilte Systeme (<em>wegen fehlender Unabhängigkeit</em>)</li>
</ul>



<h4 class="wp-block-heading">Qualitätsmerkmale</h4>



<p class="wp-block-paragraph">Wie sollte ein gutes verteiltes System aussehen?</p>



<ul class="wp-block-list">
<li>Verteilungstransparenz</li>



<li>Offenheit</li>



<li>Skalierbarkeit</li>



<li>Zuverlässigkeit</li>



<li>Zugriff auf Ressourcen</li>
</ul>



<p class="wp-block-paragraph">Was ist Verteilungstransparenz?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Art</th><th>Transparenz</th></tr><tr><td>Zugriff</td><td>Zugriff auf lokale und entfernte Ressourcen mit gleichen Mechanismen</td></tr><tr><td>Ort</td><td>Anzahl und Position der Teile</td></tr><tr><td>Migration</td><td>Verschiebung einer Ressource</td></tr><tr><td>Relokation</td><td>Verschiebung einer Ressource während der Nutzung</td></tr><tr><td>Nebenläufigkeit</td><td>Gleichzeitiger Zugriff mehrerer Nutzer</td></tr><tr><td>Fehler</td><td>Ausfall und Wiederherstellung einer Ressource</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Welche der Transparenzen kann man realistischerweise implementieren?</p>



<ul class="wp-block-list">
<li>Zugriff</li>



<li>Ort</li>



<li>Nebenläufigkeit</li>



<li>Migration</li>



<li>Fehlertoleranz</li>
</ul>



<p class="wp-block-paragraph">Was ist Offenheit?</p>



<ul class="wp-block-list">
<li>Schnittstellen sind offen und unabhängig vom Betriebssystem</li>



<li>Kommunikation zwischen unterschiedlichen Systemen (<em>HW und SW</em>)</li>



<li>Austausch von Komponenten ist möglich (<em>Portabilität</em>)</li>



<li>Zusätzliche Komponenten können einfach integriert werden (<em>Erweiterbarkeit</em>)</li>



<li>Umsetzung mittels Schnittstellenbeschreibungssprachen (<em>IDL</em>)</li>
</ul>



<p class="wp-block-paragraph">Was ist Skalierbarkeit?</p>



<ul class="wp-block-list">
<li>Verteiltes System soll einfach erweiterbar sein</li>



<li>Erweiterung bei zusätzlicher Rechenlast, Nutzern oder Aufgaben</li>



<li>Zugriffe müssen dabei noch sinnvoll verteilt werden</li>



<li>Unterteilung in Zonen (<em>DNS</em>)</li>
</ul>



<p class="wp-block-paragraph">Wie kann man die Skalierbarkeit verbessern?</p>



<ul class="wp-block-list">
<li>Kluge Auslagerung von Teilaufgaben an andere Systeme (<em>Client</em>)</li>



<li>Daten am Stück übertragen statt in kleinen Teilen</li>
</ul>



<p class="wp-block-paragraph">Was ist Zuverlässigkeit?</p>



<ul class="wp-block-list">
<li>Das System sollte immer zur Verfügung stehen</li>



<li>Verteilung und Redundanz kompensiert Ausfälle (<em>Fehlertoleranz</em>)</li>



<li>Es gibt keine <strong>single points of failure</strong></li>
</ul>



<p class="wp-block-paragraph">Was ist Zugriff auf Ressourcen?</p>



<ul class="wp-block-list">
<li>Das System sollte den Zugriff auf benötigte Ressource einfach machen</li>
</ul>



<p class="wp-block-paragraph">Welche Probleme gibt es bei verteilten Systemen?</p>



<ul class="wp-block-list">
<li>Ad-hoc Netzwerke</li>



<li>Sich ständig ändernde Topologien</li>



<li>Datenschutz</li>
</ul>



<p class="wp-block-paragraph">Welche Herausforderungen gibt es in verteilten Systemen?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Eigenschaft</th><th>Beschreibung</th></tr><tr><td>Skalierbarkeit</td><td>Leistung steigt linear proportional durch das Hinzufügen von weiteren Knoten, Rechnern und Ressourcen an</td></tr><tr><td>Replikation</td><td>Mehrfache Speicherung derselben Daten an verschiedenen Standorten (<em>Ohne Replikation ist Konsistenz einfach</em>)</td></tr><tr><td>Konsistenz</td><td>Verteilte Daten sind auf allen Systemen aktuell (<em>Datenbanken</em>)</td></tr><tr><td>Synchronisation</td><td>Vorgänge laufen gleichzeitig (<em>synchron</em>) oder in der korrekten Reihenfolge ab (<em>Einstellung via NTP</em>)</td></tr><tr><td>Fehlertoleranz</td><td>System fällt nicht aus, auch wenn ein Fehler oder unvorhergesehenes Ereignis eintritt</td></tr><tr><td>Namensdienst</td><td>Adressierung von Komponenten im Netz (<em>Kann von Replikation und Fehlern beeinflusst werden</em>)</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Beispiele</h4>



<p class="wp-block-paragraph">Was sind Beispiele für verteilte Systeme?</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Typ</th><th>Beispiel</th></tr><tr><td>Cloud-Dienste</td><td>Facebook, Twitter und Google</td></tr><tr><td>Client- und Server-Architekturen</td><td>E-Mail und WWW</td></tr><tr><td>Multicore CPUs</td><td>Gehört nicht zur Definition</td></tr><tr><td>Grid-Computing</td><td>Wissenschaftliches Rechnen auf weltweit verteilten (Groß-)Rechnern</td></tr><tr><td>Internet der Dinge</td><td>Mehrere eingebettete verteilte Systeme interagieren miteinander</td></tr><tr><td>Automobile</td><td>Austausch von aktuellen Sensor- und Verkehrsdaten</td></tr><tr><td>Banken</td><td>Kassen, Geldautomaten, Homebanking, Kontoauszug und Konto</td></tr><tr><td>Voice-over-IP</td><td>Clients und Gateways</td></tr><tr><td>Cloud-Computing</td><td>Kommerzielle Vermietung der Rechenleistung von einzelnen Rechnern via Middleware</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Warum werden Cloud-Dienste in aller Regel von verteilten Systemen bereitgestellt?</p>



<ul class="wp-block-list">
<li>Latenz (<em>Globaler Zugriff</em>)</li>



<li>Skalierbarkeit (<em>Starkes Wachstum</em>)</li>



<li>Zuverlässigkeit (<em>Jederzeit Zugriff</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Komponenten interagieren in einem Cloud-Dienst wie Google?</p>



<ul class="wp-block-list">
<li>Rechenzentren mit tausenden einzelnen Servern</li>



<li>Stellt Dienste wie Webserver, Loadbalancer, Indexserver, Dokumentenserver und Spellchecker bereit</li>



<li>Alle Dienste sind über einen zentralen Zugang (www.google.de) erreichbar</li>



<li>Den Anwendern gegenüber bleibt die komplexe verteilte Architektur gegenüber verborgen</li>
</ul>



<h4 class="wp-block-heading">Architekturen</h4>



<p class="wp-block-paragraph">Welche Architekturen gibt es?</p>



<ul class="wp-block-list">
<li>Hardware</li>



<li>Software</li>



<li>System</li>
</ul>



<p class="wp-block-paragraph">Was ist eine Hardware-Architektur?</p>



<ul class="wp-block-list">
<li>Einzelne Rechner mit mehreren CPUs werden zu einem Cluster-Rechner hinzugefügt</li>



<li>Die Komponenten im Cluster sind über das Netzwerk verbunden</li>



<li>Die Dienste und Aufgaben werden auf die einzelnen Rechner (<em>Rechen-Knoten</em>) verteilt</li>



<li>Systeme werden über die Laufzeit durch Erweiterungen heterogener</li>



<li>Der Master-Knoten kontrolliert die Rechenknoten</li>
</ul>



<p class="wp-block-paragraph">Was ist eine Software-Architektur?</p>



<ul class="wp-block-list">
<li>Zusammenschluss von Rechnern zu einem gemeinsamen System</li>



<li>Heterogenität wird durch Middleware verborgen</li>



<li>Middleware ist eigentlich kein Betriebssystem (<em>Arbeitet in der Schicht darüber</em>)</li>



<li>Eine einheitliche Schnittstelle verbirgt die Verteilung (<em>Transparenz</em>)</li>
</ul>



<p class="wp-block-paragraph">Welche Systemarchitekturen gibt es?</p>



<ul class="wp-block-list">
<li>Geschichtet</li>



<li>Objektbasiert (<em>service oriented</em>)</li>



<li>Ereignisbasiert (<em>event driven</em>)</li>



<li>Datenzentiert (<em>data centric</em>)</li>
</ul>



<p class="wp-block-paragraph">Was sind geschichtete Systemarchitekturen?</p>



<ul class="wp-block-list">
<li>Unterteilung der Aufgaben in Schichten</li>



<li>Jede Schicht kann auf einem anderen System liegen</li>



<li>Client-Server-Architekturen (<em>1 Client und 1 Server</em>)</li>



<li>Multitier-Architekturen (<em>1 Client und n Server</em>)</li>



<li>Bei Multitier-Architekturen wird in Darstellung, Verarbeitung und Daten-Schicht unterteilt</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="537" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_multitier.png" alt="" class="wp-image-3171" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_multitier.png 642w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_multitier-350x293.png 350w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Was sind objektbasierte Systemarchitekturen?</p>



<ul class="wp-block-list">
<li>Objekte besitzen klar definierte Schnittstellen und Aufgaben</li>



<li>Objekte greifen auf ihre Methoden zu um diese Aufgaben zu erledigen</li>



<li>Position der Objekte wird durch Namensdienste bekannt gegeben</li>
</ul>



<p class="wp-block-paragraph">Was sind ereignisbasierte Systemarchitekturen?</p>



<ul class="wp-block-list">
<li>Komponenten greifen auf einen Bus zu, der Ereignisse an die anderen Komponenten ausliefert</li>



<li>Vorheriges Abonnieren der Ereignisse notwendig</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="539" height="199" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_bus.png" alt="" class="wp-image-3172" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_bus.png 539w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_bus-350x129.png 350w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p class="wp-block-paragraph">Was sind datenzentrierte Systemarchitekturen?</p>



<ul class="wp-block-list">
<li>Daten liegen ausschließlich im zentralem Speicherraum</li>



<li>Daten werden hier hin veröffentlicht</li>



<li>Daten werden von hier angefordert</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="406" height="263" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_daten.png" alt="" class="wp-image-3173" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_daten.png 406w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20140703_vs_daten-350x227.png 350w" sizes="auto, (max-width: 406px) 100vw, 406px" /></figure>



<h4 class="wp-block-heading">Realität</h4>



<p class="wp-block-paragraph">Welche Fehleinschätzungen werden häufig gemacht?</p>



<ul class="wp-block-list">
<li>Netzwerke sind unsicher, nicht zuverlässig und nicht immer verfügbar (<em>Firewalls, Paketverlust, Defekte, etc.</em>)</li>



<li>Nachrichten brauchen Zeit um den Empfänger zu erreichen (<em>Latenz</em>)</li>



<li>Reihenfolge von Nachrichten wird im Netzwerk vertauscht</li>



<li>Es gibt keine gemeinsame Zeit (<em>Zeit ist nicht synchronisiert</em>)</li>



<li>Komponenten können ausfallen</li>



<li>Bandbreite und Rechenleistung ist begrenzt</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-1/">Verteilte Systeme (Teil 1)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-teil-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Vorlesung 18)</title>
		<link>https://maximiliankrieg.de/2014/07/verteilte-systeme-vorlesung-18/</link>
					<comments>https://maximiliankrieg.de/2014/07/verteilte-systeme-vorlesung-18/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Wed, 02 Jul 2014 19:28:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Vorlesung]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2931</guid>

					<description><![CDATA[<p>Inhalt Das Skript enthält alle Informationen dieser Vorlesung. Skript-Anfang VS_6_So2014 &#8211; Seite 1 Skript-Ende VS_6_So2014 &#8211; Seite 70</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-vorlesung-18/">Verteilte Systeme (Vorlesung 18)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Inhalt</h3>



<p class="wp-block-paragraph">Das Skript enthält alle Informationen dieser Vorlesung.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_6_So2014 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 70</td></tr></tbody></table></figure>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/07/verteilte-systeme-vorlesung-18/">Verteilte Systeme (Vorlesung 18)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/07/verteilte-systeme-vorlesung-18/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Vorlesung 17)</title>
		<link>https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-17/</link>
					<comments>https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-17/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Wed, 25 Jun 2014 18:29:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Vorlesung]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2933</guid>

					<description><![CDATA[<p>Inhalt Ausgefallen wegen dem Bildungsstreik.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-17/">Verteilte Systeme (Vorlesung 17)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Inhalt</h3>



<p class="wp-block-paragraph">Ausgefallen wegen dem Bildungsstreik.</p>



<p class="wp-block-paragraph"></p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-17/">Verteilte Systeme (Vorlesung 17)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-17/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Vorlesung 16)</title>
		<link>https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-16/</link>
					<comments>https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-16/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Wed, 18 Jun 2014 19:42:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Vorlesung]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2960</guid>

					<description><![CDATA[<p>Heute schließen wir das Thema&#160;Namensdienste&#160;ab und beginnen mit einem Einstieg in das Thema&#160;Sicherheit. Skript-Anfang VS_5_So2014 &#8211; Seite 82 Skript-Ende VS_6_So2014 &#8211; Seite 24 Lamport-Algorithmus Aufgabe 1 Wofür wird der Zeitstempel im ACK gesendet? Er dient zur Sicherstellung der Fairness zwischen verschiedenen Prozessen Aufgabe 2 Was kann man machen, wenn ein ACK nicht zugestellt wird? (Server [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-16/">Verteilte Systeme (Vorlesung 16)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Heute schließen wir das Thema&nbsp;<strong>Namensdienste</strong>&nbsp;ab und beginnen mit einem Einstieg in das Thema&nbsp;<strong>Sicherheit</strong>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>VS_5_So2014 &#8211; Seite 82</td></tr><tr><th>Skript-Ende</th><td>VS_6_So2014 &#8211; Seite 24</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Lamport-Algorithmus</h3>



<h4 class="wp-block-heading">Aufgabe 1</h4>



<p class="wp-block-paragraph">Wofür wird der Zeitstempel im ACK gesendet?</p>



<p class="wp-block-paragraph">Er dient zur Sicherstellung der Fairness zwischen verschiedenen Prozessen</p>



<h4 class="wp-block-heading">Aufgabe 2</h4>



<p class="wp-block-paragraph">Was kann man machen, wenn ein ACK nicht zugestellt wird? (Server ist ausgefallen)</p>



<ol class="wp-block-list">
<li>Einen Timeout setzen und den Server aus der Liste werfen</li>



<li>Senden nochmal mit exponential backoff probieren</li>
</ol>



<h4 class="wp-block-heading">Aufgabe 3</h4>



<p class="wp-block-paragraph">Wie schließt ein Client den Tunnel eines HTTP Proxy?</p>



<p class="wp-block-paragraph">Indem er die TCP Verbindung zum Server beendet. Der Proxy erkennt dies in den Paketen und schließt den Tunnel.</p>



<h3 class="wp-block-heading">Lightweight Directory Access Protocol (LDAP)</h3>



<ul class="wp-block-list">
<li>Passwörter werden nur als gehashte Werte gespeichert</li>



<li>Diese Hashes werden dann mit dem Hash eines übermittelten Passworts verglichen</li>
</ul>



<h3 class="wp-block-heading">Firewall</h3>



<ul class="wp-block-list">
<li>Schützt vor unerlaubtem Lesen und Schreiben</li>



<li>Unterbindet unerlaubten Zugriff auf definierte Dienste im Netzwerk</li>
</ul>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-16/">Verteilte Systeme (Vorlesung 16)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/06/verteilte-systeme-vorlesung-16/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
