搜狐视频协议分析之P2P交互协议分析 [20161119]

续上篇(http://blog.csdn.net/cancanfairy/article/details/53149532)内容,分析完搜狐影音客户端与Tracker的通信协议之后,本篇分析搜狐影音客户端之间的P2P交互通信协议。


分析环境:搜狐影音 5.0


通过抓包分析得知,搜狐影音客户端之间采用UDP协议进行通信。具体的报文格式详述如下。


1. 搜狐影音Peer握手交互

一般P2P交互的第一个报文,统称为握手。这里的分析类同。诸位大致理解意思即可。


请求客户端发送握手请求报文:

0000   09 00 00 00 0f 27 00 00 00                       .....'...

报文长度9字节,特征值为第5~6字节 0x0f 27


被请求客户端的握手响应报文

0000   00 00 00 00 10 27 00 00 00                       .....'...

报文长度9字节,特征值为第5~6字节 0x10 27


2. 搜狐影音Peer数据请求及响应

搜狐影音的P2P交互比较简洁,握手完成后,立刻进行分片数据的请求和响应,不拖泥带水。


请求客户端发送的分片数据请求

0000   29 00 00 00 14 27 00 00 8f 00 00 00 00 04 00 00  )....'..........
0010   00 00 04 00 00 78 0c 02 7f 1f 5f fa 95 41 72 78  .....x...._..Arx
0020   29 44 38 b5 9e 0c c8 a0 88                       )D8......

报文长度为0x29 00 = 41字节,特征值为第5~6字节,即0x14 27,紧跟后面3字节(0x00 00 8f)。请求的分片索引为 0x00 00 00 00,分片内的索引为0x04 00 00 00,请求数据长度为0x00 04 00 00。

这里需要说明一下, 每个分片大小为 16KB=16384Bytes,每个分片又切分为16个子分片,即每个子分片长度为 1KB = 1024Bytes。那么上面这个例子中,请求数据的偏移为  (0x00 00 00 00) * 16KB + (0x04 00 00 00)*1KB,请求数据长度为 (0x00 04 00 00),即本次请求为1KB长度。

后面20字节为本次P2P的唯一标识,即文件内容的哈希值。


被请求客户端的响应报文(后面携带的数据省略)

0000   39 04 00 00 15 27 00 00 01 00 00 00 00 04 00 00  9....'..........
0010   00 00 04 00 00 78 0c 02 7f 1f 5f fa 95 41 72 78  .....x...._..Arx
0020   29 44 38 b5 9e 0c c8 a0 88 9f ba 77 e5 0b 63 aa  )D8........w..c.
0030   74 77 a0 a1 b6 c1 12 4f 13 00 00 01 00 00 00 00  tw.....O........
0040   00 00 00 01 00 00 02 00 00 00 00 01 00 00 0a 00  ................
0050   00 00 00 01 00 00 04 00 00 00 00 01 00 00 00 00  ................
0060   00 00 00 01 00 00 02 00 00 00 00 01 00 00 0a 00  ................

.......

报文长度为 0x39 04=1081,特征值为第5~6字节,即0x15 27,后面紧跟3字节(0x00 00 01)。响应数据的分片索引(0x00 00 00 00),响应数据分片内的索引(0x04 00 00 00),响应数据的长度(0x00 04 00 00),和上面的请求数据相对应。

文件的唯一标识 (0x78 0c 02 ... ... a0 88),紧跟有16字节,是数据的校验值。再紧跟的1024字节,则为本次传输的数据文件内容。


以上就是搜狐影音进行P2P时的通信报文,可以看到,搜狐影音的P2P交互,简洁明了,效率很高。结合之前的分析,写了个小程序验证一下P2P的交互过程,经验证,报文分析的结果是正确的。


搜狐影音分析完成,有时间再分析一下优酷、爱奇艺、腾讯视频、乐视、迅雷看看等这些客户端的报文交互协议。


欢迎讨论:  cancanfairy AT sina.com

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值