logo头像

知其然更要知其所以然

tcpdump工具使用教程第一篇

本文于 387 天之前发表,文中内容可能已经过时。

概述

Tcpdump作为网络数据包分析的命令行工具,其功能丰富,适用场景多样化,是运维、安全工作人员不可或缺的工具。下面,我们将会分三片文章,仔细讲解Tcpdump使用教程。

目录

  • 介绍
  • 可用选项
  • 接口清单
  • 默认工作
  • 捕获特定接口的流量
  • 包数
  • 详细模式
  • 以ASCII打印每个数据包
  • 不转换地址
  • 端口过滤器
  • 主机过滤器
  • 每个数据包的标题
  • TCP序列号
  • 封包过滤
  • 包方向
  • 现场人数计数
  • 读写文件
  • 快照长度
  • 转储模式

介绍

Tcpdump最初由劳伦斯伯克利实验室网络研究小组的Van Jacobson,Sally Floyd,Vern Paxson和Steven McCanne于1988年开发。

它允许用户显示通过网络接收和传输的TCP / IP和其他数据包。它适用于大多数基于Linux的操作系统。它使用libpcap库捕获数据包,该库是基于C / C ++的库。Tcpdump也具有Windows等效项。它被称为windump。它为其库使用winpcap。

命令行参数说明

我们可以使用以下参数来打印tcpdump和libpcap版本字符串。另外,我们可以打印一条使用情况消息,其中显示所有可用选项。

1
2
tcpdump -h
tcpdump --help

网络接口说明

接口是计算机和网络之间的互连点。我们可以使用以下参数来打印系统上可用的网络接口列表。它还可以检测tcpdump可以捕获数据包的接口。为每个网络接口分配一个数字。该数字可与“ -i”参数一起使用,以捕获该特定接口上的数据包。

在某些情况下,我们正在使用的计算机无法列出正在运行的网络接口。这可能是兼容性问题,也可能是某些其他因素阻碍了某些特定命令的执行(ifconfig -a)。

1
2
tcpdump –list-interface
tcpdump -D

默认行为

在继续使用此网络流量捕获工具的高级选项和参数之前,我们首先使用默认配置进行捕获。

script
1
tcpdump

指定网卡接口

我们将使用称为“ eth0”的以太网捕获流量。这种类型的接口通常通过5类电缆连接到网络。

要选择此接口,我们需要使用-i参数。

script
1
tcpdump -i eth0

网络包

Tcpdump具有一些惊人的功能,我们可以使用这些功能来提高流量分析的效率。我们可以使用各种参数来访问其中一些功能。我们使用-c参数,它将帮助我们捕获所需的确切数据量并显示这些数据。它完善了我们捕获的数据量。

script
1
tcpdump -i eth0 -c10

详细信息

详细模式提供有关流量扫描的信息。例如,生存时间(TTL),数据标识,总长度和IP数据包中的可用选项。它启用了其他数据包完整性检查,例如验证IP和ICMP标头。

要从扫描中获取更多信息,我们需要使用-v参数。

script
1
tcpdump -i eth0 -c 5 -v

以ASCII打印每个数据包

ASCII是美国信息交换标准代码的缩写。它是电子通信的字符编码标准。ASCII码代表计算机和其他设备中的文本。大多数现代字符编码技术都基于ASCII码。要以ASCII码打印每个数据包,我们需要使用-A参数。

script
1
tcpdump -i eth0 -c 5 -A

不转换地址

借助tcpdump -nn参数,我们可以看到没有任何过滤器的实际后台地址。无需任何过滤器,此功能可以帮助我们更好地了解数据流量。

script
1
2
tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -nn

过滤端口规则

端口过滤器可帮助我们分析特定端口的数据流量。它有助于我们监视TCP / UDP或其他基于端口的网络协议的目标端口。

script
1
tcpdump -i eth0 -c 5 -v port 80

指定IP

该过滤器帮助我们分析特定主机的数据流量。它还使我们能够坚持特定的主机,从而进一步使我们的分析更好。也可以应用多个参数,例如-v,-c,-A,-n,以获得有关该主机的额外信息。

script
1
tcpdump host 104.28.6.89 -c10 -A -n

每个数据包的标题

标题包含有关单个数据包所携带数据的所有指令。这些指令可以是数据包长度,广告,同步,ASCII码,十六进制值等。我们可以使用-X参数在数据包上查看此信息。

script
1
tcpdump -i eth0 -c 3 -X

TCP序列号

TCP连接中的所有字节均具有序列号,该序列号是随机选择的初始序列号(ISN)。SYN数据包具有一个序列号,因此数据将从ISN + 1开始。序列号是TCP数据包中向前发送的数据的字节数。-S参数用于查看捕获的数据包的这些数据段。

script
1
tcpdump -i eth0 -nnXS

网络数据包过滤

tcpdump提供的另一个功能是数据包筛选。这有助于我们在扫描中查看特定数据包上的包结果。如果我们想在扫描中应用该过滤器,我们只需要在扫描中添加所需的数据包即可。

script
1
tcpdump -i eth0 icmp -c 10

包方向

对于我们业务中数据流的方向,我们可以使用以下参数:

script
1
tcpdump -i eth0 icmp -c 5 -Q in


要查看我们要发送到服务器的所有请求,可以使用以下(-Q out)参数:

script
1
tcpdump -i eth0 icmp -c 5 -Q out

数据统计

在tcpdump中,我们可以读写.pcap扩展文件。写(-w)允许我们将输出的原始数据包写到标准.pcap扩展文件中。其中,作为读取选项(-r)可帮助我们读取该文件。要在.pcap中写入输出,请执行以下操作:

script
1
tcpdump -i eth0 icmp -c 10 -w file.pcap

要阅读此.pcap文件,请遵循以下步骤:

script
1
tcpdump -r file.pcap

快照长度

快照长度/快照被称为每个数据包的数据字节。默认情况下设置为262144字节。使用tcpdump,我们可以根据需要调整此限制,以更好地了解每个快照长度。-s参数可以帮助我们做到这一点,只需将-s参数和字节长度一起应用即可。

script
1
2
3
4
tcpdump -i eth0 icmp -s10 -c2
tcpdump -i eth0 icmp -s25 -c2
tcpdump -i eth0 icmp -s40 -c2
tcpdump -i eth0 icmp -s45 -c2

转储模式

转储模式具有多个参数,例如-d,-dd,-ddd。其中-d参数将编译后的匹配代码转储到可读输出中,-dd参数将代码作为C程序片段转储。-ddd参数并将代码转储为带有计数的十进制数。要在扫描中查看这些结果,我们需要遵循以下步骤:

script
1
2
3
tcpdump -i eth0 -c 5 -d
tcpdump -i eth0 -c 5 -dd
tcpdump -i eth0 -c 5 -ddd

结语

这是tcpdump工具教程的第一篇,也是入门的一篇,从命令的基本使用角度,描述了tcpdump的使用教程,后续陆续更新其他的两篇教程。

相关文章

tcpdump工具使用教程第二篇
tcpdump工具使用教程第三篇