TCPdump is a very powerful command line interface packet sniffer.

It must be launched as root or with superuser rights because of the its use of the promiscuous mode or to be sure to have sufficent privilileges on a network device or a socket. Wireshark (formerly ethereal) can be used as an alternative to TCPdump but with a GUI interface. Wireshark can be used to read the logs captured by TCPdump too.

Web resources:

How can I capture network traffic of a single process?

Sadly a network sniffing tool works at the lowest level of the net stack, trying to catch everything, it’s completely unaware of processes running on the OS. It’d be extremely difficult to find out what’s originated a certain call. A packet sniffer could eventually figure out (via the port number) a process ID but cannot figure out which process did a DNS lookup as this is completely independent (that’s most probably the kernel net stack that triggered the call). But with filtering and stoping other processes you should be able to achieve your goal

To start and monitor an new process:

strace -f -e trace=network -s 10000 PROCESS ARGUMENTS

To monitor an existing process with a known pid:

strace -p $PID -f -e trace=network -s 10000

strace ping

netstat -taucp | grep <pid or process name> : That will show the connections an application is making including the port being used


netstat -nutp (for outbound connections)
netstat -lnutp (for inbound connections)

netstat -anb | more


If you want to check what processes are using ports you can try this command : lsof -i   or lsof -p (depending the version)