As mentioned earlier, datagrams are redirected to virtual hosts by tunnelling them to the host server. This is achieved by encapsulating the datagram using IP-in-IP encapsulation. Datagrams with encapsulated payload are marked as such in the protocol identifier of their IP headers. Typically, the IP-level demultiplexer feeds the incomming datagrams into the appropriate transport protocol stack according to this protocol identifier. Decapsulation can be easily realized by adding a pseudo protocol stack for datagrams that are marked as IP-in-IP encapsulations. This stack strips the datagram of the encapsulation header and puts the remaining part back into the IP input queue. The IP header of the decapsulated packet now has the address and port of the virtual host installed. When the datagram is processed again by the transport demultiplexer, it is passed to the appropriate transport level protocol, which makes the data available at the correct socket buffer.