Wikipedia · einfach zusammengefasst · Stand
Synchrone Kommunikation
Unter synchroner Kommunikation versteht man in der Informatik und Netzwerktechnik einen Modus der Kommunikation, bei dem die Kommunikationspartner (Prozesse) …
Inhalt5 Abschnitte
Grundprinzip der synchronen Kommunikation
Synchrone Kommunikation ist in der Informatik und Netzwerktechnik ein Kommunikationsmodus, bei dem die beteiligten Kommunikationspartner beziehungsweise Prozesse beim Senden oder Empfangen von Daten synchronisieren. Das bedeutet, dass ein Prozess wartet oder blockiert, bis die jeweilige Kommunikation abgeschlossen ist.
Warten sowohl Sender als auch Empfänger, entspricht der Ablauf einem Rendezvous der beiden Prozesse: Der Sender stellt eine Anfrage und wartet auf eine Antwort. Das Blockieren wird intern durch Mechanismen der Prozesssynchronisation ermöglicht. Synchrone Kommunikation geht damit über eine reine Transaktionsorientierung hinaus.
Beim asynchronen Senden und Empfangen wird der Prozess dagegen nicht blockiert. Er kann nach dem Senden weiterarbeiten oder beim Empfang andere Aufgaben übernehmen. Synchrone Kommunikation darf außerdem nicht mit synchroner Datenübertragung verwechselt werden. Letztere bezeichnet ein Verfahren der Datenübertragung beziehungsweise des Medienzugriffs.
Synchroner und nicht-blockierender Empfang
Das Warten auf den Empfang von Daten heißt blockierender Empfang, auf Englisch „blocking read“ oder „synchronous receive“. Typisch ist das Verhalten eines Konsumenten einer Warteschlange oder eines Prozessors eines Datenstroms: Der Prozess läuft im Wesentlichen in einer Schleife. Er wartet, bis Daten vorhanden sind, verarbeitet die Daten und wartet anschließend erneut.
Die Verarbeitung kann auch darin bestehen, Behandlungsroutinen für bestimmte Datenarten aufzurufen. Dadurch entspricht der Ablauf der Semantik einer Ereignisbehandlung.
Beim nicht-blockierenden Empfang, auch „non-blocking read“ oder „asynchronous receive“ genannt, liefert der Empfangsbefehl einfach einen Fehler zurück, wenn sich keine Daten im Eingangspuffer befinden. Der Prozess kann dann in regelmäßigen Abständen prüfen, ob Daten vorliegen, und sich zwischen diesen Prüfungen anderen Aufgaben widmen, beispielsweise der Kommunikation mit einem dritten Prozess.
Eine weitere Möglichkeit sind Guarded Statements nach Leslie Lamport. Dabei wartet der Empfänger nicht auf Daten eines bestimmten Datenstroms, sondern auf Daten aus irgendeinem Datenstrom. So kann ein einzelner Prozess mehrere Datenströme parallel bedienen. Der Empfang ist dann synchron zu einem Bündel anderer Prozesse, nicht nur zu einem einzelnen Prozess. Diese Technik wird vor allem bei Servern eingesetzt.
Synchrone Anfragen im Client-Server-Modell
Bei einer synchronen Anfrage werden Daten häufig im Rahmen eines Client-Server-Systems übertragen. Der Client-Prozess sendet eine Anfrage und wartet blockierend, bis der Server eine Antwort zurücksendet. Diese enge Verbindung wird auch als eng gekoppelte Prozesse oder Rendezvous-Semantik bezeichnet.
Bleibt die Antwort aus, wird dies nach einer bestimmten Zeit als Fehler behandelt. Diese Zeitspanne heißt Timeout. Besonders bei einem unzuverlässigen Übertragungskanal wird die Anfrage häufig mehrmals erneut gesendet, bevor endgültig ein Fehler gemeldet wird; dieser Vorgang heißt Retry.
Die synchrone Anfrage-Semantik wird von gängigen Client-Server-Protokollen und beim direkten Funktionsaufruf in einem anderen Prozess, dem Remote Procedure Call (RPC), verwendet. Wird als Antwort lediglich eine Bestätigung erwartet, kann der Ablauf als einfaches blockierendes Versenden verstanden werden.
Eine Alternative besteht darin, überhaupt keine Antwort zu erwarten. Ob der Empfänger die Daten tatsächlich erhalten hat, hängt dann von der verwendeten Netzwerkschicht ab. Im Allgemeinen ist diese Sicherheit nicht gegeben, insbesondere bei einer Übertragung über ein Netzwerk.
Bei einer asynchronen Anfrage arbeitet der Prozess nach dem Versand zunächst weiter. Er prüft wiederholt, möglicherweise neben anderen Tätigkeiten, ob Nachrichten von anderen Prozessen eingegangen sind, und bearbeitet diese. Dabei wird nicht zwischen Anfragen und Antworten unterschieden. Diese Form wird auch als lose Kopplung der Prozesse bezeichnet.
Synchronisation zwischen integrierten Schaltungen
Bei der Kommunikation zwischen verschiedenen Chips spricht man von synchroner Kommunikation, wenn ein Taktsignal verwendet wird, um Sender- und Empfängersignale miteinander zu synchronisieren. Das Taktsignal verhindert, dass die Signale auseinanderdriften und asynchron werden.
Diese Bedeutung gehört jedoch in den Bereich der synchronen Datenübertragung. Das Auseinanderdriften von Signalen kann auch durch andere Strategien verhindert werden, zum Beispiel durch Bitstuffing. Bitstuffing wird meist bei asynchroner Kommunikation eingesetzt.
Typische Beispiele
Als synchrone Kommunikationsvarianten nennt der Artikel RMI, RPC und HTTP.
Bei der Kommunikation zwischen Personen zählen unter anderem herkömmliche Telefonie über Mobilfunk oder Festnetz, Instant Messaging, IRC-Chats, Web-Chats und Internet-Videokonferenzen zur synchronen Kommunikation. Bei IP-Telefonie kann allerdings bereits Asynchronität auftreten, wenn die Dienstqualität beziehungsweise Quality of Service (QoS) gering ist.