You haven't mentioned which operating system you are using or the configuration of your network, so I am going to take a stab in the dark here:
Open up a command window (if you are using Windows) and type "netstat -a" to see all of your open TCP and UDP connections.
If you are interested in knowing the content and information that is being sent across the connection that you find above, download and use Ethereal ( http://www.ethereal.com/ ) to anaylze those packets.
If you run "netstat -o" you will get the active connections, plus the Process ID. I believe if you are running Windows XP you can then take the PID that you get from "nestat -o" and match it up with one in your taskmanager.
My taskman.exe has been fubar'd for some time, so I am not 100% on that.
You can also do a TASKKILL from command line, BUT BE VERY CAREFUL, some tasks have children and you will kill them too, which could lead to other shit not working, etc.
You can get a general idea of whats running by looking at the port which is being connected to, then for how much bandwidth you can look in the network tab in the windows task manager.
For thrid party apps you will have to google around i only know ones for freebsd and linux.
you will be hard pressed to find one that is actually going to tell you the app or process thats using that bandwidth. The ones im thinking of are going to be more for routers; graphing ips and networks, not breaking it down into individual apps.
Now you can sometimes find bandwidth monitors that are designed to watch for certain things example: there is a qmail-mrtg which graphs all of your email usage etc.