Tcpdump抓包
Tcpdump抓包
参考链接https://linux.cn/article-10191-1.html
-
首先先用 sudo tcpdump -D来列出可以抓包的网络接口,其中特
殊接口-any可用于抓取所有活动的网络接口的数据包。
-
可以用命令sudo tcpdump -i any对any接口进行抓包。(按ctrl c
停止抓包)。
- 用命令sudo tcpdump -i any -c N
N为抓包的数量,用此命令可以用于限制tcpdump抓包的数量。
在上面实例中,tcpdump默认是将ip地址和端口号解析为对应的接口名以及服务协议名称。而在网络故障排查中,使用ip地址和端口号更便于分析问题;
-
用命令sudo tcpdump -i any -c5 -nn
用-n选项显示ip地址,-nn选项显示端口号
- 理解抓取的报文
如
02:55:59.132801 IP 180.149.135.236.443 > 192.168.206.132.41000: Flags [P.], seq 2089184909:2089185211, ack 1391525977, win 64240, length 302
第一个字段02:55:59.132801 是该数据报文被抓取的系统本地时间戳。
IP是网络层协议类型。180.149.135.236.443是源ip地址和端口号,紧跟在其后的“192.168.206.132.41000”的是目的ip地址和其端口号。
在源 IP 和目的 IP 之后,可以看到是 TCP 报文标记段 Flags [P.]
。
接下来是该数据包中数据的序列号。对于抓取的第一个数据包,该字段值是一个绝对数字,后续包使用相对数值,以便更容易查询跟踪。例如此处为seq 2089184909:2089185211代表该数据包包含该数据流的第196到568字节。
接下来是 ack 值:ack 1391525977。该数据包是数据发送方,ack 值为 1391525977。在数据接收方,该字段代表数据流上的下一个预期字节数据,例如,该数据流中下一个数据包的 ack 值应该是 2089185211。
接下来字段是接收窗口大小 win 64240,它表示接收缓冲区中可用的字节数,后跟 TCP 选项如 MSS(最大段大小)或者窗口比例值。
最后,length 302 代表数据包有效载荷字节长度。这个长度和 seq 序列号中字节数值长度是不一样的。