最近对P2P直播技术进行了一些研究,谈谈个人对Tvkoo软件的优缺点的看法,一方面希望Tvkoo能做的更好,另一方面也抛砖引玉一下。

  P2P直播的技术难点有:

  一、防火墙的穿透:

  超过90%的电脑都在防火墙后面,如果让2台在防火墙后面的电脑能够实现P2P互联,这是一个技术的难点。有2种方式:

  1. 要求用户配置TCP端口:BT和电驴采用的方式,配置需要网络专业知识。一般做法是通过在防火墙上开启TCP端口来实现,如果开启了端口或者本身有Internet IP地址的,为高联通性电脑;在防火墙内并且没有开启TCP端口的电脑,为低联通性电脑。高联通性电脑可以和其它的高联通性电脑已经低联通性电脑进行P2P;而低联通电脑只能和高联通性电脑进行P2P。因此在BT、电驴中,有Internet IP或者已经在防火墙上开启端口的电脑速度很快,而在防火墙后面的电脑(一般为局域网上网方式)就比较慢了。而通过局域网方式上网的电脑超过70%,如果没有网络基础,或者没有网管特殊配置,只能处于低联通性,速度很慢。

  2. 防火墙自动穿透。无需用户配置,自动让2台在防火墙后面的电脑能P2P互联。P2P连接可以使用TCP和UDP 2种方式。由于WinXP SP2限制了一个应用程序的TCP连接数,因此采用TCP方式进行P2P的话,要安装TCP限制的破解软件。而Tvkoo是使用UDP进行数据传送的,因此不会有TCP限制。这是为什么有些用户说:通过Netstat看不到很多的TCP连接而怀疑Tvkoo是不是P2P软件的原因。

  Tvkoo的P2P穿透力是我见到最强的软件了,当然由于没有使用TCP,使得在仅允许HTTP访问的防火墙后面的计算机没有办法访问。Skype在P2P穿透时有一个技巧,让一些有Internet IP的电脑使用TCP的80端口,在仅允许HTTP访问的防火墙后面的电脑通过类似HTTP的访问方式连接这些80端口的电脑进行P2P连接。Tvkoo也可以考虑一下这个方式。

  二、WMV格式的分析

  目前P2P直播都是使用WMV格式,通过模拟HTTP服务器的方式,把WMV数据流传送给Media Player。这是P2P直播的关键点。需要将Media Encoder发出的HTTP数据进行拆包,然后组成30秒-1分钟的P2P数据块,然后通过P2P方式将数据块发送给Tvkoo客户端,Tvkoo模拟成HTTP服务器将传输完成的数据块发送给Media Player。这部分Tvkoo做的也不错。

  三、如何有效的选择P2P的节点

  这是Tvkoo的弱项。因为一台电脑在P2P传输时,最多连接几十台其它的电脑。当几万台电脑同时传送一个P2P数据块时,要有一个优化算法。比如:美国有5000个用户,中国电信有5000个用户,中国网通有5000个用户,而每个用户最多只能连30-50个节点,如果不凑巧,一个电信的用户连接了20个网通的用户和30个美国的用户,就不断的出现断断续续的情况了。这就是为什么人一多,Tvkoo就卡,并且Tvkoo要把国外IP封掉的原因了。

  有什么好的方式解决这个问题呢?我先抛砖引玉一下:

  (1) 作为P2P直播的营运商,可以多设几台P2P种子服务器,分布在不同的网段中。比如:北方网通设一台(组),南方电信设一台(组),种子的内容是一样的。种子服务器多了,可以降低优化算法的难度。

  (2) 种子服务器和普通节点的优先级:种子服务器的优先级总数低于普通节点的,如果普通节点的速度快了,就减少从种子服务器获取的数据量。

  (3) 全球IP地址表。P2P节点仲裁服务器中,应该有一个全球IP地址表,分中国大陆、香港、台湾、北美、欧洲、澳洲、其它。中国大陆先按照营运商分:电信、网通、铁通、联通、教育网等,再按照省份分类。(网上有下载,可以整理)

  (4) 高速网段表。在P2P访问中,节点动态地将速度快的其它节点IP地址传回服务器,服务器根据全球IP地址表算出网段,以网段-网段的方式记录在数据库中。

  (5) 当一个新用户连入节点时,在全球IP地址表中找到最近的节点,按照比例依次分配最快网段的节点;最近的节点;差一个级别的稍近的节点;随机节点以及种子服务器。

  (6) P2P在数据传送中,可以将30秒视频作为1块数据包;数据包中按照每16KB作为一个数据块。每个时间段(如2秒),本节点向其它节点交换一下数据块的传送情况,然后计算一下数据包中每个数据块的拥有率,优先传送拥有率低的数据块。在拥有率相当的情况下,随机选择。

  (7) 在数据交换中,对于传送慢的节点,定期剔除,然后问节点仲裁服务器要新的节点。

  (8) 如果数据包中小于10%的数据块没有传送完毕,在时间充足的情况下,对于余下的数据块,可以同一个数据块向多个节点请求。

  (9) 节点仲裁服务器也会将新的P2P节点强行加载到另一个节点上,但不能超过节点最大连接数。

