How can I tell which application is using the network? Very occasionally when using my Mac, I notice my internet connection slowing down. Using Activity Monitor I can see that it's because something is downloading data at the full rate my connection can support --- but I don't know how to tell what's responsible for it. It can be caused by several different things (Dropbox syncing; some app doing an automatic update; most recently it was a video buffering in a browser tab that I'd forgotten about) so it'd be really handy to have a way to tell which app is responsible for the network use. Is such a thing possible in OS X? Ideally I'm looking for a free solution. (Command line is OK.) I'm on Snow Leopard if it makes a difference.
Firewalls
You could use Little Snitch or HandsOff. They are great firewalls and both have a &quot;Network Monitor&quot; feature, that will do the job:

Little Snitch includes a Network Monitor, showing detailed information of all incoming and outgoing network traffic.
A status icon in the menu bar provides a summary of current network activity, and a monitor window with more comprehensive information pops up automatically in case of new traffic events.
Hands Off is an application to monitor and control the access of applications to your network and disks. Being able to monitor the normally unnoticeable activities enables you to make informed decisions regarding the transfer of your private information, hence avoiding confidential information leakage.

 
The network monitors of: Little Snitch (left), HandsOff (right)
Nettop
A free and built-in cli solution (unfortunately it is not included in Snow Leopard) would be nettop. nettop groups traffic by program and port and measures various network statistics.
Other
There are few other programs, that capture and measure traffic (iftop, wireshark, tcpdump), but they don't know the originated pid. To make the connection you should use netstat.