MAC上使用Wireshark常见问题

文章目录

介绍

简单记录Wireshark在日常使用过程中的遇到的小case。

正文

Wireshark相较于tcpdump使用较为简单,交互也更为友好。

点击Start即可启动抓包

启动异常-Permission denied

如果是第一次启动Wireshark,经常会遇到以下提示:

复制代码
You do not have permission to capture on device "lo0". ((cannot open BPF device) /dev/bpf0: Permission denied)

简单翻译就是用户态的进程没有权限读取数据链路层的数据包;

关于BPF,一种常见的数据包过滤器,通过过滤接口方便用户态进程从内核中复制想要的数据包。

解决方法

通过sudo chmod授权读取权限即可,这里方便演示所以就打开了所有bpf设备的读取权限,其实可以针对性的授予权限。

复制代码
sudo chmod o+r /dev/bpf*

过滤协议和地址

就像前文介绍的,说到底就是传入过滤表达式给过滤器(BPF)前往内核复制数据包到用户态,方便查看;

所以除了常见的查看指定地址、端口以外还需要指定协议(日常查看最多的就是TCP了):

复制代码
ip.addr == 127.0.0.1 and tcp.port==61578

另外查看端口的方式是点击某一条数据后点击Transmission Control Protocol即可查看协议细节(当然没有IP,原因请看下文);

这里说个题外话,日常工作中(包括我身边)有很多人无意识脱口而出"TCP四元组",其实这个说法仅存在简体互联网上。我曾经还和人争论过(刚毕业买过TCP/IP上下两册翻过,没见过四元组这个说法,但是同事坚持自己四元组的说法,最后谁也没说服谁),后来查阅TCP协议、文档确实不存在四元组的说法。TCP是传输层协议,前32位(包括16位源端口、16位目的端口)确切的说在传输层并不包含IP的解析,IP是下层协议解析后带上的,和TCP本身没有关系。由这点就可以看出,看资料还是看英文原版比较好。

指定源地址和目的地址

很多时候,未必清楚端口(是的,笔者在排查中间件相关问题时,业务方找来时往往业务服务端口和连接服务的端口没人知道,时常被人反驳"我怎么知道,你搞基础架构的你应该更清楚啊",苦涩的笑容溢于言表),所以这时,最好的选择就是通过本地IP和目的服务IP进行过滤:

复制代码
ip.src== 127.0.0.1 and ip.dst== 127.0.0.1

调整 time format

默认时间显示的是耗时,而其实很多时候还仅需要看异常周期内的数据包,所以时间格式需要调整方便 锁定时间窗口;排查时间窗口内的数据包是否存在异常:

相关推荐
last_zhiyin几秒前
Oracle sql tuning guide 翻译 Part 4-2 --- 连接方法(Join Methods)
数据库·sql
念越2 分钟前
MySQL表设计全解析:三大范式与表关系设计
数据库·mysql
倔强的石头_20 分钟前
国产化时序替换落地指南:用金仓数据库管好海量时序数据
数据库
java干货21 分钟前
Slave 的 SQL 线程为什么追不上 Master?
数据库·sql
was1721 小时前
mac 下文件及文本命令行检索方案
macos·命令行工具·文本检索·文件检索
紫金桥软件1 小时前
【紫金桥跨平台实时数据库】的技术架构与工程实践
数据库·架构·自动化·跨平台
逍遥德1 小时前
如何学编程之理论篇.03.如何做数据库表结构设计?
开发语言·数据库·性能优化·代码规范·代码复审
Hello eveybody1 小时前
如何将十进制转为二进制、八进制、十六进制?
前端·javascript·数据库
a285282 小时前
最新SQL Server 2022保姆级安装教程【附安装包】
数据库·性能优化
小刘的大模型笔记2 小时前
向量数据库深度剖析:核心优劣势 + 适用场景,避开 RAG 落地的选型坑
数据库·人工智能·深度学习·机器学习