A mobile node includes a processor, a network interface, and a storage
device having computer program code for execution by the processor. The
computer program code includes a network layer for transmitting and
receiving packets and an intermediate driver that transmits packets to
the network layer and receives packets from the network layer using a
virtual internet protocol (IP) address to identify the mobile node. The
intermediate driver transmits packets to the network interface and
receives packets from the network interface using a routable actual IP
address to identify the mobile node. The intermediate driver permits the
actual IP address to change when the mobile node moves from a first
subnet to a second subnet without a corresponding change in the virtual
IP address. A corresponding NAT associates the virtual IP address with a
second actual IP address when the NAT is notified that the mobile node is
in the second subnet.