Peercast的改进分析

Peercast可以说是一个实验的产品,而不是一个稳定的商业版本。所以无论在稳定性还是在性能上都存在一定的问题。这里提出Peercast存在的一些问题,并考虑相应的改进方法。希望可以为大家改进Peercast提供一些帮助。

先解释几个名词:
父节点:也就是此时你在向别人传输数据。一个节点可以同时是父节点和子节点。
子节点:也就是此时你在接收父节点传输给你的数据。

基于文件传输的流媒体传输:
    Peercast是在Gnutella协议的基础上发展而来的。Gnutella是一个P2P的文件共享系统,可以传输任何类型的文件。Peercast传输的文件是视/音频流,传输方式通过HTTP方式进行。但Peercast没有考虑到流媒体传输的特性,只是简单地用HTTP方式来传输视/音频文件。
    改进:可以考虑采用RTP/RTSP方式来传输流媒体数据

单点传输:
    Peercast每个节点的数据只能来源于单一的节点。这样的好处在于模型简单,缓冲机制容易处理,传输过程中不会产生太多的控制信息。在传输音频时没有任何问题,但是在传输视频数据时,由于视频数据量大,所以会经常出现缓冲很久的情况。
    单点传输还存在的一个问题是如果父节点退出网络,会对子节点造成很大的影响。其实单点传输可以理解为基于转播的传播方式,每个节点向其他结点转播频道。但这样的话无法发挥出一般P2P软件使用的用户越多传输速度越快的优势,这时候结点多只意味着你选择最佳节点的空间大而已,一旦确定一个传输节点,速率可以认为就是固定的。
    改进:采用多点传输的一种称为SwarmStreaming的方式。

节点的动态加入:
    有新节点加入时似乎其他节点也会受到相应的影响,如出现缓冲或声音出错等情况。
    这个问题尚在研究之中。

节点的动态退出:
    由于Peercast只能从一个结点传输数据,那么当你的传输节点退出网络的时候,就无法再连接到另一个传输节点了,而只能选择重新输入频道地址。这是由于Peercast并没有做相应的处理。如果节点动态加入和退出频繁的话,会带来很大的问题。
    改进:在一个节点要退出网络的时候,它先向它的子节点发出要退出的消息,子节点收到这个消息后,根据它的ChanHit再去寻找下一个传输者。如果在读完缓冲前能与另一个节点建立连接,就不会出现中断的情况。

电台发布:
    由于要支持各种各样的数据来源,如静态MP3文件、实时编码,各种不同类型的文件,所以电台发布繁琐。
    改进:可以在Peercast中内置电台发布功能。可以做成类似向导形式,也就是让你一步步地去选择发布的来源、方式、编码率等等。这样可以使软件更易使用。

YP:
    目前大多数的P2P软件都需要一个目录服务器,YP就相当于这样的一个目录服务器。
    也可以把显示频道的功能集成在Peercast软件中,只需要使客户端去读取YP上的频道信息就可以了。不过这样会增加Peercast的CPU使用率,而且由于电台的动态变化比较大,所以可以考虑在这边只显示YP上第一页的电台。

播放器集成:
    其实是否集成播放器各有各的好处。
    不集成播放器的好处在于用户可以使用他们喜欢的媒体播放器去播放相应的文件。
    集成播放器的话用户界面会更友好,可以显示出错和连接信息,而且看起来更像一个完整的软件。
    这个功能可以根据需要而定。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Peercast注释版是我在做本科毕业设计时分析Peercast的一些成果,当时阅读代码的时候做了注释,然后写了一些分析文章。本来想发到自己的博客上保留一份记录的,不想后来竟成了很多人参考Peercast的资料。这点上我是有些惭愧的,因为很多不成熟的想法和不正确的观点可能会误导大家,也希望大家能够分辨吧。本来想形成一份比较完整的注释版,但后来由于毕业以及转变研究方向等因素已经没有继续做下去了。不过核心的代码我想应该还是比较清晰的,大家可以参考一下。我把Peercast注释版发到CSDN的资源上,大家可以访问http://download.csdn.net/hicsdn/bbisonic进行下载,以后我就不回复索要代码的留言和邮件了。也是很抱歉,有半年的时间没更新过此BLOG了,对于有些我没注意到留言或邮件而漏发代码的朋友们,在此说声SORRY了。<br><br>大家在看代码前最好先看看Peercast源码分析文章,里面的<源码编译方法>可以告诉你如何编译Peercast源代码。<看源代码前必读>可以告诉你项目的组织结构以及各源码目录各自完成什么功能,可以让你对整体有个大概的了解。<Peercast整体架构分析>让你能大致了解一下Peercast的架构及设计思想。<阅读Peercast源码的一些经验>是我阅读Peercast源码的一些体会,希望对你能有所帮助。<Peercast服务器端代码执行流程>解释服务器启动的一些关键代码,<Peercast播放模块分析>解释Peercast如何调用播放器实现媒体播放的。以上是一些比较重要的文章,其他文章可以有选择性地看看。其他的话就看源码注释吧。<br><br>这份源码注释有很多不足之处,是我学习过程中的一个成果,大家请见谅。如果它能给你阅读 Peercast的过程中带来一些帮助的话,我将感到非常荣幸。<br>特此声明。<br><br>王浩聪<br>2007.12.11<br>
