计算机网络p2p协议在第几页_p2p传输协议

计算机网络p2p协议在第几页_p2p传输协议在上篇文章中说过,要写写P2P协议的,嗯,来写写,虽然写的不是太好.P2P是什么?还是要回到这个场景:如果想要下载一个电影,一般都是通过什么方式呢?我希望这次你的答案,除了HTTP方式,还有FTP方式(要不上篇文章岂不是白写了?)但是你发现了嘛,不管是HTTP的方式,还是FTP的方式,都有一个比较大的缺点,就是难以解决单一服务器的带宽压力,因为它们使用的都是传统的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在上篇文章中说过,要写写 P2P 协议的,嗯,来写写,虽然写的不是太好.

P2P 是什么?
还是要回到这个场景:
如果想要下载一个电影,一般都是通过什么方式呢?
我希望这次你的答案,除了 HTTP 方式,还有 FTP 方式(要不上篇文章岂不是白写了?)
但是你发现了嘛,不管是 HTTP 的方式,还是 FTP 的方式,都有一个比较大的缺点,就是难以解决单一服务器的带宽压力,因为它们使用的都是传统的客户端服务器的方式.
这个时候,一种创新的, P2P 协议就开始流行起来. P2P 就是 peer-to-peer .
传统的方式不是把资源都集中地存储在某些设备上了嘛,那我就创新一下,我不让这些资源都集中在某些设备上了,我让这些资源都分散的存储在多台设备上面去.这些设备,为了理解方便,我们称为 ” peer “

那么,当我想要下载一个文件的时候,我只要得到那些已经存在了文件的 peer ,和这些 peer 建立点对点的连接,而不需要到中心服务器上面去,我就可以就近下载文件了.
一旦下载了文件,你也就成为了 peer 中的一员,你旁边的那些机器,也可能会选择从你这里下载文件.
所以当你使用 P2P 软件的时候,往往能够看到,它既有下载的流量,也有上传的流量,也就是说,你自己也加入了这个 P2P 的网络,自己从别人那里下载,同时也提供给其他人下载.
你可以想一下,这种方式,是不是参与的人越多,下载速度就越快,一起简直是完美啊~

种子 (.torrent )文件
这里其实是有一个问题的,当我想要下载一个文件的时候,我怎么知道哪儿些 peer 有这个文件呢?
这就是种子文件,也就是「 torrent」文件.它由两部分组成: announce ( tracker URL )和文件信息.

  • 文件信息里面有这些内容:
    • info 区:这里指定的是该种子有几个文件,文件有多长,目录结构,以及目录和文件的名字;
    • Name 字段:指定顶层目录名字;
    • 每个段的大小: BitTorrent ( 简称 BT )协议把一个文件分成很多个小段,然后分段下载;
    • 段哈希值:将整个种子中,每个段的 SHA-1 哈希值拼在一起.

下载时, BT 客户端首先解析 .torrent 文件,得到 tracker 地址,然后连接 tracker 服务器. tracker 服务器回应下载者的请求,将其他下载者(包括发布者)的 IP 提供给下载者.下载者再连接其他下载者,根据 .torrent 文件,两者分别告诉对方自己已经有的数据,然后交换对方没有的数据.这个时候,就不需要其他服务器的参与,就分散了单个线路上的数据流量,从而减轻了服务器的负担.

从上面的过程,我们能够看出, P2P 这种方式特别依赖 tracker . tracker 需要收集下载者信息的服务器,并且将这些信息提供给其他下载者,使得下载者们相互之间能够连接起来,传输数据.虽然说,在整个下载的过程中,是非中心化的,但是加入这个 P2P 网络的时候,都需要借助 tracker 中心服务器,因为 tracker 服务器是用来登记有哪些用户在请求哪些资源.
到这里你可能就会比较清楚了,这种方式的限制就是 tracker 服务器.只要它出现故障或者线路遭到屏蔽, BT 工具就没办法再正常工作了.

