2006年03月30日

Internet: Web 2.0 网站评奖

Internet这里列出了300多家 Web 2.0 网站,分为38个分类,评出了每个类别下的前三名,并采访了 20位获奖网站的创始人。位居分类第一名的 Web 2.0 网站有 Technorati, Blummy, LinkedIn, craigslist, Writely, meebo, eSnips, Wayfaring, Last.fm, Newsvine 等等。

软 件: PCworld 101个 fabulous Freebies

软 件PCworld 发布了101个最好的免费软件/服务。 列表中包括了7-zip, foxit reader, firefox, openoffice 这样的软件,也包括了 wikipedia 这样的网站。详细情况在这里

2006年03月27日

    昨天天气不错,预报是多云转雨,没想一大早起来就看见太阳了,哈,还真是天公作美。按照前晚的预定计划,只要醒来没下雨就到老刘宿舍集合出去览览春。把军哥和小云叫醒了,没想昨天说得好好得海辉起不来,真可惜这么好的天气啊。计划还是不能随便更改,把WW和李姐姐叫醒,竟然头一句话是说天气这么不好,晕死,估计是还在睡梦中给吵醒了,在听我描绘了一番当前的天气后,她们决定半个小时内起床了[7:30]。。。和军哥早饭过后赶到集合地已有四五六人了,呵呵,WW和李都还没到[8:10],在漫长的十分钟之后终于看见她们的身影,哈,竟然不是两人是五人(加上了XX,MM和GW),算来我们的队伍可真够壮大的了,加上已经在车站附件等的方方、XY、LM、DQ&DQBF等,看来不下十六人,已经够上一个旅游团了。11和219路车上大半都是我们的兄弟了,到车站WW和XX忽然决定不去了挺可惜的,也有些意外,,WW一直挺喜欢出去逛逛的。不过我觉得这么好的天气,这么些人很是难得聚在一块,去哪里并不是很重要,关键是人,有这么些人在哪里都会挺好玩的。一大半是03的师兄师姐,过两个月就要毕业了,在一块的日子也不是太多,这些日子挺开心的,昨天也不例外,也希望下次还有这样的机会。

  219终点即到我们的目的地了-梅岭[10:20],一路上大家心情也不错,有开心果BG和SL在,大家应该都不会寂寞。浩浩荡荡的队伍开向了紫清山。………………………………………

2006年03月25日

总算把题给开完了,虽然说不是什么大事情,一直吊着个事情总不爽。不过算起来在学校也就这么两件事情了,开题和答辩,完了也就结束了。早上八点开始,最近都没在八点之前起来过,还真是个挑战,一个上午十个人,我排在第三,不早点去不行,我的题目是P2P网络的实时流媒体分发技术,也是这段时间一直在关注的东西,这东西对我来说确实挺有挑战的,现在都还没有入门,所幸还有大约一年的时间,如果要能静下心来还是能有些收获了。开题的整个过程还算比较顺利,老师们提的问题基本都在我所考虑的范围之内,就等过两天的结果了,希望不会有太大的修改!

下午和机房的师兄弟们一块打羽毛球去了,彻底放松了,中山桥那,忒远的地方,今天真算是放松了一下,晚上在宿舍的兄弟们叫上一块喝喝小酒去了,真巧在餐馆还遇上了我们班的美女们,看来大家的心情都是一样的嘛!这段时间喝酒就今天最尽兴了,当然,如果美女们能够再爽快些就更好啦!

2006年03月22日

不过生成的声音比较僵化,希望以后能有更多参数调整就好啊

http://tts.podlook.com/

[转17dig] 写出文字它就能读出来哦.


Text To Speech能将简单的文字朗读出来,而这个则把Text to speech搬到网站上了. 在这里输入一段文字.按确定按钮, 就会自动生成WMV格式的音频文件
2006年03月19日

闲逛时发现一个站点,比较新鲜,顺带和下面的十个一块分享。 Web OS ,是不是挺新鲜的,www.YouOS.com 试用了一下,感觉挺不错的,速度也很快啊,不知道是不是用户少的原因,看其介绍是使用了javascript,现在看来javascript前途不可限量啊,原来都没有发掘出来他的潜力。具体的一些应用:聊天(还能创建自己的聊天频道),内嵌的浏览器,内嵌的即时通讯工具(IM),shell命令行,还有文件管理,Rss聚合,文本编辑。。。很多东西啊,还可以自己创建安装应用。大家一块来发掘一下


以下转自  徐新事的blog

最近互联网上出现很多网站,可能其中有一部分是你没听说过的,这也是我列举这些站点的目的。我不想列举想flickr这样已经很有名气的网站,尽管它是否知名还存争议。

第一,http://www.meebo.com 一个小暴发户网站,它现在收购了http://www.trillian.cc ,它把Yahoo! Messanger、Jabber、Gtalk、AIM、ICQ和MSN几款流行的即时通讯软件整合在一起,支持多款软件之间的信息互通。

第二,http://www.rememberthemilk.com 一个典型的web 2.0 网站。如果你经常忘记做事情,你就需要这个网站,它支持手机、邮件和即时通讯等工具的提醒定制功能。

第三,http://www.blinklist.com 这个网站很有可能被关闭了,这是一个书签管理网站,和del.icio.us是竞争关系。但是这个网站有很好的UI设计,一些独特的功能,是的del.icio.us黯然失色不少。经常浏览这个网站看看它有哪些新的功能。

第四,http://www.digg.com 许多人称digg.com是slashdot.org的终结者,这句话可能是对的。Digg.com是一个很好的科技新闻聚合中心,全部依靠用户的参与,而没有任何编辑行为。

第五,http://www.clusty.com Clusty.com可能是永远在google阴影笼罩下的小搜索引擎,但同样值得看看。Clusty(强健的)就像它的意思一样,提供搜索结果的分类,围绕你的搜索目标分成多种不同的类别,这样便于你搜索你想要的信息。此外还有一堆好的特色功能只能你尝试。

第六,http://www.writely.com 文本处理工具的网络版?它的产生是一种巧合。Writely是完美的网络图书馆处理文本工具,信息的不管它的可用性如何,但它确实很酷。

第七,http://www.last.fm Last.fm是很难描述的,它一部分是社会性音乐书签,一部分像个人音乐书签。我认为,如果你电脑里的音乐很多,Last.fm会是你音乐管理的好助手。

第八,http://www.pixel2life.com 是所有事物的实用指南,它拥有庞大的数据库,几乎拥有所有计算机相关的指南,从系统冲突解决到微软的Outlook如何使用等。

第九,http://www.blummy.com 顶呱呱网。Blummy.com提供一个独特的方式保存和共享书签,如果你有很多书签需要管理,你打开这个网站就知道它的好。

第十,http://www.hipcal.com Hipcal是web 2.0类别的网站。主要提供在线日历和提醒功能。

收自 : http://www.jy361.com/Article/xtxuexi/linux/200509/4557.shtml
和UNIX系统相同,Linux超级用户root拥有系统的最高权限。当由于用户的疏忽,遗忘了root 密码,或者系统受到黑客的入侵,无法用root 账号登录系统时,我们可以通过下列办法来恢复root 的密码。
  一、进入单用户模式
  1.使用Linux 系统启动软盘
  如果你已创建了Linux 系统的启动软盘,而且设置计算机系统从软盘启动,当显示boot 提示符后输入:
  boot: linux single
  系统进入了提示符为“#”的单用户模式,计算机引导的运行级别为1,本地文件系统被挂载,很多系统服务没有运行,跳过所有系统认证,是一个系统管理员使用特定的机器,把 root 文件系统挂为读写,此时你可以使用:
  (1)passwd 程序来设置root的新密码
  # passwd root
  # reboot
  重启系统后,root 密码已被更新。
  (2)通过修改 /etc/shadow 文件,删除root 的密码
  # cd /etc
  # vi shadow
  将以root 开头的一行中“root:”后和下一个“ :”前的内容删除,
  第一行将类似于“root ::??”,保存后重启系统,root 密码置为空。
  2.以LILO 多系统引导程序启动
  当系统以LILO 引导程序启动时,在出现LILO 提示符时输入:
  LILO: linux single
  进入单用户后,更改password 的方法同1。
  3.以GRUB 多系统引导程序启动
  用GRUB引导系统进入单用户步骤:
  (1) 启动GRUB,选择Red Hat Linux的选项,然后键入 e 来编辑;
  (2) 选择以kernel开头的一行,再按e 键,在此行的末尾,按空格键后输入single,以回车键来退出编辑模式;
  (3) 回到了 GRUB 屏幕后,键入 b 来引导进入单用户模式。
  进入单用户后,更改password 的方法同1。
  二、使用Linux 系统安装盘
  如果你既没做系统启动软盘,同时多系统的引导LILO 和GRUB 又被删除(如重装了Windows 系统后),那么只能使用Linux 系统安装盘来恢复root 的密码。
  用第一张Linux 系统安装盘启动,出现boot 提示符后输入:
 oot: linux rescue
  此时系统进入救援模式,然后根据提示完成:
  1.选择语言和键盘格式;
  2.选择是否配置网卡,一般系统因网络不需要,所以可以选择否跳过网卡配置;
  3 . 选择是否让系统查找硬盘上的Redhat Linux 系统,选择继续;
  4.系统显示硬盘上的系统已经被找到,并挂载在/mnt/sysimage 下;
  5.进入拯救状态,可重新设置root 的密码:
  # chroot/mnt/sysimage (让系统成为根环境)
  # cd /mnt/sysimage
  # passwd root

