Tcpdump

历史

它最初由范·雅各布森，Craig Leres和Steven McCanne在1987年于劳伦斯伯克利国家实验室担任研究小组时写成，当时，20世纪90年代末，有许多不同的操作系统，和无数的补丁，没有很好地协调分布的tcpdump版本。于是Michael Richardson (mcr)和Bill Fenner在1999年创建了www.tcpdump.org。

用途

tcpdump能够分析网络行为，性能和应用产生或接收网络流量。它支持针对网络层、协议、主机、网络或端口的过滤，并提供and、or、not等逻辑语句来帮助你去掉无用的信息，从而使用户能够进一步找出问题的根源。
也可以使用tcpdump 的实现特定目的，例如在路由器和网关之间拦截并显示其他用户或计算机通信。通过 tcpdump 分析非加密的流量，如Telnet或HTTP的数据包，查看登录的用户名、密码、网址、正在浏览的网站内容，或任何其他信息。因此系统中存在网络分析工具主要不是对本机安全的威胁，而是对网络上的其他计算机的安全存在威胁。
有很多用户喜欢使用柏克莱数据包过滤器来限制tcpdump 产生的数据包数量，这样BPF会只把“感兴趣”的数据包到上层软件，可以避免从操作系统 内核向用户态复制其他数据包，降低抓包的CPU的负担以及所需的缓冲区空间，从而减少丢包率。

权限要求

一些类Unix操作系统，用户有必须拥有超级用户权限方可使用tcpdump，因为在这些系统需要使用超级用户权限将网络界面设置为混杂模式。然而，可以通过使用-Z 选项在完成嗅探之后站即下降到一个特定的非特权用户的权限。在某一些类Unix操作系统，数据包嗅探机制可以配置为允许非特权用户可以使用它，如果做到这一点，就不需要超级用户权限。