Napster structure

client machines之所以叫peers是因为对于server来说这些machines是平等对待的

当你upload一首歌曲如PennyLane.mp3时,它不会上传到别的地方而是存在你的machine(运行了napster client的machine)里面

Servers是由Napster.com运行的,这些servers保存的是目录信息(file pointers和peer pointers)

当Napster client运行时,它先连接napster servers(如上张图片所示的server与client之间的直线),然后client upload a list files it wants shares.

然后server保存list of tuples(如上图所示),server不保存文件。

Napster的一些操作

client将它需要查找的keyword发送给所连接的server,然后a group of server talk with each other查找它们的目录信息list,找到所有符合的pairs,然后将这些pairs发送给那个client, client接收到list,ping each of the hosts in the list来查找这些host传输文件的带宽.当你点击其中的一个item时,client开始fetch the file from the peer.

Servers在这里面所起的作用不是传输文件,而是查找文件的location.

message使用的是TCP协议(一种可靠的传输协议)

Napster Search

Peers是如何加入P2P system的?它们怎么知道应该contact哪个server

Servers都有IP addresses,这些servers的IP地址可能会发生改变,所以你想要一个well-known URL(如对于napster来说是napster.com).当一个client start up,它给这个URL发送一个DNS(domain name system) 查询,返回一个IP地址(a Napster server),然后这个peer开始与这个特定的napster server对话。

在其它的一些P2P system中,DNS可能返回a well-known server(这个server维护着一些最近加入的peers的IP地址),或者返回已经在system中的一个peer的ip address

DNS是一种很好的introduced方式,告诉新加入的peer一些最近加入的peers的信息或者已经在system中的peers的信息,这样这个新加入的peer就可以使用它们来建立neighbor list

这个技术不仅仅用在Napster中用于新加入的peer来know about一个或多个servers;还用在后来的Gnutella system,用于新加入的peer来know about一些已经在系统中的peers.

一些问题

centralized of congestion:如果servers are overload with queries即使它们并不传输文件,但这些queries 却overwhelm它们,然后整个系统会变慢,查询也变慢

centralized of failure:如果一台或几台server挂掉的话,整个系统将受到牵连

No security:最初版本的Napster并没有security

以上的这些原因不是Napster bring down的原因,它真正bring down的原因是法院(版权问题),napster帮助users indirectly侵犯版权(indirectly infringement)。napster落没了,Gnutella发展起来,并且解决了一些上面的problems

P2P system: Napster的更多相关文章

  1. P2P system: Introduction

    P2P system : peer-to-peer system 一些流行的P2P system: Napster, Gnutella 我们为什么研究P2P system 大型的分布式系统有成千上万个 ...

  2. P2P system: GNUTELLA

    P2P system: GNUTELLA GNUTELLA是第一个经论证的分布式的peer-to-peer system. Napster的一个重大问题是涉及到间接侵权,所以GNUTELLA消除the ...

  3. P2P system: Chord

    DHT= Distributed Hash Table store the objects(files) at nodes (hosts, machines) in a cluster. The cl ...

  4. P2P system: FastTrack and BitTorrent

    FastTrack FastTrack来源于Gnutella,是Gnutella 和 Napster的杂交体 有些node承担了更重要的责任,这些nodes称为supernodes,因为这些改进,它比 ...

  5. P2P system:How Chord tackles failures

    若有peer failures 怎么办 接上面的例子,如果N32 fail掉了,但是N80的finger table还没有更新,这样query到了N16,它找不到N32,只有N80,这样query就会 ...

  6. P2P/WSN信任建模与仿真平台

    1.ART Testbed 该平台是基于多代理的信任仿真平台,官网的介绍如下: The Agent Reputation and Trust (ART) Testbed initiative has ...

  7. Chord算法(原理)

    Chrod算法是P2P中的四大算法之中的一个,是有MIT(麻省理工学院)于2001年提出,其它三大算法各自是: CAN Pastry Tapestry Chord的目的是提供一种能在P2P网络高速定位 ...

  8. Smart internet of things services

    A method and apparatus enable Internet of Things (IoT) services based on a SMART IoT architecture by ...

  9. HDU 3269 P2P File Sharing System(模拟)(2009 Asia Ningbo Regional Contest)

    Problem Description Peer-to-peer(P2P) computing technology has been widely used on the Internet to e ...

随机推荐

  1. springboot集成kaptcha验证码

    在pom.xml引入依赖 <!-- 验证码 --> <!-- https://mvnrepository.com/artifact/com.github.penggle/kaptch ...

  2. AndFix Bug 热修复框架原理及源码解析

    作为阿里巴巴开源的 Android 应用热修复工具——AndFix,帮助 Anroid 开发者修复应用的线上问题.Andfix 是 “Android hot-fix” 的缩写. 1.什么是AndFix ...

  3. 微信开发核心AccessToken实现

    Common <?php namespace Proxy\Action; use Think\Action; use Vendor\Func\Red; class CommonAction ex ...

  4. python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)

    11.4 JavaScript 11.41 变量 1.声明变量的语法 // 1. 先声明后定义 var name; // 声明变量时无需指定类型,变量name可以接受任意类型 name= " ...

  5. 关于python的一次性能调优过程

    问题 这两天在公司帮老大写一个程序功能,要求抓取从elasticsearch和kibana服务器上返回的数据,统计所有hits的数据字段ret_code为0的hit,并计算其占有率等一些功能. 功能倒 ...

  6. PAT(B) 1052 卖个萌(Java:0分 待解决,C:20分)

    题目链接:1052 卖个萌 (20 point(s)) 题目描述 萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们 ...

  7. 关于#define 的宏替换的一些问题

    #define PI 3.14; int main() { , s = ; s = r * r * PI; s = PI * r * r; // s = 3.14; * r * r; printf(& ...

  8. nginx修改响应头(可屏蔽后端服务器的信息:IIS,PHP等)

    修改nginx反向代理请求的Header 需要使用到proxy_set_header和add_header指令.其中: proxy_set_header 来自内置模块ngx_http_proxy_mo ...

  9. netty--buffer分配策略

    AdaptiveRecvByteBufAllocator 动态分配buffer大小的类. 如果前一次读取完全填满了分配的缓冲区,它将逐渐增加预期的可读字节数.(增加的方式:初始化类的时候,会预先设置好 ...

  10. 修改mysql远程数据库链接密码(转)

    原文:https://blog.csdn.net/jianjiao7869/article/details/81029171 原来root用户有两个,一个只允许localhost登陆,一个可运行所有用 ...