Ultra-mobile computing: adapting network protocol and algorithms for smartphones and tablets