Estou tentando entender como o mecanismo VNC funciona.
As especificações do protocolo RFB 3.8 dizem:
The update protocol is demand-driven by the client. That is, an update is only sent from the server to the client in response to an explicit request from the client. This gives the protocol an adaptive quality. The slower the client and the network are, the lower the rate of updates becomes. With typical applications, changes to the same area of the framebuffer tend to happen soon after one another. With a slow client and/or network, transient states of the framebuffer can be ignored, resulting in less network traffic and less drawing for the client.
Parece que isso significa que o servidor sempre enviará apenas FramebufferUpdate
se o cliente enviar um FramebufferUpdateRequest
. Em seguida, o cliente deve enviar esses pacotes em um intervalo regular. No entanto, quando analisei através do wireshark, observei que não era esse o caso. Quando não havia atividade de tela ou ponteiro, não vi nenhum pacote do cliente para o servidor.
Quando criei alguma atividade de tela na tela sem envolver o cliente (executei xclock
definindo a exibição para esse valor), a primeira mensagem foi do servidor para o cliente e não uma solicitação do cliente.
Portanto, minha pergunta é: É realmente verdade que o servidor só enviará atualizações se o cliente as solicitar e não toda vez que houver atividade na tela? Qual é a frequência das atualizações em ambos os casos?