千家信息网

如何理解网络数据包分析工具tcpdump

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,如何理解网络数据包分析工具tcpdump,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言tcpdump是一个用于截取网络分组,并输
千家信息网最后更新 2026年10月31日如何理解网络数据包分析工具tcpdump

如何理解网络数据包分析工具tcpdump,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

前言

tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具;tcpdump 可以支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息

tcpdump语法

Usage: tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]                [ -i interface ] [ -j tstamptype ] [ -M secret ]                [ -Q|-P in|out|inout ]                [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]                [ -W filecount ] [ -y datalinktype ] [ -z command ]                [ -Z user ] [ expression ]

tcpdump语义

抓包选项

     -c:指定要抓取的包数量。     -i interface:指定tcpdump需要监听的接口。默认会抓取第一个网络接口     -n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。     -nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。     -P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。     -s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能             会产生包截断,若出现包截断,:输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包             的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,:从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

输出选项

     -e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。     -q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。     -X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。     -XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。     -v:当分析和打印的时候,产生详细的输出。     -vv:产生比-v更详细的输出。     -vvv:产生比-vv更详细的输出。

其它功能性选项

     -D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。     -F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。     -w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G     time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。     -r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

expression表达式

   ==一个基本的表达式单元格式为"proto dir type ID"==   对于表达式语法,参考 pcap-filter 【pcap-filter - packet filter syntax】   类型 type   host, net, port, portrange   例如:host 192.168.201.128 , net 128.3, port 20, portrange 6000-6008'   目标 dir   src, dst, src or dst, src and dst   协议 proto   tcp, udp , icmp,若未给定协议类型,则匹配所有可能的类型   ==表达式单元之间可以使用操作符" and / && / or / || / not / ! "进行连接,从而组成复杂的条件表达式==。   如"host foo and not port ftp and not port ftp-data",这表示筛选的数据包要满足"主机为foo且端口不是   ftp(端口21)和ftp-data(端口20)的包",常用端口和名字的对应关系可在linux系统中的/etc/service文件中找到。   另外,同样的修饰符可省略,如"tcp dst port ftp or ftp-data or domain"与"tcp dst port ftp or tcp    dst port ftp-data or tcp dst port domain"意义相同,都表示包的协议为tcp且目的端口为ftp或ftp-data   或domain(端口53)。   使用括号"()"可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线""转义为"()",   在需要的时候,还需要包围在引号中。

tcpdump示例

监控指定网络接口的数据包

tcpdump -i eth0

监控指定主机的数据包

tcpdump -i eth0 host 10.0.0.13

监控2个主机的数据包

tcpdump -i eth0 host 10.0.0.11 and host 10.0.0.13

监控1个主机与非1个主机之间的数据包

tcpdump -i eth0 host 10.0.0.11 and not host 10.0.0.13

监控某主个主机发送的数据包

tcpdump -i eth0 src host 10.0.0.11

监控发送到某个主机的数据包

tcpdump -i eth0 dst host 10.0.0.11

监控指定主机和端口的数据包

tcpdump -i eth0 host 10.0.0.11 and port 3306

监控指定网段的数据包,并且只抓取10个数据包

tcpdump -i eth0 -c 10 net 10.0

监控通过网关snup的ftp协议类型的数据包

tcudump 'gateway snup and (port ftp or ftp-data)'

监控ping协议数据包

tcpdump -c 5 -nn -i eth0

监控指定主机的ping协议数据包

tcpdump -c 5 -nn -i eth0 icmp and src 10.0.0.11

监控到本机3306端口的数据包

tcpdump -c 10 -nn -i eth0 tcp dst port 3306

监控完整详细的数据包

tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 3306

tcpdump与mysql

tcpdump命令tcpdump host 10.92.143.15 -tttt -S -nn主机上登陆mysqlmysql -u root -h 10.92.143.15 -p执行exit退出mysql客户端

# 三次握手,其中S代表Syn,.代表Ack,S.代表Syn, Ack

2018-08-19 22:52:42.768100 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [S], seq 864854527, win 14600, options [mss 1460,sackOK,TS val 2246810963 ecr 0,nop,wscale 8], length 02018-08-19 22:52:42.810055 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [S.], seq 4288771247, ack 864854528, win 14480, options [mss 1460,sackOK,TS val 2062159250 ecr 2246810963,nop,wscale 8], length 02018-08-19 22:52:42.810065 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771248, win 58, options [nop,nop,TS val 2246811005 ecr 2062159250], length 0

# 登录校验,传输用户名和密码验证阶段,其中P代表Push,传输数据需要。这里包含登录验证和版本信息等元数据的交换

