Linux 网络性能调试工具Tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包头您可以指定哪些数据包被监视哪些控制要显示格式
例如我们要监视所有Ethernet上来往的通信执行下述命令
Tcpdumpi eth
即使是在一个相对平静的网络上也有很多的通信所以我们可能只需要得到我们感兴趣的那些数据包的信息在一般情况下TCP/IP栈只为本地主机接收入站的数据包绑定同时忽略网络上的其它计算机编址(除非您使用的是一台路由器)当运行Linux 网络性能调试工具tcpdump命令时它会将TCP/IP栈设置为promiscuous模式该模式可接收所有的数据包并使其有效显示如果我们关心的只是我们本地主机的通信情况一种方法是使用p参数禁止promiscuous模式还有一种方法就是指定主机名
tcpdump i eth host hostname
此时系统将只对名为hostname的主机的通信数据包进行监视主机名可以是本地主机也可以是网络上的任何一台计算机下面的命令可以读取主机hostname发送的所有数据
tcpdump i eth src host hostname
下面的命令可以监视所有送到主机hostname的数据包
tcpdump i eth dst host hostname
我们还可以监视通过指定网关的数据包
tcpdump i eth gateway Gatewayname
如果你还想监视编址到指定端口的TCP或UDP数据包那么执行以下命令
tcpdump i eth host hostname and port
该命令将显示从每个数据包传出的头和来自主机hostname对端口的编址端口是系统默认的HTTP服务端口号如果我们只需要列出送到端口的数据包用dst port如果我们只希望看到返回端口的数据包用src port