前言
最近在学习rtmp协议,虽然文档上对rtmp的握手过程和协议结构都讲得很清楚,但不看到实实在在的数据,心里还是没有底啊,所以今天尝试抓个包看看,因为我们正在做一个直播项目,所以想抓主播或者观众的包都是很容易的哈。
WireShark + XQuartz
升级到最新版的wireShark(Version 2.2.3)
升级到最新版的XQuartz(2.7.11)
监听手机网卡
获取到手机的udid,然后再命令行执行下面的命令:
rvictl -s udid |
然后wireshark首页网卡列表会显示当前手机的网卡,如下图:
双击进入,界面上应该就有手机当前的一些网络包了
添加rtmp过滤器
因为我们只需要看rtmp相关数据包,所以我们新建一个过滤器,wireshark提供了方便的入口
点击上图右上角的表达式按钮,进入新建过滤器界面
然后搜索rtmpt 这个要多一个t 因为rtmp字段被另外一个协议占用了。
然后选中当前搜索结果,点击OK,过滤器就添加好了。
开始抓包
一切准备完毕,现在可以开始抓包了。
主播端
新建一个直播间,正常直播就可以了。下面是主播端的抓包数据
可以清楚的看到握手的过程和每个数据包。
观众端
点开一个正在直播的直播间。
可以看到,观众在握手成功后,向服务器发送了个play的指令。这也解惑了我之前的观众端如何开始拉流的疑问。
只要愿意动手,抓包原来很简单。
via.http://llyblog.com/2017/03/21/%E4%BD%BF%E7%94%A8WireShark%E6%8A%93%E5%8F%96RTMP%E5%8D%8F%E8%AE%AE%E5%8C%85/