This can't be done on a switched network, because (by definition of Ethernet switching) on these networks each switch port only receives frames addressed to devices connected to that port; so your computer will not get a copy of the frames addressed to other devices, and any network sniffer running on it will not be able to examine those frames.
You can work around this limitation if you have some kind of control on the networking equipment and/or layout:
- You can place a hub between the network switch and the device whose traffic you want to capture, and connect your PC to that hub; hubs forward all traffic to all ports, so your computer will get a copy of all traffic flowing through the hub.
- You can configure the network switch (if it supports this feature) to forward a copy of some or all traffic to a specific "monitor" port, and then you can connect your computer to that port; with this setup, your computer will receive a copy of the traffic you want to monitor.
About the sniffing program itself, the best one around is WireShark. It's available for both Linux and Windows.