Protocolo — Cliente ↔ Servidor
A especificação completa de cada byte trocado na porta do cliente (padrão 5225). Ela consiste no handshake de autenticação, realizado uma vez logo após a conexão, seguido pelo protocolo binário de quadros do lock. Todo cliente oficial implementa essa especificação de forma idêntica, byte a byte.
A seção Estrutura de cada página de mensagem mostra o layout dos campos, e Exemplo mostra os bytes reais enviados (os valores mudam com refresh).
Notação de bytes:
opé mostrado como um caractere ASCII (por exemplo,A);waiteleasesão valores binários u8, enquantotokeneownersão valores binários u64 big-endian. Eles são mostrados em hexadecimal (por exemplo,wait=5→05).keyeaddrsão texto UTF-8, ereasoné texto ASCII — todos eles têm comprimento variável, mostrados comoNna estrutura. O\n(nova linha) final encerra o quadro como0A. Os campos são enviados um após o outro, sem delimitador.Os cabeçalhos fixos (
wait,lease,token,owner) são valores binários e podem conter0x0A— o parser precisa consumir primeiro o cabeçalho fixo pela contagem de bytes de cada op e só então procurar a nova linha. Os tamanhos são: requisiçõesA= 10B /R= 8B; respostasA= 16B /T·B·R·N= 8B /M·L·E= 0B.
Sumário
- Camada de transporte
- Handshake de autenticação — compartilhado com a porta Raft do cluster, por isso está na página Protocolo (Comum)
- Requisições
- Respostas
- Restrições de campo
- Matriz requisição × estado da chave
- Token de fencing
- Regras de correspondência de resposta
- Sessão de exemplo
O protocolo de consenso de cluster (Raft) entre servidores é abordado em uma página separada.