An emulator is essentially an application program that emulates a complete computer. An emulator has to run in an OS environment, much like a word processing application has to run in an OS environment. This OS environment is called the “host OS”.
Because an emulator emulates a full machine (with the processor, RAM, graphics card, hard disk controller, NIC and etc.), we can install software on it. For example, we can install an OS in an emulator. An OS that runs in a emulator is called a “guest OS”.
What is a virtual machine, then? A VM is an instance of emulator running with specific files that define the state of a machine. These files include the configuration specification and files that serve as hard disk images. A VM is like any physical computer, only that it lives completely in the environment of the host OS.
Note that a VM can have a variety devices. Particularly, a VM can be configured to have one or more NICs. We will see how these NICs can come in handy.
Last, but not least, a host OS can run multiple VMs at the same time, kind of similar of opening multiple documents at the same time in a word processor.