WFD_RTSP交互包分析

在WFD交互过程中,在Source端或者Sink端抓取tcpdump,通过数据包分析软件Wireshark或者Omnipeek即可以直观的分析RTSP协议交互的过程。


关于WFD协议和代码追踪请参考阅读:
Wi-Fi Display协议介绍
WFD连接过程代码分析(Sink端)

0.准备

本次分析过程在Sink端抓取tcpdump,通过Wireshark软件分析RTSP交互M1~M7消息交互

  • Source端设备->Android Phone
  • Sink端设备->Android TV
  • Wireshark包分析软件

1.抓包

在Source端抓取tcpdump

adb shell
tcpdump -i any -s 0 -w /data/vendor/wifi/file.pcap
adb pull /data/vendor/wifi/file.pcap ./

//注:
//-i any 表示抓取所有接口(waln0、p2p0等)
//data/vendor/wifi/file.pcap 为设备端存储的路径

2.包过滤

使用Wireshark打开file.pcap,在Filter(过滤器)输入过滤条件

ip.addr==192.168.49.1 and rtsp

//注:
//ip.addr==192.168.49.1 为WiFi P2P连接GO(Group Owner)的IP地址,此处搜索GC(Group Client)的IP地址192.168.49.141也可以
//rtsp 为协议类型

在这里插入图片描述

3.包分析

下列图中

  • Source端IP地址为192.168.49.1(承担P2P GO角色)
  • Sink端IP地址为192.168.49.141(承担P2P GC角色)

3.1 RTSP M1 Message

WFD RTSP交互开始于WFD Source端发送M1,M1 Message属于固定交互模式,Source端发送Request给Sink端,Sink端收到后回复Response。

M1 Request

如下图所示,Source发送给Sink在消息体里面包含

  • Request: OPTIONS * RTSP/1.0\r\n 用于标记此条消息的用途是询问对方options
  • CSeq:1\r\n 由发送者分配,用于计数(标记)Source端发送的Request消息
  • Server: AllShareCast/Galaxy/3.2/NIBC\r\n
  • Require: org.wfa.wfd1.0\r\n 作为tag,用于询问对方支持的WFD options

在这里插入图片描述
注:WFD协议规定每一个字段都以“\r\n”结尾

M1 Response

如下图所示,Sink发送给Source在消息体里面包含

  • Response: RTSP/1.0 200 OK\r\n 状态码200用于接收成功
  • Date: Tue, 19 Nov 2019 12:35:04 +0000\r\n 时间信息
  • User-Agent: stagefright/1.1 (Linux;Android 4.1)\r\n
  • CSeq: 1\r\n 回复Request发送过来的CSeq值,用于标明是对CSeq=1这条消息的回复
  • Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER\r\n 协议中标明Sink端在接收到Source端Request消息后固定的答复内容

在这里插入图片描述

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值