Die Handelnden in einem verteilten System, das sind Threads, können nur dadurch miteinander kooperieren, indem sie miteinander kommunizieren. Der Begriff Kommunikation wird im Deutschen ganz unterschiedlich benutzt. Er hat unter anderem technische, soziale und künstlerische Aspekte. Im weitesten Sinne umfasst er auch Gebiete wie Presse, Rundfunk, Fernsehen und die Unterhaltungsindustrie. Für die Lehrveranstaltung ist die folgende stark einschränkende Festlegung ausreichend:
Diese Begriffsbildung führt zu den Fragen, was Nachrichten sind und wie ein Nachrichtenaustausch vor sich geht.
Nachrichten sind Daten, die Informationen kodieren. Sie können als
vorliegen und dazu auf vielfältige Weise auch computergerecht kodiert sein. Dabei erschließt sich dem Empfänger die Informationen, die in einer Nachricht stecken, oft nicht sofort oder gar nicht. Die Erschließung kodierter Informationen bedarf immer einer geeigneten Interpretation.
Um Nachrichten auszutauschen müssen sie übertragen werden, sie müssen von einem Thread zu einem anderen gelangen. Dafür gibt es zwei prinzipielle Verfahren: Entweder es kann
Unter einem Speicher versteht man eine Einrichtung zur Ablage von Daten. Der Hauptspeicher eines Prozessors, Festplatten, CD-ROMs, Disketten, USB-Sticks usw. sind dafür Beispiele. Da der Hauptspeicher eines Rechners immer rechnerlokal ist, kann er bei verteilten Systemen nur dann als gemeinsamer Speicher verwendet werden, wenn sich die miteinander kommunizierenden Partner auf ein und demselben Rechner befinden. Kommunikationstechniken für diesen Fall werden im nächsten Abschnitt (1.4.2 Kommunikationstechniken) vorgestellt.
Befinden sich die Kommunikationspartner nicht auf ein und demselben Rechner, dann bedarf es im Falle verteilter Systeme eines Rechnernetzes und einer dazu gehörenden Kommunikationssoftware, wie sie beispielsweise durch das Internet und die TCP/IP-Protokolle gegeben sind. Die Kapitel 3 (Anwendungsprotokolle im Internet), 4 (Transportprotokolle im Internet) und 5 (Vermittlungsprotokolle im Internet) befassen sich ausführlich mit dem Datentransportsystem Internet.
Wird ein Datentransportsystem verwendet, um Nachrichten auszutauschen, muss man unterscheiden, ob der Transport sicher oder unsicher ist. Wenn bei einem Transport die Daten weder verloren gehen, noch verfälscht oder vervielfältigt werden können, dann spricht man von einem sicheren Datentransport, ansonsten von einem unsicheren. Beispielsweise wird ein Datentransport innerhalb eines Prozessors als sicher angesehen, während das Internetprotokoll IP einen unsicheren Datentransport durchführt, denn IP-Pakete können unter anderem verloren gehen, ihre Reihenfolge kann verändert und sie können mehrfach gesendet werden.
Bei einem unsicheren Datentransport muss mit
gearbeitet werden. Dabei muss berücksichtigt werden, dass in solchen Umgebungen auch die Bestätigungen verloren gehen können. Wenn beim Sender eine bestimmte Zeit verstrichen ist, ohne dass er eine Bestätigung erhalten hat, dann weiß er nicht, ob seine Sendung angekommen ist. Vielleicht ist die Verbindung in Ordnung, aber der Transport der Nachricht oder der Bestätigung braucht jeweils sehr lange um anzukommen. Mit dem Zwei-Armeen-Problem werden anschaulich die Konsequenzen eines unsicheren Datentransports beschrieben:
In der Praxis wird bei einem unsicheren Datentransport mit Sendewiederholungen gearbeitet, die durch ausbleibende Bestätigungen ausgelöst werden. Die Länge der Wartezeit wird pragmatisch gewählt und ist von den aktuellen Gegebenheiten abhängig.
Jedes Mal, wenn eine Nachricht empfangen wird, bestätigt der Empfänger diesen Sachverhalt. Die erste Bestätigung, die der Sender empfängt, beendet die Sendewiederholungen bzw. löst erst gar keine aus. Bei diesem Vorgehen muss der Empfänger einer Nachricht damit rechnen, diese mehrfach zu erhalten, weil seine Bestätigungen verloren gegangen sein können oder zu lange brauchen um ihr Ziel zu erreichen. Üblicherweise gibt es für den Sender eine pragmatisch festgelegte maximale Sendewiederholungszahl, dann erklärt er den Empfänger als nicht erreichbar. Das allerdings bedeutet nicht, dass der Empfänger tatsächlich nicht erreicht worden ist, denn es könnte jedes Mal die Bestätigung verloren gegangen oder ihr Transport stark verzögert worden sein.
Ein Kommunikationsmodell beschreibt die kommunikative Funktion der Partner in einem Kommunikationsvorgang. In verteilten Systemen sind diese Partner Threads. Die meisten Kommunikationshandlungen im Internet folgen einem Client/Server-Modell. Es beschreibt eine Kommunikation zwischen zwei Partnern, bei denen der eine, Server genannt, bestimmte Dienstleistungen anbietet, und der andere, der Client heißt, diese Dienste in Anspruch nimmt.
Das Client/Server-Modell ist ein asymmetrisches 2-Ebenen-Modell (2 tiers model). Auf der ersten Ebene befindet sich der Client, der mit dem Benutzer kommuniziert, auf der zweite der Server, der auf die Anforderung des Clients reagiert. Die Asymmetrie dieses Kommunikationsmodells kommt zu Stande, weil Client und Server unterschiedliche Aufgaben wahrnehmen.
Das World Wide Web ist ein Beispiel für eine Client/Server-Kommunikation. Jeder der sehr vielen - es sind mehrere Millionen - weltweit vorhandenen Web-Server stellt statische oder dynamisch erzeugte Dokumente in Form von sogenannten Web-Seiten zur Verfügung, die von Clients, die Web-Browser oder kurz Browser heißen, angefordert werden können.
Eine Modifikation des Client/Server-Modells ist das Client/Registry/Server-Modell, bei dem die Server vorab ihre Dienstleistungen bei einem Registrierungsprozess anmelden müssen. Bei diesem Kommunikationsmodell muss der Client nicht wissen, welcher Server für seine Anforderung in Frage kommt. Er wendet sich an den Registrierungsprozess, der ihm einen geeigneten Server vermittelt.
Sehr oft ist in einem Client/Server-System der Server selbst wieder Client für einen anderen Server. Ein Beispiel ist eine Anforderung eines Web-Browsers an einen Web-Server, die eine Datenbankabfrage nach sich zieht. Die folgende Grafik zeigt ein typisches 3-Ebenen-Modell. Die Weiterführung auf 4, 5 und weitere Ebenen ist naheliegend und braucht hier nicht vertieft zu werden.
Es gibt Kommunikationshandlungen zwischen zwei Partnern, bei denen jeder der beiden die gleichen Aufgaben wahrzunehmen hat. Das ergibt ein symmetrisches 2-Ebenen-Modell. Beide Partner werden als Peers (Gleichberechtigte) bezeichnet. Das Modell heißt deshalb Peer-to-Peer-Modell.
Ein aktuelles und praktisches Beispiel ist die Blockchain-Technik. Eine Blockchain (Verkettung von Blöcken) ist ein Verfahren, um dezentral und fälschungssicher durch gleichberechtigte Partner aufzeichen zu lassen. Was aufgezeichnet wird, ist dabei unerheblich. Ein typisches Beispiel ist das Führen eines Hauptbuchs (ledger) in der Buchhaltung eines Unternehmens. In der letzten Zeit werden Kryptowährungen wie Bitcoin breit diskutiert. Sie basieren auf einer Blockchain-Technik für das Aufzeichnen finanzieller Transaktionen. Drescher schreibt dazu (Zitat):