P2P直播软件设计的技术原理和改进相关推荐

  1. P2P直播的技术原理和改进

    原文地址:http://bbs.tvkoo.com/dispbbs.asp?boardID=3&ID=4017&page=1 最近对P2P直播技术进行了一些研究,谈谈个人对Tvkoo软 ...

  2. PCIe P2P传输软件设计

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 存储随笔 P2P | D ...

  3. 如何取得好的软件设计

    [转贴] 段先德  2006-5-20 似乎作为一个软件开发者,就注定要背着沉重的行囊,穿行在茂密的热带丛林里,酷热,没有风,只有腐烂的植被.浓浓的瘴气.不时从肩膀上爬过的毒蜘蛛和从脚背上" ...

  4. 软件设计的概念与原则

    一.主要内容: 1.  将软件划分成若干独立成分的依据. 2.  怎样表示不同的成分内得功能细节和数据结构. 3.  怎样统一衡量软件设计的技术质量. 二.模块化 模块是数据说明.可执行语句等程序对象 ...

  5. 基于知识图谱并考虑智能数据关联的金融反洗钱软件设计及应用

    摘要 反洗钱数据分析是提升金融行业安全性的重要技术之一.在互联网和大数据高速发展的冲击下,业内亟需形成对公客户的全维度视图,但传统反洗钱手段往往缺乏深度挖掘有价值客户信息的数据处理技术以识别和对抗风险 ...

  6. AI如何反低俗?今日头条推内容检测工具“灵犬”3.0,首次公开其技术原理

    安妮 发自 北三环西路 量子位 出品 | 公众号 QbitAI 男默女泪.不看不是中国人.看完惊呆.身份惊人.不看吃亏.癌症凶手--这些标题党文章的惯用词汇,还熟悉吗. 昨天(7月30日),今日头条发 ...

  7. 直播软件搭建技术原理:CDN 与直播

    直播软件搭建技术原理:CDN 与直播 很多直播都是基于 CDN 来实现的.而通过声网的服务,或基于声网SDK与 CDN 结合,还可以实现在直播中的连麦互动.白板同步等强调实时性的场景.本文源自社区投稿 ...

  8. 直播软件开发互动直播之WebRTC服务开源技术选型

    直播软件开发互动直播之WebRTC服务开源技术选型 1 直播基础知识 最原始的直播系统其实并没有想象的那么复杂,无非就是主播端将音视频数据推送到服务器,观众端则从服务器拉取数据播放. 1.1 基本常识 ...

  9. P2P对等网络技术原理整合

    P2P(Peer to Peer)对等网络 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式.在C/S模式中,数据的分发 ...

  10. P2P流媒体技术原理及应用

    作者:王洪波,马轶慧 英文关键字:P2P network; streaming media; scalability; data-driven 关键字:对等网络:流媒体:可扩展性:数据驱动 摘要:基于 ...

最新文章

  1. 03 在百度地图上定位到指定位置
  2. 终于当了回up主,来白嫖我历时半年总结的Java思维导图吧!!!
  3. boost::hana::not_equal用法的测试程序
  4. sublime text3c语言编译运行,c – Sublime text 3 – 编译程序并在终端中运行
  5. 发布react项目到linux服务器,nginx上部署react项目的实例方法
  6. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式
  7. Android源码分析之 JobScheduler
  8. protobuf string类型_Protobuf 语言指南(proto3)
  9. DPDK初始化分析(二)
  10. python3项目源代码下载_资源整理 | 36个惊人的Python开源项目,都在这了
  11. DDR 参数 内存延迟时序“CL-tRCD-tRP-tRAS”
  12. lua 的斗地主逻辑算法
  13. css背景颜色如何铺满屏幕
  14. 【运动控制】经典控制理论——PID控制
  15. 200+的AI绘画工具你值得拥有
  16. imx6ul-正点原子-imx6ul学习笔记(5)
  17. padStart()和padEnd()使用
  18. Centos操作系统yum源的使用
  19. mocha 测试 mysql_GitHub - WePoem/lei: 整合Express mysql ioredis ejs 的一开发框架,使用mocha对api进行测试...
  20. 如何解释准确率、精确率与召回率?

热门文章

  1. 常用Excel函数使用示例(分列、VLOOKUP、COUNTIF、AND、绝对引用等)
  2. 天津大学网页设计与制作答案合集
  3. 树型拓扑计算机网络的缺点是,计算机网络拓扑的优缺点 -电脑资料
  4. 为flash游戏终极实用提速
  5. 解决在使用rtx2060跑算法时遇到显存不足的问题
  6. leaflet 加载百度离线瓦片
  7. 关于飞信的协议以及验证码
  8. 计算机二级vfp考试大纲,全国计算机等级考试二级VFP考试大纲.doc
  9. IBM BladeCenter使用管理模AMM通过虚拟软驱加载驱动_zhanggqe_20120626_v1(zhanggqe@DC)
  10. 告诉你怎样学Java才是硬道理(转自chinaitlab)