Napster的P2P系統

大囚長發表於2019-01-09

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

相關文章