Exploiting mobile code for user-transparent distribution of application-level protocols