2018-08-19 22:52:42.852102 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [P.], seq 4288771248:4288771308, ack 864854528, win 57, options [nop,nop,TS val 2062159292 ecr 2246811005], length 602018-08-19 22:52:42.852118 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771308, win 58, options [nop,nop,TS val 2246811047 ecr 2062159292], length 02018-08-19 22:52:42.853251 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [P.], seq 864854528:864854590, ack 4288771308, win 58, options [nop,nop,TS val 2246811048 ecr 2062159292], length 622018-08-19 22:52:42.895198 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854590, win 57, options [nop,nop,TS val 2062159335 ecr 2246811048], length 02018-08-19 22:52:42.895256 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [P.], seq 4288771308:4288771319, ack 864854590, win 57, options [nop,nop,TS val 2062159335 ecr 2246811048], length 112018-08-19 22:52:42.895264 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771319, win 58, options [nop,nop,TS val 2246811090 ecr 2062159335], length 02018-08-19 22:52:42.895312 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [P.], seq 864854590:864854627, ack 4288771319, win 58, options [nop,nop,TS val 2246811090 ecr 2062159335], length 372018-08-19 22:52:42.937268 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854627, win 57, options [nop,nop,TS val 2062159377 ecr 2246811090], length 02018-08-19 22:52:42.937405 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [P.], seq 4288771319:4288771409, ack 864854627, win 57, options [nop,nop,TS val 2062159377 ecr 2246811090], length 902018-08-19 22:52:42.937414 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771409, win 58, options [nop,nop,TS val 2246811132 ecr 2062159377], length 0

# 发送exit;正好5个字符

2018-08-19 22:52:44.366633 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [P.], seq 864854627:864854632, ack 4288771409, win 58, options [nop,nop,TS val 2246812561 ecr 2062159377], length 5# 四次挥手,其中F代表FIN,完成数据发送2018-08-19 22:52:44.366649 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [F.], seq 864854632, ack 4288771409, win 58, options [nop,nop,TS val 2246812561 ecr 2062159377], length 0

## 这个是exit的答复

2018-08-19 22:52:44.408575 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854632, win 57, options [nop,nop,TS val 2062160848 ecr 2246812561], length 02018-08-19 22:52:44.408618 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [.], ack 864854633, win 57, options [nop,nop,TS val 2062160848 ecr 2246812561], length 02018-08-19 22:52:44.408652 IP 10.92.143.15.3306 > 10.119.124.24.45298: Flags [F.], seq 4288771409, ack 864854633, win 57, options [nop,nop,TS val 2062160848 ecr 2246812561], length 02018-08-19 22:52:44.408657 IP 10.119.124.24.45298 > 10.92.143.15.3306: Flags [.], ack 4288771410, win 58, options [nop,nop,TS val 2246812603 ecr 2062160848], length 0

上述数据包交互的图例

  • 通过tcpdump可以精准分析mysql客户端与mysql服务器端的通讯交互详细过程

  • tcp建立连接时为3个握手

  • 断开tcp连接时为4个握手

  • 这个握手是指mysql客户端与mysql服务器端之间的单向请求或回复

  • mysql客户端登陆mysql服务器端分为3个阶段:tcp 3次握手建立tcp连接,基于tcp连接的数据传输,断开tcp连接的4次握手

  • 通过tcpdump可以结合netstat的state去深入分析某些mysql客户端无法连接mysql服务器端的复杂问题

关于如何理解网络数据包分析工具tcpdump问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 输出 主机 监控 端口 网络 分析 表达式 文件 接口 P. 代表 客户 客户端 问题 服务 工具 信息 服务器 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡 互联网属科技 科技企业和互联网企业 互联网科技公司发展 亿策互联网科技 有木互联网科技 互联网 科技服务平台 创业天下互联网科技有限公司 阿里互联网科技公司 港股科技和互联网 深圳市罗太互联网科技有限公司 互联网在线教育科技创业 互联网时代的科技公司 全球科技与互联网公司市值变化 科技互联网行业投资研究 安徽零酒互联网科技有限公司 广西泛欧互联网科技有限公司 10位科技互联网大佬 互联网企业和网络科技有限公司 互联网科技快速发展优美句子 杭州互联网科技公司 深圳卡尔迅互联网科技有限公司怎么样 崇明区互联网教育科技诚信经营 互联网科技革命什么开始 米聚互联网科技南京有限公司排面 链环科技传统企业怎么转型互联网 电子科技大学互联网创业大赛 济南有互联网科技公司吗 元气玛特互联网科技公司是外包吗 互联网科技平台产品运营
0