Trackback: http://tb.donews.net/TrackBack.aspx?PostId=773751

Google服务和软件大全
Google这个公司现在已经是“家大业大”了,他们总是隔三岔五地推出一些新鲜的服务,让业界跟着也兴奋一把。不过历年来Google所发展出来的服务和软件实在太多了,究竟他们已经有了什么服务?现在就来看看吧。
  Add to Google
  这是一个提供网页信息的站点,主要的功能是把自己的主页介绍给Google让他收录,而时间上较长,起码一两个月才会被Google收录,但是一旦收了你的主页,知名度会更快地上升。
  Blogger
  Google提供的Blog服务,现在已经有中文版本了,大家可以上去安个家,把地址写到本文评论让大家去浏览。
  Froogle
  这是一个专业的引擎,可以输入你想要购买的东西,然后得到符合关键词的结果出来,可以比较一下各个购物网站不同的价格,挑选最合适的地方进行购买。
  Gmail
  Gmail是是Google提供的当前最流行的免费邮件服务,提供了超过2GB的储存空间。
  Google AdSense
  Google提供的广告服务,你是否遇到有不知来源的IP经常恶意点击你的广告,而你无法知道IP所以无法禁止,你是否想知道你的广告在哪个或者哪些页面点击率最高,而又不受渠道数量的限制,它主要针对Google Adsense的规则,在不违反规则的前提下为用户提供及时详细的广告点击统计信息。
  Google AdWords
  Google提供给商家的特殊广告站点,只要有人点击这里就会按一定规则向商家收费,算是网络上的分类广告。
  Google Alerts
  这是一个新闻定制站点,可以通过邮箱定制你需要的内容,然后得到相关的讯息。
  Google Analytics
  Google推出的免费提供的网站统计服务,只需要简单注册,即可帮助站长分析自己的站点情况,而且里面的内容非常详细,不光小网站有用,大网站更是可以作为一个参考的指标。
  Google Answers
  Google的问答站点,可以回答你很多不知道的问题,类似的还有百度出的百度知道,现在这个站点开始进入收费模式,你可以悬赏进行问题答案的购买。
  Google Base
  这个服务相对于Google其它服务的专业化,或许显得比较杂乱,里面也是可以让我们提交不同的信息给Google,让它出现在Google的搜索里面。
  Google Blog Search
  这是一个针对Google博客的搜索服务,专门收集其中的海量信息。
  Google Book Search
  Google的书籍搜索服务,其实也是Google引擎的一个小延伸而已,不过在这里搜索到的结果比较专业和集中。
  Google Catalogs
  Google做的邮购搜索服务,对于国人来说好象用处并不是特别地大。
  Google Code
  Google用来推广及发展开源软件的一个服务,一个适合程序员的源代码公开站点
  Google Compute
  Google的网格计算,可以将一些超大规模的计算量分散到全球不同国家地区的电脑上,以尽快得到结果,这是些有益全球的计算,希望有电脑的朋友都参加。
  Google Desktop
  这是一个放置在桌面上的工具条,在这个工具条里可提供新闻,天气,Email等小程序,了解最新的信息。
  Google Directory
  Goolge制作的超大型人工分类目录,让网页根据重要性来排列。目录搜索服务可满足那些想要浏览某特定主题下相关信息的用户。
  Google Earth
  这项服务提供了地球上大部分地区的卫星图片查询,尤其是大城市的图片更加地多,让你如宇航员一般身临其境,足不出户也可了解世界各地。
  Google Groups
  Google提供的群组服务。利用它你可以创建邮件列表、阅读新闻或者是和志同道合的用户分享你感兴趣的东西。
  Google Homepage
  是Google提供的主页服务,你可以定制它,它提供了天气、新闻、占卜等各种各样的服务。
  Google Image Search
  Google的图片搜索,几乎是Google最早的服务了,这是它的图片搜索页面,相信大家都用过吧,图片搜索的精确度还是不错的。
  Google Labs
  Google实验室的一些服务链接,从这里可以看到它们又有什么天才的发明。
  Google Local
  Google本地搜索,通过这一服务,用户可以使用关键字搜索在特定的城市查找某一类型的公司,并在电子地图上显示这些公司的具体位置。这项服务现在有了中国版本
  Google Maps
  Google地图搜索服务,让你浏览到世界各地的地图、公路等信息,比较上面提到的卫星地图来说,比较传统。
  Google Mobile
  Google手机上网用户的服务,只要手机能连上这外网站,即可象用PC一样搜索图片、关键字等信息。
  Google Movie Showtimes
  Google提供的电影上映时间搜索服务,只要输入一个地方的邮政编码或地址,就可以搜索到当地的电影院及电影的上映时间。
  Google News
  Google新闻站点,将最新的新闻呈现在大家的眼前,上面的所有新闻都是由Google特定的电脑自动聚合的。
  Google Page
  Google推出的免费个人主页服务,用户可以在这里获得一个100M大小的免费主页空间。
  Google Reader
  Google的在线RSS阅读器,Reader依靠RSS和Atom技术,可帮助用户及时获得信息,用户不必自己检查更新喜欢的站点,Google Reader可以帮你。
  Google Ridefinder
  美国12个城市的公交车和出租车的相关搜索。
  Google Scholar
  学术文章搜索引擎,高年级学生的必备,尤其一些经常需要撰写一些论文的朋友。
  Google Send to Phone
  利用网络发送手机短信的服务,感觉上没什么特别。
  Google Sitemap
  Google的Sitemaps计划,旨在对网站信息搜索进行加速,增强索引能力。Google称:“这种协作搜索系统将进一步提高覆盖和刷新速度,使用户使用Google索此功能实现最优化。”Google呼吁网站管理员在网站服务器中放置Sitemaps格式的文件。这样,Google的搜索引擎就可以看到那些网页在网站内,那些网页内容被修改了。
  Google SMS
  GOOGLE SMS服务,是通过SMS查找特定信息的一项技术。它可以提供驾车服务,在无线产品中支持SMS。
  Google Suggest
  这是一个猜测你意图的测试站,当用户关键词搜索框中输入文字时,下拉清单将显示候补搜索单词或短语一览。还将显示找到的各单词或短语的网页数。从候补中选择单词或短语便可搜索。
  Google Talk
  Google推出的即时在线聊天工具,当时挺火爆的,业内很多人都说能跟各大即时聊天工具一拼,可是现在没多少个人用了,影响较低。
  Google Toolbar
  Google的搜索工具条,上面有很多实用功能,搜索、拦截弹出窗口、查看网页PR值等等一大堆。
  Google Video
  这又是一个新的尝试,Google推出的视频搜索内容丰富,不过国内用户好象会受到一定的限制。
  Google Web Accelerator
  可以加速网页的载入,尤其是对付一些我们网络访问较慢的外国网站更是好用
  Google Web Search
  Google网站默认的搜索服务。
  Hello
  Hello即时聊天工具,是一个极小的即时通信客户端,它和Google的看图软件Picasa一起工作,能让你和亲人好友分享图片。
  Picasa
  超强的图片管理显示的软件,得益于其高效的图片管理模式,我们可将电脑里所有的图片都让它归类,分析。它现在已是免费软件,大家可以让ACDSee下岗了。
