通过查看IPTV机顶盒的通信数据,学习用于直播的UDP组播协议和用于回看的RTSP/HLS协议的相关知识
本文涉及以下网络知识:
1、端口镜像
2、Windows网卡桥接
3、Wireshark本地、SSH远程抓包
4、UDP组播及IGMP协议
5、RTSP协议及交互过程
6、HLS协议及交互过程
想获取机顶盒的通信数据有以下几种方式:
一、有光猫超密的情况下通过光猫的端口镜像功能
用超密登录光猫,看光猫里是否有“镜像功能”或“远程镜像”
如果光猫有“镜像功能”,将机顶盒连接的光猫端口镜像到光猫另外一个端口,然后此端口接一个电脑用Wireshark就可可以看到机顶盒的通信数据:
将IPTV端口镜像到光猫网口4,网口4接电脑
如果光猫有“远程镜像”,在“宽带抓包”下直接点“开始”即可抓取光猫经过光猫转发的所有数据包,当然也包含IPTV直播源包:
找一台有两个网卡的电脑,将两个网卡桥接,然后将机顶盒串联进网卡1和网卡2,电脑上使用Wireshark抓取任一网卡数据就可获得,注意抓包接口应该选择网卡1或2,选择桥接接口可能抓不到组播数据
三、使用具有端口镜像的交换机(和用光猫的镜像端口类似)四、使用配置了桥接接口的OpenWrt路由,将机顶盒串联进桥接接口,在OpenWrt路由器上安装Tcpdump抓取直接在OpenWrt路由上使用Tcpdump抓取数据受路由存储容量的限制,可在电脑上使用Wireshark通过Sshdump远程抓包,不受路由存储容量的限制,具体流程如下:1、安装Wireshark时勾选Sshdump and Ciscodump:5、设置抓取路由器的接口,此接口应为接机顶盒的接口
五、爱快和RouterOS等都内置有现成的抓包工具:
开始使用类型值为0x16的 IGMP协议请求加入组播组,相关网络设备接收到此请求就向机顶盒所推送UDP数据,当退出或调台时,机顶盒会发出类型值为0x17的IGMP协议通告退出组播组七、时移、回看时使用RTSP(分用TCP还是UDP传输数据):回看时,通信经历RTSP的OPTIONS、DESCRIBE、SETUP、PLAY等过程,会使用SETUP方法指定传输数据时使用TCP还是UDP,因此RTSP属于控制协议不属于传输协议,它不像UDP组播那样直接传输数据2、通过应答里的Location提供冗余与负载均衡