数据包简要说明

以太网层 14个字节 mac (6*2) + type (2) = 14
ip头部 20个字节
tcp头部 20个字节
实际数据 偏移 54 十六进制 0x38(大多数情况,也不一定是这个,具体字段可以看下面图片)

tcpdump详解 - 图1
tcpdump详解 - 图2
tcpdump详解 - 图3

基本过滤

host

  1. tcpdump -XXvvvnn -s0 -c1 [src dst] host 192.168.1.1

port

  1. tcpdump -XXvvvnn -s0 -c1 [src dst] port 80

net

  1. tcpdump -XXvvvnn -s0 -c1 [src dst] net 192.168

ip/tcp/udp

  1. tcpdump -XXvvvnn -s0 -c1 [ip tcp udp]

表达式

以上过滤条件和用表达式连接
and or not
&& || !

高级过滤

通过分析包内容,或者协议头,设置特征从而过滤其中内容

抓取q* 协议包

  1. tcpdump -XXvvvnn -s0 -c1 'tcp[38:2]=0x3232'

大小过滤

  1. tcpdump -XXvvvnn -s0 -c1 'ip[2:2]>600'

GET 过滤

有些版本不支持这种

  1. tcpdump -XXvvvnn -s0 -c1 'tcp[(tcp[12>>2):4]=0x47455420'

保存文件Wireshark分析

  1. tcpdump -s 0 -w /sdcard/test.cap

注意

上面 -c 参数为 1 仅为测试,如果抓多个包自行修改

参考
tcpdump 详解

补充 Wireshark

某信通过版本过滤数据

tcp[21:2] == f1:03

tcp[21:2] == f103

tcp数据从第20个字节开始

flags

[S]:SYN同步标识
[.]:.表示ACK确认标识
[S.]:SYN同步标识,以及确认[S]的ACK
[P.]:PSH,push推送,数据传输
[R.]:RST,连接重置
[F.]:FIN结束连接
[DF]:Don’t Fragment(不要碎裂),当DF=0时,表示允许分片,一般-v时才有这个标识
[FP.]:标记FIN、PUSH、ACK组合,这样做是为了提升网络效率,减少数据来回确认等

14:43:12.525977 IP 210.128.243.93.443 > 10.222.11.198.40162: Flags [.], seq 3430:4670, ack 1847, win 65535, length 1240
时间 源地址和端口 目的地址和端口 标志 seq号3430是始值,4670结束值 确认号1847已收到 滑动窗口 数据大小seq 4670-3430