原文地址:http://bbs.tvkoo.com/dispbbs.asp?boardID=3&ID=4017&page=1
最近对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节点强行加载到另一个节点上,但不能超过节点最大连接数。
相关推荐
本资源包含C#实现的P2P源码,这为我们提供了一个学习和理解P2P网络原理的良好平台。 首先,我们需要理解P2P的基本原理。在P2P网络中,每个参与者,即"对等方"(peer),既是服务的消费者也是服务的提供者。每个节点...
这种结构中,节点之间的连接无特定规则,没有固定的关系或层次,具有高度的动态性和容错性,特别适合大规模的流媒体点播和直播应用。当网络规模扩大,有时会引入超级节点来协助管理和路由。 【P2P技术的应用】 ...
P2P技术通过将网络中的每台设备变为服务提供者和消费者,实现了资源共享和通信的高效性。其带来的低成本、高扩展性以及对匿名和隐私的保护,使其成为互联网发展的重要推动力。然而,P2P也面临着挑战,如网络拓扑复杂...
P2P技术最初应用于文件共享,如Napster和BitTorrent等,但随着时间的发展,其应用范围已经拓展到了分布式计算、流媒体服务、协同工作等多个领域。P2P网络的特点包括: 1. **非中心化**:P2P网络没有中心服务器,...
《P2P系统原理教学课程》的PPT探讨了P2P系统的核心概念以及如何管理和优化P2P流量。P2P(Peer-to-Peer)系统是一种分布式网络架构,其中...P2P技术的持续发展将影响网络管理策略,并对网络基础设施提出新的挑战和机遇。
"Java P2P技术内幕.pdf"这本书很可能深入探讨了以上这些方面,并可能包含具体的代码示例和实战指导。通过阅读此书,开发者不仅可以掌握P2P网络的理论知识,还能获得实际开发的技巧和经验。无论是对初学者还是有经验...
### 计算机网络中的P2P:原理与技术 #### 一、P2P概述 ##### 1.1 什么是P2P? P2P(Peer-to-Peer)网络是一种分布式计算架构,在这种架构中,每个节点既是服务提供者也是服务消费者。也就是说,每个参与的节点都...
P2P(Peer-to-Peer)技术是一种网络通信模型,其中每个参与者...同时,它也提供了一个基础,供你进一步探索更复杂的P2P技术和应用场景。希望对你在学习P2P的过程中有所帮助,如果有任何疑问或改进意见,欢迎交流讨论。
IPv6在工作原理上的改进和对网络应用的支持尤其明显,它对多媒体应用的良好支持以及对P2P应用的重要意义得到了突出强调。 此外,论文还对P2P流媒体直播系统相关的理论和技术进行了研究,并详细比较了当前典型的对应...
标题中的“p2p源码,google写的模块”指的是Google开发...通过分析和学习这个源代码,开发者不仅可以掌握P2P技术,还能了解到Google在解决实际问题时的技术选型和工程实践,对于提升自己的编程和系统设计能力大有裨益。
在“ANtsp2p”这个压缩包中,可能包含ANts P2P网络的源代码、文档、测试用例等资料,这些内容可以帮助开发者深入理解ANts P2P的设计原理和技术细节,同时也为研究和改进P2P网络提供了参考。 总的来说,ANts P2P是...
1. **VoIP(Voice over IP)**:许多VoIP应用依赖于P2P技术来减少服务器负载并提高通信质量。洞穿技术使得位于不同NAT背后的终端能够直接进行音频和视频通话。 2. **在线游戏**:在线多人游戏通常使用P2P技术来减少...
综合这些论文,我们可以预期学习到P2P技术在流媒体、特别是视频点播服务中的核心原理、优化策略、性能评估以及面对的问题和解决方案。这些知识对于理解P2P网络的工作方式、设计高效P2P系统或解决实际网络问题都极具...
文件名“简单文件传输系统说明文档.doc”很可能包含了关于如何使用该系统的详细步骤、工作原理和技术细节。这份文档将帮助我们理解程序的设计思路和实现方法,包括但不限于网络连接的建立、文件分块与校验、错误处理...
通过阅读和理解代码,我们可以学习到P2P网络的设计原理,了解各种协议和算法的实现细节,这对于提升编程技能和理论知识大有裨益。 7. **实验与定制**:此开源项目为开发者提供了丰富的实验机会。你可以根据实际需求...
P2P Seacher,全称为Peer-to-Peer Searcher,是一种基于P2P网络技术的搜索引擎,它允许用户在互联网上搜索和分享各种资源,如电影、音乐、文档等。P2P网络的核心理念是“对等”,即每个参与者既是服务的消费者也是...
在这个领域,源码的学习可以帮助我们深入理解P2P视频会议的工作原理和技术细节。下面将详细探讨相关知识点。 1. **P2P网络基础**:P2P网络是一种去中心化的架构,每个参与者既是服务的提供者也是消费者。在视频会议...
此外,项目还为社区贡献者提供了参与和改进的空间,共同推动P2P流媒体技术的发展。 总结,P2Pcenter项目是研究和实践P2P流媒体技术的重要资源,它揭示了P2P流媒体的内在机制,同时也为开发者提供了一套完整的解决...
"3.5"可能表示这是该软件的第三个主要版本的第五次小更新,通常这样的命名方式意味着开发者已经对该软件进行了多次改进和优化,以提供更好的性能和用户体验。 P2P搜片神器的工作原理大致是:用户输入想要查找的影片...
综上所述,"P2P即时通讯源码"涵盖了从网络编程、多线程到用户界面设计等多个方面的知识,对于学习和理解P2P通信技术及VC++编程具有很高的价值。通过分析和研究这样的源码,开发者可以深入了解即时通讯软件的实现原理...