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. CSS 常用效果--持续更新

    单行超出省略: white-space: nowrap; text-overflow:ellipsis; overflow:hidden; 多行超出省略: text-overflow: -o-elli ...

  2. php cli传递参数的方法

    php cli传递参数的方法 <pre>$options = "f:g:"; $opts = getopt( $options ); print_r($opts); & ...

  3. 利用sourceinsight宏(Quicker.em)提高编码效率和质量

    利用sourceinsight宏(Quicker.em)提高编码效率和质量Marco是sourceinsight软件一个强大的功能,用户可以通过编写宏来实现自定义功能.这里有个比较流行的宏文件quic ...

  4. 使用redis调用lua脚本的方式对接口进行限流

    java端实现: //初始化一个redis可执行的lua DefaultRedisScript<List> defaultRedisScript = new DefaultRedisScr ...

  5. [转帖]oracle补丁类型

    oracle补丁类型 https://www.cnblogs.com/liang545621/p/9417919.html 介绍挺好的 跟现在的也比较类似呢.   名称 说明 Release ¤ 标准 ...

  6. git合并原则

    目前实验结果为: 假设有master和branch1,用master合并branch1时(在master分支中执行git merge branch1): 1.在同一个地方,master做了修改,bra ...

  7. ionic开发遇到的问题总结

    前言 ionic是一个用来开发混合手机应用的,开源的,免费的代码库.可以优化html.css和js的性能,构建高效的应用程序,而且还可以用于构建Sass和AngularJS的优化.ionic会是一个可 ...

  8. CCF 2017-03-1 分蛋糕

    CCF 2017-03-1 分蛋糕 题目 问题描述 小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, -, an.小明想分给每个朋友至少重量为k的蛋糕.小 ...

  9. Centos6 Connect WiFi

    Centos6 Connect WiFi // 安装 wireless tools yum install wireless-tools dkms pciutils lsusb // 使用wlan命令 ...

  10. Springboot2.x整合Redis以及连接哨兵模式/集群模式

    依赖: <!--spirngboot版本为2.x--><!-- 加载spring boot redis包,springboot2.0中直接使用jedis或者lettuce配置连接池, ...