The game export API RunFrame function pointer is set up to point at this function. The engine calls this function every 100ms to advance the world that much. This is called a server frame.You can find this function in the g_main.c file. The function iterates through the g_edicts array and lets every entity get a chance to run its think function. Also, it calls G_RunEntity for each entity.
The G_RunEntity calls functions, which handles movement of an entity and calls the entity's think function (SV_RunThink). For example: a grenade being thrown, an item being dropped, or a door swinging. This is also how monsters get their share of CPU for AI.
G_RunFrame also calls ClientBeginServerFrame and ClientEndServerFrame, which we will get back to frequently in this document.
This function is also exported through the game export API. The engine calls this function every 50ms or so. That interval is the client frame rate. In this function the engine and the DLL exchange information about client movement. The player may be standing on a conveyor belt, for instance. In that case the movement of the belt affects the movement of the player.
The client part of Quake2 predicts movement inbetween network updates from the server. Eventually, the engine updates the client with correct info.