2006年03月17日

转CSDN   JXTA技术与应用发展 

作者: 务实
Thursday, October 9 2003 2:57 PM 

—————————————————————————–


1、  概述
2、  JXTA的设计目标及有关概念
3、  JXTA协议
4、  JXTA应用与发展


—————————————————————————–


一、概述
 
 
美国Sun公司自从1995年向世界推出了Java语言以来,每年都会在Java领域里推出新的技
术,从JavaCard、J2ME到J2EE、JINI、JavaTV,推动了Java技术的发展和应用。在最近
几次的旧金山的JavaOne会议中,JXTA是该公司向业界推出的较新技术。该技术的目的是
为P2P的网络应用开发提供一个统一的平台,而且为了鼓励和支持该技术的发展,JXTA项
目采用了开放源码的方式,因此吸引了大量业界人士参与到JXTA技术的研究与应用当
中,JXTA Community(www.jxta.org)就是人气很旺的一个Java技术研究开发的网站。

JXTA最早起源于2000年的夏天,现在大家把JXTA看成是P2P的平台,JXTA的目标是要解决
几个技术与商业上的难题。第一是解决众多P2P系统互不相通的问题。2000年,是P2P突
飞猛进的高潮年,但高潮背后却是许多小公司用自己的封闭系统试图在Internet上圈一
块地。Sun认为,只有互通才能真正发挥出P2P的优势,就好像IM(Instant Messaging),
能互连的人越多,越有价值。所以Sun决定出面发布一个平台,使所有P2P系统都能连接
起来,只有Sun这样位置中立、但在技术上有雄存实力被大家认可的公司才有希望做成这
一平台。

JXTA的另外一个目的就是找寻一套数量最少、概念最简单的系统构成的“积木”。如果
成功,这几块积木就会是今后大家构架信息系统的基本模块,从而帮助人们摆脱像
Windows或TCP/IP这样的传统软件带来的包袱。Java、Jini和JXTA像是J的三部曲,Java
取自著名咖啡产地名,Jini是genie(精灵) 的谐音,而JXTA则是Juxtapose的缩写。当时
BillJoy用grep把所有J打头的英文词找出来,juxtapose跃然纸上,很是巧妙。既表现了
P2P或肩并肩的意义,又说明JXTA不局限于P2P。但JXTA与众不同,它是由一系列网络协
议构成的,用任何语言都可以实现,并不只限于Java,只有彻底独立于操作系统、网络
传输技术以及程序设计语言,才真正达到了跨平台,而这样的技术,最容易受到业界的
认同。

JXTA是项目创始人、Sun首席科学家BillJoy二十多年酝酿的结晶,“JXTA技术是网络编
程和计算的平台,用以解决现代分布计算尤其是点对点(P2P)计算中出现的问题。”JXTA
研究项目,将提供使用户更便捷地访问连接在互联网上的个人电脑资源的新框架,从而
进一步拓展互联网的空间。同时JXTA也是Sun的ONE互联网战略的延续,并且将更积极的
姿态与Microsoft的.Net战略和Hailstorm计划一争高低。Joy指出,JXTA可能是Sun One
平台最简单的一部分,而不是打算将它变成象微软的.Net那样复杂的东西,而且JXTA也
将是开放源代码的团体;有别于而微软的Passport和Hailstorm技术都是申请专利的专有
技术,Sun希望通过公开JXTA源代码的方式,成为微软最有力的竞争对手,在公开源代码
的领域中,Linux和Apache是卓越的成功典范,Sun也希望JXTA能铸造新的成功。

JXTA技术提供了基础性的机制解决当前分布计算应用中面临的问题,实现新一代统一、
安全、互操作以及异构的应用。目前它支持基于Java技术的平台和系统。而将来JATX技
术将不受到内存的限制而支持更多小型移动设备。JXTA通过Java技术和XML数据表达的结
合,提供了强大的功能使得垂直应用得以交互,并且可以克服目前P2P软件中的限制。同
时,通过小型、简单、便于开发的构造模块,JXTA将使开发者从建立各自框架的复杂工
作得以解放,可以潜心关注于建设各类新颖、创造性的、分布式计算应用。


二、JXTA 的设计目标及有关概念
 
 
一)P2P技术

P2P即Peer to Peer,称为对等连接或对等网络,P2P技术主要指由硬件形成连接后的信息
控制技术,其代表形式是软件;P2P并不是一个新的概念,因特网上的许多核心协议本身
就是P2P的应用程序,因特网的发展过程也说明了这一点,我们可以通过下述特性来描述
P2P:

Peer知道其他Peer的存在。
Peer在一个虚拟的网络中运行。
Peer同时具有Client和Server的特点。
多个Peer可以组成为一个Peer组。
从因特网的发展来看,目前已经完全有可能开发新的P2P应用程序来补充和取代现有的集
中式应用程序,文件共享程序和聊天程序的成功已经吸引了许多程序员加入P2P程序的开
发。而且随着技术的发展,P2P所面临的安全、控制和网络使用的问题将逐步解决。P2P
系统可以提供如下功能:

Peer的独立控制能力—-用户将变得非常强大,可以创建自己的组和虚拟网络,而且可
以非常容易地发布自己的资源。
可靠性—-P2P系统是任何人都可以获得的可靠系统。
扩展性—-P2P系统的用户数量可以急剧膨胀,可以与最大的集中式系统媲美。
性能—-各种资源之间可以协同工作来有效地解决问题。
P2P是一种基于互联网环境的新的应用型技术,主要为软件技术,P2P网络应用发展可能
要涉及到4个方面关键技术:

1) 对于互联网上众多计算机,P2P应用比其他应用要更多考虑那些低端PC的互联,它们
不具备服务器那样强的联网能力,同时对于以往的P2P应用技术,现在的硬件环境已经更
为复杂,这样在通信基础方面,P2P必须提供在现有硬件逻辑和底层通信协议上的端到端
定位(寻址)和握手技术,建立稳定的连接。涉及的技术有IP地址解析、NAT路由及防火
墙。 

2) 在应用层面上,如果两个Peer分别代表两家不同的公司,而且它们已经通过互联网建
立连接,那么一方的信息就必须为另一方所识别,所以当前互联网上关于数据描述和交
换的协议,如XML、SOAP、UDDI等都是一个完善的P2P软件所要考虑的。 

3) 有通信就要有安全保障,加密技术是必须要考虑的。 

4) 其他需考虑的有如何设置中心服务器,如何控制网络规模等。

与P2P相关技术,有许多其他的技术被称做P2P,或者与P2P相关,或者可以被当作P2P使
用,主要是以下几方面内容:

JINI技术;
软件代理(Agent)技术;
JXTA的竞争者(Gnutella和Freenet等);
Web Services技术。
 
二)JXTA设计目标及层次结构

1、JXTA设计目标

首先,JXTA是为了构建P2P网络而制订的一组协议,是处理构建P2P网络所碰到的问题的
解决方法,JXTA标准协议规范介绍如下:

    “JXTA由六个协议组成,这些协议是专为特定的、分布式的、对等的网络计算而设
计的。使用这些协议,Peer可以互相合作来建立自我组织、自我管理的对等组,而不必
关心它们在网络中所处的位置(在网络边缘或者防火墙的后面),并且也不需要集中的管
理机构。”

   因此JXTA的核心是六个协议,其次,JXTA是P2P应用程序开发的运行平台;目前JXTA
首先推出了基于Java的参考实现,提供了支持六个协议的Java API,JXTA还将推出包括C
语言在内的其他编程语言的API,JXTA在设计时有如下几个目标:

操作系统无关
语言无关
为P2P应用提供服务和基础
    从本质上讲,JXTA的目标是希望在任何设备,从台式机到PDA、汽车、洗衣机等设备
都可以支持P2P编程。这里有几个概念上的目标,它们包括:

使用组来组织Peer并且在组内提供服务和应用的环境。
组可以使用认证和验证方式来控制组内的访问权限。
通过网络来发布关于Peer和网络资源的信息。
通过系统来发布各种请求。    
提供一个基础平台,供Peer之间做路由和通信。在防火墙或者其他障碍后面的Peer之间
的通信也是这个目标中很关键的一部分。
提供一种机制允许Peer之间可以彼此监视状态和资源。
    除此之外还有一些其他目标,例如加密、支持不同的通信协议、易用性、稳定性和
