I am trying to understand how the VNC mechanism works.
The RFB protocol 3.8 specifications say :
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.
It seems that this implies that the server will only ever send a FramebufferUpdate if the client sends a FramebufferUpdateRequest. Then the client must be sending these packets at a regular interval. However, when I analyzed through wireshark, I observed that this was not the case. When there was no screen or pointer activity, I did not see any packets from the client to the server.
When I created some screen activity on the screen without involving the client, (I ran xclock by setting display to that value) the first message was from the server to the client and not a request from the client.
So my question is: Is it indeed true that the server will only send updates if the client requests them and not every time there is screen activity? What is the frequency of updates in either case?