本系列基于哈工大李全龙老师课程
目录
一.P2P原理和文件分发
1.1介绍
P2P应用是指允许用户直接在彼此之间共享和交换数据的应用程序,而不是通过集中式服务器。它的工作原理是通过将文件分割成小块并从其他用户处直接下载,提高下载速度和可靠性。著名的P2P应用包括BitTorrent。P2P应用的优点是可以充分利用用户之间的带宽和计算资源,具有去中心化的特点。然而,也存在一些风险,如非法共享和版权侵犯。
1.2原理
P2P(点对点)原理是一种分布式网络通信模型,它允许直接连接的节点(也称为对等节点或对等方)之间相互通信和交换数据,而不需要依赖集中式服务器。
在P2P网络中,每个节点既可以作为客户端,也可以作为服务器,可以同时下载和上传数据。节点之间通过建立直接连接进行数据传输,而不是经过中央服务器。这种直接连接的方式可以提高传输速度、减少延迟,并且不会造成单点故障。
P2P网络的工作原理通常包括以下几个步骤:
-
发现节点:新加入的节点需要通过某种方式找到网络中的其他节点。这可以通过中央服务器、DHT(分布式哈希表)或其他节点的帮助来实现。
-
建立连接:节点之间通过建立直接的连接来进行通信。这可以通过使用TCP/IP协议或UDP协议来实现。
-
数据传输:节点之间可以直接交换数据,包括文件、消息等。数据可以分割成小块进行传输,每个节点可以同时从多个节点下载数据块,以提高下载速度。
-
分享资源:节点可以共享自己的资源,其他节点可以从它们那里下载。这种共享可以是对等的,即每个节点既可以下载也可以上传数据。
P2P原理的优点包括高效的资源利用、去中心化、高度可扩展性和抗单点故障能力。然而,它也面临一些挑战,如安全性、稳定性和管理问题。
1.3文件分发
P2P文件分发是指通过P2P网络将文件分发给其他用户。在P2P文件分发中,一个用户可以将文件上传到P2P网络中,其他用户可以从该用户或其他用户那里下载文件。
P2P文件分发的过程通常包括以下几个步骤:
-
发布文件:用户将文件上传到P2P网络,并将文件的元数据(如文件名、大小、哈希值等)发布到P2P网络中。这样其他用户就可以通过搜索或浏览来找到并下载该文件。
-
下载文件:用户可以通过搜索或浏览P2P网络来找到感兴趣的文件。一旦找到文件,用户可以选择从其他用户那里下载该文件。
-
分块下载:P2P文件分发通常将文件分割成小块进行下载。用户可以同时从多个用户那里下载不同的文件块,以提高下载速度和可靠性。
-
共享文件:一旦用户下载了文件,他们可以选择继续共享该文件。这意味着其他用户可以从他们那里下载该文件,形成一个循环,增加文件的可用性和下载速度。
1.4BitTorrent
在BitTorrent网络中,有两种主要的角色:种子(Seeders)和下载者(Leechers)。种子是指已经下载完整文件的用户,他们继续保持连接并分享文件给其他用户。下载者是正在下载文件的用户。
chunk:
在文件分发和网络传输的上下文中,"chunk"是指将文件分割成的小块。这些块通常具有相同的大小,通常是几十KB到几百KB之间。
将文件分割成块的好处是可以实现更高效的文件传输和下载。当用户下载文件时,他们可以同时从多个来源(如其他用户或服务器)下载不同的文件块。这种并行下载的方式可以显著提高下载速度,因为用户可以同时从多个来源获取数据。
在BitTorrent协议中,"tit for tat"策略也适用于文件块的交换。当一个下载者从其他下载者获取文件块时,它会采用tit for tat策略,即以相同的方式回应对方的行为。
具体来说,如果一个下载者向另一个下载者请求一个文件块,并且对方成功地提供了该块,那么下载者会对对方进行积极的回应,例如提供更多的文件块或增加上传带宽。这种回应可以建立起互惠关系,鼓励其他下载者也积极地提供文件块。
另一方面,如果一个下载者请求文件块但对方没有响应或提供了错误的块,那么下载者可能会采取相应的措施,例如减少对对方的上传带宽或暂时中断与对方的连接。这种回应可以防止不诚实或不可靠的下载者对整个文件共享网络造成负面影响。
二.P2P的索引
2.1介绍
P2P索引通常由一个或多个中央服务器维护,这些服务器存储了网络中所有共享文件的元数据和相关信息。
P2P索引的主要功能是提供一个集中的位置,使用户能够搜索和发现其他用户共享的文件。通过索引,用户可以输入关键词或文件名来搜索他们感兴趣的文件,并获取相关的下载链接、文件大小、文件质量等信息。用户还可以通过索引查看其他用户的共享文件列表,以便选择下载。
如何理解P2P索引:信息到IP地址+端口号的映射?
P2P索引中的信息到IP地址和端口号的映射是指将共享文件的相关信息,例如文件名、大小、质量等,与提供该文件的用户的IP地址和端口号进行关联。
当一个用户在P2P网络中共享文件时,他的客户端程序会将文件的相关信息上传到P2P索引服务器。这些信息包括文件名、大小、质量等元数据,以及提供该文件的用户的IP地址和端口号。
其他用户在搜索和浏览P2P索引时,可以通过索引服务器获取到共享文件的相关信息。当他们决定下载某个文件时,他们的客户端程序会使用提供该文件的用户的IP地址和端口号来建立直接的P2P连接。
通过这种映射,下载者的客户端程序可以直接与提供者的客户端程序进行通信,以请求和获取文件块。下载者的客户端程序会向提供者的IP地址和端口号发送下载请求,并接收提供者发送的文件块。
2.2 例:QQ中P2P的运用
在QQ中,P2P索引的作用是帮助用户发现和连接其他在线用户,以进行实时消息传递和文件传输。当用户登录QQ时,他们的客户端程序会向QQ服务器注册,并将自己的IP地址和端口号等信息上传到服务器。
QQ服务器会维护一个P2P索引,其中包含了所有在线用户的IP地址和端口号。当一个用户想要与另一个用户进行通信时,他的客户端程序会向QQ服务器发送请求,获取目标用户的IP地址和端口号。
通过获取目标用户的IP地址和端口号,发起用户的客户端程序可以直接与目标用户的客户端程序建立P2P连接。这样,用户之间可以直接传递消息和文件,而不需要通过QQ服务器作为中介。
2.3集中式索引
Napster是一个历史上非常著名的音乐共享软件和服务。Napster的目标是通过P2P技术来实现音乐文件的共享和下载。
Napster的工作原理是基于中央服务器和P2P网络的结合。它的中央服务器维护了一个索引数据库,其中包含了用户分享的音乐文件的相关信息,例如歌曲名称、艺术家、文件大小等。
当用户使用Napster时,他们的客户端程序会连接到Napster的中央服务器,并搜索他们感兴趣的音乐文件。通过中央服务器的索引数据库,用户可以找到其他用户分享的音乐文件。
一旦用户找到了想要下载的音乐文件,他们的客户端程序会通过P2P网络与拥有该文件的用户的客户端程序建立直接的连接。这样,用户可以直接从其他用户那里下载文件,而不需要经过中央服务器。
Napster的出现引起了巨大的轰动,因为它提供了一种便捷的方式来共享和下载音乐文件。然而,Napster也面临着版权侵犯的指控,因为大量的音乐文件被非授权地共享和下载。
集中式索引的问题:
查询: