The proliferation of mobile computing devices and wireless networking products over the past decade has led to an increasingly nomadic computing lifestyle. A computer is no longer an immobile, gargantuan machine that remains in one place for the lifetime of its operation. Today's personal computing devices are portable, and Internet access is becoming ubiquitous. A well-traveled laptop user might use half a dozen different networks throughout the course of a day: a cable modem from home, wide-area wireless on the commute, wired Ethernet at the office, a Bluetooth network in the car, and a wireless, local-area network at the airport or the neighborhood coffee shop.
In addition to sporadically changing their points of attachment in the network, mobile hosts are also prone to frequent, unexpected disconnections that vary greatly in duration. A great deal of recent research has focused on developing support for applications that wish to operate on these hosts. This class will survey seminal and current work in mobile networking, focusing on higher-level, end-host based approaches. We will briefly review traditional network-layer techniques before considering work on resilient transport protocols, session-based mobility, and mobile-aware applications. We will also examine recent advances in portable virtual machine technology.