性能等,所有这些目标在设计JXTA协议和最初的Java API时,都被考虑到,另外,开发
人员和Sun公司的管理者还考虑了以下目标:

系统应该允许任何设备直接加入到JXTA网络中去。
系统应该允许ISP对网络上的Peer进行集中管理。
系统应该支持数字产品版权的管理,例如购买的软件、音乐CD、电影等。
封装和抽象一些特定的核心功能,以便产生出商业方面的应用。
从上面列出的目标可以看出两点,首先要让企业觉得使用JXTA可以使自己对系统进行控
制,原因在于大部分P2P系统没有集中式的管理,所以在应用中不受企业的欢迎;其次,
对于硬件或者软件提供商来说,JXTA系统需要能够创造出利润。

    根据以上这些目标,JXTA被设计成企业可以接受的、容易维护的、健壮的,并且能
够满足任何P2P应用的概念。
 
2、JXTA的层次结构

JXTA由三层组成,如图1所示。第一层是JXTA核心层,它包含了服务所需要的核心功能;
第二层是服务层,它提供了访问JXTA协议的接口;第三层是应用层,它使用服务来访问
JXTA网络和JXTA提供的功能。这样的设计和一个标准的操作系统比较相似,标准的操作
系统包括核心操作系统、服务和应用程序。

JXTA                                              Sun JXTA
Applications     JXTA Community Applications      Applications JXTA
                                                               Shell
JXTA                                          Sun JXTA         ——-
Services         JXTA Community Services      Services         Peer
                                                               Commands
JXTA       Peer Groups   Peer Pipes   Peer Monitoring     
Core                        Security
                  Any Peer on the Expanded Web

                       图1 JXTA的层次结构

各层的说明如下所示:

核心层(JXTA Core):这一层封装了最根本的东西,包括Peer、对等组、Peer发现、Peer
通信、Peer监视和相关的安全原语。
服务层(JXTA Services):这一层包括对于P2P网络不是必需的、但很通用的功能,如查
找、共享、索引、代码缓存和内容缓存的机制。
应用层(JXTA Application):这一层包括了应用JXTA服务开发出来的完整的P2P应用程
序,例如myJXTA,JXTA-CAD等应用程序。

三)JXTA有关概念

  在JXTA网络中,有一些概念是需要熟悉和理解的,它们是从JXTA协议中提出的一系列
的专有名词。

  1、Peer(对等机)

  Peer是一个虚拟的通信点。在一台计算机或者设备上可以有很多个Peer,一个Peer并
不是一个用户,因为一个用户可以有多个Peer,同一个设备上也可以有多个Peer(在测试
的时候经常用到)。因为Peer不等同于用户,所以需要将用户和Peer抽象出来并分离开。

  Peer与特定的网络服务联系得很紧,在JXTA的参考实现中,Peer可以使用网络提供的
基本服务,例如rendezvous(集合点服务),router(路由服务),gateway(网关服务)等,
这些基本服务又可以提供搜索和通信服务,一般来说,并不是所有的Peer都使用这些服
务,它们只使用这些服务的一部分。

  2、PeerGroup(对等组)

  对等组是一种组织Peer并且发布组内的特定服务的方式。对等组可以被创建、加入和
退出,在一个组里还可以更新一个组成员的关系,由于一些原因,对等组需要对成员关
系进行一些限制,例如为了通信的安全、隐私的考虑等。这里使用一种协议来认证,它
专门收集信息并判断其是否符合成员关系的要求。

 对等组为应用程序提供了一种环境,例如对某个话题感兴趣的Peer可以组成一个组,并
且在组内使用一个聊天服务来讨论。这样,聊天的信息就会限制在那些加入到这个组内
的成员之间。并且,对于想加入到这个组的Peer,可以使用成员ID来进行认证;没有这
个ID的Peer不能够加人到组内,也就不能够使用组内的聊天服务,也可以把对等组看成
一个虚拟的私人网络VPN,一个VPN只允许几个计算机之间互相交流,而不允许因特网上
其他的成员加入,由于VPN使用了加密的方式,对于偷听者他们不能够理解组内的谈话,
对等组也可以限制Peer的加入,同样也可以对谈话消息加密。

  3、Endpoint(端点)

 在JXTA应用中,端点是最基本的通信方法。一个端点就是实现了特定通信协议的Peer的
地址。一个Peer可以有多个端点,这样可以通过不同的协议来与其他Peer通信。

 端点不一定要是物理地址,端点可以允许物理地址发生变化。端点的一个简单例子 就
是一个IP地址加上一个端口。通过使用这些值,可以打开一个流并且与目标Peer通信。
然而,JXTA在流的基础之上又放置了一层,称之为Pipe(管道)。这样,不是将一个流连
接到一个地址,而是把一个管道连接到端点上。端点和管道的好处在于,不用去关心
Peer所使用的真正的地址和协议是什么。使用抽象出来的端点和管道,可以为创建P2P应
用提供强大的功能并降低复杂性。由于管道使用通信协议来连接,端点描述了协议和连
接的所需要的信息。因此端点可以描述HTTP、TCP、BEEP以及其他可以支持的通信协议。

 一个Peer可以支持一个或者多个端点。通过使用多种协议,Peer可以提供更有效率的方
法。也就是说,如果两个Peer都在防火墙的后面,可以直接通过它们的TCP端点来通信;
如果两个Peer要穿过防火墙去通信,则需要使用HTTP的端点。

 4、Pipe(管道)

 管道是Peer之间的虚拟通道,通常,我们认为对等通信是单个的通信连接,但是也并不
是总是这样的,因为防火墙和其他障碍的存在,许多Peer并不能直接连接,这时,管道
更像一个在多种通信协议之上的虚拟层,可以通过起网关作用的Peer对通信提供中继支
持。

 管道是JXTA最基本、最重要的特性,它提供了一种很好的方案,使得Peer在大多数网络
情况下都可以通信,而不用去管防火墙或者其他的障碍,即使你不知道另外一个Peer的
位置以及它所使用的协议等信息,通过管道仍然可以与之通信;管道作为一种抽象的方
法,隐藏了一些细节,比如在多个连接的时候可能会有多个Peer参与进去,管道也可以
重新定位,找到原来的Peer。在JXTA的参考实现中,有几种常用到的管道,它们是:

单向异步—-这种管道只用来做单向通信。管道是异步的,消息到达时可能不是顺序
的。这是JXTA平台上最基本的一种类型的管道。
同步的请求/应答—-所有发出的信息都会收到一个应答消息,消息到达的顺序是按照它
们发送时候的顺序。
成批发送—-用来发送大量的数据。
流传送—-通过流可以更有效地传送诸如声音、视频等大量的数据。
双向—-它是两个单向异步管道的组合。    
单向同步—-所有发出的信息都会收到一个应答消息,消息到达的顺序是按照它们发送
时候的顺序。
单向可靠安全的管道—-所有发出的信息都会收到一个应答消息,并且这些消息都是加
密的。
管道还可以分成以下两种类型:

点到点类型—-点到点的管道连接两个不同的Peer。可以使用多个起网关作用的Peer来
创建连接。
传播类型—-将一个Peer连接到多个目标Peer。
    现有的JXTA参考实现已经提供了单向异步管道、单向可靠安全管道和双向的管
道。    JXTA和传统的网络是非常不同的,大多数网络协议或者没有地址,或者有一个
固定的地址,而JXTA抽象出一个概念叫做端点,用来作为地址。一个Peer可以有多个端
点,Peer可以通过一种或者多种协议例如TCP、HTTP等进行通信,所以可以使用多个端
点,JXTA使用多种传输协议的目的是为了在与其他Peer通信时可以选择最好的方式。如
果一个Peer在企业的防火墙的后面,可以使用HTYP来与防火墙之外的Peer通信,还可以
使用TCP来与防火墙内局域网内部的Peer通信,通过灵活使用多个传输端口,对特定的
Peer使用特定的协议,以得到最好的速度和响应。

 5、AdvertiSement(广告)

     一个广告就是一个XML文档,它用来描述JXTA的消息、Peer、对等组或者服务等。
