The last time I checked (which has been several years), an interactive X session sends a network packet for each and every keystroke. A horrible waste of bandwidth, but I'm not sure how you can improve that without affecting interactivity (or significantly changing the client-server model X is built around).