Sniffers hay muchos. Algunos incluso para operaciones específicas como esnifar el correo, URLs, MSN, etc. Los hay gráficos o por línea de comandos. Tambíen se pueden dividir en si son capaces o no de esnifar una red conmutada. Los usos pueden ser legales o ilegales. Obviando los ilegales, son muy usados para testeos de red, como IDS, análisis de tráfico de red, etc, etc.
Muchos sniffers están tanto para linux como para Win32. De entr ellos Ethereal, Snort (modo sniffer), TCPdump (windump para windows), el paquete de utilidades dsniff, ettercap, etc, etc. El de más fácil uso de los que comento es el Ethereal por cuanto tiene una interface gráfica que ayuda mucho a su uso. Tiene tambïén un pseudo lenguaje de filtro para concretar mejor el objeto del "esnifado" que es igual al usado por TCPdump y windump.. y en general los basados en la libreria pcap.
Un manual que escribí sobre estos filtros y sobre TCPdump/windump lo puedes encontrar:
http://www.nautopia.net/archives/es/...mp_windump.php
También escribí un artículo sobre detección de sniffers (linux/windows) en red conmutadas y no conmutadas:
http://www.nautopia.net/archives/es/...n_sniffers.php
Respecto a cual es mejor. Pues tu mismo, prueba varios y te quedas con el de más fácil uso, más flexible y potente y que puedas filtrar. yo prefiero siempre Tcpdump y windump. Si no los has usado nunca: Ethereal, que además es capaz de importar ficheros de trazas generados por Snort, Windump, TCPdump, Snoop, Microsoft Network Monitor, y EtherPeek, beneficiándote así de la interpretación gráfica y más "humana" que hace Ethereal de los datos esnifados.