这 tcpdump
command 是一个 Linux 实用程序,它允许用户捕获传入和传出系统的网络数据包。 在本文中,我们将学习如何使用以下方法提取和检查网络数据包 tcpdump
命令。
虽然不太可能,但可能会发生一个系统可能没有 tcpdump
安装。 在这种情况下,任何 Ubuntu/Debian 用户都可以输入以下命令:
sudo apt install tcpdump
其他 Linux 用户可以安装它,使用他们的标准安装命令,然后 tcpdump
. 此外,网络数据有时包含机密信息,因此,要访问数据包,我们需要root 权限。 它可以通过 'sudo -s'
或者 'sudo su'
. 如果你想了解更多关于这里的文章 sudo.
tcpdump 命令用例
让我们深入了解不同的用例和实用性。
1.使用tcpdump查找所有网络接口
必须注意的是,任何进入或退出系统的数据包都需要通过网络接口。 要获取所有可用网络接口的列表,我们使用以下命令:
tcpdump -D
除了网络接口的名称外,该命令还提供状态。
2.使用tcpdump命令捕获所有网络数据包
正如上面的输出中提到的, 'any'
可用于捕获通过所有网络接口的数据包。 这可以通过使用接口选项来完成 '-i'
.
tcpdump -i any
上面显示的输出缺少每个数据包的详细信息。 要详细了解每个数据包,我们可以使用 '-v'
选项。
'tcpdump'
是一个永无止境的命令。 我们可能会遇到需要强制停止输出的时候,可以通过按 'CTRL + C'
.
停止打印数据包后,我们提供了一些与当前数据相关的统计信息 tcpdump
会议。 它看起来像这样:
提供的信息是:
- 数据包数量 捕获和处理 在当前
tcpdump
会议。 - 数据包数量 已收到 通过过滤器,但未被捕获。 这主要取决于操作系统的配置。
- 数据包数量 掉线 由内核。 这通常发生在缓冲区中保存了太多数据包时。 这会导致缓冲区溢出,从而导致数据包丢失。
3.捕获特定数量的数据包
tcpdump
提供在结束数据包捕获会话之前仅捕获特定数量的数据包的规定。 它可以使用 '-c'
选项。
tcpdump -c 5 -i any
4. 使用 tcpdump 捕获协议特定的数据包
为了捕获属于特定网络协议的数据包,我们在末尾附加协议名称。
tcpdump -c 5 -i any tcp
该命令显示的输出可能不是每个 Linux 用户都能理解的。 让我们尝试对以下数据包进行说明。
20:13:58.208219 IP6 linuxfordevices.32906 > del03s14-in-x0e.1e100.net.https: Flags [.], seq 2348951132:2348952480, ack 3385291322, win 1564, options [nop,nop,TS val 1855483575 ecr 3512250283], length 1348
- 20:13:58.208219 – 这 时间戳 存储在分组数据报中。
- IP6 – 这 IP版本 正在使用。 在这里,它是 IPv6。
- linuxfordevices.32906 – 这 源地址名称 数据包后跟端口号。 (我们的系统)
- del03s14-in-x0e.1e100.net.https – 这 目的地地址名称 的数据包。
- 旗帜 [.] – 该标志定义了 数据包类型. 在示例中
[.]
指一个确认包。 - seq 2348951132:2348952480 – 序列号决定 数据包字节索引. 上面的数据包开始于 2348951132 并结束于 2348952480.
- 确认 3385291322 – 这 确认号. 它用于管理在单个连接中交换的多个数据包。
- 赢1564 – 这 窗口大小 告诉接收缓冲区中的可用字节。
- 选项 [nop,nop,TS val 1855483575 ecr 3512250283] —— 协议相关 选项
- 长度 1348 – 这 长度 数据包在 字节.
5. 捕获特定于主机的数据包
使用 'host'
关键字与 'tcpdump'
,我们可以过滤与特定主机系统交换的所有数据包。
tcpdump -nn -c 5 -i any host 45.79.77.230
指某东西的用途 '-nn'
, 将主机名转换为其数字 Internet 地址。 命令中传递的 Internet 地址为 www.linuxfordevices.com。
注意:仅当存在具有特定 IP 地址的实际网络连接时,数据包才会出现。
如果我们只想捕获来自特定主机的那些包,那么我们使用 'src'
(来源)后跟地址。
tcpdump -nn -c 5 -i any src 45.79.77.230
对于特定于目的地的查询, 'dst'
用来。
tcpdump -nn -c 5 -i any dst 45.79.77.230
6. 使用 tcpdump 命令捕获特定端口上的数据包
每个网络连接都通过计算机系统的特定端口进行维护。 在接收网络数据包时,端口号指定应该由哪个计算机应用程序获取它。
为了抓包,通过某个端口号过滤,我们使用 'port'
关键词。
tcpdump -i any port 8000
如果我们不确定确切的端口号,我们总是可以通过以下方式使用一系列端口号:
tcpdump -i any portrange 8000-9000
7.使用tcpdump命令读写数据包到文件
比方说,我们希望捕获当前的网络流量,但稍后再对其进行分析。 如果我们将数据包保存到文件中,则可以完成此任务。 这可以通过使用来完成 '-w'
代表“写”的选项:
tcpdump -c 5 -w network_file.pcap -i any
抓包文件的扩展名是 .pcap. 以后可以使用 '-r'
代表“阅读”的选项。
tcpdump -r network_file.pcap
8. 检查与网站的连接
如果我们需要检查我们是否连接到一个域名,那么我们可以使用以下命令:
tcpdump -XX -i any | grep journaldev.com
这 '-XX'
选项将数据包中的值转换为 ASCII 和十六进制值。 由于域名差异,这可能不适用于每个 URL。
管道 ('|')
后面的符号 tcpdump
命令用于将输出数据包传递到 grep
命令。 'grep'
是Linux中的一个搜索工具,这里用来搜索数据包中的’journaldev.com’。 有关 grep 的更多信息。
结论
正如我们所看到的, tcpdump
当我们打算调试网络相关问题时,命令会派上用场。 要了解有关该命令的更多信息,我们可以通过运行来访问手册页 'man tcpdump'
在终端。 我们希望这篇文章符合读者的标准。 如有任何疑问或批评,请随时在下面发表评论。