基础理论篇 第1章 P2P基本概念 3 1.1 P2P网络的定义 3 1.2 P2P网络结构 4 1.2.1 集中式P2P网络 4 1.2.2 完全分布式非结构化P2P网络 5 1.2.3 完全分布式结构化P2P网络 6 1.2.4 混合式P2P网络 7 1.2.5 P2P网络和传统网络的对比 8 1.3 P2P网络的应用 9 1.4 P2P的发展 11 1.4.1 起步 11 1.4.2 发展 11 1.4.3 高峰 11 1.5 P2P技术国内外研究现状 12 1.5.1 国外相关研究 12 1.5.2 国内研究现状 12 1.6 本章总结 13 1.7 练习题 13 第2章 主流P2P系统 15 2.1 文件共享类系统 15 2.1.1 Napster 15 2.1.2 Gnutella 17 2.1.3 BitTorrent 19 2.1.4 eMule 20 2.1.5 Maze 22 2.2 即时通信类系统 24 2.2.1 Skype 24 2.2.2 QQ 26 2.2.3 GTalk 27 2.3 流媒体类系统 28 2.3.1 AnySee 28 2.3.2 PPLive 29 2.4 共享存储类系统 30 2.4.1 OceanStore 30 2.4.2 Granary 32 2.5 对等计算类系统 34 2.6 本章总结 35 2.7 练习题 35 第3章 P2P网络的基础——搜索和路由算法 36 3.1 传统搜索技术 36 3.2 P2P搜索技术的发展 37 3.3 DHT网络(结构化P2P网络)的搜索技术 39 3.3.1 DHT路由原理 39 3.3.2 Chord 40 3.3.3 Pastry 44 3.3.4 CAN 46 3.3.5 Tapestry 48 3.3.6 Kademlia 50 3.3.7 小结 53 3.4 非结构化P2P网络的搜索技术 53 3.4.1 Flooding 54 3.4.2 Modified-BFS 55 3.4.3 Iterative Deepening 55 3.4.4 Random Walk 56 3.4.5 Query Routing 57 3.4.6 Gnutella2 59 3.4.7 移动Agent 59 3.4.8 小结 60 3.5 小世界(Small World)模型 61 3.5.1 小世界模型概述 61 3.5.2 聚类分布(CD)算法 62 3.5.3 小世界网络的研究现状 66 3.6 P2P搜索技术研究的挑战 66 3.7 本章总结 67 3.8 练习题 67 第4章 P2P应用与安全 69 4.1 P2P应用面临的安全问题 69 4.1.1 P2P应用引发的版权问题 69 4.1.2 P2P应用对现有网络应用的威胁 71 4.1.3 P2P网络病毒与蠕虫 71 4.1.4 结构化P2P网络的隐患 72 4.2 P2P应用与安全技术 76 4.2.1 P2P应用中的密码学技术 76 4.2.2 P2P应用中的网络安全技术 78 4.2.3 利用P2P网络解决安全问题 82 4.3 P2P实例系统--Skype的安全性分析 88 4.3.1 Skype简介 89 4.3.2 Skype安全机制分析 93 4.3.3 Skype流量识别 96 4.4 本章总结 98 4.5 练习题 98 第5章 P2P应用的相关技术 100 5.1 P2P与网络穿越 100 5.1.1 NAT网络概念 100 5.1.2 STUN协议与NAT穿越 103 5.1.3 UDP穿越NAT 106 5.1.4 TCP穿越NAT 107 5.1.5 NAT类型检测 108 5.1.6 常见NAT穿越解决方案 111 5.2 P2P与IMS结合 112 5.2.1 什么是IMS 112 5.2.2 P2P与IMS的网络融合 112 5.3 VoIP通信基础 113 5.3.1 VoIP系统概念 113 5.3.2 H.323协议 115 5.3.3 SIP 115 5.3.4 RTP 117 5.3.5 RTSP 118 5.4 P2P和SIP的结合 119 5.4.1 P2P和SIP结合方案分析 120 5.4.2 基于Pastry设计P2P-SIP系统 122 5.5 本章总结 125 5.6 练习题 126 C++开发案例篇 第6章 P2P应用开发平台 129 6.1 Windows Peer-to-Peer Networking平台 129 6.1.1 Windows Peer-to-Peer Networking平台简介 129 6.1.2 Windows Peer-to-Peer Networking平台结构 130 6.1.3 Windows Peer-to-Peer Networking平台工作机制 132 6.1.4 Windows Peer-to-Peer Networking平台开发环境 136 6.1.5 Windows Peer-to-Peer Networking平台开发入门 139 6.2 JXTA 161 6.2.1 JXTA简介 161 6.2.2 JXTA的平台结构 162 6.2.3 JXTA的基本概念 163 6.2.4 JXTA的网络架构 166 6.2.5 JXTA开发环境 171 6.3 本章总结 175 6.4 练习题 175 第7章 P2P文件共享系统开发实例一——eMule的设计与实现 176 7.1 eMule系统概述 176 7.1.1 P2P文件共享系统的背景 176 7.1.2 eMule的设计目标 177 7.2 eMule系统原理 178 7.2.1 eMule协议原理 178 7.2.2 Kad协议原理 185 7.3 eMule系统设计 186 7.3.1 eMule系统结构概述 187 7.3.2 文件基础设施 187 7.3.3 网络基础设施 189 7.3.4 eMule通信协议 190 7.3.5 任务处理机制 191 7.3.6 Kad系统结构概述 195 7.4 eMule程序代码分析 199 7.5 eMule系统部署 223 7.5.1 系统编译和运行 224 7.5.2 系统安装与配置 225 7.5.3 文件搜索和下载 226 7.5.4 文件上传 227 7.6 eMule系统分析 228 7.7 本章总结 228 7.8 练习题 228 第8章 P2P文件共享系统开发实例二——BT的设计与实现 230 8.1 BitTorrent系统概述 230 8.2 BitTorrent系统原理 230 8.2.1 BitTorrent协议原理 231 8.2.2 BitTorrent Tracker服务器原理 234 8.3 BitTorrent系统设计 236 8.3.1 Arctic客户端系统结构概述 236 8.3.2 LibTorrent库系统结构概述 237 8.4 BitTorrent程序代码分析 238 8.4.1 Arctic客户端代码分析 238 8.4.2 LibTorrent库代码分析 260 8.5 BitTorrent系统部署 270 8.5.1 BitTorrent服务器的部署 271 8.5.2 BitTorrent客户端的部署 271 8.6 BitTorrent系统分析 271 8.7 本章总结 272 8.8 练习题 272 第9章 P2P即时通信系统开发实例——Hermes的设计与实现 273 9.1 Hermes系统概述 273 9.1.1 P2P即时通信系统的背景 273 9.1.2 Hermes系统设计目标 274 9.2 Hermes系统原理 274 9.2.1 登录认证机制 275 9.2.2 语音提取与播放机制 277 9.3 Hermes系统设计 279 9.4 Hermes程序代码分析 280 9.4.1 语音处理模块代码分析 280 9.4.2 通信模块代码分析 295 9.5 Hermes系统分析 302 9.6 本章总结 302 9.7 练习题 302 第10章 P2P流媒体系统开发实例——PeerCast的设计与实现 303 10.1 P2P流媒体系统概念 303 10.1.1 流媒体内容发布网络技术 303 10.1.2 P2P流媒体系统概述 304 10.1.3 P2P流媒体系统架构 304 10.1.4 现有系统 305 10.2 流媒体技术 305 10.3 设计P2P音视频点播系统 306 10.3.1 多媒体数据压缩 306 10.3.2 应用层QoS 306 10.3.3 应用层多播技术 306 10.3.4 流媒体同步技术 307 10.3.5 PeerCast实现分析 307 10.3.6 改造BitTorrent成为流媒体系统 311 10.4 本章总结 311 10.5 练习题 311 第11章 P2P视频点播系统开发实例——Myseelite的设计与实现 313 11.1 Myseelite系统概述 313 11.1.1 P2P视频点播系统的背景 313 11.1.2 Myseelite的设计目标 314 11.2 Myseelite系统原理 315 11.2.1 基本概念 315 11.2.2 工作机制 316 11.2.3 ACE简介 317 11.2.4 wxWidgets简介 320 11.3 Myseelite系统设计 320 11.3.1 Capture子系统 320 11.3.2 Super Peer子系统 321 11.3.3 Tracker子系统 322 11.3.4 Client子系统 324 11.4 Myseelite程序代码分析 329 11.5 Myseelite系统部署 353 11.5.1 系统编译 353 11.5.2 系统运行 353 11.5.3 轮播流程 354 11.5.4 直播流程 357 11.6 Myseelite系统分析 359 11.7 本章总结 359 11.8 练习题 3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值