广告都遵守编码、标签和内容的标准,广告用来交换JXTA网络上可以获得的任何信息。
例如,一个Peer创建了名称为“MyChat”的对等组后,就可以使用IP多播方式把广告发
布到本地的JXTA网络;也就说,子网中的每一个Peer都会收到一份广告的副本,此外广
告还会被发送到集合点去。

    Peer使用一种叫做集合点(Rendezvous)的特殊Peer来发现网络上其他地方的广告。
集合点Peer可以存储广告并且支持搜索。Peer可以使用对等组的名字或者其他属性来搜
寻该对等组广告。有了对等组的广告,其他的Peer就可以使用广告中的XML来实例化并加
入到“MyChat”这个对等组中。一旦成为对等组的成员之后,Pear可以使用对等组的环
境所提供的服务。

    广告实际上是P2P网络中的“名片”,P2P网络中的任何资源,包括Peer、对等组、
管道等都可以用广告来描述,目前是在P2P网络中标志资源,并且可以相互找到; 大多
数JXTA广告的编码是使用UTF-8,它是对Unicode的一种ASCII编码方式,UTF-8使用的是8
位编码,Unicode使用的是16位编码,因此可以节省一半的空间,只有在消息体中间可能
会使用到完全的Unicode编码,在消息体里可以指定使用Unicode或者其他的字符集作为
编码方式。

6、Message(消息)

    在JXTA中,有两种方式来处理消息。一种是使用XML格式,数据都遵循XML标准被包
装到消息里;另外一种是使用二进制格式。尽管希望对所有的JXTA消息都使用XML格式,
可是由于大量的消息需要传送,使用XML格式的消息会导致效率较低,而且由于消息通常
是在程序之间传送的,所以可以规范的消息内容使用二进制的格式;对于其他的仍然采
用XML格式。

    在一个XML协议中使用二进制消息看起来似乎不太合理,但事实上使用二进制消息,
除了可以得到紧凑的格式之外还有很多其他优点。首先数据可以使用一些标准技术进行
压缩,对文本等数据的压缩可以节省大量的传输时间;另外,许多消息本身就是二进制
的格式,例如文件共享程序中共享的文档可能就是二进制的,因此可以直接使用二进制
的格式;还有一个问题就是加密,为了加密可以把数据转化成为二进制,然后直接使用
二进制的消息来传输。

7、Rendezvous Peer(集合点)    

    一个集合点首先是一个Peer,而且是一个能够处理来自其他Peer请求的Peer。集合
点也可以将请求委托给其他Peer,当然那些Peer也必须是集合点。使用集合点的一个主
要目的就是为了方便在本地网络之外搜索广告。集合点通常拥有更多资源,并且可以存
储大量的有关它周围Peer的信息。

    集合点也可以作为搜索的传递者。集合点可以转发发现请求到其他的集合点(原集合
点通过与其他Peer的广告交互而得到了被转发集合点的信息)。每一个集合点如果本身没
有被请求的信息它都会转发该请求。
 
                    Peer3             防火墙
                      *          *      *       TCP
               IP多播 * TCP   *    HTTP * 返回45678的结果    
     通过TCP返回结果  *    *            * 
Peer2—————Peer1  返回45678  集合点4———-Peer8
        IP多播              的结果      *
                                 TCP    *       TCP
                                 请求   *  返回567的结果
                                      集合点5
                                     *     *
                                   *         *
                               Peer6        Peer7

                    图2 通过集合点进行Peer搜索的过程

   图2说明了一个典型搜索过程。远程搜索从Peer1开始,它首先通过IP多播(IP 
Multicast)询问本地的Peer2和Peer3,Peer2和Peer3很可能和Peerl处于同一个局域网
内,所以很快收到了搜索请求。接下来,如果Peer2和Peer3没有所搜索的特定资源,搜
索将通过集合点进行,Peer1会向它的集合点Peer发出搜索请求,如果该集合点Peer也没
有所需的广告信息,该集合点Peer会向它所知道的集合点Peer发出搜索请求。需要注意
的是,除了和提出查询请求的Peer处于同一局域网内的Peer收到查询请求外,在局域网
外只有集合点才会收到查询请求。

    IP多播(IP Muhicast)是一个一到多的消息传输协议。IP多播用来发送数据的副本到
一组地址。在P2P应用程序中,IP多播有两个好处。首先,因为多播使用一个组地址而不
是使用IP地址,一个Peer可以在不知道接收者地址的情况下发送消息。这样做的结果是
在多播网络中的所有Peer都可以响应发出请求的Peer,将有关查询的结果信息、甚至是
自己的IP地址(用于与请求Peer直接通信)发送回去。

    IP多播的第二个好处是减少使用带宽。因为所有的Peer都可以看到一个单一的消
息,没有必要向每一个Peer发送消息的一个副本。当发送大量的数据到一组Peer时,这
一点是非常重要的。使用多播的一个缺点是一些防火墙和路由器会阻塞多播的消息。在
因特网提供商之间通过因特网主干网可以支持多播消息,不过这种服务是需要额外付钱
的。还存在其他IP多播的障碍,比如个人防火墙、子网路由器。这就是为什么JXTA不是
仅仅支持IP多播的原因。一般情况下,只要在防火墙后能够支持多播对于大多数的P2P网
络就足够了。你可以这样来利用本地的多播,先将消息发送到每一个网络的某一个特定
的Peer上,然后该Peer又通过本地的多播将消息发送给本地的Peer。

    只有集合点允许进行超出局域网的搜索。一个Peer可以选择成为一个集合点,但这
不是必须的,作为集合点好的一面是集合点可以缓存的形式保留从其他集合点得到的查
询结果的副本;不好的一面是,该Peer将占用很多的内存和带宽。由于请求数量可能很
多并且大量的广告数据会消耗很多的计算机资源,在这种情况下我们可以选择将计算机
作为专用的集合点。集合点同时可以作为企业内部网的网关和路由器,其效果和使用传
统的路由器是一致的。在每一个子网内也需要使用一个集合点,是否选择使用专用的集
合点Peer取决于安全性的要求和使用的P2P应用的范围。P2P网络的拓扑结构需要通过多
个的例子来进行测试并且需要定期监控。特别要注意的是:当P2P网络的服务在大量Peer
上存有副本时,P2P网络的效率更高。有些时候并不是额外的集合点就可以提高网络的效
率。

    当一个Peer在搜索广告时或者是其他服务使用集合点机制来路由消息时,集合点才
被使用,因此一个Peer对集合点的需要不是持续的;为了能够更好地发挥作用,一个连
接到因特网的集合点最好尽可能地暴露给网络上的多个Peer,在防火墙内把所有的Peer
都配置为集合点不一定能够发挥很大的作用。

8、RouterPeer(路由Peer)

    JXTA中的一个路由Peer是一个支持Peer端点协议的Peer,不是所有的Peer都需要实
现该协议,因为和传统的网络路由器一样,我们只需要少数几个路由器去支持一个大网
络,JXTA路由器和传统的路由器非常相像,最主要的区别是P2P不是非常固定并且包括了
很多非静态地址。

    9、GatewayPeer(网关Peer)

    JXTA中的一个网关Peer是一个作为通信中继的Peer。网关Peer和集合点的不同之处
在于,网关是用来在Peer间传递消息,而集合点是用来传递请求的,网关Peer就像是无
线电转发器或者说是Peer间的一个中介,它传递消息,因为有防火墙、NAT设备和代理服
务器的存在,网关对网络的连通具有决定性的作用,网关可以存储消息,并且等待希望
得到这些消息的接收者来收集它们。

    网关的存在是因为因特网非常混乱。混乱的原因是有各种各样的用于防止Peer间通
过公用访问方法通信的安全保障和障碍物,另一个原因是各个Peer所支持的协议是不同
的,一些Peer可能使用TCP,另一些可能使用HTTP。在无线情况下,我们需要使用无线应
用协议(WAP),网关尽可能多地支持这些协议,因此它可以作为不同类型协议间的中介,
JXTA目前支持TCP和HTTP,不过对其他协议的支持正在开发中。

    在因特网上网关是与大多数安全机制交互的关键,防火墙、代理服务器和NAT设备是
主要的安全屏障。

    Peer1
          *   TCP管道
