FlashP2P库librtmfp的架构设计
43页1、 FlashP2P库librtmfp设计 FlashP2P库librtmfp设计o 1 背景o 2 参考文档o 3 外部结构o 4 内部层次结构o 5 线程模型o 6 数据流o 6.1 数据传递机制 6.2 打洞 6.3 上传、下载o 7 协议封装o 8 RTMFP协议消息交互o 8.1 打洞 8.2 下载、上传o 9 数据安全o 9.1 加解密算法 9.2 DH密钥交换算法o 10 流控算法:滑动窗口机制o 10.1 发送端流控 10.1.1 CreateUserData 10.1.2 AckUserData 10.1.3 FlushUserData 10.2 接收端流控 10.2.1 GenerateDataAckRangeso 11 分片/重组o 11.1 分片 11.2 重组1 背景正值Flash被彻底干掉的时间,FlashP2P在页面上很快也没有用武之地,本文就介绍一下我们在项目中使用的自研的librtmfp,其主要作用是使App可以和页面Flash播放器通过RTMFP协议互通,这样移动端搜狐视频可以通过P2P技术从页面获取视频数据。2 参考文档RFC7016,RFC7425
2、3 外部结构 HotVrs:获取文件信息; Gateway:获取Tracker、RtmfpServer; Tracker:获取Peer; RtmfpServer:Flash打洞服务器,负责Peer之间交互打洞信息。4 内部层次结构 Stream:用于用户接口与底层实现的交互; Session:标识一个会话,一次逻辑上的连接会话,管理状态,封装消息处理、传输接口; Protocol:封装Rtmfp、Rtmp、As3等协议实现; Flow:模拟TCP流控实现,处理丢包、乱序、拥塞控制等,SendFlow实现发送端流控,RecvFlow实现接收端流控; Transport:使用UDP。简单说,核心的几个类里面,NetStream用于底层(Session)与上层交互,send_stream_用于发送数据,recv_stream_用于接收数据;Session用于管理连接;SendFlow、RecvFlow用于流控,从属于Session。类名功能实现P2PFlash提供全局接口的类,主要接口有初始化、反初始化、打洞接口;该类内部包含一个NetConnect对象,作为全局的唯一特殊Session,用
3、于与服务器之间的交互。BaseFlashPeer提供Peer接口调用的类,上层需要实现该类的若干回调以得到FlashP2P的事件;主要接口有下载、上传、事件通知等1.该类内部包含NetStream对象, 用于实现用户接口与底层的交互;2.send_stream_主要用于发送数据;3.recv_stream_主要上报接收数据。NetStream主要实现用户接口与底层的交互;1.该类内部包含send_queue_、recv_queue_两个队列,前者是异步发送队列,上层调用线程将数据放入send_queue_,StartRtmfp线程从send_queue_获取发送数据发送,而recv_queue_是异步接收队列,StartRtmfp线程读到下载数据后向recv_queue_推送,并由StartDownload线程通知上层; 2.该类内部包含一个Session列表(每次打洞都添加一个Session,相当于建立一个新的会话),StartRtmfp线程会将send_queue_中的数据向这些Session广播(As3的规则)。Session对会话的封装,Session是一个端到端的会话,有一个
4、唯一的会话id标识该次会话,该类提供了各种消息的发送、处理接口。1. 该内内部维护两个Flow列表,一个是send_flows_,一个是recv_flows_,分别做发送端、接收端的数据传输、流控;2. 该类建立NetStream和RecvFlow的联系,将从send_stream_的数据传给SendFlow,将从RecvFlow收到的数据传给NetStream,最终吐给上层。SendFlow实现发送端流控算法见下面流控算法一节 。RecvFlow实现接收端流控1. RecvFlow从属于一个Session,包含一个NetStream用于与用户接口交互;2. 算法见下面流控算法一节。5 线程模型会创建3个线程(按照启动顺序): NetConnect:StartRtmfp:负责底层的数据收发; P2PFlash:StartDownload:负责下载数据的上报; P2PFlash:StartUpload:负责获取上传数据。6 数据流6.1 数据传递机制下载端将下载请求放入send_stream_的发送队列,由StartRtmfp线程检查并放入发送端Session的SendFlow进行流式发
《FlashP2P库librtmfp的架构设计》由会员Baige****0346分享,可在线阅读,更多相关《FlashP2P库librtmfp的架构设计》请在金锄头文库上搜索。
员工积极主动行为的组态效应:基于过程的视角
汪晖齐物平等与跨体系社会的天下想象
函数性质中的数学抽象在问题解决与设计中的应用
日本东京大学入学考试理科数学试题解析
二次电池研究进展
实践研究与论理逻辑
光学视觉传感器技术研究进展
龙泉青瓷的传承困境与发展
齐齐哈尔地区抗根肿病大白菜品种的抗性鉴定与评价
基于系统动力学模型的胶州湾海域承载力预测
基于弯液面电化学连接碳纤维实验初探
龟甲胶研究发展探析
鼻腔黏膜免疫佐剂鞭毛蛋白的研究进展
鼻内镜辅助上颌骨部分切除术治疗鼻腔鼻窦腺样囊性癌的临床分析
黑豆不同发芽期多酚、黄酮及抗氧化活性分析
齐鲁青未了:山东当代文学审美流变论
黄登水电站机电设备安装工程施工技术质量管理
黄河文化传承视角下音乐剧创作探究
黄亦琦从风论治咳嗽变异性哮喘经验※
鲸豚动物吸附式声学行为记录器综述
2022-03-24 12页
2022-03-24 11页
2022-03-24 10页
2022-03-24 25页
2022-03-24 13页
2022-03-24 18页
2022-03-24 10页
2022-03-24 32页
2022-03-24 8页
2022-03-24 9页