Actualmente en pruebas: el código de GitHub se abrirá al finalizar.

Protocolo — Cliente ↔ Servidor

La especificación completa de cada byte intercambiado en el puerto del cliente (por defecto 5225). Consta del protocolo de autenticación, realizado una vez justo después de conectar, seguido del protocolo binario de tramas de bloqueo. Todos los clientes oficiales implementan esta especificación de forma idéntica, byte a byte.

En cada página de mensaje, Estructura muestra la disposición de los campos, y Ejemplo muestra los bytes reales enviados (los valores cambian con refresh).

Notación de bytes: op se muestra como un carácter ASCII (p. ej. A); wait y lease son valores binarios u8, mientras token y owner son valores binarios u64 big-endian. Se muestran en hexadecimal (p. ej. wait=505). key y addr son texto UTF-8, y reason es texto ASCII — todos ellos de longitud variable, mostrados como N en la estructura. El \n (salto de línea) final termina la trama como 0A. Los campos se envían uno tras otro sin ningún delimitador.

Las cabeceras fijas (wait, lease, token, owner) son valores binarios y pueden contener 0x0A — el parser debe consumir primero la cabecera fija según el número de bytes de cada op y solo después buscar el salto de línea. Los tamaños son: solicitudes A = 10B / R = 8B; respuestas A = 16B / T·B·R·N = 8B / M·L·E = 0B.

Índice

El protocolo de consenso de clúster (Raft) entre servidores se trata en una página aparte.