问题引入
tcpdump抓包后wireshark无法打开(2开头版本的wireshark不能打开,4开头的wireshark可以打开)。
安装最新的4开头的wireshark后可以打开抓包。
使用的抓包命令是tcpdump -i any -w fff.pcap
。
原因
2开头版本的wireshark不支持解析链路层数据类型为linux cooked v2的抓包。
什么是Linux cooked(Linux cooked socket layer)
是Linux内核为了支持在非原始套接字(non-raw sockets)上捕获数据包而引入的一种数据链路层表示,是一种伪协议。
tcpdump -i any命令用来捕获所有网卡上的数据包,但是不同网卡可能具有不同的链路层类型(如eth、ppp),为了使抓包能在所有网卡上统一进行,linux内核会将捕获的数据包的以太网头替换为linux cooked capture头部。
Linux cooked分为v1和v2版本,版本区别有空再学习。
解决
1、安装最新的wireshark
2、抓包时使用-i命令指定网卡,如tcpdump -i ens33 -w fff.pcap
扩展
tcpdump支持哪些链路层数据类型,常见的有以下五种
- Ethernet(以太网)
- IEEE 802.11(无线局域网)
- PPP(点对点协议)
- Raw IP(原始IP)
- Linux SLL(Linux cooked socket layer)