Para ampliar la respuesta de mis companeros, te dire que a nivel de programacion se suele crear un thread que se hace cargo de cada conexion... Si puedes ver la funcionalidad entre un server WEb y su cliente, veras como el cliente dispone de varios programas atacanddo a un mismo socket que es el 80, en cambio en la recepcion utiliza sockets diferentes... El tema es mas denso de lo que parece ... Pero esto te puede dar una idea de como funciona...
Existen programillas en C/Java de ejemplo que muestran el uso de comunicaci'on entre sockets y si metes un sniffer por el medio entonces ya es la leche de lo que puede aprender...
By NeCrOS
http://www.necros.com
FrEe WoRlD is FrEE CoDE
-----------------------