因特网       *
               网关对等机2
                          * 
防火墙或NAT的边界            *
——————————–*————————
    局域网                         *            HTTP管道
                                      *
                                       Peer3
                              
                 图3 通过网关对等机进行Peer间的通信

图3说明网关Peer2是怎样作为Peer1和Peer3之间的交互接口的。网关将从Peer1来的TCP
消息转换成HTTP消息传递给Peer3。当消息从Peer1发出时,是通过TCP发往网关Peer2,
网关Peer2存储了这个消息,直到Peer3向它发出获得消息的HTTP请求。
 
 三、JXTA协议
 
 
有六个协议构成了JXTA的核心,JXTA通过这六个协议来完成Peer之间的通信,彼此之间
的资源的发布和发现,信息的传递和路由,协议本身并不是应用程序,需要添加更多的
代码来开发有用的应用,协议隐藏了很多细节,这样使得编写JXTA应用程序比从空白开
发P2P应用要容易得多。

    JXTA在JXTA协议规范中定义了它的协议。此规范描述了Peer间如何通信和交互,它
并未描述实现的细节或如何编写P2P应用程序,下面是JXTA协议的列表,其中包含了协议
名称的首字母缩略词,这六个协议如图4所示。

      Peer Discovery             Pipe Binding             Peer Information
        Protocol                   Protocol   

                            Peer Resolver Protocol

                    Peer Endpoint           Rendezvous
                      Protocol               Protocol

                              图4 JXTA的核心协议 

    1、对等机发现协议Peer Discovery Protocol(PDP):主要用来发布自己的广告信
息,并且从其他Peer处获得广告。PDP允许一个Peer发现其他Peer的广告(包括Peer广
告、对等组广告、服务广告,或者是管道广告)。该协议通过指定一种广告类型(如
Peer、对等组)、一个XML标签名、一个匹配这个XML标签所表示数据的字符串来定义查
询。它使用Peer Resolver Protocol来发送和传播搜索广告的请求。

    2、管道绑定协议Pipe Binding Protocol(PBP):允许Peer之间建立虚拟的通信通
道。

该协议首要关注的是通过Peer端点路由协议提供的路由连接Peer。它使用Peer 
Resolver  Protocol来发送和传播搜索广告的请求。

    3、对等机信息协议Peer Information Protocol(PIP):用来获得其他Peer的状态信
息,包括更新时间、状态等等。该协议有时被用做ping命令,有时被用来获得一个Peer
的基本状态信息,PIP消息的正文是自由格式的,它允许询问特定的Peer信息。此外,这
种能力可以被扩展以提供控制能力,它使用Peer Resolver Protocol来发送和传播搜索
广告的请求。

    4、对等机解析协议Peer Resolver Protocol(PRP):允许Peer发送更一般的请求,
并可以接收到该请求的回应;同时可以将请求分发到组内的一个或者多个匹配的处理
器,Peer解析协议是一个基础通信协议,它按照一种请求/响应格式来进行,要使用这个
协议,需要提供一个查询的Peer和一个包含能被目标Peer理解的XML请求消息,该协议被
用来支持JXTA中的其他协议(PDP、PBP和PIP),而且允许传播查询,例如,如果一个Peer
收到一个查询并且不知道答案,解析协议就会将该查询发送给别的Peer。

    5、端点路由协议Peer Endpoint Protocol(PEP):通过该协议Peer以发送消息的形
式获得一条路由路径。它使用Peer间的网关来建立一条包含一个或多个适合建立管道的
管道协议组成的通路。管道绑定协议借助此Peer列表来建立Peer间的路由。一般情况下
传统的路由器和DNS服务器会因为防火墙、代理服务器和NAT设备等原因而无法建立连
接,而端点路由协议通过寻找网关来穿越诸如防火墙等障碍来建立连接。端点路由协议
还可以同时帮助相互不支持对方使用协议的Peer进行通信。例如,如果你连接支持TCP的
Peer-A和只支持HTTP的Peer-B,端点路由协议既可以选择一个可以支持此传输的网关,
又可以选择多个并且相互协议兼容的一组网关。

    6、集合点协议Rendezvous Protocol(RVP):通过该协议Peer可以对一个服务订阅或
者被订阅。集合点协议负责在JXTA对等组内传播消息,它为Peer在组内接收和发送消息
并且控制消息如何传播定义了一个基本的协议。

    从编写P2P应用程序的角度而言,可以简单地划分上述协议的主要用途:

Peer Discovery—-搜索资源
Peer Resolver—-一般查询服务
Peer Information—-监控
Pipe Binding—-可寻址的消息传递
Rendezvous—-消息传播
PeerEndpoint—-路由

四、JXTA的应用与发展
 
 
一)JXTA的应用

1、即时通信和文件共享(myJXTA)

myJXTA是在J2SE平台上的一个JXTA演示程序,主要为展示JXTA项目和P2P的一些概念,它
提供了一些功能,诸如安全的一对一的交谈、组内的交谈、组内文档的共享、搜索和下
载等。myJXTA使用JXTA平台的核心服务,完成发现组、加入组和创建组的功能;还有在
两个Peer 间创建连接,完成一对一的交谈;或者在组内建立连接,完成组内的交谈以及
组内文件的搜索和下载。该程序的主要目的是未了展示基于JXTA协议的P2P的工作方式。

2、网络游戏(Chess)

    JXTA技术已在许多游戏应用方面得到了展示,一个互动式的国际象棋比赛的应用程
序使用JXTA来传递两个棋手间的对奕过程,并将它展现给观众,国际象棋游戏和“tic-
tac-toe"游戏都可以用来展示JXTA在小型设备上的应用,一个游戏者可以创建一个新的
JXTAPeer组并邀请全世界其他游戏者加入他的游戏,当然也可以限制他人进入他的游戏
组。

3、协同工作

JXTA技术已经展示它在协同工作应用程序中的能力。用JXTA开发出来的集成开发环境可
以允许一个以上的开发者同时开发一个软件程序;另外一个协作式的JXTA应用程序允许
几个人同时编辑同一个电子数据表。其他JXTA项目中开发的合作开发工具包则利用了
JXTA进行会话、共享浏览和文件共享。

    由于具有通话功能,JXTA技术在合作开发中拥有这样一个优点:一个应用程序的开
发不需依赖于服务器或其他中央管理系统。JXTA处理新发现的节点,并保证路线通畅,
在用户和交互式应用程序间交换消息。

4、聊天程序

JXTA非常适合编写聊天程序,而且可以有多种实现方法,包括完全的集中式、代理方式
到完全非集中式。而且一个非常有意思的情况是,用JXTA来实现一个集中式的聊天程序
非常困难,而实现完全非集中式的聊天程序反而简单,因为JXTA平台本身已经完全解决
了底层Peer之间的发现和通信问题。在现有的JXTA项目中已经有许多聊天程序的例子,
包括myJXTA应用程序(原先称为InstantP2P)、JXTA shell中的Talk命令、HotWire应用程
序和其他几个编程指南。

5、JXTA 社区

JXTA是一个开放源代码的项目,它是由JXTA社区http://www.jxta.org在推动发展。在这
个站点上可以获取最新的JXTA文档和程序代码,而且你可以注册并加入到正在进行中的
JXTA项目,参与并推动项目的进展;这些项目分类存放,为用户展示了JXTA各方面的功
能;此外,站点上还有邮件列表,都是JXTA开发人员和P2P参与者就感兴趣的问题的讨
论。

二)JXTA的发展

1、各种语言的实现

目前JXTA只有Java的实现版本,以至于大家谈到JXTA都认为它是用Java开发的一套P2P框
架,而忽略了JXTA的实质只是一套独立于各种平台和语言的协议。因此在各种语言上实
现JXTA成为一项非常重要的工作。只有这样,因特网上的用各种各样语言实现的应用软
件就可以只需改写网络部分的代码而转换到JXTA平台上来。这不但大大地节省了工作
量,而且将会吸引大量因为各种原因无法采用Java语言的软件加入到JXTA中来,从而大
大促进JXTA协议的发展。现在正在进行的其他语言的实现有C,Perl,Python,
Smalltalk等等,显然这还远远不够,也许我们将来需要看到用Pascal,VB,C#实现的版
本。

2、各种平台的实现

