Tcpdump

【tcpdumo】tcpdump的使用

2022-06-28  本文已影响0人  Bogon

我们知道,tcpdump 也是最常用的一个网络分析工具。它基于 libpcap ,利用内核中的 AF_PACKET 套接字,抓取网络接口中传输的网络包;并提供了强大的过滤规则,帮你从大量的网络包中,挑出最想关注的信息。

tcpdump 为你展示了每个网络包的详细细节,这就要求,在使用前,你必须要对网络协议有基本了解。而要了解网络协议的详细设计和实现细节, RFC 当然是最权威的资料。

不过,RFC 的内容,对初学者来说可能并不友好。如果你对网络协议还不太了解,推荐你去学《TCP/IP 详解》,特别是第一卷的 TCP/IP 协议族。这是每个程序员都要掌握的核心基础知识。

回到 tcpdump 工具本身,它的基本使用方法,还是比较简单的,也就是 tcpdump [选项] [过滤表达式]

当然,选项和表达式的外面都加了中括号,表明它们都是可选的。

提示:在 Linux 工具中,如果你在文档中看到,选项放在中括号里,就说明这是一个可选选项。这时候就要留意一下,这些选项是不是有默认值。

查看 tcpdump 的 手册 ,以及 pcap-filter 的手册,你会发现,tcpdump 提供了大量的选项以及各式各样的过滤表达式。

不过不要担心,只需要掌握一些常用选项和过滤表达式,就可以满足大部分场景的需要了。

为了帮你更快上手 tcpdump 的使用,我在这里也帮你整理了一些最常见的用法,并且绘制成了表格,你可以参考使用。

首先,来看一下常用的几个选项。

在上面的 ping 案例中,我们用过 -nn 选项,表示不用对 IP 地址和端口号进行名称解析。其他常用选项,我用下面这张表格来解释。

接下来,我们再来看常用的过滤表达式。

我们使用  tcpdump -nn udp port 53 or host 35.190.27.188 ,表示抓取 DNS 协议的请求和响应包,以及源地址或目的地址为 35.190.27.188 的包。

其他常用的过滤选项,我也整理成了下面这个表格。

最后,再次强调 tcpdump 的输出格式,我在前面已经介绍了它的基本格式:

时间戳 协议 源地址. 源端口 > 目的地址. 目的端口 网络包详细信息

其中,网络包的详细信息取决于协议,不同协议展示的格式也不同。所以,更详细的使用方法,还是需要你去查询 tcpdump 的 man 手册(执行 man tcpdump 也可以得到)。

不过,讲了这么多,你应该也发现了,tcpdump 虽然功能强大,可是输出格式却并不直观。特别是,当系统中网络包数比较多(比如 PPS 超过几千)的时候,你想从 tcpdump 抓取的网络包中分析问题,实在不容易。

对比之下,Wireshark 则通过图形界面,以及一系列的汇总分析工具,提供了更友好的使用界面,让你可以用更快的速度,摆平网络性能问题。

上一篇 下一篇

猜你喜欢

热点阅读