tcpdump命令详解

概述

  • TcpDump是Linux中强大的网络数据采集分析工具之一。
  • 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。
  • 它支持针对网络层、协议、主机、网络或端口的过滤,并提供not、and、or等逻辑语句来帮助你去掉无用的信息。
  • 普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。
  • tcpdump的总的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数

tcpdump 语法格式

在centos7中,通过man tcpdump命令查看在这里插入图片描述

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX\#] [-B buffer_size ]
        [ -c count]
        [ -C file_size ] [-G rotate_seconds ] [ -F file ]
        [ -i interface ] [ -j tstamp_type ] [-m module ] [-M secret]
        [ --number ] [ -Q|-P in|out|inout ]
        [ -r file ] [-V file ] [ -s snaplen ] [ -T type ] [ -w file ]
        [ -W filecount ]
        [ -E spi@ipaddr algo:secret,... ]
        [ -y datalinktype ] [ -z postroate-command ] [ -Z user ]
        [ --time-stamp-precision=tstamp_precision ]
        [ --immediate-mode ] [ --version ]
        [ expression ]

相关参数详解

-a 将网络地址和广播地址转变成名字
-A 以ASCII格式打印出所有分组,并将链路层的头最小化
-b 数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c 指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d 将匹配信息包的代码以人们能够理解的汇编格式输出
-dd 将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D 打印系统中所有可以监控的网络接口
-e 在输出行打印出数据链路层的头部信息
-f 将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F 从指定的文件中读取表达式,忽略其他的表达式
-i 指定监听网络接口
-l 使标准输出变为缓冲形式,可以数据导出到文件
-L 列出网络接口已知的数据链路
-n 不把网络地址转换为名字
-N 不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn 不进行端口名称的转换
-P 不将网络接口设置为混杂模式
-q 快速输出,即只输出较少的协议信息
-r 从指定的文件中读取数据,一般是-w保存的文件
-w 将捕获到的信息保存到文件中,且不分析和打印在屏幕
-s 从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S 将tcp的序列号以绝对值形式输出,而不是相对值
-T 将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t 在输出的每一行不打印时间戳
-tt 在每一行中输出非格式化的时间戳
-ttt 输出本行和前面以后之间的时间差
-tttt 在每一行中输出data处理的默认格式的时间戳
-u 输出未解码的NFS句柄
-v 输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv输出相信的保报文信息

过滤类型关键字

tcpdump过滤表达式大体可以分成三种过滤条件,“类型”、“方向”和“协议”

类型

host, net, port, portrange
例如:host 14.110.104.254 , net 128.3, port 20, portrange ‘6000-6008’

方向

src, dst, src or dst, src and dst
例如:src 14.110.104.254 , dst 14.110.104.254

协议

tcp, udp , icmp,ARP 等,若未给定协议类型,则匹配所有可能的类型

使用实例

打印出系统可以监控的网络接口
sudo tcpdump -D
# 在屏幕打印出系统可以监控的网络接口

在这里插入图片描述

捕获所有网络接口的数据包
sudo tcpdump -i any
# 该命令将捕获所有网络端口的数据包,并实时显示

在这里插入图片描述

按照协议过滤
sudo tcpdump -i enss33 arp
# 监听ens33接口中的arp协议信息

在这里插入图片描述

根据IP地址过滤
tcpdump -i ens33 host 39.156.66.10

在这里插入图片描述
39.156.66.10是指向baidu.com的IP,通过在另一窗口ping baidu.com得到
在这里插入图片描述

根据端口过滤
tcpdump -i ens33 -c 10 port 22
# -c 收到指定数据包后停止,过滤22端口数据

在这里插入图片描述

根据源IP和目标IP过滤

前提:另起一个窗口并,ping baidu.com

tcpdump -i ens33 src baidu.com

在这里插入图片描述

tcpdump -i ens33 src baidu.com and dst 192.168.59.144

在这里插入图片描述

and / or 的用法
tcpdump -i ens33 -c 10 'host 192.168.59.144 and (192.168.59.1 or 192.168.48.1)'
# 抓取主机192.168.59.144和主机192.168.59.1 或者 主机192.168.48.1之间的通信

在这里插入图片描述

not关键字
tcpdump -i ens33 -c 10 'host 192.168.59.144 and not port 22'

在这里插入图片描述

tcpdump -i ens33 -c 10 'host 192.168.59.144 and ! port 22'

在这里插入图片描述

将捕获内容输出到文件
tcpdump -i ens33 src 192.168.59.144 and dst 192.168.59.1 -w tcp.pcap
# -w 将捕获到的信息保存到文件中,且不分析和打印在屏幕

在这里插入图片描述
保存的.pcap文件需要使用wireshark工具打开。

安装tcpdump

如果系统中找不到tcpdum命令,可以使用yum install tcpdump命令进行安装;或者在安装系统时选择安装系统调试工具
在这里插入图片描述

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
tcpdump 是一款常用的网络抓包工具,可以捕获网络数据包并将其打印出来,常用于网络故障排除、网络性能分析等。以下是 tcpdump 命令的详解: 1. 命令格式 ``` tcpdump [选项] [过滤表达式] ``` 2. 常用选项 - -i:指定抓包的网络接口,如 -i eth0; - -c:指定抓包的数量,如 -c 100,表示只抓取前 100 个数据包; - -n:不将 IP 地址和端口号转换为域名和服务名称; - -X:以十六进制和 ASCII 码形式显示数据包的内容; - -w:将抓包结果保存到文件中,如 -w capture.pcap; - -r:读取保存到文件中的抓包结果,如 -r capture.pcap。 3. 过滤表达式 过滤表达式用于过滤需要捕获的数据包,常用的过滤表达式包括: - host:指定 IP 地址或域名; - port:指定端口号; - tcp、udp、icmp:指定协议类型; - src、dst:指定源IP地址或目的IP地址。 以下是一些常用的过滤表达式示例: - 捕获所有数据包:tcpdump -i eth0; - 捕获指定协议类型的数据包:tcpdump -i eth0 icmp; - 捕获指定 IP 地址的数据包:tcpdump -i eth0 host 192.168.1.1; - 捕获指定端口号的数据包:tcpdump -i eth0 port 80; - 捕获指定源IP地址和目的IP地址的数据包:tcpdump -i eth0 src 192.168.1.1 and dst 192.168.1.2。 以上就是 tcpdump 命令的详解。在实际使用中,我们可以根据需要结合选项和过滤表达式来捕获和分析网络数据包,从而进行网络故障排除和性能优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值