Protokoll — Client ↔ Server
Die vollständige Spezifikation jedes Bytes, das über den Client-Port (Standard 5225) ausgetauscht wird. Sie besteht aus dem Auth-Handshake, der einmal direkt nach dem Verbindungsaufbau durchgeführt wird, gefolgt vom binären Frame-Sperrprotokoll. Jeder offizielle Client implementiert diese Spezifikation identisch, byte für byte.
Der Abschnitt Struktur jeder Nachrichtenseite zeigt das Feldlayout, und Beispiel zeigt die tatsächlich gesendeten Bytes (die Werte ändern sich mit refresh).
Byte-Notation:
opwird als ASCII-Zeichen dargestellt (z. B.A);waitundleasesind binäre u8-Werte,tokenundownerbinäre u64-Big-Endian-Werte. Sie werden hexadezimal dargestellt (z. B.wait=5→05).keyundaddrsind UTF-8-Text, undreasonist ASCII-Text — all diese Felder haben variable Länge, in der Struktur alsNdargestellt. Das abschließende\n(Zeilenumbruch) beendet den Frame als0A. Felder werden ohne Trennzeichen direkt hintereinander gesendet.Die festen Header (
wait,lease,token,owner) sind Binärwerte und können0x0Aenthalten — ein Parser muss daher zuerst die feste Header-Länge des jeweiligen op verbrauchen, bevor er nach dem Zeilenumbruch sucht. Die Längen sind: AnfrageA=10 B /R=8 B, AntwortA=16 B /T·B·R·N=8 B /M·L·E=0 B.
Inhaltsverzeichnis
- Transportschicht
- Auth-Handshake — gemeinsam mit dem Raft-Port des Clusters, daher auf der Seite Protokoll (Gemeinsam)
- Anfragen
- Antworten
- Feldbeschränkungen
- Anfrage-×-Schlüsselzustand-Matrix
- Fencing-Token
- Regeln zur Antwortzuordnung
- Beispielsitzung
Das Server-zu-Server-Cluster-Konsensprotokoll (Raft) wird auf einer separaten Seite behandelt.