There are several approaches of how to virtualize networking for containers. Those are desribed below.
Layer 3 virtualized network interface
This one is employed by OpenVZ's venet. See venet.
Layer 2 virtualized network interface
This one is employed by OpenVZ's veth. See veth.
Layer 3 isolated network (bind filtering)
This one is implemented in Linux-VServer. Basically, when a container calls
INADDR_ANY, kernel actually binds the socket to some specific IP address(es). Some more details (not much) can be found at http://linux-vserver.org/Paper#Network_Separation