Linux命令:tcpdump详解

前言:

tcpdump 是一款灵活、功能强大的抓包工具,能有效地帮助排查网络故障问题。

1 安装

1.1 查看是否安装

2.2 使用工具安装

sudo yum install -y tcpdump

2 用法详解

2.1 获取网卡的列表

tcpdump -D


2.2 参数:-i

2.2.1 抓取en0的数据

tcpdump -i en0

2.2.2 抓取所有网卡的数据

tcpdump -i any

2.3 参数-c

限制抓包数量,例如只抓取5个包

tcpdump -i en0 -c 5

2.4 参数-n和-nn

2.4.1 参数-n用于显示ip

2.4.2 参数-nn用于显示ip和端口

2.5 筛选协议,如tcp,icmp

tcpdump -i en0 -c 5 -n icmp

2.6 筛选host

tcpdump -i any -c 5 -nn host 127.0.0.1

2.7 筛选port

tcpdump -i any -c 5 -nn port 3306

2.8 筛选源ip

tcpdump -i any -c 5 -nn src 127.0.0.1

2.9 筛选目的ip

tcpdump -i any -c 5 -nn dst 127.0.0.1

2.10 多条件筛选(or或者and)

tcpdump -i any -c 5 -nn dst 127.0.0.1 and port 3306

tcpdump -i any -c5 -nn "port 80 and (src 192.168.122.98 or src 54.204.39.132)"

该例子中我们只抓取了来自源 IP 为 192.168.122.98 或者 54.204.39.132 的 HTTP (端口号80)的数据包。使用该方法就很容易抓取到数据流中交互双方的数据包了。

2.10 参数-w和-r

保存抓包数据

tcpdump -i any -c10 -nn -w webserver.pcap port 80

tcpdump -r webserver.pcap

3 报文详解

tcpdump 抓取的 TCP 报文看起来如下:

08:41:13.729687 IP 192.168.64.28.22 > 192.168.64.1.41916: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 372

具体的字段根据不同的报文类型会有不同,但上面这个例子是一般的格式形式。

第一个字段 08:41:13.729687 是该数据报文被抓取的系统本地时间戳。

然后, IP 是网络层协议类型,这里是 IPv4 ,如果是 IPv6 协议,该字段值是 IP6 。

192.168.64.28.22 是源 ip 地址和端口号,紧跟其后的是目的 ip 地址和其端口号,这里是 192.168.64.1.41916 。

在源 IP 和目的 IP 之后,可以看到是 TCP 报文标记段 Flags [P.] 。该字段通常取值如下:

该字段也可以是这些值的组合,例如 [S.] 代表 SYN-ACK 数据包。

接下来是该数据包中数据的序列号。对于抓取的第一个数据包,该字段值是一个绝对数字,后续包使用相对数值,以便更容易查询跟踪。例如此处 seq 196:568 代表该数据包包含该数据流的第 196 到 568 字节。

接下来是 ack 值: ack 1 。该数据包是数据发送方,ack 值为 1。在数据接收方,该字段代表数据流上的下一个预期字节数据,例如,该数据流中下一个数据包的 ack 值应该是 568。

接下来字段是接收窗口大小 win 309 ,它表示接收缓冲区中可用的字节数,后跟 TCP 选项如 MSS(最大段大小)或者窗口比例值。更详尽的 TCP 协议内容请参考 Transmission Control Protocol(TCP) Parameters 。

最后, length 372 代表数据包有效载荷字节长度。这个长度和 seq 序列号中字节数值长度是不一样的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值