跨平台,这是Java已经实现了的目标,但是并不表示JXTA就无事可做,一个真正的P2P网
络不仅仅是包括PC这个大家目前已经熟悉的设备,它还应该包含各种现在以及将来能够
连到因特网上的设备。头一个目标显然是PDA和手机这种移动设备,JXTA for J2ME以及
PocketJxta都已经在进行中,而且已经可以使用;但是,我们还要考虑到将来的各种设
备,这其中主要是各种各样的嵌人式设备。如果这些设备都运行JXTA平台,那么我们将
看到一个真正的P2P世界。

3、各种应用

有好的应用,一个平台是不可能流行起来的。目前在jxta.org上登记的应用开发项目有
多个,相比现实世界中的各种网络软件的数目,这个数字实在是很小。目前的JXTA应用
主要集中在即时通信和文件共享上面,这似乎成了P2P的代名词。但是如果只局限于这些
应用,JXTA的应用范围将会很有限。

4、Service

Service在JXTA中扮演着极其重要的角色,所有JXTA协议的实现都是以Service的形式存
在着的。除了几个核心服务外,目前JXTA上有多个关于Service的项目正在开展着,从某
种程度上来说,Service比Application更重要;如果没有好的Service,也就产生不了多
少好的应用,在这些进行中的Service中,Search是其中关键的环节,在没有中心服务器
的P2P网络中,如何有效地进行查找成为一个关键问题,与此同时,还需做到尽可能地减
少占用的带宽。

作者:务实,多年从事J2EE网站及应用系统项目的开发和应用。

作者:吴枫 李世… 文章来源:微软亚洲研究院网络多媒体组

一、 流媒体系统及其发展趋势

  所谓流媒体是指用户通过网络或者特定数字信道边下载边播放多媒体数据的一种工作方式。流媒体应用的一个最大的好处是用户不需要花费很长时间将多媒体数据全部下载到本地后才能播放,而仅需将起始几秒的数据先下载到本地的缓冲区中就可以开始播放,后面收到的数据会源源不断输入到该缓冲区,从而维持播放的连续性,因此流媒体播放器通常只是在开始时有一些时延。流媒体系统要比下载播放系统复杂得多,所以需要将多媒体的编解码和传输技术很好地结合在一起,才能确保用户在复杂的网络环境下也能得到较稳定的播放质量。

  多媒体数据在传输前必须要先经过编码器有效地压缩成码流,以减少对网络资源的占用率。目前常用的视频编码器有MPEG-2、MPEG-4、H.261、H.263、H.264、Window
Media视频编码器和Real System视频编码器等;音频编码器有MP3、MPEG AAC、Window Media
音频编码器和AMR等;图像编码器有JPEG和JPEG2000等。多媒体编码器所生成的码流只包含了解码该码流所必需的信息,它不包含媒体间的同步、随机访问等系统信息,因此编码后的多媒体数据还要被组织成为具有特定系统格式的多媒体文件用于流媒体传输或者是存入磁盘中,目前常用的文件格式有MPEG-2系统,MP4,微软公司的ASF,Real的文件格式,QuickTime的文件格式以及用于3G无线服务的3GPP和3GPP2等等。

  当流媒体在实时应用中(如现场流媒体广播),根据当前的网络状况和用户的终端参数,多媒体数据是一边被编码一边被流媒体服务器传输给用户。而在其他的非实时应用中,多媒体数据可以被事先编码生成多媒体文件,存储在磁盘阵列中。当提供多媒体服务时,流媒体服务器直接读取这些文件传输给用户,这样服务方式对设备的要求较低。目前许多流媒体服务属于后一种方式,这样就要求流媒体服务器具有一定的机制来适应网络状况和用户设备。

  目前码流自适应这一模块主要采用的方法有:将多媒体文件中的视频码流转换为一个特定码率和图像尺寸的码流;或者把同一段视频内容编码生成多个具有不同码率和图像尺寸的码流,然后自适应选择一个最合适的码流传输给用户。生成的码流还需要进一步打包成为特定网络传输协议的数据包用于网络传输,由于现在许多网络并不能保证传输的数据能够及时并完全正确地被用户收到,传输的数据包可能需要加前向纠错编码(FEC)来保护,经过这些处理后多媒体数据就可以通过网络传输给用户,目前常用的传输协议有RTP/RTCP、HTTP和MMS。

  用户收到传输的数据后,如果存在丢包或者是比特出错,错误恢复处理会根据附加的纠错数据来恢复传输错误。如果还不能恢复传输错误,用户端可以向服务器发出重传请求,在解码开始前重新传输丢失的包。恢复后的多媒体数据将由解码器解码得到重构的多媒体数据,由于容错保护和数据重传可能不能恢复所有的错误数据,错误掩藏模块可以利用重构的多媒体数据的相关性来掩盖这些错误,最后这些数据就播放给用户。

  通常流媒体系统中的服务器和用户间并不是单向通信,如前面提到的重传请求。事实上,用户端会传递给服务器许多反馈信息,如终端设备的能力和网络连接速度会传给服务器的码流自适应模块来调整码流,在实时应用中这些信息还可能传给编码器;用户端的丢包率、数据包收到的时间信息和用户缓冲区状态等信息也会传递给服务器来估计当前的网络状况,从而控制码流的自适应和数据的发送策略。从上面的描述来看,实际上流媒体系统在多媒体信息处理中是一个非常复杂的系统,目前市面上主要的产品有微软公司的Windows
Media, Real公司的Real System和苹果公司的QuickTime,其中Windows Media系统的市场占有率最大。

  这篇文章主要集中讨论流媒体的发展趋势和出现的新的服务和技术。早期的流媒体系统常用在互联网上传输一些低质量的多媒体信息,但是随着网络技术的发展,一些高质量的流媒体应用已经开始出现,如IPTV将向用户传输标清甚至高清的电视节目。另外,随着无线网络和各种各样手持设备的出现,无线流媒体的应用也变得越来越重要。并且由于很多现代家庭中既有高端的PC和电视,又有多种功能的手机,PDA,便携式媒体播放器,流媒体也将在家庭娱乐和数据共享上一显身手。针对这些应用的需求,流媒体技术本身也在迅速地变革和发展,例如利用一些高效的编码技术和传输技术提高流媒体系统性能;发展新的标准扩展流媒体技术到各种不同的网络和设备;在流媒体系统中增加更多的新功能来满足应用的需要。

  二、 流媒体新服务
  本章将讨论流媒体系统的一些新的应用和服务。
  1. IPTV

  据国际电信联盟ITU在2004年9月的一份报告指出,全球的宽带用户已经在去年底首度突破
1亿大关,其中中国电信的宽带用户就超过了1千万,用户的主要接入方式是ADSL和以太网线,其实际的连接速率可以达到1Mbit/s。而且随着高性能的编码技术的采用,如H.264和最新的Windows
Media视频编码器,800kbit/s的视频流就可以接近或达到DVD质量。

  在这种情况下,扩展流媒体技术用来提供电视服务也就顺理成章了。IPTV,也叫交互式网络电视,就是利用流媒体技术通过宽带网络传输数字电视信号给用户,这种应用有效地将电视、电讯和PC三个领域结合在一起,具有很强的发展前景。IPTV可以采用两种不同的方式提供用户电视服务,组播或者广播方式和视频点播(VOD)方式。一个明显的优势是IPTV是基于现在互联网的方式来实现服务器和用户终端的连接,因此很容易同时提供现有的互联网的服务,将电视服务和互联网浏览,电子邮件,以及多种在线信息咨询、娱乐、教育及商务功能结合在一起。

  2. 无线流媒体
  2.5G、3G以及超3G无线网络的发展也使得流媒体技术可以被用到无线终端设备上,目前中国联通公司提供CDMA
