A virtual machine operating system for communication between first and
second applications which execute in different user portions of the
virtual machine operating system and use Internet Protocol (IP). The
virtual machine operating system comprises a first user portion, a second
user portion and a base portion. The first user portion executes the
first application and includes a first device driver for a first virtual
network interface card (NIC). The second user portion executes the second
application and includes a second device driver for a second virtual NIC.
The base portion is shared by the first and second user portions and
includes the first and second virtual NICs. The base portion maintains a
table of IP addresses by which each device driver addresses its
respective NIC and other, corresponding addresses by which the base
portion addresses the virtual NIC. The first device driver is programmed
to receive an IP datagram from the first application and pass it to the
first NIC using IP. The datagram includes an IP address of the second
virtual NIC and an indication that the second application should receive
the datagram. The base portion is programmed to determine the other
address of the second NIC based on the table and transfer the datagram to
a storage location associated with the second virtual NIC or the second
device driver.