`
ahuaxuan
  • 浏览: 640670 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

信p2p者,得永生(一)

阅读更多

开篇

    此文章的题目来自于当下的两哥之争,本意有调侃之意,但是用在本文,却无此意,我以十分真诚并且后知后觉的态度认定,p2p是未来的主要计算模型。尤其是在视频音频领域,但是将来,p2p一定会拓展到普通的计算上。

    要解释清楚这个问题,我们得从当下最流行的音频视频p2p软件聊起。先来说说较为简单的一个音频p2p软件,酷狗。

    酷狗的原型应该是来自于一个国外的公司,名字我已忘记,那家公司也是通过mp3的p2p下载作为主要业务,不过可惜的是在美国mp3因为版权问题非常严重,所以那家公司的最终结局只有一个,就是关门。

    但是在中国就不一样了,版权问题没有这么严重,或者说相当的不严重,所以酷狗活得很好。这就是国情啊(理论上来讲,酷狗应该也有一些版权问题,可能跟版权商有合作关系,不过大多数的音频应该没有版权问题,这种情况和视频网站是类似的)。

    下面让我们来看看酷狗的技术实现。以下都是ahuaxuan的猜测,供大家讨论,未必完全正确,也未必完全错误,拿出来和大家探讨。

    酷狗应该是采用中心的目录服务器结构来实现p2p的功能,也就是说,所有的音频文件的基本信息都会注册到酷狗的中心目录服务器上,那么酷狗的客户端需要下 载某个视频的时候,则从中心目录服务器上查找,找到相信的音频信息,每个音频信息都会对应一堆地址,这些地址是其他的拥有该音频的客户端ip。让我们用一 张图来描述一下这个问题:


这样我们就可以虚拟一个流程出来:
1.1号客户端请求中心目录下载服务器,要求下载“”。
2.  中心目录服务器通过搜索引擎分词,查询之后,得到一堆id。
3.  中心目录服务器根据id查找id对应的ip。显然一个id拥有多个ip,是1:n的关系。
    (很不巧,这首歌2,3号客户机上都有, 当然这里并不是应该返回所有的ip地址,而是应选择最短路径的地址返回。让我们来怀念一下dijikstra。
4.  中心目录服务器返回音频文件的ip列表。
5.  1号客户机得到两个ip地址,然后分别2号机请求音频的第一段,从3号机请求音频的第二段。即多地址多线程分段下载。
6.  1号机下载完成之后通知中心目录服务器,这样中心目录服务器关于这个视频又多了一个ip地址供其他客户端下载。


这个应该是最概要的流程,接着可以在这个流程上细化。

从上图我们可以看到,任何一个客户机既是client,又是server。作为client,它从其他server上下载数据,作为server,它提供数据给其他client下载。

    所以当我们开着酷狗听歌的时候,其实你的机器就变成了下载服务器了,同样,如果你用的是迅雷,而且一直不把迅雷关掉,那么你的机器就成为专职的下载服务器了。

    看到这里,我们有理由相信,如果掌握了下列技术,做一个酷狗不是什么难事,括号后面是ahuaxuan的选型。

1.    搜索技术(lucene)-服务器端
2.    音频管理系统(java,同时涉及到缓存和数据库系统)-服务器端
3.    客户端ui编程(最好是mfc之流)-客户端
4.    下载服务器(c,对windows的io比较熟悉)-客户端

正如前面所说,这个只是非常高层次的设计,而且对于有过大型网站系统经验的人来说,1,2点是没有问题的。然后3,4点需要对c/c++比较熟悉的人来做,当然btcomet据说是python写的。所以我也在思考python+c实现客户端的可行性。


    上面讲到的是基本的整个软件的结构体系,或者称为“架构“,在high level层面还有一个问题,就是协议的问题,客户端之间相互下载应该使用说明协议,以及客户端和服务器端的交互应该使用什么协议,目前ahuaxuan 选择的是bt协议。利用成熟的协议可以减少很多的工作量。或者电驴的协议应该也不错,不过没有深入研究过。


大家一起来拍砖。

分享到:
评论
4 楼 java.lang.Object 2009-08-12  
前年做过一个类似飞鸽的东西,在局域网用来传文件的,不需要登录,只要启动以后,就会自动加入一个组播组,用组播实现局域网内的互相通知。然后基于UDP来发送消息。基于TCP来收发文件,也做了一个基于UDP的发送文件功能。由于UDP是不可靠的,重新组装包的顺序以及请求重发包的逻辑搞了挺久的。
当时想做一个UDP注册到中心服务器上,然后就可以全网UDP和TCP都能传文件了,但是当时没有外网的服务器一直都没有做成。
3 楼 java.lang.Object 2009-08-12  
你有兴趣做类似的东西么,有兴趣的话,叫上我哦。
2 楼 ahuaxuan 2009-08-12  
java.lang.Object 写道
客户端处于内网怎么办?另外的人是不能直接连接处于内网的服务器的,这个时候,我觉得可以使用UDP穿透内网。
也就是说客户端向中心服务器注册,中心服务器此时就知道了当前客户端所打开的UDP端口,这个端口是别人客户端也可以访问的。就像QQ传文件有时候用UDP,有时候用TCP一样,如果是外网,那TCP当然最好了,如果是内网,就只能用这种先注册,然后再使用的UDP的方式。
所以中心服务器要记的不仅仅是每个客户端的IP地址,还记录他们是处于外网还是内网,如果是内网的话,还要记录每个客户端所打开的UDP的映射端口。这样这个客户端才有可能成为一个服务器,让别人来访问。

恩,是的,上网找到一个python使用udp穿透的例子,先研究研究。

中心服务器需要记录的内容还是挺多的,我现在不太明白的是btcomet是怎么做的,其实酷狗的做法应该也是类似的。
1 楼 java.lang.Object 2009-08-12  
客户端处于内网怎么办?另外的人是不能直接连接处于内网的服务器的,这个时候,我觉得可以使用UDP穿透内网。
也就是说客户端向中心服务器注册,中心服务器此时就知道了当前客户端所打开的UDP端口,这个端口是别人客户端也可以访问的。就像QQ传文件有时候用UDP,有时候用TCP一样,如果是外网,那TCP当然最好了,如果是内网,就只能用这种先注册,然后再使用的UDP的方式。
所以中心服务器要记的不仅仅是每个客户端的IP地址,还记录他们是处于外网还是内网,如果是内网的话,还要记录每个客户端所打开的UDP的映射端口。这样这个客户端才有可能成为一个服务器,让别人来访问。

相关推荐

    p2p终结者,一代利器

    P2P终结者是一款专为解决网络带宽被过度占用问题而设计的软件。它主要用于管理和限制局域网内的P2P(Peer-to-Peer)网络流量,确保网络资源的合理分配。在标题中提到的“一代利器”,暗示了该软件在特定场景下具有...

    P2P终结者+反P2P终结者

    标题中的“P2P终结者+反P2P终结者”指的是两个与网络管理相关的软件工具,一个是"P2P终结者",另一个是"反P2P终结者"。这两个工具在IT领域中有着特定的应用场景和功能。 P2P(Peer-to-Peer)终结者是一种网络流量...

    p2p 终结者 网管

    p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结者 p2p 终结者p2p 终结者p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结...

    反P2P终结者 用来对付p2p终结者

    标题中的“反P2P终结者”是一款网络工具,旨在对抗名为“P2P终结者”的软件。P2P终结者是一种网络管理工具,它能够限制局域网内其他用户的P2P(点对点)下载速度,从而影响他人的网络体验。反P2P终结者的出现是为了...

    反p2p终结者杀死局域网中的p2p终结者

    标题“反p2p终结者杀死局域网中的p2p终结者”指的是一个特定的软件或技术解决方案,用于在局域网环境中对抗P2P(peer-to-peer)终结者软件。P2P终结者是一种网络管理工具,它通常被用来限制或阻止局域网内的P2P文件...

    P2P终结者4.07

    【P2P终结者4.07】是一款在局域网环境下使用的控制软件,它的主要功能是对局域网内的网络流量进行管理和控制,尤其是针对P2P(Peer-to-Peer)下载应用,如BitTorrent、eMule等,能够有效地限制这些应用的带宽占用,...

    P2P终结者限制P2P

    标题中的“P2P终结者”是一款网络管理软件,主要用于监测和控制局域网内的P2P(Peer-to-Peer)网络流量。P2P是一种网络通信模型,其中每个参与者既是客户端也是服务器,允许用户之间直接共享数据,如文件、视频流等...

    P2P终结者是由Net.Soft工作室开发的一套专门用来控制企业网络P2P下载流量的网络管理软件

    在企业环境中,P2P下载常会导致网络拥塞,影响其他重要业务的网络性能,因此P2P终结者的出现,旨在为企业提供一种解决方案,优化网络资源分配。 P2P技术,全称对等网络技术,是一种分布式共享文件的方式,用户之间...

    p2p终结者4.03

    P2P终结者是由Net.Soft工作室开发的一套专门用来控制企业网络P2P...而且,P2P终结者开发人员将不断跟踪最新P2P协议发展动态,以实现软件更完善的控制功能,同时也会吸取用户的反馈意见,以把P2P终结者软件做得更加完善

    p2p终结者4.26

    P2P终结者4.26是一款专为网络管理设计的实用工具,尤其针对局域网环境中的带宽控制问题。它能够有效地抑制BT、电驴等P2P下载软件过度占用网络资源,从而确保网络的顺畅运行,对提升整体网络性能具有重要意义。 首先...

    P2P终结者 4.04P2P终结者 4.04P2P终结者 4.04

    P2P终结者,全称为"P2P Over Network",是一款针对局域网内的P2P流量进行管理和控制的软件。版本号4.04代表着该软件在经过多次迭代与优化后,其功能与性能已经相当成熟,为用户提供了一套强大的网络管理解决方案。 ...

    P2P终结者 4.22

    P2P终结者 4.22是一款绿色完美的网络流量管理软件,它主要用于控制局域网内P2P(Peer-to-Peer)协议的流量,帮助用户合理分配网络资源,尤其在共享网络环境下,能有效避免P2P应用占用过多带宽,保障其他网络活动的...

    p2p终结者xp

    针对这一问题,一款名为"P2P终结者XP"的软件应运而生,它是一款专门用于管理P2P流量的工具,旨在帮助用户优化网络资源分配,保障网络环境的稳定。 P2P终结者XP的核心功能在于限制P2P程序的带宽占用,确保网络带宽...

    p2p终结者者2008

    【标题】"p2p终结者者2008"所指的是一款网络管理软件,主要功能在于限制局域网内的P2P(peer-to-peer)流量,防止其他用户过度占用网络带宽,确保网络资源的公平分配。P2P终结者在2008年发布,那时候P2P文件分享应用...

    P2P终结者 4.14 

    而且,P2P终结者开发人员将不断跟踪最新P2P协议发展动态,以实现软件更完善的控制功能,同时也会吸取用户的反馈意见,以把P2P终结者软件做得更加完善。 4.03 [2009-01-18] +增加主机配置备份功能 +增加主机配置...

    P2P终结者 4.13

    P2P终结者是一款网络管理软件,用来管理局域网中BT、电驴等大量...而且,P2P终结者开发人员将不断跟踪最新P2P协议发展动态,以实现软件更完善的控制功能,同时也会吸取用户的反馈意见,以把P2P终结者软件做得更加完善。

    p2p终结者4.34

    P2P终结者针对目前P2P软件过多占用带宽的问题,提供了一个非常简单的解决方案。P2P终结者基于底层协议分析处理实现,具有很好的透明性。软件可以适应绝大多数网络环境,包括代理服务器、ADSL路由器共享上网,Lan专线...

    P2P终结者3.6版

    【P2P终结者3.6版】是一款经典的网络管理软件,主要针对局域网环境中的流量控制。在本文中,我们将深入探讨P2P终结者的功能、工作原理以及其在局域网流量管理中的作用。 P2P终结者是一款免费的网络控制工具,其主要...

    P2P终结者安装包

    【P2P终结者安装包】是一款针对P2P网络流量管理的软件,主要用于限制局域网内其他用户过度占用网络带宽。P2P,全称 Peer-to-Peer,是一种点对点的网络通信模式,它使得网络中的每个节点(用户)可以直接与其他节点...

    P2P终结者最高权限版本

    【P2P终结者】是一款网络管理工具,主要用于限制局域网内其他计算机的P2P(Peer-to-Peer)流量,以优化网络资源分配,防止因某些用户大量占用带宽而导致网络拥堵。这款“最高权限版本”通常指的是具有更全面、更强大...

Global site tag (gtag.js) - Google Analytics