去中心化网络( DHT )
在整个下载的过程中,是非中心化的,但是它还是受限制的.那到底能不能做到彻底非中心化呢?
所以就有了 DHT ( Distributed Hash Table )的去中心化网络.每一个加入这个 DHT 网络的人,都要负责存储这个网络中的资源信息和其他成员的联系信息,相当于所有人一起构成了一个庞大的分布式存储数据库.
在这里有一种著名的 DHT 协议,叫 Kademlia 协议.

Kademlia 协议详解
在 Kademlia 协议中,任何一个 BitTorrent 启动之后,它都有两个角色.一个是 peer ,监听一个 TCP 端口,用来上传和下载文件,这个角色就是为了说明,我这里有某个文件.另一个角色 DHT node ,监听一个 UDP 的端口,通过这个角色,这个节点加入了一个 DHT 的网络.
在 DHT 网络中,每一个 DHT node 都有一个 ID .这个 ID 是一个很长的串.每个 DHT node 都有责任掌握一些知识,也就是文件索引,也就是说,它应该知道某些文件是保存在哪些节点上.它只需要知道这些东西就行了,不一定就是保存这个文件的节点.
这样我想要实现去中心化就好实现了.

以上就是想要分享的内容了,感谢您的阅读~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179543.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为超级vlan配置_华为p9参数配置

    华为超级vlan配置_华为p9参数配置本期分享:系列15点到16点半-技术热讯感谢大家关注-最铁头的网工,请大家持续关注就可以了哦!关于进阶级手册在下方↓↓↓众元教育-华为HCIA-HCIE技术认证课:课程通道众元教育-华为HCIA-HCIE技术认证裙:6962831861技术背景了解superVLAN之前,我们想想,如果没有superVLAN是什么样的情况?我们都知道,VLAN技术是用来隔离广播域的,通常,我们都是1个三层IP网段对应一个VLAN,那么问题来了,有的VLAN只需要几个IP,我们却要给它…

    2022年9月19日
    2
  • KVM查看虚拟机的分区内容(4)

    KVM查看虚拟机的分区内容(4)

    2021年9月12日
    99
  • DataOps: 大数据新战线

    DataOps: 大数据新战线

    2021年11月22日
    77
  • Java面试官最爱问的volatile关键字[通俗易懂]

    Java面试官最爱问的volatile关键字[通俗易懂]在Java的面试当中,面试官最爱问的就是volatile关键字相关的问题。经过多次面试之后,你是否思考过,为什么他们那么爱问volatile关键字相关的问题?而对于你,如果作为面试官,是否也会考虑采用volatile关键字作为切入点呢?为什么爱问volatile关键字爱问volatile关键字的面试官,大多数情况下都是有一定功底的,因为volatile作为切入点,往底层走可以切入Java内存模…

    2022年7月27日
    5
  • mysql报错1146怎么办_navicat报1146错误怎么办

    mysql报错1146怎么办_navicat报1146错误怎么办在MySQL的主从复制过程中,出现了1146错误。提示的错误原因是:在默认的数据中找不到指定的表。showslavestatus\G;现实的同步状态。Slave_IO_Running:YESSlave_SQL_Running:NoLast_Errno:1146Last_Error:Error’Table’coop.Coop_Data’doesn’texist’onquery…

    2022年6月5日
    171
  • Win10+Ubuntu18.04双系统安装教程「建议收藏」

    Win10+Ubuntu18.04双系统安装教程「建议收藏」一.说在前头不同的配置安装方法不同,我也是小白第一次安,也是看了无数个教程不断重安了无数次才成功的,所以我的教程不一定适合你的配置,但你可以耐心的按照我的思路尝试,如果你有更好的想法,欢迎指出。我的配置如下:神舟笔记本,双硬盘(128固态+1t机械),bios模式为uefi(按Win+R打开运行,输入msinfo32,回车查看系统信息。在BIOS模式中如果显示“传统”,表示系统启动方式为…

    2022年7月24日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号