1x,用户网络带宽最多可以达到100kbit/s,这已经足够提供QCIF大小的流媒体服务;而且随着3G无线网络的应用,用户的网络带宽可以达到384kbit/s。另一方面,手机设备运算能力越来越强,存储空间越来越大,不用说SMART
Phone和Pocket PC等高端手机,就是一般的中档手机,如Nokia 6610,也能实现基本的H.264的软件解码。

  面向无线网络的流媒体应用对当前的编码和传输技术提出了更大的挑战,首先,相对于有线网络而言,无线网络状况更不稳定,除去网络流量所造成的传输速率的波动外,手持设备的移动速度和所在位置也会严重地影响到传输速率,因此高效的可自适应的编码技术至关重要。其次,无线信道的环境也要比有线信道恶劣的多,数据的误码率也要高许多,而高压缩的码流对传输错误非常敏感,还会造成错误向后面的图像扩散,因此无线流媒体在信源和信道编码上需要很好的容错技术。尽管手机设备的运算能力越来越强,但是由于它是由电池供电的,因此编解码处理不能太复杂,并且最好能够根据用户设备的电池来调整流媒体的接收和处理,能源管理技术也是移动流媒体的一个研究热点。

  3. 电子家庭

  现代家庭中的越来越多的设备可以用来采集,接收,发送和播放多媒体数据。如人们可以通过电视来收看电视节目,通过PC机在互联网上欣赏流媒体节目,通过自己的数字相机和摄像机来拍摄图像和视频,通过手机和其他手持设备来发送彩信,通过汽车的音响系统来欣赏音乐和广播。并且家庭中的网络连接也是多样化的,如电视连接有线电视网,PC机连接着互联网,手机连接着无线网络,而且这些设备也能在家里通过蓝牙或者802.11无线网连接在一起。

  所有这些设备所收到的多媒体数据如何在家庭网络和设备间共享,为流媒体的发展提供了一个更大的舞台,真正实现一种无所不在、随心所至的多媒体服务,让多媒体真正地像液体一样自由流动起来。流媒体在家庭网络应用中的关键是如何使多媒体数据能够适应不同的设备的能力,如在电视和PC机中播放的视频的大小可能是标清甚至是高清,但是同样的内容就可能需要经过流媒体系统有效的转换才能成为最适合在手持设备上播放的媒体。
三、 流媒体新技术

  这章我们将讨论高效的视频编码、可伸缩的视频编码和P2P技术,它们都能极大地改进当前流媒体系统的性能。


  1. 高效的编码技术


  流媒体系统中的多媒体数据要通过网络来传输给用户,高效的编码技术可以极大地降低流媒体系统对网络带宽的要求。目前标准化和商业化的视频编码技术都是基于运动补偿和DCT变换的,从早期的MPEG-1和H.261,到最新的MPEG-4
AVC/H.264和Windows
Media视频编码器都采用了这个框架。在这个框架中,运动估计和补偿模块用来消除相邻图像间的冗余信息,熵编码模块用来消除编码信号的冗余性,变换量化模块根据人的视觉系统对视频信号的细微变化的不敏感性丢失部分信息,从而提高压缩比。


  在这个编码框架下,过去十多年的时间内编码技术取得了很大的发展,事实上,最新MPEG-4
AVC/H.264标准的编码效率要比MPEG-1提高了4倍左右,除去更精细的运动补偿和基于上下文的熵编码外,帧内预测,多参考帧的预测,环路滤波和率失真优化技术也极大地提高了该标准的性能。


  2. 可伸缩性编码技术


  在前面两章中我们也讨论过,在流媒体应用中需要解决的一个基本问题是网络带宽的波动,不同的人在不同的时刻使用互联网和无线网络时,得到的数据传输率存在着很大的差异;甚至同一个人在同一个时刻,哪怕是在传输同一个视频流,实际的数据传输率也会存在较大的波动。目前在流媒体系统中所用的编码技术都是生成固定码率的码流,它们很难适应如此复杂的网络带宽的波动。一个有效的方法是采用可伸缩性的视频编码,MPEG-4和H.263标准中就包含了分层的可伸缩性的视频编码,它们提供一定的适应网络带宽变化的能力,但是在流媒体应用中人们更期望视频编码技术能提供精细的码流可伸缩性,MPEG-4
FGS就是一种这样的编码技术,目前MPEG-21可伸缩视频编码组正在研究两套编码方案:高效的FGS编码方案和3D小波编码方案。

  3.
多媒体标准技术


  多媒体编码标准在流媒体里是至关重要的。一方面标准的制定和执行确保不同厂家和服务商之间可以互通互联,另一方面标准里的知识产权也是商家必争之处。掌握了标准里的知识产权,在竞争的时候就有很大的主动权。所以很多商家乃至政府部门都在全力推出自己的知识产权到各种国际标准里去,甚至打造自己的产业或国家标准。


  4. 对等网络技术(P2P)


  P2P是当前互联网上较热门的技术,已应用到网络文件共享和Napster的MP3下载。其基本思想是通过P2P技术,除了和服务器外,每个用户可以共享他的文件或信息给其他用户。


  P2P技术也可以应用到流媒体,每个流媒体用户也是一个P2P中的一个节点,在目前的流媒体系统中用户之间是没有任何联系的,但是采用P2P技术后,用户可以根据他们的网络状态和设备能力与一个或几个用户建立连接来分享数据,这种连接能减少服务器的负担和提高每个用户的视频质量。P2P技术在流媒体应用中特别适用于一些热门事件,即使是大量的用户同时访问流媒体服务器,也不会造成服务器因负载过重而瘫痪。此外,对于多人的多媒体实时通信,P2P技术也会对网络状况和音视频质量带来很大改进。


  P2P技术如果与可伸缩性视频编码技术结合将能极大地提高每个用户所接收的视频质量。由于可伸缩性码流的可加性,媒体数据不用全部传输给每个用户,而是把它们分散传输给每个用户,再通过用户间的连接,每个用户就可以得到合在一起的媒体数据。即使每个用户与服务器的连接带宽是有限的,应用P2P技术,每个用户依然可以通过流媒体系统享受高质量的多媒体服务。


  四、结束语


  流媒体的发展正处在一个酝酿着突变的阶段。无论从应用、服务和技术,都将会产生一系列重大的突破。在流媒体的领域里,重点不应是只放在几个孤立的关键技术上,而是应该把流媒体当作一个系统工程,编码、传输、分享、网络以及设备都是互相联系的一个整体。怎么能在这样一个系统里,最有效地将流媒体以一种最适合用户终端设备的形式传送给用户,并且不增加服务器和网络负担,可能是能否在流媒体领域的竞争中立于不败之地的根本。

2006年03月16日

P2P流媒体网络的异构问题    转自 龙门客栈
                            David.Zhu    2006/1/3
1.P2P传输网络中的守恒定律
   为方便下面的描述,我们首先引入一些记号:
   N                              :   参与P2P网络的在线总人数
   Media_BitRate          :   流媒体的码流(单位:Kbps)
   Source_UpBandwith :   媒体源的上行带宽
   Peer_AvrUpBandwith:  普通节点的上行带宽
   Control Bandwidth    :  两节点间的控制带宽
   r                                :  数据冗余率
   根据总输入等于总输出,我们有如下的等式:
   Source_UpBandwith+N*(Peer_AvrUpBandwith)=N*(1+r)*Media_BitRate
  对于Source_UpBandwith和Media_BitRate一般会根据应用的需要有所限制,
  这里我们做如下假设:Source_UpBandwith=5Mbps=5120Kbps
                     Media_BitRate=450Kbps
                     r=2%
 
2.目前的网络状况及给P2P带来的挑战
    这里我们考虑的对象主要是ADSL接入用户,国内不同ISP提供的ADSL是不同的,
  一般是512Kbps的上行带宽,1Mbps的下行带宽,但实际可用的上行大约为350Kbps,
  下行大约为700Kbps左右,但有些接入带宽可能好些有些也可能比这个更糟糕。
   如果考虑上行为350Kbps的接入,那么基本上一个5M的媒体源只可能支持22个左右的
   节点,同时,上行带宽中还有一部分用于控制负荷,且350Kbps也只是可用的最大带宽,
   所以异构网络给P2P流媒体网络的扩展性带来的极大的挑战,而在同构网络例如教育网
   和局域网中就不会有这个问题,其上行带宽一般可以大于600Kbps,所以其支持的节点
   数量从理论上来说是无穷大的。

3.解决途径
    为解决上述问题有两个途径:增大源的带宽,通过类似CDN的网络来扩大源的带宽,但
  这个方法代价很高,且只能有限地增大网络容量,并不能保证容量达到1万,10万级的规模。
     另外一个解决的办法就是依靠网络的异构来解决其自身带来的问题,但这个解决只能有
  一个概率的质量保证,没有一个可靠的保证,无法用于高稳定的商用。