活力38036
在线时间12374 小时
阅读权限200
管理员
自由的灵魂
- 积分
- 101141
- 主题
- 5317
- 回帖
- 26294
- 注册时间
- 2003-4-10
- 最后登录
- 2025-2-28
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
知乎用户
10 人赞同了该回答
创建于: 2020-04-22 00:28:21 编辑于: 2020-04-22 01:14:21
简单科普一下
当很多主机(host)想要从一个服务器(server)获得同一个大文件(视频等),这个时候用到P2P。每一个peer在收到一部分数据(chunk)的时候都会同时地分享给别人,所以就很快,这个你应该知道。
这些参与下载的host我们又称作peer。每个peer向别的Peer下载一个固定的等大小的chunk(256KB)。这些chunk就是想要下载的文件的一部分。所以逐步每个peer会有很多chunk积累起来,大家下载地也就越来越快。
每一个资源都有一个tracker,可以理解为服务器, 用来记录了所有参与这个资源下载的peer的IP地址,新加入的成员会获得一部分peer,称作他的邻居。
种子文件(Torrent)就是tracker信息和文件的集合体!
那么每一个peer如何知道他下一个应该索取哪一个chunk?又应该向谁索取新的chunk?给谁提供chunk? 这可不是随机乱来的。
两个原则:
rarest first, 在这个peer周围的邻居中最稀少的chunk就是他索取的chunk
trading algorithm,谁给自己提供的chunk最快就把自己有的chunk发送给谁
遵循这个原则,如果自己的上传速度太慢(或者你限制了上传速度),也就是没办法给别人很快的提供chunk, 那么自己就很容易也收不到别人的chunk,这个时候我们称之为choke,也就是你卡死了,所以p2p的精神就是我为人人,人人为我。
编辑于 2020-04-22 |
|