比特派官网app下载网址|p2p网络是什么意思

作者: 比特派官网app下载网址
2024-03-08 22:20:21

解析一下p2p网络的原理? - 知乎

解析一下p2p网络的原理? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册计算机网络电子计算机解析一下p2p网络的原理?如题,解析一下p2p的工作原理。。。显示全部 ​关注者24被浏览132,909关注问题​写回答​邀请回答​好问题 1​添加评论​分享​5 个回答默认排序寻光的烛火​ 关注P2P 全称是 Peer to Peer ,翻译成中文”地位对等的两个节点之间“,亦或者”点对点“。区别于现在诸多 ”C/S“(客户端/服务器)模式。C/S 模式假如要在 Server 下载 1G 的视频。对与传统的 C/S 模式,从上图中我们就可以看出一些问题。如果服务器挂了,那我们视频肯定也下载不了了。如果下载视频的人变多,服务器的带宽就是制约下载速度的瓶颈,下载的人越多,下载速度越慢,深夜可真是急死个人啊。(通往彼岸的桥只有一座,去的人多了,能不挤么?)因为资源都集中在服务器,往往很会成为黑客攻击的目标。P2PP2P 打破了传统的 C/S 模式,在网络中的每个结点的地位都是对等的。每个结点既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务。P2P 网络最大的特点是不需要中央服务器的调度,自我组织协调,各个节点之间可以直接通信。具体的通信协议有多种,常见的一种叫 Gossip ,翻译过来就是八卦协议。协议的基本通信原理非常简单,所有节点都会把信息传递给自己的邻居,就像村里长舌妇之间传闲话,或者白领在办公室传八卦。继续说上面的 1G 电影下载,那我得提一提快播,作为一款播放器,他所用的就是 P2P 技术, 也相信很多人都听说过它。从上面的 P2P 网络图来看,每个节点即使服务器,又是客户端。一个节点的毁坏并不影响其他节点继续下载电影。如果下载电影的人越多,那么,提供资源下载的服务器也就越多,所以它并不存在带宽不够的问题,我可以通过很多个节点下载完 1G 电影的小片段,最后在重组片段,合成 1G 电影。下载的人越多,下载速度越快,是不是很神奇。所以你可以理解为啥快播那么下载那么快了吧。快播使得服务端运营成本降低,因为你不必邀花大钱去买很大的带宽,基于核心的 P2P 架构,一部电影只要有一个人在观看,即一台电脑做为种子时,就基本不从服务器取数据,不占用服务器带宽。这使得运营一个视频网最大的门槛障碍,服务器带宽被彻底废除。任何一个个人站长,租用一台很低廉的服务器,就可以依托快播的 p2p 服务网络运营一个视频网站,从而吸引了大量的个人站长基于快播平台搭建视频网站,带火了个人站长。那段时间,可谓风华正茂。然而快播终究只是一个播放器,它所播放的视频,并没有属于自己的版权。最终也走向了末路,一个明星企业倒下,似乎只需要一纸文件的压力。感觉扯远了,回过头来继续说 P2P。P2P 的几个优点非中心化:网络中的资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。P2P 的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。安全:当代的互联网已经非常中心化了,大部分的通信都会通过中央服务器来完成。两个人微信聊天,信息要走腾讯的服务器。我的支付宝,也要走中央服务器。这样,中央服务器上汇集了所有人的信息,成了对攻击者最有诱惑力的攻击目标。一旦服务器被拿下,或者公司出了事,那么所有用户的信息安全就都荡然无存了。而 P2P 就是一套更安全的替代方案,尤其是实现了点对点加密 之后的 P2P 网络。性能:目前的互联网架构其实挺傻的,所有事情都要去服务器上去办。这就好比一个城市有这样的规定,不允许从 A 点开车直接去 B 点,所有车都必须先开到市中心,而如果能够实现 P2P 的架构,让两地直接互联,这样就实现了直接从 A 点开车到 B 点的效果了,完全不会造成对市中心的拥堵。但是,发展至今,即使 A,B 两地的路通了,你也可能会选择先到市中心,再到 B,因为 A,B 之间的路并不好走。所以说,这都是一个发展的过程。更加隐私:P2P 架构下,由于没有中央服务器,所以也就没有发挥中心作用的公司。于是 P2P 架构下,我们构建的是无信任,trust-less 系统。用户掌握了自己的隐私,不需要去信任公司不会泄露他们的数据,而只是需要相信通信协议的数学原理即可。来做一个类比。现实中人类最为隐私的交流方式是什么?很简单,就是见面耳语。这就是一个基本的 P2P 的架构,没有中央服务器,各个参与方直接通过一套协议来进行沟通,这套协议就是人类语言。这种见面耳语的方式是有局限性的,因为受到肉身距离的限制。而通过 P2P 网络,我们可以和世界上任意位置的人进行耳语,这将会给人类社会的政治,伦理,商业等各个方面都带来根本性的变化。P2P 网络的真实应用P2P 现如今被用到很多领域:文件共享,计算能力存储共享,即时通讯等等,但比较成功的一类是区块链类应用,如 Bitcoin(比特币)。一类是文件分享类应用,例如 BitTorrent ,别说你不知道,如果你用迅雷下载,请你留意一下下载链接的后缀名。小结P2P 网络是一种去中心化的应用架构,任务要通过地位平等的各个节点相互配合来完成。P2P 在安全,性能和隐私各个方面都比现有的互联网中心化架构有优势。实际应用方面,除了已经比较成功的区块链和文件分享类应用之外,人们正在努力建设一个真正 P2P 架构的互联网。正如人类历史一样,人们对于 Peer(平等)的追求从未停止过。发布于 2020-03-24 08:40​赞同 131​​9 条评论​分享​收藏​喜欢收起​linux​ 关注P2P的实现,网络穿透,去中心化网络的那些事(2)|c/c++|linux2231 播放 · 4 赞同专注于服务器后台开发,包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等

学习地址:https://ke.qq.com/course/417774?flowToken=1013300发布于 2021-07-10 14:18· 742 次播放​赞同 3​​添加评论​分享​收藏​喜欢

什么是P2P技术 - 知乎

什么是P2P技术 - 知乎切换模式写文章登录/注册什么是P2P技术go800li什么是P2Ppeer-to-peer简称P2P,即点对点技术。又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P的三种模式1. 纯P2P节点同时作为客户端和服务器端。没有中心服务器,没有中心路由器。2. 杂P2P有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。路由终端使用地址,通过被一组索引引用来取得绝对地址。3. 混合P2P同时含有纯P2P和杂P2P的特点。P2P的技术优势P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的C/S结构不能实现的,这种结构中客户端的增加意味着所有用户更慢的数据传输。使用P2P技术的流媒体服务器系统1. Adobe Media Server2. 八百里流媒体服务器系统(800Li Media Server)发布于 2017-06-13 14:06P2P流媒体​赞同 18​​1 条评论​分享​喜欢​收藏​申请

点对点网络_百度百科

络_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10点对点网络播报讨论上传视频中心服务器、依靠用户群交换信息的互联网体系本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。点对点网络(peer-to-peer, 简称P2P),又称对等式网络,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。P2P节点能遍布整个互联网,也给包括开发者在内的任何人、组织、或政府带来监控难题。P2P在网络隐私要求高和文件共享领域中,得到了广泛的应用。使用纯P2P技术的网络系统有比特币、Gnutella,或自由网等。另外,P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。有些网络(如Napster、OpenNAP)包括搜索的一些功能,也使用客户端-服务器结构,而使用P2P结构来实现另外一些功能。这种网络设计模型不同于客户端-服务器模型,在客户端-服务器模型中通信通常来往于一个中央服务器。中文名点对点网络外文名peer-to-peer简    称P2P又    称对等式网络作    用降低资料遗失的风险学    科计算机技术目录1历史2分类▪根据中央化程度▪根据网路拓扑结构3P2P网络的特点4优点5缺点6应用7展望历史播报编辑P2P架构体现了一个网际网路技术的关键概念,这一概念被描述在1969年4月7日第一份RFC文档“RFC 1,主机软件”中。而最近,在不用中心索引服务器结构实现多媒体文件交换的背景下,这个概念已经变得非常普遍了。 [1]分类播报编辑根据中央化程度1、纯P2P节点同时作为客户端和服务器端。没有中心服务器。没有中心路由器。如Gnutella。2、杂P2P有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。路由终端使用地址,通过被一组索引引用来获取绝对地址。如最原始的Napster。3、混合P2P同时含有纯P2P和杂P2P的特点。如Skype。 [1]根据网路拓扑结构1、结构P2P点对点之间互有连结资讯,彼此形成特定规则拓扑结构。需要请求某资源时,依该拓扑结构规则寻找,若存在则一定找得到。如Chord、YaCy、Kademlia。2、无结构P2P点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。需要请求某资源节点时,以广播方式寻找,通常会设TTL,即使存在也不一定找得到。如Gnutella。3、松散结构P2P点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。需要请求某资源时,依现有资讯推测寻找,介于结构P2P和无结构P2P之间。如Freenet。 [1]P2P网络的特点播报编辑P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的Client-Server结构不能实现的,因为在上述这种结构中,客户端的增加意味着所有用户更慢的数据传输。P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。当用P2P来描述Napster 网络时,对等协议被认为是重要的,但是,实际中,Napster 网络获取的成就是对等节点(就像网络的末枝)联合一个中心索引来实现。这可以使它能快速并且高效的定位可用的内容。对等协议只是一种通用的方法来实现这一点。 [1]优点播报编辑拥有较佳的并行处理能力。运用内存来管理交换资料,大幅度提高性能。不用投资大量金钱在服务器的软,硬体设备。适用于小规模的网路,维护容易。 [2]缺点播报编辑架设较为复杂,除了要有开发服务器端,还要有专用的客户端。用在大规模的网路,资源分享紊乱,管理较难,安全性较低。 [2]应用播报编辑点对点技术有许多应用。共享包含各种格式音频,视频,数据等的文件是非常普遍的,即时数据(如IP电话通信,Anychat音视频开发软件)也可以使用P2P技术来传送。有些网络和通信渠道,像Napster,OpenNAP,和IRC@find,一方面使用了主从式架构结构来处理一些任务(如搜索功能),另一方面又同时使用P2P结构来处理其他任务。而有些网络,如Gnutella和Freenet,使用P2P结构来处理所有的任务,有时被认为是真正的P2P网路。尽管Gnutella也使用了目录服务器来方便节点得到其它节点的网络地址。还有学术性P2P网络。2015年1月28日,宾西法尼亚州立大学的开发者,联合了麻省理工学院开放知识行动,西蒙弗雷泽大学的研究人员,还有第二代网际网络P2P工作组,正在开发一个P2P网络的学术性应用。这个项目称为LionShare,基于第二代网络技术,更详细地说是Gnutella模型。这个网络的主要目的是让众多不同学术机构的用户能够共享学术材料。LionShare网络使用杂P2P网络类型,混合了Gnutella分散的P2P网络和传统的C/S网络。这个程序的用户能够上传文件到一个服务器上,不管用户是否在线,都能够持续的共享。这个网络也允许在比正常小得多的共享社区中使用。这个网络与当前正在使用的其他P2P网络的主要不同是LionShare网络不允许匿名用户。这样做的目的是防止版权材料在网络上共享,这同时也避免了法律纠纷。另一个不同是对不同组有选择性的共享个别的文件。用户能个别选择哪些用户可以接收这一个文件或者这一组文件。学术社区需要这种技术,因为有越来越多的多媒体文件应用在课堂上。越来越多的教授使用多媒体文件,像音频文件,视频文件和幻灯片。把这些文件传给学生是件困难的任务,而这如果用LionShare这类网络则容易的多。 [1]展望播报编辑技术上,一个纯P2P应用必须贯彻只有对等协议,没有服务器和客户端的概念。但这样的纯P2P应用和网络是很少的,大部分称为P2P的网络和应用实际上包含了或者依赖一些非对等单元,如DNS。同时,真正的应用也使用了多个协议,使节点可以同时或分时做客户端,服务器,和对等节点。完全分散的对等网络已经使用了很多年了,象Usenet(1979年)和FidoNet(1984年)这两个例子。很多P2P系统使用更强的对等点(称为超级对等点(Super Node))作为服务器,那些客户节点以星状方式连接到一个超级对等点上。在1990年代末期,为了促进对等网络应用的发展,昇阳(SUN)公司增加了一些类到Java技术中,让开发者能开发分散的实时聊天的applet和应用,这是在即时通信流行之前。这个工作由JXTA工程来继续实现。P2P系统和应用已经吸引了计算机科学研究的大量关注,一些卓越的研究计划包括Chord计划,ARPANET, the PAST storage utility,P-Grid(一个自发组织的新兴覆盖性网络),和CoopNet内容分发系统。 [2]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

p2p之网络穿透NAT,NAT、穿透的原理 - 知乎

p2p之网络穿透NAT,NAT、穿透的原理 - 知乎首发于Linux服务器切换模式写文章登录/注册p2p之网络穿透NAT,NAT、穿透的原理Hu先生的Linux1.p2p是什么?p2p是对等网络(peer-to-peer networking)其可以定义为:端对端的资源共享,每一端即可是服务端,也可以是客户端。既可以是资源的提供者,也可以是资源的共享者。传统C/S模型需要实现端和端的资源共享, 需要将资源上传到中转服务器。另外一端再去中转服务器下载,如下图:传统CS架构,客户端1和客户端2之间是无直接交互.png而P2P则不需要将资源上传到服务器,它是端对端传输,每一个端既可以是服务器,也可以是客户端p2p架构,无需中转服务器.png优势:实时性最高,流量少,更加安全。在视频直播,在线教育,视频安防行业用的比较多劣势:一旦进行p2p传输之后,用户之间的内容将无法监管,浪费用户带宽,频繁进行读写磁盘客户端1和客户端2这样交互是p2p最理想的情况图中客户端1和客户端2直接连接, 假如他们处于两个不同的内网呢?2.NAT是什么?NAT俗称网络地址转换,它是一种把内部私有网络地址(IP地址)转换成公网网络IP地址的技术。比如我们电脑里面网卡地址是192.168.1.100,但是我们再百度搜索“IP”却显示220.112.224.53,这就是NAT的功能。NAT主要是部署在路由器或者交换机上。为什么需要NAT?主要还是IP地址的不足,使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。用大白话:比如你有一个路由器(家用的那种就可以)这个路由器本身连接了公网(被分配到了一个公网的IP地址)。路由器后面有接了N多个设备,每个设备都分配到了一个私有的地址(内网地址),这些地址可以通过这个路由器和外网交互。其次能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。RFC3489 中将 NAT 的实现分为四大类:Full Cone NAT(完全圆锥型)Address Restricted Cone NAT(地址限制圆锥型 )Port Restricted Cone NAT(端口限制圆锥型)Symmetric NAT(对称型)1.完全圆锥型NAT在完全圆锥型NAT(Full Cone NAT)中,NAT会将客户机地址{X:y}转换成公网地址{A:b}并绑定。任何包都可以通过地址{A:b}送到客户主机的{X:y}地址上。如图所示:RFC3581——完全锥型NAT2. 地址限制圆锥型NAT地址限制圆锥型NAT(Address Restricted Cone NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定,只有来自主机{P}的包才能和主机{X:y}通信。如下图所示:RFC3581——地址限制型NAT3.端口限制圆锥型NAT端口限制圆锥型NAT(Port Restricted Cone NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定,只有来自主机{P,q}的包才能和主机{X:y}通信。如下图所示:RFC3581——端口限制型NAT4.对称型NAT对称型NAT(Symmetric NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定为{X:y}|{A:b}<->{P:q}。对称型NAT只接受来自{P:q}的连接,将它转给{X:y} ,每次客户机请求一个不同的公网地址和端口,NAT会新分配一个端口号{C,d} 。如下图所示:RFC3581——对称型NATLinuxc/c++服务器开发高阶学习资料视频:C/C++Linux服务器开发/后端开发-学习视频内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,K8S,Docker,TCP/IP,协程,DPDK多个高级知识点。视频讲解:【技术篇】详解,网络穿透,P2P,打洞的核心原理丨NAT,穿透的原理丨实现网络穿透_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili其中完全最上层的完全圆锥形NAT的穿透性最好,而最下层的对称形NAT的安全性最高。3.如何穿透NAT?事实上两个客户端相互通信还需要一个辅助服务器(p2pserver) 来保存两个用户的外网地址端口。当用户A连接B时、或者B连接A时, 会向辅助服务器询问对方的外网地址和端口NAT穿透组合情况.png从上面的NAT类型中可以看出,有4种NAT,一共10种组合1. 完全圆锥型NAT和完全圆锥型NAT这种最简单, 只需要B从辅助服务器拿到A的内外网信息, 就可以和A进行连接2. 完全圆锥型NAT和地址限制型NAT同上3. 完全圆锥型NAT和端口限制性NAT同上4. 完全圆锥型NAT和对称型NAT同上5.地址限制型NAT和地址限制型NAT当B从辅助服务器拿到A的内外网信息, B向A发送连接, 这个时候NAT A设备会丢弃掉B发送过来的连接。这个时候B就向辅助服务器发送请求,让A连接B一次, 连完后B就可以连接到A了,NAT A不再拦截B过来的连接。6.地址限制型NAT和端口限制型NAT同上7.地址限制性NAT和对称型NAT同上8.端口限制型NAT和端口限制型NAT同上9.端口限制型NAT和对称型NAT这种无法穿透, 因为A需要连过B,B才能连到A,但是A无法连接到B,因为B的是对称型NAT,端口一直在变10.对称型NAT和对称型NAT这种也无法穿透,因为客户机每次请求一个不同的公网地址和端口, NAT会新分配一个端口号,所以从辅助服务器拿到的端口号是无效的(只是针对和服务器相连的端口号)。eg:A和辅助服务器相连,NAT A会分配一个端口 8081。A和B相连, NAT A会分配一个端口号10020,所以B连A并不知道A需要从10020进,所以无法穿透过NAT A。不过也有人通过端口预测算法成功连接, 但是这种并不可靠。4.为什么需要保活链路?因为一个连接经过NAT设备之后,在NAT设备上面绑定的端口是有时效性的,一般是30分钟,但是最少的三五分钟就失效了,所以要不停的发送心跳包来保活NAT上的这个“洞”。5.移动、联通网络为什么没有电信快?原因是电信拨号之后分配的是公网IP。而联通、移动拨号之后还是内网IP,也就是NAT设备上面还有多层NAT, 多次转发并且最终的出口只有一个,所以总体来说比较慢发布于 2020-11-18 16:00P2PNAT网络地址穿透内网​赞同 40​​2 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录Linux服务器Linux后台服务器高级开发群720209

简单易懂的P2P通信原理-CSDN博客

>

简单易懂的P2P通信原理-CSDN博客

简单易懂的P2P通信原理

最新推荐文章于 2024-01-27 22:44:04 发布

naget

最新推荐文章于 2024-01-27 22:44:04 发布

阅读量7.8k

收藏

37

点赞数

8

分类专栏:

计算机网络

文章标签:

p2p

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_33240946/article/details/104717234

版权

计算机网络

专栏收录该内容

5 篇文章

0 订阅

订阅专栏

P2P就是端到端

我发一条微信给你,这不是P2P。因为消息并不是直接从我手机发送到你的手机,而是从我手机先发送到微信的服务器,服务器再转发到你的手机上(当然,转发给你之前,还会把数据存到服务器),像下边这样: P2P是这样:

P2P技术要解决的问题

目前使用的终端设备(如手机),绝大部分都仅仅拥有特定网络下的内网IP,而处在不同内网环境中的设备并不能够使用内网IP直接进行通信。如何通过一定的手段让这两个处在不同内网环境的设备进行直接通信呢?

P2P的知识点

我们的终端设备(比如手机),一定是存在于某个内网环境下边的,当设备与内网之外的其他设备进行通信时,需要将内网IP转换为一个可以被全球任意设备访问到的公网IP,这种技术叫做NAT,全称是Network Address Translation,即网络地址转换。

根据转换方式的不同,出现了不同的NAT,理论上有基本NAT,也有一对多NAT,但是现实中基本都是一对多NAT,根据内网设备与外网进行通信时不同的映射规则,又分为以下几种类型:

类型阐述锥型NAT(Full-cone NAT)内网ip1:port1会映射到公网ip2:port2,ip1:port1发往外网的包都将通过ip2:port2发出;外部任何ip3:port3都可以通过发送数据包给ip2:port2从而与ip1:port1进行通信。(地址)限制型锥型NAT((Address)-restricted-cone NAT)内网ip1:port1会映射到ip2:port2,ip1:port1发往外网的包都将通过ip2:port2发出;外部只有收到过ip2:port2数据包的ip3才可以发送数据包给ip2:port2从而与ip1:port1进行通信。端口限制型锥型NAT(Port-restricted cone NAT)内网ip1:port1会映射到ip2:port2,ip1:port1任何发往外网的包都将通过ip2:port2发出;外部只有收到过ip2:port2数据包的ip3:port3才可以发送数据包给ip2:port2从而与ip1:port1进行通信。对称性NAT(Symmetric NAT)内网ip1:port1任何一个发往外网ip3:port3的请求,都将使用独有的公网ip2:port2;外部只有收到过ip1:port1数据包的服务才能返回数据。

总的来说,我们程序发出的包有源地址和源端口,经过NAT之后,映射出的公网地址和端口是否会随着目的地址和目的端口的变化而变化,决定了它是锥型还是对称型。这句话有点拗口,但我觉得说的很清楚。同时,只有锥型NAT才能进行P2P,原因是由P2P连接的建立过程决定的。

P2P连接建立过程

P2P连接的建立首先需要一个拥有公网IP的中间服务器S,两个结点P1和P2。

1、结点P1和P2分别发送数据包给S,数据包在经过NAT时,ip和port进行转换,ip转换为公网ip,port是否转换需要看NAT的具体实现。S拿到转换后的P1和P2的地址。 2、S将P1的地址发给P2,将P2的地址发给P1。这里的地址都是NAT地址。 3、P1收到P2地址后,尝试建立连接,首先发送消息包给P2(其实是P2的NAT),P2也同样这样做,在两个结点都收到对方的消息包之后,就可以进行通信了。这个过程也叫做打洞。

之所以需要有打洞这个过程,是因为,NAT会丢弃自己不认识的地址包,让NAT认识它的方法,就是发出一个到这个地址的数据包。比如让A认识B,那就让A发一个数据包给B,不然,B发给A的数据包就会被丢弃。所以打洞的过程不是为了收到对方的数据包,而是为了发送数据包给对方,从而认识对方。这样,之后的通信就可以正常进行了。

刚才之所以说只有锥型NAT才可以进行P2P,原因在第三步可以看出来。结点进行打洞的地址,是通过服务器拿到的,而这个地址在对称型NAT的情况下,并不是一定的,可能会随时发生变化。也就是说,P1与服务器通信使用的NAT地址和P2与P1通信使用的NAT地址是不同的(一般情况都是端口不同)。甚至P1与服务器通信使用的NAT地址都在不断的发生变化。这样让我们没办法拿到隐藏在NAT后边内网设备的NAT入口,也就没办法进行P2P通信了。

P2P也用到了一个服务器,跟微信一样。但是不同的是,P2P中的服务器只作为结点地址的中转站,而微信的服务器是数据的聚宝盆。P2P让我们的数据仅通过P2P连接发送,而不经过任何第三方的服务器。

优惠劵

naget

关注

关注

8

点赞

37

收藏

觉得还不错?

一键收藏

知道了

0

评论

简单易懂的P2P通信原理

P2P即端到端我发一条微信给你,这不是P2P。因为消息并不是直接从我手机发送到你的手机,而是从我手机先发送到微信的服务器,服务器再转发到你的手机上,像下边这样:P2P是这样:P2P技术要解决的问题目前使用的终端设备(如手机),绝大部分都仅仅拥有网络提供商分配给的内网IP,而处在不同内网环境中的设备并不能够使用内网IP进行通信。P2P的技术储备...

复制链接

扫一扫

专栏目录

P2P模式的TCP/UDP套接口通信原理流程图

Haier Sister的学习笔记

03-26

6196

1. P2P网络技术

P2P技术起源于局域网文件共享,P2P(即对等网络模型)本身是基于TCP/UDPClient/

Server 技术的一种设计模式思想,P2P

也属于网络应用层技术,与 Web和 FTP

等应用是并列的,只是 P2P 应用在设计实现上更要复杂得多。P2P对等网络模型中,各个结点是对等的,具有相同的责任和义务,彼此互为客户端/服务器,协同完成任务。每个结点既可充当服务器

类QQ 及时通信软件结构程序(界面和功能简单,但适用于想理解结构原理的初学者)

05-07

C# 在vs2008下正常运行 分服务器,客户端两部分,服务器用于接收客户端登陆和注销,通知客户端在线情况,各个客户端之间通过P2P联系聊天。本程序只限于了解网络编程协议的初学者,界面和功能方面特别简单。

参与评论

您还未登录,请先

登录

后发表或查看评论

(四)1588的E2E模型,P2P模型?

最新发布

2301_77258991的博客

01-27

406

上图中的TC为traffic class,可以简单的直译为网络中的流量等级,实际上,对应的就是中间的设备。这样,就通过在网络层级中,进行多次的误差计算,从而规避了传输中的时间延时不准的问题。要知道,即使交换机和路由器的速度很快,但是仍然是有延时的,若是说,这个延时是稳定的,也还好,但是当中间设备的负载较大,那么,此刻的延时变的不稳定。在计算机中,很多的问题实际都是分治思路的延伸,此处也是一样。E2E的全称是end-to-end,直译为端到端,P2P的全程是peer-to-peer,直译为对等网络。

QQ(P2P)聊天系统的原理与实现

05-07

本文旨在用Delphi面向对象的方法实现P2P(Peer To Peer)(类QQ)会话系统。本文可作为学习P2P通信与面向对象程序设计的用例。

一、 通信组件:采用TIdUDPServer(属于Indy Servers组件板)。

二、 通信原理::利用P2P之UDP穿透Cone(锥型)NAPT原理。

三、 系统特点:

1、所有会话命令均封装成对象。

2、每个命令对象都有Send(发送)与Exec(执行)方法。Send方法用于把对象(自己)发到对方,Exec方法完成对象的功能。

3、主要命令:Login(用户登录(C->S))、CloseSession(关闭会话(S->C)) 、

Binding(回复用户绑定信息(客户端经NAT后的IP&Port;)(S->C))、OnlineList(回复当前在线用户列表(S->C))、Upline(用户上线(C->C))、Logout(用户登出(C->S))、

Leaveline(用户离线(C->C))、

Chat(会话(交谈、闲聊)(C->C))、Upload(上载(数据)文件(C->C))

P2P通信原理与实现(C++)

weixin_34130269的博客

09-11

3824

1.简介

  当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了链接的建立。

  当今部署的中间件大多都是在C/S架构上设计的,其中相对隐匿的客户机主动向周知的服务端(拥有静态IP地址和DNS名称)发起链接请求。大多数中间件实现了...

转】Skype的P2P原理

ljh081231的专栏

01-19

4201

转】Skype的P2P原理|Skype开发原理解析

Skype原理应用p2p技术,汗!

  所谓P2P(Peer to Peer),其最本质的含义即“对等”,该技术最早是用于网络中对等节点之间的资源和信息共享的技术,通常人们所知道的是将P2P技术用在文件下载过程中,即网络上的对等终端在下载共享文件的同时又作为一个“种子”为其他对等终端提供资源和信息。后来,Skype在网络通话业务系统中灵活

p2p通信原理及实现

LateLinux的博客

11-24

3182

p2p通信原理及实现

【转载自CSDN 香烟头】

1.简介

  当今部署的中间件大多都是在C/S架构上设计的,其中相对隐匿的客户机主动向周知的服务端(拥有静态IP地址和DNS名称)发起链接请求。大多数中间件实现了一种非对称的通讯模型,即内网中的主机可以初始化对外的链接,而外网的主机却不能初始化对内网的链接,除非经过中间件管理员特殊配置。在中间件为常见的NAPT的情况下(也是本文主要讨论的),内网中的客户端没有单独的公网IP地址,而是通过NAPT转换,和其他同一内网用户共享一个公网IP。这种内网主机隐藏在中间

[转]P2P原理和常见实现方法

aodiyu3146的博客

01-29

607

转自:http://www.cppblog.com/peakflys/archive/2013/01/25/197562.html

为了项目的后期IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN、ICE等)实现细节,要么中间有很多纰漏。最后去伪存真,归纳总结了一下,希望对以后的同行有些许帮助。 如果有什么需要讨论...

P2P网络原理

ALakers的博客

03-31

5147

P2P网络:

下面是我在网上找到的一副图:

P2P(Peer to Peer)是点对点的连接,在P2P网络中,用户同时利用并提供网络的基础,尽管提供资源完全是自愿的。每个对等体(“对等体”是网络上的计算机系统)被认为是相等的并且通常被称为节点。对等体可以将一部分计算资源(如磁盘存储,处理能力或网络带宽)直接提供给其他参与者,而无需服务器或稳定主机进行任何集中协调。有点我为人人,人人为我的意思。

NAT技术:

NAT技术(Network Address Translation,网络地址转换)是一种把内部网.

内网穿透实现P2P通信

Barry的博客

02-13

9718

P2P 通信最大的障碍就是 NAT(网络地址转换),NAT 使得局域网内的设备可以与公网进行通讯,但是不同 NAT 下的设备之间通讯将会变得很困难。UDP 打洞就是用来使得设备间绕过 NAT 进行通讯的一种技术。

无需服务器:Android 应用中使用 P2P 技术进行局域网内设备通信

工宗浩生财指南针

06-08

2323

P2P 技术是 Android 应用中构建局域网设备通信的一种有效方式。通过使用 Wi-Fi Direct 技术,可以实现设备之间的直接通信,而无需经过服务器或者其他中介设备。要在 Android 应用程序中实现 P2P 技术,需要完成以下步骤:添加 Wi-Fi Direct 权限,初始化 Wi-Fi Direct,搜索设备,获取设备列表,建立连接和传输数据等。借助 P2P 技术, Android 应用程序可以实现更高效的局域网通信,从而增强用户体验。

基于UDP无连接的SOCKET实现简单的P2P通信MFC实现

05-25

基于UDP的P2P实现,适合新手学习,主要是用MFC编写的,原理很清楚,大家可以参考一下,但是没有进行双NAT局域网测试。

基于P2P的局域网即时通信系统+项目说明(c#源码)计算机网络课程设计.zip

06-20

3.功能:建立一个局域网内的简单的P2P消息系统,程序既是服务器又是客户,服务器端口(自拟服务器端口号并选定)。\ 3.1用户注册及对等方列表的获取:对等方A启动后,用户设置自己的信息(用户名,所在组);扫描...

实验四:即时通信应用开发

05-06

1、了解WinsockAPI 2、深刻领会CSock编程原理 3、学会使用Winsock创建简单的TCP服务器以及客户机 4、理解C/C++的Socket编程;...5、熟悉C++网络编成及网络通信原理; 6、熟悉C/S或P2P网络通信模式和原理。

C#_UDP_Socket_P2P_通信客户端.zip

11-09

C#,基于UDP的Socket通信客户端,包含服务器端和客户端,有图形化界面,通过服务器IP连接,点对点通信,不支持一对多,功能上属于很简单的,演示和理解基于UDP的Socket通信原理有一定的帮助。

udp广播 安卓和pc互相收不到消息

naget的博客

03-02

1060

事件

在同一个wifi下,我有两个设备,一个pc,一个安卓。安卓用netty用发广播包,但pc就是收不到;pc发广播包,安卓也收不到。但是他们都可以收到自己的广播包。

解决过程

百度告知:虚拟网卡会过滤掉广播包

我:禁用虚拟网卡,可是还是不行

我:卸载所有虚拟机组件,可惜还是不行

原因

误打误撞发现原因是:家里用了小米路由器,小米路由器默认开启了AP隔离,但是坑人的是,小米路由器的管理后台竟然没有...

Web的核心:HTTP协议

naget的博客

06-11

625

概念

HTTP全称“超文本传输协议”,是一个应用层协议,对Web的请求应答格式进行了规定。HTTP由两个程序实现,一个客户端程序,一个服务端程序。两者通过交换HTTP报文进行通信,客户端发出请求报文,并从服务端收到响应报文。

请求报文和响应报文

请求报文

请求报文由请求行、首部行和实体三部分组成,如下图所示:

请求行中包括三个部分。方法字段可以有几种不同的值,包括GET、POST、DELETE、HEAD和PUT。URL字段说明资源请求路径,版本字段说明该次请求使用的HTTP版本。首部行以键值对的方式为客户

计算机网络世界

naget的博客

05-18

294

计算机网络世界是人类虚拟出来的一个世界,但建立在物理可见的设备上面。这些设备包括:主机、服务器、移动设备、路由器、链路层交换机、调制解调器、基站、手机和蜂窝电话塔等。它将我们平时最常接触的设备,比如手机电脑等,称为网络的边缘;而将提供服务的服务器、路由器和交换机等称为网络的核心。如下面这个图,云彩是网络的核心,其余是网络的边缘。

处在网络边缘的设备,想要上网,就需要通过因特网服务提供商(Internet Service Provider),简称ISP。网络提供商提供了什么呢?其实就是一个网络,这个网络由多

java实现p2p通信

06-07

Java 实现 P2P 通信可以使用 Java 的 Socket 编程。下面是一个简单的 P2P 通信的示例代码:

```java

// P2P Server

public class P2PServer {

public static void main(String[] args) throws IOException {

ServerSocket serverSocket = new ServerSocket(8888);

while (true) {

Socket socket = serverSocket.accept();

DataInputStream dis = new DataInputStream(socket.getInputStream());

String message = dis.readUTF();

System.out.println("Received message: " + message);

dis.close();

socket.close();

}

}

}

// P2P Client

public class P2PClient {

public static void main(String[] args) throws IOException {

String host = "localhost";

int port = 8888;

Socket socket = new Socket(host, port);

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

dos.writeUTF("Hello, P2P Server!");

dos.flush();

dos.close();

socket.close();

}

}

```

在这个示例中,P2P 通信的流程大致如下:

1. P2P Server 启动并监听端口 8888。

2. P2P Client 连接 P2P Server。

3. P2P Client 向 P2P Server 发送消息 "Hello, P2P Server!"。

4. P2P Server 接收到消息并输出。

5. P2P Server 关闭连接。

6. P2P Client 关闭连接。

可以看到,P2P 通信的过程中,每个节点都既可以充当服务器,也可以充当客户端,实现了去中心化的通信方式。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

naget

CSDN认证博客专家

CSDN认证企业博客

码龄8年

暂无认证

45

原创

7万+

周排名

156万+

总排名

15万+

访问

等级

1598

积分

19

粉丝

55

获赞

35

评论

136

收藏

私信

关注

热门文章

联想S41-70拆机换内存条

41400

无法连接到此网络 win10

20708

二叉查找树中的插入查找和删除

10004

shardingsphere踩坑实记

8780

编码和解码

8745

分类专栏

峰言疯语

C语言-路漫漫

1篇

路上的坑

6篇

瞎捯饬

5篇

spring

3篇

linux

2篇

js

1篇

入门小Demo

2篇

源码debug

5篇

数据结构

7篇

数据库

2篇

计算机网络

5篇

计算机基础

2篇

面经

4篇

并发

3篇

最新评论

用Redis中的zset实现一个限流器

Jill24:

而这里的member是随机生成的不能保证顺序,因此在求数目时出错

用Redis中的zset实现一个限流器

Jill24:

最后彩蛋是这样吗?问题出在了table.getn(res)上;res是一个以member为key,score为value的键值对集合;而table.getn()指令,在计算数目时,需要该集合的元素(或key)为有序的

shardingsphere踩坑实记

士别三日wyx:

二叉查找树中的插入查找和删除

Blue Bipolar:

代码不对。

二叉查找树中的插入查找和删除

qq_41877889:

博主你好,感觉删除任意节点里面,第六第七行,直接return有些不妥

可以参考下leetcode 450题

这个是详解

https://leetcode-cn.com/problems/delete-node-in-a-bst/

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

使用Spring的@Schedule别忘了这件事

用Redis中的zset实现一个限流器

Redis实现分布式锁

2021年3篇

2020年5篇

2019年9篇

2018年18篇

2017年8篇

2016年2篇

2015年1篇

目录

目录

分类专栏

峰言疯语

C语言-路漫漫

1篇

路上的坑

6篇

瞎捯饬

5篇

spring

3篇

linux

2篇

js

1篇

入门小Demo

2篇

源码debug

5篇

数据结构

7篇

数据库

2篇

计算机网络

5篇

计算机基础

2篇

面经

4篇

并发

3篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

P2P通信原理与实现 - 知乎

P2P通信原理与实现 - 知乎切换模式写文章登录/注册P2P通信原理与实现知乎用户3WCuE2当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。 这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了链接的建立。 目前部署的中间件多都是在C/S架构上设计的,其中相对隐匿的客户机主动向周知的服务端(拥有静态IP地址和DNS名称)发起链接请求。 大多数中间件实现了一种非对称的通讯模型,即内网中的主机可以初始化对外的链接,而外网的主机却不能初始化对内网的链接, 除非经过中间件管理员特殊配置。在中间件为常见的NAPT的情况下(也是本文主要讨论的),内网中的客户端没有单独的公网IP地址, 而是通过NAPT转换,和其他同一内网用户共享一个公网IP。这种内网主机隐藏在中间件后的不可访问性对于一些客户端软件如浏览器来说 并不是一个问题,因为其只需要初始化对外的链接,从某方面来看反而还对隐私保护有好处。然而在P2P应用中, 内网主机(客户端)需要对另外的终端(Peer)直接建立链接,但是发起者和响应者可能在不同的中间件后面, 两者都没有公网IP地址。而外部对NAT公网IP和端口主动的链接或数据都会因内网未请求被丢弃掉。本文讨论的就是如何跨越NAT实现内网主机直接通讯的问题。1. 术语防火墙(Firewall): 防火墙主要限制内网和公网的通讯,通常丢弃未经许可的数据包。防火墙会检测(但是不修改)试图进入内网数据包的IP地址和TCP/UDP端口信息。网络地址转换器(NAT): NAT不止检查进入数据包的头部,而且对其进行修改,从而实现同一内网中不同主机共用更少的公网IP(通常是一个)。基本NAT(Basic NAT): 基本NAT会将内网主机的IP地址映射为一个公网IP,不改变其TCP/UDP端口号。基本NAT通常只有在当NAT有公网IP池的时候才有用。网络地址-端口转换器(NAPT): 到目前为止最常见的即为NAPT,其检测并修改出入数据包的IP地址和端口号,从而允许多个内网主机同时共享一个公网IP地址。锥形NAT(Cone NAT): 在建立了一对(公网IP,公网端口)和(内网IP,内网端口)二元组的绑定之后,Cone NAT会重用这组绑定用于接下来该应用程序的所有会话(同一内网IP和端口),只要还有一个会话还是激活的。 例如,假设客户端A建立了两个连续的对外会话,从相同的内部端点(10.0.0.1:1234)到两个不同的外部服务端S1和S2。Cone NAT只为两个会话映射了一个公网端点(155.99.25.11:62000), 确保客户端端口的“身份”在地址转换的时候保持不变。由于基本NAT和防火墙都不改变数据包的端口号,因此这些类型的中间件也可以看作是退化的Cone NAT。 Server S1 Server S2

18.181.0.31:1235 138.76.29.7:1235

| |

| |

+----------------------+----------------------+

|

^ Session 1 (A-S1) ^ | ^ Session 2 (A-S2) ^

| 18.181.0.31:1235 | | | 138.76.29.7:1235 |

v 155.99.25.11:62000 v | v 155.99.25.11:62000 v

|

Cone NAT

155.99.25.11

|

^ Session 1 (A-S1) ^ | ^ Session 2 (A-S2) ^

| 18.181.0.31:1235 | | | 138.76.29.7:1235 |

v 10.0.0.1:1234 v | v 10.0.0.1:1234 v

|

Client A

10.0.0.1:1234

其中Cone NAT根据NAT如何接收已经建立的(公网IP,公网端口)对的输入数据还可以细分为以下三类:1) 全锥形NAT(Full Cone NAT) 在一个新会话建立了公网/内网端口绑定之后,全锥形NAT接下来会接受对应公网端口的所有数据,无论是来自哪个(公网)终端。 全锥NAT有时候也被称为“混杂”NAT(promiscuous NAT)。2) 受限锥形NAT(Restricted Cone NAT) 受限锥形NAT只会转发符合某个条件的输入数据包。条件为:外部(源)IP地址匹配内网主机之前发送一个或多个数据包的结点的IP地址。 AT通过限制输入数据包为一组“已知的”外部IP地址,有效地精简了防火墙的规则。3) 端口受限锥形NAT(Port-Restricted Cone NAT) 端口受限锥形NAT也类似,只当外部数据包的IP地址和端口号都匹配内网主机发送过的地址和端口号时才进行转发。 端口受限锥形NAT为内部结点提供了和对称NAT相同等级的保护,以隔离未关联的数据。对称NAT(Symmetric NAT): 对称NAT正好相反,不在所有公网-内网对的会话中维持一个固定的端口绑定。其为每个新的会话开辟一个新的端口。如下图所示: Server S1 Server S2

18.181.0.31:1235 138.76.29.7:1235

| |

| |

+----------------------+----------------------+

|

^ Session 1 (A-S1) ^ | ^ Session 2 (A-S2) ^

| 18.181.0.31:1235 | | | 138.76.29.7:1235 |

v 155.99.25.11:62000 v | v 155.99.25.11:62001 v

|

Symmetric NAT

155.99.25.11

|

^ Session 1 (A-S1) ^ | ^ Session 2 (A-S2) ^

| 18.181.0.31:1235 | | | 138.76.29.7:1235 |

v 10.0.0.1:1234 v | v 10.0.0.1:1234 v

|

Client A

10.0.0.1:1234

2. P2P通信根据客户端的不同,客户端之间进行P2P传输的方法也略有不同,这里介绍了现有的穿越中间件进行P2P通信的几种技术。2.1 中继(Relaying)这是最可靠但也是最低效的一种P2P通信实现。其原理是通过一个有公网IP的服务器中间人对两个内网客户端的通信数据进行中继和转发。如下图所示: Server S

|

|

+----------------------+----------------------+

| |

NAT A NAT B

| |

| |

Client A Client B

客户端A和客户端B不直接通信,而是先都与服务端S建立链接,然后再通过S和对方建立的通路来中继传递的数据。这钟方法的缺陷很明显, 当链接的客户端变多之后,会显著增加服务器的负担,完全没体现出P2P的优势。但这种方法的好处是能保证成功,因此在实践中也常作为一种备选方案。2.2 逆向链接(Connection reversal)第二种方法在当两个端点中有一个不存在中间件的时候有效。例如,客户端A在NAT之后而客户端B拥有全局IP地址,如下图: Server S

18.181.0.31:1235

|

|

+----------------------+----------------------+

| |

NAT A |

155.99.25.11:62000 |

| |

| |

Client A Client B

10.0.0.1:1234 138.76.29.7:1234 

客户端A内网地址为10.0.0.1,且应用程序正在使用TCP端口1234。A和服务器S建立了一个链接,服务器的IP地址为18.181.0.31,监听1235端口。NAT A给客户端A分配了TCP端口62000,地址为NAT的公网IP地址155.99.25.11, 作为客户端A对外当前会话的临时IP和端口。因此S认为客户端A就是155.99.25.11:62000。而B由于有公网地址,所以对S来说B就是138.76.29.7:1234。当客户端B想要发起一个对客户端A的P2P链接时,要么链接A的外网地址155.99.25.11:62000,要么链接A的内网地址10.0.0.1:1234,然而两种方式链接都会失败。 链接10.0.0.1:1234失败自不用说,为什么链接155.99.25.11:62000也会失败呢?来自B的TCP SYN握手请求到达NAT A的时候会被拒绝,因为对NAT A来说只有外出的链接才是允许的。 在直接链接A失败之后,B可以通过S向A中继一个链接请求,从而从A方向“逆向“地建立起A-B之间的点对点链接。很多当前的P2P系统都实现了这种技术,但其局限性也是很明显的,只有当其中一方有公网IP时链接才能建立。越来越多的情况下, 通信的双方都在NAT之后,因此就要用到我们下面介绍的第三种技术了。2.3 UDP打洞(UDP hole punching)第三种P2P通信技术,被广泛采用的,名为“P2P打洞“。P2P打洞技术依赖于通常防火墙和cone NAT允许正当的P2P应用程序在中间件中打洞且与对方建立直接链接的特性。 以下主要考虑两种常见的场景,以及应用程序如何设计去完美地处理这些情况。第一种场景代表了大多数情况,即两个需要直接链接的客户端处在两个不同的NAT 之后;第二种场景是两个客户端在同一个NAT之后,但客户端自己并不需要知道。2.3.1. 端点在不同的NAT之后假设客户端A和客户端B的地址都是内网地址,且在不同的NAT后面。A、B上运行的P2P应用程序和服务器S都使用了UDP端口1234,A和B分别初始化了 与Server的UDP通信,地址映射如图所示: Server S

18.181.0.31:1234

|

|

+----------------------+----------------------+

| |

NAT A NAT B

155.99.25.11:62000 138.76.29.7:31000

| |

| |

Client A Client B

10.0.0.1:1234 10.1.1.3:1234

现在假设客户端A打算与客户端B直接建立一个UDP通信会话。如果A直接给B的公网地址138.76.29.7:31000发送UDP数据,NAT B将很可能会无视进入的 数据(除非是Full Cone NAT),因为源地址和端口与S不匹配,而最初只与S建立过会话。B往A直接发信息也类似。假设A开始给B的公网地址发送UDP数据的同时,给服务器S发送一个中继请求,要求B开始给A的公网地址发送UDP信息。A往B的输出信息会导致NAT A打开 一个A的内网地址与与B的外网地址之间的新通讯会话,B往A亦然。一旦新的UDP会话在两个方向都打开之后,客户端A和客户端B就能直接通讯, 而无须再通过引导服务器S了。UDP打洞技术有许多有用的性质。一旦一个的P2P链接建立,链接的双方都能反过来作为“引导服务器”来帮助其他中间件后的客户端进行打洞, 极大减少了服务器的负载。应用程序不需要知道中间件具体是什么(如果有的话),因为以上的过程在没有中间件或者有多个中间件的情况下 也一样能建立通信链路。2.3.2. 端点在相同的NAT之后现在考虑这样一种情景,两个客户端A和B正好在同一个NAT之后(而且可能他们自己并不知道),因此在同一个内网网段之内。 客户端A和服务器S建立了一个UDP会话,NAT为此分配了公网端口62000,B同样和S建立会话,分配到了端口62001,如下图: Server S

18.181.0.31:1234

|

|

NAT

A-S 155.99.25.11:62000

B-S 155.99.25.11:62001

|

+----------------------+----------------------+

| |

Client A Client B

10.0.0.1:1234 10.1.1.3:1234

假设A和B使用了上节介绍的UDP打洞技术来建立P2P通路,那么会发生什么呢?首先A和B会得到由S观测到的对方的公网IP和端口号,然后给对方的地址发送信息。 两个客户端只有在NAT允许内网主机对内网其他主机发起UDP会话的时候才能正常通信,我们把这种情况称之为”回环传输“(lookback translation),因为从内部 到达NAT的数据会被“回送”到内网中而不是转发到外网。例如,当A发送一个UDP数据包给B的公网地址时,数据包最初有源IP地址和端口地址10.0.0.1:1234和 目的地址155.99.25.11:62001,NAT收到包后,将其转换为源155.99.25.11:62000(A的公网地址)和目的10.1.1.3:1234,然后再转发给B。即便NAT支持 回环传输,这种转换和转发在此情况下也是没必要的,且有可能会增加A与B的对话延时和加重NAT的负担。对于这个情况,优化方案是很直观的。当A和B最初通过S交换地址信息时,他们应该包含自身的IP地址和端口号(从自己看),同时也包含从服务器看的自己的 地址和端口号。然后客户端同时开始从对方已知的两个的地址中同时开始互相发送数据,并使用第一个成功通信的地址作为对方地址。如果两个客户端在同一个 NAT后,发送到对方内网地址的数据最有可能先到达,从而可以建立一条不经过NAT的通信链路;如果两个客户端在不同的NAT之后,发送给对方内网地址的数据包 根本就到达不了对方,但仍然可以通过公网地址来建立通路。值得一提的是,虽然这些数据包通过某种方式验证,但是在不同NAT的情况下完全有可能会导致A往B 发送的信息发送到其他A内网网段中无关的结点上去的。2.3.3. 端点在多级NAT之后在一些拓朴结构中,可能会存在多级NAT设备,在这种情况下,如果没有关于拓朴的具体信息, 两个Peer要建立“最优”的P2P链接是不可能的,下面来说为什么。以下图为例: Server S

18.181.0.31:1234

|

|

NAT X

A-S 155.99.25.11:62000

B-S 155.99.25.11:62001

|

|

+----------------------+----------------------+

| |

NAT A NAT B

192.168.1.1:30000 192.168.1.2:31000

| |

| |

Client A Client B

10.0.0.1:1234 10.1.1.3:1234

假设NAT X是一个网络提供商ISP部署的工业级NAT,其下子网共用一个公网地址155.99.25.11,NAT A和NAT B分别是其下不同用户的网关部署的NAT。只有服务器S 和NAT X有全局的路由地址。Client A在NAT A的子网中,同时Client B在NAT B的子网中,每经过一级NAT都要进行一次网络地址转换。现在假设A和B打算建立直接P2P链接,用一般的方法(通过Server S来打洞)自然是没问题的,那能不能优化呢?一种想当然的优化办法是A直接把信息发送给NAT B的 内网地址192.168.1.2:31000,且B通过NAT B把信息发送给A的路由地址192.168.1.1:30000,不幸的是,A和B都没有办法得知这两个目的地址,因为S只看见了客户端 ‵全局‵地址155.99.25.11。退一步说,即便A和B通过某种方法得知了那些地址,我们也无法保证他们是可用的。因为ISP分配的子网地址可能和NAT A B分配的子网地址 域相冲突。因此客户端没有其他选择,只能使用S来进行打洞并进行回环传输。2.3.4. 固定端口绑定UDP打洞技术有一个主要的条件:只有当两个NAT都是Cone NAT(或者非NAT的防火墙)时才能工作。因为其维持了一个给定的(内网IP,内网UDP)二元组 和(公网IP, 公网UDP)二元组固定的端口绑定,只要该UDP端口还在使用中,就不会变化。如果像对称NAT一样,给每个新会话分配一个新的公网端口,就 会导致UDP应用程序无法使用跟外部端点已经打通了的通信链路。由于Cone NAT是当今最广泛使用的,尽管有一小部分的对称NAT是不支持打洞的,UDP打洞 技术也还是被广泛采纳应用。3.具体实现一般的网络编程,都是客户端比服务端要难,因为要处理与服务器的通信同时还要处理来自用户的事件;对于P2P客户端来说更是如此,因为P2P客户端不止作 为客户端,同时也作为对等连接的服务器端。这里的大体思路是,输入命令传输给服务器之后,接收来自服务器的反馈,并执行相应代码。例如A想要与B建立 通信链路,先给服务器发送punch命令以及给B发送数据,服务器接到命令后给B发送punch_requst信息以及A的端点信息,B收到之后向A发送数据打通通路,然 后A与B就可以进行P2P通信了。经测试,打通通路后即便把服务器关闭,A与B也能正常通信。一个UDP打洞的例子见P2P-Over-MiddleBoxes-DemoUPDATE 2016-04-06关于TCP打洞,有一点需要提的是,因为TCP是基于连接的,所以任何未经连接而发送的数据都会被丢弃,这导致在recv的时候是无法直接从peer端读取数据。 其实这对UDP也一样,如果对UDP的socket进行了connect,其也会忽略连接之外的数据,详见connect(2)。所以,如果我们要进行TCP打洞,通常需要重用本地的endpoint来发起新的TCP连接,这样才能将已经打开的NAT利用起来。具体来说,则是要设置socket的 SO_REUSEADDR或SO_REUSEPORT属性,根据系统不同,其实现也不尽一致。一般来说,TCP打洞的步骤如下:A 发送 SYN 到 B (出口地址,下同),从而创建NAT A的一组映射B 发送 SYN 到 A, 创建NAT B的一组映射根据时序不同,两个SYN中有一个会被对方的NAT丢弃,另一个成功通过NAT通过NAT的SYN报文被其中一方收到,即返回SYNACK, 完成握手至此,TCP的打洞成功,获得一个不依赖于服务器的链接博客地址:Pans Labyrinthhttp://pppan.net/有价值炮灰-博客园文章转载来自:http://www.pppan.net/tech/p2p/2015/10/31/p2p-over-middle-box.html编辑于 2017-05-09 11:37区块链(Blockchain)对等网络(P2P)​赞同 231​​17 条评论​分享​喜欢​收藏​申请

点对点(科技)_百度百科

科技)_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心点对点是一个多义词,请在下列义项上选择浏览(共2个义项)添加义项收藏查看我的收藏0有用+10点对点播报讨论上传视频科技本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。对等式网络(peer-to-peer, 简称P2P),又称点对点技术,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。P2P节点能遍布整个互联网,也给包括开发者在内的任何人、组织、或政府带来监控难题。P2P在网络隐私要求高和文件共享领域中,得到了广泛的应用。使用纯P2P技术的网络系统有比特币、Gnutella,或自由网等。另外,P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。有些网络(如Napster、OpenNAP,或IRC @find)包括搜索的一些功能,也使用客户端-服务器结构,而使用P2P结构来实现另外一些功能。这种网络设计模型不同于客户端-服务器模型,在客户端-服务器模型中通信通常来往于一个中央服务器。中文名点对点外文名peer-to-peer简    称P2P类    型网络新技术目录1历史2分类▪根据中央化程度▪根据网路拓扑结构3P2P网络的优势4应用▪学术性P2P网络5优点6缺点7争议▪法律方面▪安全方面8计算技术展望9限制▪中华人民共和国▪日本▪新西兰10参见历史播报编辑P2P架构体现了一个网际网路技术的关键概念,这一概念被描述在1969年4月7日第一份RFC文档,主机软件”中。在不用中心索引服务器结构交换多媒体文件的大趋势下,这个概念已经得到广泛普及。 [1]分类播报编辑根据中央化程度纯P2P节点同时作为客户端和服务器端。没有中心服务器。没有中心路由器。如Gnutella。杂P2P有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。路由终端使用地址,通过被一组索引引用来获取绝对地址。如最原始的Napster。混合P2P同时含有纯P2P和杂P2P的特点。如Skype。根据网路拓扑结构结构P2P点对点之间互有连结资讯,彼此形成特定规则拓扑结构。需要请求某资源时,依该拓扑结构规则寻找,若存在则一定找得到。如Chord、YaCy、Kademlia。无结构P2P点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。需要请求某资源节点时,以广播方式寻找,通常会设TTL,即使存在也不一定找得到。如Gnutella。松散结构P2P点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。需要请求某资源时,依现有资讯推测寻找,介于结构P2P和无结构P2P之间。如Freenet。 [1]P2P网络的优势播报编辑P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的Client-Server结构不能实现的,因为在上述这种结构中,客户端的增加意味着所有用户更慢的数据传输。P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。当用P2P来描述Napster 网络时,对等协议被认为是重要的,但是,实际中,Napster 网络获取的成就是对等节点(就像网络的末枝)联合一个中心索引来实现。这可以使它能快速并且高效的定位可用的内容。对等协议只是一种通用的方法来实现这一点。 [1]应用播报编辑点对点技术有许多应用。共享包含各种格式音频,视频,数据等的文件是非常普遍的,即时数据(如IP电话通信,Anychat音视频开发软件)也可以使用P2P技术来传送。有些网络和通信渠道,像Napster,OpenNAP,和IRC@find,一方面使用了主从式架构结构来处理一些任务(如搜索功能),另一方面又同时使用P2P结构来处理其他任务。而有些网络,如Gnutella和Freenet,使用P2P结构来处理所有的任务,有时被认为是真正的P2P网路。尽管Gnutella也使用了目录服务器来方便节点得到其它节点的网络地址。学术性P2P网络2015年1月28日,宾西法尼亚州立大学的开发者,联合了麻省理工学院开放知识行动,西蒙弗雷泽大学的研究人员,还有第二代网际网络P2P工作组,正在开发一个P2P网络的学术性应用。这个项目称为LionShare,基于第二代网络技术,更详细地说是Gnutella模型。这个网络的主要目的是让众多不同学术机构的用户能够共享学术材料。LionShare网络使用杂P2P网络类型,混合了Gnutella分散的P2P网络和传统的C/S网络。这个程序的用户能够上传文件到一个服务器上,不管用户是否在线,都能够持续的共享。这个网络也允许在比正常小得多的共享社区中使用。这个网络与当前正在使用的其他P2P网络的主要不同是LionShare网络不允许匿名用户。这样做的目的是防止版权材料在网络上共享,这同时也避免了法律纠纷。另一个不同是对不同组有选择性的共享个别的文件。用户能个别选择哪些用户可以接收这一个文件或者这一组文件。学术社区需要这种技术,因为有越来越多的多媒体文件应用在课堂上。越来越多的教授使用多媒体文件,像音频文件,视频文件和幻灯片。把这些文件传给学生是件困难的任务,而这如果用LionShare这类网络则容易的多。 [1]优点播报编辑拥有较佳的并行处理能力。运用内存来管理交换资料,大幅度提高性能。不用投资大量金钱在服务器的软,硬体设备。适用于小规模的网路,维护容易。 [1]缺点播报编辑架设较为复杂,除了要有开发服务器端,还要有专用的客户端。用在大规模的网路,资源分享紊乱,管理较难,安全性较低。 [1]争议播报编辑法律方面在美国法律中,“Betamax判决”的判例坚持复制“技术”不是本质非法的,如果它们有实质性非侵权用途。这个因特网广泛使用之前的决定被应用于大部分的数据网络,包括P2P网络,因为已得到认可的文件的传播也是可以的。这些非法侵犯的使用包括开放源代码软件,公共领域文件和不在版权范围之内的作品。其他司法部门也可用类似的方式看待这个情况。实际上,大多数在P2P网络上共享的文件是版权流行音乐和电影,包括各种格式(MP3,MPEG,RM 等)。在多数司法范围中,共享这些复本是非法的。这让很多观察者,包括多数的媒体公司和一些P2P的倡导者,批评这种网络已经对现有的发行模式造成了巨大的威胁。试图测量实际金钱损失的研究多少有些意义不明。虽然纸面上这些网络的存在而导致的大量损失,而实际上自从这些网络建成以来,实际的收入并没有多大的变化。不管这种威胁是否存在,美国唱片业协会和美国电影协会正花费大量的钱来试着游说立法者来创建新的法律。一些版权拥有者也向公司出钱希望帮助在法律上挑战从事非法共享他们材料的用户。尽管有Betamax判决,P2P网络已经成为那些艺术家和版权许可组织的代表攻击的靶子。这里面包括美国唱片协会和美国电影协会等行业组织。Napster 服务由于美国唱片协会的投诉而被迫关闭。在这个案例中,Napster故意地买卖这些并没有从版权所有者那得到许可发行的音像文件。随着媒体公司打击版权侵犯的行为扩大,这些网络也迅速不断地作了调整,让其无论从技术上还是法律上都难于撤除。这导致真正犯法的用户成为目标,因为虽然潜在的技术是合法的,但是用侵犯版权的方式来传播的个人对它的滥用很明显是非法的。匿名P2P网络允许发布材料,无论合法不合法,在各种司法范围内都很少或不承担法律责任。很多人表示这将导致更多的非法材料更容易传播,甚至(有些人指出)促进恐怖主义,要求在这些领域对其进行规范。而其他人则反对说,非法使用的潜在能力不能阻止这种技术作为合法目的的使用,无罪推定必须得以应用,像其他非P2P技术的匿名服务,如电子邮件,同样有着相似的能力。重要案例:美国法律Sony Corp. vs Universal City Studios ( Betamax判决)MGM vs Grokster安全方面许多P2P网络一直受到怀有各种目的的人的持续攻击。例子包括:中毒攻击(提供内容与描述不同的文件)拒绝服务攻击(使网络运行非常慢甚至完全崩溃)背叛攻击(吸血)(用户或软件使用网络却没有贡献出自己的资源)在数据中插入病毒(如,下载或传递的文件可能被感染了病毒或木马)P2P软件本身的木马(如,软件可能含有间谍软件)过滤(网络运营商可能会试图禁止传递来自P2P网络上的数据)身份攻击(如,跟踪网络上用户并且进行不断骚扰式的或者是用合法性地攻击他们)垃圾信息(如在网络上发送未请求的信息--不一定是拒绝服务攻击)如果精心设计P2P网络,使用加密技术,大部分的攻击都可以避免或控制,P2P网络安全事实上与拜占庭将军问题有密切联系。然而,当很多的节点试着破坏它时,几乎任何网络也都会失效,而且许多协议会因用户少而表现得很失败。2007年4月23日,CA公司发表资安警讯,指出Foxy、BitComet、eDonkey、µTorrent、Ares、Azureus、BearShare、Lphant、Shareaza、Hamachi、exeemlite、Fpsetup、Morpheus、iMesh等14款P2P软件都存在安全威胁,这些P2P软体的潜在威胁来源包括可能会覆写档案,为档案重命名,删除档案,被第三方植入恶意程序等。 [1]计算技术展望播报编辑技术角度严格来讲,对等网络双方严格对等并同等地提供和使用数据 ,没有服务器和客户端的区别。但这样的纯P2P应用和网络少之又少,大部分称为P2P的网络和应用实际上依赖或包含像DNS这样的一些非对等单元。同时应用中实际也使用了多个协议,使节点可以同时或分时成为客户端、服务器、和对等节点;譬如Usenet(1979年)和FidoNet(1984年)这样已经使用多年完全的分布式对等网络。很多P2P系统使用更强的对等点(称为超级对等点(Super Node))作为服务器,那些客户节点以星状方式连接到一个超级对等点上。在1990年代末期,早在即时通讯流行之前,为了促进对等网络应用的发展,昇阳(SUN)公司在Java技术中增加累一些类,以便开发者能开发不受控于中心服务器的的实时聊天applet及应用。这个工作由JXTA工程来继续。P2P系统和应用已经吸引了计算机科学研究的大量关注,在这一领域有包括Chord计划,ARPANET, the PAST storage utility,P-Grid(一个自发组织的新兴覆盖性网络),和CoopNet内容分发系统在内的一系列卓越的研究计划。 [2]限制播报编辑中华人民共和国P2P技术在中国法律方面处于空白状态,原则上不受中国政府的官方限制。但由于P2P技术会大量占用网络带宽,并且由于中国的网络设施的现状和中国对网络管理的态度,都不同程度的对P2P通讯方式有所限制。中国各大ISP对网络接入都进行了限速,对占用带宽的应用比如P2P,会采取措施,常用的手段有限制TCP连接数,封锁P2P协议,限制下载/上传速度等。但是由于这些行为大部分都是秘密进行,因此中国众多P2P用户称,此举严重侵犯了他们的知情权和使用权。在中国,被限制最多的P2P软件是BitTorrent系列软件和eMule。在日趋稀少的IPv4地址资源的情况下,中国大部分地区开始采用“大内网”的方式,减少对IP地址资源的消耗,即大部分的家庭及个人用户将连接ISP的路由器,使用网络地址转换方式连接外部网络。因NAT和部分P2P协议的限制,导致P2P软件大多只能在内网进行传输,对P2P产业链产生了很大影响。此外,中国出于对国内产业支持和信息控制的考虑,也会限制一些P2P方式的即时通讯软件。中国信息产业部曾发文要求VOIP只能在指定的网络运营商进行试验,并有地区封杀skype,不过也有官员对此否认并说明只是针对PC-Phone。2009年12月,中国广电总局以无视听许可证为由,由工信部撤消了Btchina网站的备案号,使其被迫关站。此次行动还影响了包括悠悠鸟论坛等BT站点。日本在日本,根据日本现行著作权法,日本境内一切免费提供商业软件/或其他数据下载的网站均属非法。违法情节严重的可被判处有期徒刑,同时处以罚款。BitTorrent系列软件和eMule均被禁止。但因为Share和Winny软件的存在,P2P技术在日本仍然流行。这两款软件都采用了IP加密和数据加密的技术,日本有几百万人使用这两款软件来交流动画,游戏,音乐,软件等数据,但显然警方已经掌控了追查用户的方法。2008年5月9日,三名在share上发布大量版权保护作品的职人遭到逮捕。这两款软件的流行也带来了一些负面问题,比如机密资料的泄漏和计算机病毒的传播。新西兰在新西兰,根据新西兰2011年9月实施的版权法,新西兰境内下载受版权保护的内容为违法,主要针对的就是P2P技术的下载。如果下载的内容收到版权方提诉,ISP会根据用户在下载的时间评估,如有版权侵犯,用户将被警告,警告三次将被罚款15000新西兰元,约合75000人民币。不过需要注意的是对于在线观看以及文件寄存类网站却不在此次罚款范围内。也就是说用户通过Torrent软件的BT种子下载一个受版权保护的作品可能会被罚款,但是如果利用离线文件下载方式则不会受到惩罚。而且在新西兰收版权保护的版权所有者通常仅包括欧美一些公司,所以对当地华人来说,即使使用p2p技术下载中国,韩国等亚洲地区综艺电影同样不会被提诉。 [3]参见播报编辑FoxyeMuleBitTorrent协议BitTorrent协议规范I2P分散网络新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

P2P到底是什么?通俗的解释下? - 知乎

P2P到底是什么?通俗的解释下? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册P2P比特币 (Bitcoin)P2P到底是什么?通俗的解释下?关注者16被浏览48,115关注问题​写回答​邀请回答​好问题​添加评论​分享​6 个回答默认排序小依向钱看​ 关注给你大白话说原来我们需要借钱就是找亲戚朋友或者上银行,原来需要投资也是买理财找银行P2P是什么 我们这有一个网站,借钱的人在我们这登记,借钱信息发在网上。想投资的人看到后通过撮合匹配出借赚钱。网站再和支付公司合作,资金划转都可以在线完成,彻底实现在线借贷交易。发布于 2015-01-21 10:23​赞同 19​​添加评论​分享​收藏​喜欢收起​李念​ 关注P2P平台本身充当中介的角色,需要借钱的人把手续交到平台,通过审核后会在平台发布相关信息。投资人通过平台发布的信息寻找自己感兴趣的,并且把资金放到平台上,平台负责两者之间的对接。发布于 2015-01-21 14:58​赞同 8​​添加评论​分享​收藏​喜欢

【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)_peer to peer 写盘-CSDN博客

>

【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)_peer to peer 写盘-CSDN博客

【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)

最新推荐文章于 2024-03-03 10:11:42 发布

海码007

最新推荐文章于 2024-03-03 10:11:42 发布

阅读量1.4k

收藏

6

点赞数

14

分类专栏:

计算机四大基础

文章标签:

p2p

计算机网络

笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/hhw_hhw/article/details/133992258

版权

计算机四大基础

专栏收录该内容

21 篇文章

7 订阅

订阅专栏

目录

0 引言1 C/S 模式 VS P2P模式2 P2P 概述2.1 纯P2P架构2.2 非结构化P2P和结构化(DHT)P2P2.2.1 非结构化P2P2.2.1 结构化P2P

2.3 P2P需要解决的问题及解决方案2.3.1 集中式目录2.3.2 完全分布式2.3.3 混合体

‍♂️ 作者:海码007 专栏:计算机四大基础专栏 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P 标题:【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)❣️ 寄语:人生的意义或许是可以发挥自己全部的潜力,所以加油吧! 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正

0 引言

之前介绍的都是 C/S 模式,但是 C/S 模式存在很多缺点,客户端都需要通过服务器获取服务。

1 C/S 模式 VS P2P模式

C/S模式(Client/Server模式)和P2P模式(Peer-to-Peer模式)是两种常见的计算机网络架构。它们在设计和功能上存在一些区别,下面是它们的优缺点和区别:

C/S模式(Client/Server模式)

优点:

中心化管理:C/S模式中,服务器负责管理和控制整个系统,可以集中管理和维护资源,提高网络的安全性和可靠性。高性能:服务器可以专注于处理数据和请求,分担了客户端的负担,可以提供更高的性能和响应速度。数据一致性:服务器拥有数据的权威性,可以确保数据的一致性和完整性。

缺点:

单点故障:C/S模式中,服务器是中心节点,如果服务器发生故障或宕机,整个系统将无法正常工作。扩展性限制:C/S模式下,服务器承担大部分的计算和存储任务,当用户数量增加或数据规模扩大时,服务器的负载可能会过大,限制了系统的可扩展性。高成本:C/S模式需要专门的服务器来支持,这增加了系统的成本和复杂性。

P2P模式(Peer-to-Peer模式)

优点:

去中心化:P2P模式中,每台计算机都可以充当客户端和服务器,节点之间平等地共享资源和服务,不存在单点故障。高度可扩展:P2P模式下,系统的性能和存储容量可以随着节点的增加而线性扩展,更适合大规模分布式环境。灵活性:P2P模式不依赖于中心服务器,节点之间可以直接通信和交换数据,提高了网络的灵活性和自主性。

缺点:

安全性风险:P2P模式下,节点之间直接通信,可能存在安全风险和数据泄露的风险,需要采取额外的安全措施来保护系统和数据。网络负载:P2P模式中,每个节点都要承担一部分计算和存储任务,当节点数量庞大时,可能导致网络负载过大,影响系统性能。数据一致性:P2P模式下,节点之间的数据一致性较难保证,需要采取一致性协议和机制来解决数据同步和冲突问题。

综上所述,C/S模式适用于需要集中管理和控制的系统,强调安全性和数据一致性;而P2P模式适用于去中心化、可扩展性要求较高的系统,强调灵活性和可扩展性。选择哪种模式取决于具体的应用需求和系统规模。

使用一张思维导图总结一下:

在文件分发应用中,C/S 和 P2P 的比较

首先思考一个问题:从一台服务器分发文件(大小为F)到N个peer需要多少时间? Peer节点上下载能力(upload、download)是有限的资源

1) 使用C/S模式分析该问题:客户端都是通过服务器获取文件,所以客户端的上载能力不是影响因素,主要取决于服务器的上载能力Us。

服务器必须顺序传输(上载)N个文件拷贝(速度是:NF/Us)每个客户端必须下载一个文件拷贝。(下载速度是:F/dmin)

当客户端比较少的时候,客户端的下载能力是瓶颈; 但是客户端数量很多时,服务器的上载能力是瓶颈;

2) 使用P2P模式分析该问题:

首先看一个例子,清楚P2P是如何运作的

如下图所示:随着用户(Peer)数量的增加,请求节点数量增加,同时提供服务的节点数量也在增加,所以文件分发的时间不会增长的很快。C/S模式几乎是线性增长。

2 P2P 概述

2.1 纯P2P架构

2.2 非结构化P2P和结构化(DHT)P2P

2.2.1 非结构化P2P

非结构化P2P是指没有明确定义的网络拓扑结构的P2P系统。在非结构化P2P中,节点之间的连接是随机建立的,节点可以自由地加入和离开网络。这种模式下,节点通常通过广播或查询路由表来查找其他节点,并在节点之间直接进行通信和资源共享。非结构化P2P适用于小规模的P2P网络,例如点对点文件共享或实时通信应用。

以下是一些非结构化的P2P网络的例子:

Gnutella:Gnutella是一个著名的非结构化P2P协议,它允许节点直接连接和通信,节点之间通过洪泛式传播查询消息来进行资源搜索。FastTrack:FastTrack是用于文件共享的非结构化P2P协议,被用于诸如KaZaA和Morpheus等应用程序中。它通过广播查询消息和使用缓存来实现文件搜索和资源发现。BitTorrent:BitTorrent是一种混合的P2P协议,它既具有非结构化的特点,又包含了一些结构化的元素。BitTorrent网络中的节点通过Tracker服务器进行资源发现,并通过分片和对等交换来实现高效的文件传输。eDonkey网络:eDonkey网络也是一个非结构化的P2P网络,用于文件共享。它使用了一种称为"Kademlia"的分布式哈希表(DHT)来管理节点和文件的索引信息。

2.2.1 结构化P2P

结构化P2P使用分布式哈希表(Distributed Hash Table,DHT)来管理节点之间的连接和资源分配。DHT是一种分布式存储系统,将键值对映射到网络中的节点上,并提供高效的查找和存储功能。在结构化P2P中,节点按照一定的规则组织成结构化的网络拓扑,例如环形或树形结构。这种模式下,节点可以根据键的哈希值来定位存储该键值对的节点,并通过路由表进行高效的查找。结构化P2P适用于大规模的P2P网络,例如分布式存储系统或区块链技术。

以下是一些结构化的P2P网络的例子:

Chord:Chord是一种常用的结构化P2P协议,它使用一致性哈希算法来管理节点和文件的分布。Chord网络中的节点按照哈希值的顺序排列成一个环,节点可以通过查找后继节点的方式进行路由和资源发现。CAN:CAN(Content-Addressable Network)是一种基于网格结构的结构化P2P网络,将网络空间划分为多个维度,每个节点负责管理一个或多个区域。CAN网络使用坐标系统来定位和路由文件。Kademlia:Kademlia是一种用于分布式哈希表(DHT)的结构化P2P协议,它通过XOR距离度量来管理节点和数据的分布。Kademlia网络中的节点通过路由表来维护对其他节点的引用,实现高效的路由和资源查找。Pastry:Pastry是一种用于构建大规模结构化P2P网络的协议,它使用类似于Chord的一致性哈希算法来定位和路由节点。Pastry网络中的节点通过路由表来管理对其他节点的引用。

2.3 P2P需要解决的问题及解决方案

P2P面临的两大问题:

如何定位所需资源如何处理对等方的加入与离开 可能的解决方案:

集中式目录完全分布式混合体

2.3.1 集中式目录

有一个集中式目录服务器,每个节点上线时,需要在集中式目录服务器注册,告诉它自己上线了(下线也是同理)。所以集中式目录服务器就知道了每个节点的上线信息以及资源信息。

集中式目录存在的问题:

单点故障:目录服务器故障,就全部瘫痪性能瓶颈侵犯版权

2.3.2 完全分布式

Gnutella 是一种完全分布式的非结构化 P2P 协议。它是在 2000 年左右开发的,旨在实现点对点文件共享。Gnutella 网络中的节点相互连接,没有中心服务器或中心节点。每个节点都可以作为文件的资源提供者和请求者。在 Gnutella 中,节点通过广播消息来发现其他节点,并建立直接连接以进行文件搜索和下载。当一个节点搜索某个文件时,它会向相邻节点发送查询消息,然后逐级传播到整个网络。当某个节点拥有所需文件时,它可以响应查询消息并将文件直接发送给请求者。Gnutella 的非结构化特性使得它适用于小规模的 P2P 文件共享。节点可以自由地加入和离开网络,网络拓扑结构没有严格的规定。这种灵活性使得 Gnutella 在一定程度上能够应对节点的动态变化和网络的不稳定性。 需要注意的是,Gnutella 是一种早期的 P2P 协议,由于其非结构化的特点,它可能在大规模网络环境下面临一些挑战,如搜索效率和扩展性。随着时间的推移,结构化的 P2P 系统如 BitTorrent 和基于 DHT 的协议逐渐取代了 Gnutella,在大规模网络中更为常见。

Gnutella的协议

2.3.3 混合体

组长与组长之间通过完全分布式P2P传输,组长和组员通过集中式目录P2P传输。所以混合体就很好理解了,就是上面两种方法的结合模式。

关注博主即可阅读全文

优惠劵

海码007

关注

关注

14

点赞

6

收藏

觉得还不错?

一键收藏

知道了

0

评论

【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)

非结构化P2P是指没有明确定义的网络拓扑结构的P2P系统。在非结构化P2P中,节点之间的连接是随机建立的,节点可以自由地加入和离开网络。这种模式下,节点通常通过广播或查询路由表来查找其他节点,并在节点之间直接进行通信和资源共享。非结构化P2P适用于小规模的P2P网络,例如点对点文件共享或实时通信应用。以下是一些非结构化的P2P网络的例子:Gnutella:Gnutella是一个著名的非结构化P2P协议,它允许节点直接连接和通信,节点之间通过洪泛式传播查询消息来进行资源搜索。FastTrack。

复制链接

扫一扫

专栏目录

计算机网络原理(8)——P2P(文件收发、索引技术)

Allure_07的博客

03-25

928

计算机网络原理(8)——P2P(文件收发、索引技术)

一、文件收发

Peer-to-peer

没有服务器

任意端系统之间直接通信

节点阶段性接入Internet

节点可能更换IP地址

问题:从一个服务器向N个节点分发一个文件需要多长时间?

us:服务器上传带宽

ui:节点i的上传带宽

di:节点i的下载带宽

文件分发:客户机/服务器

服务器串行的发送N个副本

时间:NF/Us

客户...

p2p-graph:使用D3进行实时P2P网络可视化

02-02

p2p图

使用D3进行实时P2P网络可视化

使用此软件包。 您可以在主页上看到此软件包的或在使用它。

安装

npm install p2p-graph

该软件包可在带有的浏览器中使用。 如果不使用捆绑程序,则可以直接在[removed]标记中使用。

用法

var Graph = require ( 'p2p-graph' )

var graph = new Graph ( '.root' )

graph . on ( 'select' , function ( id ) {

console . log ( id + ' selected!' )

} )

// Add two peers

graph . add ( {

id : 'peer1' ,

me : true ,

name : 'You'

} )

graph . add ( {

id : 'peer2' ,

name : 'Another Peer'

} )

// Connect them

graph . connect ( 'peer1' , 'peer2' )

API

小心! :表示的图形是有向的!

参与评论

您还未登录,请先

登录

后发表或查看评论

p2p,网络,peer-to-peer

12-15

p2p,网络,peer-to-peer,p2p,网络,peer-to-peer

python-p2p:一个简单的功能python3对等网络

02-04

python-p2p

一个简单的基于python3 p2p

该代码为对等体之间的信息交换提供了一个简单的网络结构。

用法

安装要求:

pip3 install -r requirements.txt

注意:已在python 3.6上测试

启动节点:

pyton3 main.py

应用层之应用层的网络应用模型————C/S和P2P、域名解析系统DNS、文件传输协议FTP

哥的时代,为你保驾护航

12-09

131

应用层对应用程序的通信提供服务。应用进程交换的报文类型,请求还是响应?各种报文类型的语法,如报文中的各个字段及其详细描述。字段的语义,即包含在字段中的信息的含义。进程何时、如何发送报文,以及对报文进行响应的规则。文件传输、访问和管理————FTP电子邮件————SMTP、POP3虚拟终端————HTTP查询服务和远程作业登录————DNS以上就是应用层之应用层的网络应用模型————C/S和P2P、域名解析系统DNS、文件传输协议FTP的相关知识点,希望对你有所帮助。

p2p,计算机网络,peer-to-peer

12-15

p2p网络 ,计算机网络,peer-to-peer

peer-flipchart:自行构建P2P挂图

02-02

对等活动挂图

DIY去中心化活动挂图应用

先决条件

已安装Node.js v8.xx或更高版本

安装了Git

进入命令行窗口

现代浏览器(支持WebRTC)

建立

下载

$ git clone https://github.com/ipfs-shipyard/peer-flipchart.git

$ cd p2p-flipchart

安装

$ npm install

开始

您将需要两个命令行窗口。

一方面,查看源文件中的更改并构建:

$ npm run build:watch

另一方面,启动静态HTTP服务器:

$ npm start

访问

前往并验证活动挂图应用程序是否正常运行。

码!

在代码编辑器中打开文件 。

步骤1:建立IPFS节点

取消注释所有与启动IPFS节点相关的行。

结果应类似于文件 。

步骤2:创建CRDT并将其与IPFS绑定

取消注释与CRDT相关的所有行。

结果应类似于文件 。

现在它应该都可以工作,并且所有连接的节点都应该能够看到彼此的更改。

引擎盖下

┌─────────────────────────

p2p_network:Python中的点对点网络

04-06

对等网络项目

内容

该项目

什么是对等网络

P2P网络是一种分散的网络体系结构,不需要中央服务器进行通信。 在p2p网络中,每台加入该网络的计算机都称为Peer(或Node),它们直接相互连接。 该网络主要用于文件共享和区块链应用。

关于该项目

该项目的代码用于创建对等网络,您可以在项目中对其进行修改和使用。

这个项目的出发点是我试图创建自己的区块链应用程序,但是我需要一个对等网络,但是我找不到一个全面的p2p网络示例。 结果,我创建了这个p2p网络项目,以在基于区块链的应用程序中使用。

它是如何工作的

基于TCP / IP连接的网络。 要创建网络,应该至少有一个对等点,每个对等点都知道其IP地址和端口。 在此项目中,该对等(或对等)将被称为GENESIS NODE 。

正如我提到的,每个人都知道创世节点的IP地址和端口。 否则,如果对等方想加入网络,则它不知道要连接的IP地址。

手撕计算机网络——应用层(四):P2P

荔枝当大佬的博客

12-28

752

进入应用层学习也有了一段时间了,接下来的这篇文章中小荔枝会将应用层P2P结构体系于我们客户——端系统体系在分发文件中的机理进行整理,希望今天能结束应用层学习哈哈哈,运输层我来啦~~~

WebRTC P2P 原理分析:从原理到应用

yinshipin007的博客

08-20

175

WebRTC(Web Real-Time Communication)是一项开源的技术,旨在实现实时音视频以及数据通信,而无需安装任何插件或扩展。WebRTC 允许用户之间通过 P2P(Peer-to-Peer)模式进行实时通信,减轻服务器的负担并提高通信效率。本文将对 WebRTC P2P 通信原理进行详细分析,并探讨其在各种应用场景中的实际应用。WebRTC 是一项强大的实时通信技术,通过 P2P 连接为用户提供高效、低延迟的音视频和数据通信。

2.5计算机网络——P2P应用

qq_64742748的博客

09-26

495

P2P的基本原理

P2P和C/S

m0_62665450的博客

02-03

1277

P2P 和C/S

PeerToPeer-Torrent-Client:功能齐全的PeerToPeer Torrent应用程序用于文件传输

04-29

对等客户

该项目的目的是设计和实现可扩展且功能齐全的PeerToPeer Torrent应用程序,用于文件传输。

目录

项目概况

该项目的目的是在Java中实现可扩展且功能齐全的PeerToPeer Torrent应用程序以进行文件传输。 该应用程序包括一个中央节点,该中央节点存储有关共享文件的所有信息,以及数量可变的客户端(对等方),这些客户端(对等方)连接到中央节点,搜索有关文件的信息,然后从具有请求的对等方下载该文件。文件。 客户端以异步方式连接和离开网络,并且可以选择发布文件或下载文件。 有关已发布文件的信息将在主节点上提供。 但是,实际文件将仅驻留在发布该文件的客户端或已下载该文件的客户端上。 每个文件都由其名称唯一标识,并且在首次发布时会分成相同大小的片段。 每个客户端的端口和IP将是可变的,并且将取决于客户端连接到网络的时间。 但是,主节点将具有固定的公共IP和端口,连接到它

P2P优秀论文_主动peer-to-peer网络架构

07-10

P2P优秀论文_主动peer-to-peer网络架构

awesome-peer-to-peer:对等资源列表

02-01

awesome-peer-to-peer:对等资源列表

通信与网络中的Moxa新一代peer-to-peer主动式以太网I/O服务器

11-30

作为工业设备联网的领导品牌,Moxa此次重磅推出新一代peer-to-peer主动式以太网I/O服务器 —— ioMirror E3210系列。

  ioMirror E3000以太网I/O服务器主要用于将物理信号转换为网络信号进行传输,然后再将物理信号还原。通过网络传输,无需敷设大量的信号线,还有助于保证信号传输的精度,特别适用于PLC、DCS系统或其他类型控制系统(例如:锅炉液位监控系统、电站监控系统、电信机房监控系统、楼宇安防监控系统等),完全可以替代现有基于线缆实现信号传输的解决方案。

  ioMirror E3210具备8DI和8DO和一个以太网口。成对使用ioMirror

论文研究-基于PeertoPeer网络的安全邮件系统设计.pdf

07-22

针对这些缺陷,利用对等的思想,设计出一种基于PeertoPeer网络的安全邮件系统。通过随机均匀分散选择实现了邮件服务器的随机性、分散性,解决了邮件系统的存储与处理压力。通过多重RSA加密签名实现了邮件服务器...

多重验证及比特币脚本中的P2PK、P2PKH、P2SH机制

最新发布

weixin_52421133的博客

03-03

768

总结来说,二重验证为加密货币资产提供了一种更高级别的安全保障,而比特币赎回脚本系统中的P2PK、P2PKH、P2SH交易类型,则从不同的维度优化了交易过程,既保证了安全性又提升了效率。深入理解和掌握这些概念和技术,有助于我们在数字货币世界中更好地保障资产安全,应对日益复杂的交易需求。未来,随着区块链技术的发展,我们期待看到更多创新的验证机制和交易形式的出现。

ctf_show笔记篇(web入门---命令执行)

whale_waves的博客

03-02

1216

${PWD::${##}}???${PWD::${##}}?${USER:~A}?$IFS????.???

####我的环境$USER是root,ctfshow的不是所以这里是正常的

计算机网络中 peer是什么

05-27

在计算机网络中,peer通常指彼此连接并交换信息的两个或多个计算机的节点。这些计算机互为对等节点,通过共享资源和数据来相互协作,而不需要一个中心服务器或控制节点。在对等网络中,所有节点都有相同的地位和权力,可以进行相同的操作和交换信息。例如,P2P文件共享网络中的每个计算机都是对等节点,它们可以互相分享和下载文件,而不需要一个中央服务器来管理和分配文件。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

海码007

CSDN认证博客专家

CSDN认证企业博客

码龄4年

暂无认证

110

原创

4971

周排名

1万+

总排名

7万+

访问

等级

2094

积分

3046

粉丝

887

获赞

46

评论

736

收藏

私信

关注

热门文章

【UE 插件】UE4 虚幻引擎 插件开发(带源码插件打包、无源码插件打包) 有这一篇文章就够了!!!

3378

Blender 导出 fbx 到虚幻引擎中丢失材质!!!(使用Blender导出内嵌材质的fbx即可解决)

2774

【实战指南】修改材质参数方法总集---包教包会的UE5虚幻引擎秘籍!

1850

文件:文本文件和二进制文件 详解

1848

【程序员必看】UE5虚幻引擎:利用LOD、Nanite技术优化场景性能,提升游戏体验!

1730

分类专栏

算法

2篇

计算机图形学

5篇

计算机四大基础

21篇

C++

13篇

UE

27篇

CesiumforUnreal

8篇

CityEngine

6篇

建模

2篇

QT

3篇

Python

论文

1篇

学习规划

1篇

最新评论

【程序员必备】UE4 C++ 虚幻引擎:详解自定义Config文件存储位置及文件名

1204157137 肖哥:

谢谢UP主!但是发现修改Custom.ini数值后需要再编译运行才能刷新数值

Blender 导出 fbx 到虚幻引擎中丢失材质!!!(使用Blender导出内嵌材质的fbx即可解决)

海码007:

不至于

Blender 导出 fbx 到虚幻引擎中丢失材质!!!(使用Blender导出内嵌材质的fbx即可解决)

qq_42245132:

谢谢大佬,你是我爹

UE5.0.3版本 像素流送 Pixel Streaming

海码007:

说明你的UE程序没有连接上信令服务器

UE5.0.3版本 像素流送 Pixel Streaming

乏、:

现在这会是可以在网页上输入IP 但是点击之后提示我未连接

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

【GAMES101】Lecture04 Transformation Cont. 变换 续集

【GAMES101】Lecture03 Transformation 变换

算法刷题Day2 | 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

2024年16篇

2023年64篇

2022年30篇

目录

目录

分类专栏

算法

2篇

计算机图形学

5篇

计算机四大基础

21篇

C++

13篇

UE

27篇

CesiumforUnreal

8篇

CityEngine

6篇

建模

2篇

QT

3篇

Python

论文

1篇

学习规划

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

P2P网络基础(学习笔记)_基础p2p是什么意思-CSDN博客

>

P2P网络基础(学习笔记)_基础p2p是什么意思-CSDN博客

P2P网络基础(学习笔记)

最新推荐文章于 2024-03-07 23:13:00 发布

yeaqqqq

最新推荐文章于 2024-03-07 23:13:00 发布

阅读量5.1k

收藏

19

点赞数

1

文章标签:

网络

分布式

区块链

数据库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/yeaqqqq/article/details/106897809

版权

P2P网络基础(学习笔记)

基本概述P2P与C/S架构P2P网络的特点P2P网络的主要功能P2P网络的分类集中式全分布式非结构化全分布式结构化混合式比特币网络

P2P网络的应用

基本概述

P2P(peer-to-peer)网络又称为对等式网络,或者点对点网络。这是一种无中心的服务器、完全由用户群进行交换信息的互联网体系,P2P网络的每一个用户即是一个客户端,同时也具备服务器的功能。 它的定义是:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。

P2P与C/S架构

在P2P技术之前,我们所有的网络应用都采用C/S或者B/S架构来实现的,然而在之前C/S架构的应用程序中,客户端软件向服务器发出请求,服务器然后对客户端请求做出响应,在这种情况下,如果客户端越多,此时服务器的压力就越大。而采用P2P技术实现的每台计算机既是客户端,也是服务器,他们的功能都是对等的。对于安装了P2P软件(如迅雷,QQ等)的计算机加入一个共同的P2P网络,网络中的节点之间可以直接进行数据传输和通信。 那么以C/S架构为例,我们接下来就看一看P2P网络与传统的架构有什么异同点。 相比于C/S,P2P有其自己独特的优势: 所有的客户端都能够提供资源,包括贷款、存储空间以及计算能力。所以其网络容量可以远超过其他模式。

C/S架构的缺点

服务器负担过重: 当大量用户访问C/S系统的服务器时,服务器常常会出现网络堵塞等现象,这时候,我们可能会通过增加投资提高服务器的硬件性能;系统稳健性和服务器关联密切: 指的是如果服务器出现了问题时,整个系统的运行将会瘫痪(感觉是面向对象中经常强调的原则——低耦合原则)。

P2P的优点

对等模式: P2P系统中的客户端能够同时扮演客户端和服务器的角色,使两台计算机之间能够不通过服务器直接进行信息分享。比如:QQ中当好友在线的时候发信息时,相信此时是不需要经过服务器转发的,只有当给离线好友发送消息时,此时应该会先把消息发送到服务器端存储起来,当好友再次登录的时候,会和服务器进行连接,服务器会进行判断是不是给这个用户的信息来决定是否转发,QQ软件的实现属于混合型P2P结构的, 这个会在后面的P2P系统分类中介绍。这也就是说信息的传输分散在各个节点,无须经过某个中心服务器,用户的隐私信息被窃听和泄露的可能大大减少。网络资源的分布式存储: 在C/S架构中,所有客户端都直接从服务器下载所有数据资源,这样势必会加重服务器的负担,而P2P则改变了以服务器为中心的状态,使每个节点可以先从服务器上个下载一部分,然后再相互从对方或者其他节点下载其余部分。采用这种方式,当大量客户端同时下载时,就不会形成网络堵塞现象了。

P2P网络的特点

去中心化: 网络中的资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。P2P的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。健壮性: P2P架构天生具有耐攻击、高容错的优点。高性价比: P2P架构可以有效利用大量普通用户节点的空闲资源,不需要部署服务器或者需要部署的服务器很少。目前,P2P在这方面的应用多在学术研究方面,一旦技术成熟,能够在工业领域推广,则可以为许多企业节省购买大型服务器的成本。私密性: 在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通信的灵活性和可靠性,能够为用户提供更好的隐私保护。流量均衡: P2P网络环境下,硬件资源和数据内容分布在多个节点,而P2P节点可以分布在网络中任何角落,可以很好的实现整个网络的流量均衡。负载均衡: P2P 网络环境下由于每个节点既是服务器又是客户机,减少了对传统C/S结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点,更好的实现了整个网络的负载均衡。可扩展性: 不管是用户几点组成的P2P网络还是服务器节点组成的P2P网络,都是完全分布式的,不存在单点性能上的瓶颈。

P2P网络的主要功能

数据发布和传输: 数据发布和传输有一对一(如即时通讯)、一对多(如群组通信和消息广播)和多对多三种方式;数据存储和检索: 数据存储和检索分为基于结构化的P2P网络方法和基于非结构化的P2P网络方法。结构化的P2P网络也就是基于分布式哈希表(DHT)的P2P网络,这个也是目前应用最广泛的,它的网络拓扑结构是确定的。而非结构化的P2P网络的资源存储通常与网络拓扑结构无关,例如Gnutella。分布式数据处理: 目前,大多数分布式数据处理技术采用的是master/slave的架构。而基于P2P网络,也能够进行分布式的数据处理。

P2P网络的分类

集中式 、全分布式非结构化 、 全分布式结构化 、 混合式

集中式

这种网络采用的是中心化的拓扑结构,存在“中心服务器”,而其作用为保存接入节点的地址信息。倘若两个peer之间想要进行通信,那么它们可以通过中心服务器进行对方地址的索要。例如:将音乐文件与保存文件的节点相互关联,用户查找某个音乐时,中心服务器告知储存节点地址,用户点对点连接以获得音乐。由此可知,中心服务器是用来提供地址索引的(其他架构的中心服务器是提供所有的服务)。倘若其出现故障,那么整个系统就出现瘫痪了。 对小型网络而言,中心化拓扑模型在管理和控制方面占一定优势。但是由于整个网络严重依赖于中心服务器,容易造成性能瓶颈和单点故障的问题。该模型并不适合大型网络应用。

全分布式非结构化

这种网络采用Flooding搜索算法,每次搜索都把要查询的消息广播给网络上的所有节点。因为它没有中央索引服务器,每台机器在网络中是真正的对等关系,既是客户机同时又是服务器。全分布 P2P 节点可以自由加入退出,并且没有中心节点,节点地址没有结构化统一标准,整个网络结构呈随机图的结构, 无固定网络结构图。然而完全的自由意味着新节点无法得知 P2P 网络节点信息,从而无法加入网络。全分布式 P2P 网络更加自由化的同时也带来节点管理的问题,节点频繁加入、退出使得整个网络结构无法稳定, 大量的广播消息不仅造成资源浪费,甚至会阻塞网络。而比特币采用的就是这种 P2P 网络结构,全分布式使得任何人任何节点都可以参与,非结构化使得节点间既可以通过区块链 P2P 协议同步区块数据,又保持匿名隐私保护。 例如:当一台计算机要下载一个文件,它首先以文件名或者关键字生成一个查询,并把这个查询发送给与它相连的所有计算机,这些计算机如果存在这个文件,则与查询的机器建立连接,如果不存在这个文件,则继续在自己相邻的计算机之间转发这个查询,直到找到文件为止。为了控制搜索消息不至于永远这样传递下去,一般通过TTL (Time To Live)的减值来控制查询的深度。 可以发现,当网络规模变大以后,这种搜索方式会引发”广播风暴”,严重消耗网络带宽和节点的系统资源。虽然避免了集中式对等网络的“单点故障”问题,但是效率却很低下。

全分布式结构化

目前采用最广泛的就是结构化的分布式网络,也就是基于DHT(分布式哈希表)的网络。DHT为了达到Napster的效率和正确性,以及Gnutella的分散性,使用了较为结构化的基于键值对的路由方法。(如下图所示)。 它也是一种分布式网络结构,但与纯分布式结构不同。纯分布式网络就是一个随机网络,而结构化网络则将所有节点按照某种结构进行有序组织,比如形成一个环状网络或树状网络。而结构化网络的具体实现上,普遍都是基于 DHT(Distributed Hash Table,分布式哈希表) 算法思想。结构化模型与非结构化模型相似,但结构化模型的节点管理有固定结构图。例如:以太坊将节点椭圆加密算法的公钥转换为64 Byte长度的NodeID作为唯一标志符来区分节点,使得以太坊可以在没有中心服务器的情况下实现节点地址精确查找。 目前实现了DHT协议的有Kademlia和Chord算法,其中Kad算法由于简单易用而被广泛使用,其中比特币和以太坊网络中的P2P网络采用的就是Kad算法。后面会对DHT进行进一步说明。

混合式

混合式也可称为半分布式。结合集中式和分布式模型各有的优点,半分布式 P2P 网络将节点分类成普通节点和超级节点,从而构成了半分布式网络结构。 如下图所示,网络中存在多个超级节点组成分布式网络,而每个超级节点则有多个普通节点与它组成局部的集中式网络。一个新的普通节点加入,则先选择一个超级节点进行通信,该超级节点再推送其他超级节点列表给新加入节点,加入节点再根据列表中的超级节点状态决定选择哪个具体的超级节点作为父节点。这种结构的泛洪广播就只是发生在超级节点之间,就可以避免大规模泛洪存在的问题。在实际应用中,混合式结构是相对灵活并且比较有效的组网架构,实现难度也相对较小,因此目前较多系统基于混合式结构进行开发实现。 其实,比特币网络如今也是这种结构。

比特币网络

首先,比特币网络中的节点主要有四大功能:钱包、挖矿、区块链数据库、网络路由。每个节点都会具备路由功能,但其他功能不一定都具备,不同类型的节点可能只包含部分功能,一般只有比特币核心(bitcoin core)节点才会包含所有四大功能。 所有节点都会参与校验和广播交易及区块信息,且会发现和维持与其他节点的连接。有些节点会包含完整的区块链数据库,包括所有交易数据,这种节点也称为全节点(Full Node)。另外一些节点只存储了区块链数据库的一部分,一般只存储区块头而不存储交易数据,它们会通过“简化交易验证(SPV)”的方式完成交易校验,这样的节点也称为 SPV节点或轻节点(Lightweight Node)。钱包一般是 PC 或手机客户端的功能,用户通过钱包查看自己的账户金额、管理钱包地址和私钥、发起交易等。除了比特币核心钱包是全节点之外,大部分钱包都是轻节点。挖矿节点则通过解决工作量证明(PoW)算法问题,与其他挖矿节点相互竞争创建新区块。有些挖矿节点同时也是全节点,即也存储了完整的区块链数据库,这种节点一般都是独立矿工(Solo Miner)。还有一些挖矿节点不是独立挖矿的,而是和其他节点一起连接到矿池,参与集体挖矿,这种节点一般也称为矿池矿工(Pool Miner)。这会形成一个局部的集中式矿池网络,中心节点是一个矿池服务器,其他挖矿节点全部连接到矿池服务器。矿池矿工和矿池服务器之间的通信也不是采用标准的比特币协议,而是使用矿池挖矿协议,而矿池服务器作为一个全节点再与其他比特币节点使用主网络的比特币协议进行通信。

P2P网络的应用

文件内容共享和下载: 利用P2P技术可以使计算机之间不通过服务器直接进行内容共享和数据分发,使得互联网上任意两台机器间共享数据成为可能。例如爱奇艺、腾讯视频客户端等采用的P2P流媒体技术,使得播放速度更加流畅。计算能力和存储共享: 基于P2P网络的分布式结构构造出分布式的存储系统实现存储共享,提供高效率、高性价比、负载均衡的文件存取功能,例如国外的Sia、Storj等分布式云存储平台,不依赖第三方的大型集中存储空间,避免了数据泄露、保证了安全性。同时由于任何人的主机都可以提供存储服务,降低了门槛,大幅降低了存储的成本。 同时也可以共享CPU处理能力。例如360的共享云计划和星域CDN等,充分利用每个人机器的闲散计算资源来提供计算服务。 基于P2P的即时通讯: 例如Skype通话软件就是从连接建立和数据传输都采用P2P实现,保证了良好的通话质量。基于P2P方式的协同处理与服务共享平台: 常见的协同处理有视频会议、共享白板、协同协作等,而基于P2P技术的同样也可以实现上述功能,不同的是,这种实现方式不需要中心服务器,参与协同工作的计算机之间可以直接建立点对点的连接。例如被微软收购的Groove协同软件平台。

优惠劵

yeaqqqq

关注

关注

1

点赞

19

收藏

觉得还不错?

一键收藏

知道了

1

评论

P2P网络基础(学习笔记)

P2P网络基础(学习笔记)基本概述P2P与C/S架构P2P网络的特点P2P网络的主要功能P2P网络的分类集中式全分布式非结构化全分布式结构化混合式比特币网络P2P网络的应用基本概述P2P(peer-to-peer)网络又称为对等式网络,或者点对点网络。这是一种无中心的服务器、完全由用户群进行交换信息的互联网体系,P2P网络的每一个用户即是一个客户端,同时也具备服务器的功能。它的定义是:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务

复制链接

扫一扫

p2p网络实现(C++)

03-05

C/C++实现一个p2p网络集群,并通信

P2P详解

H08042的博客

04-08

2011

P2P详解

P2P的中文为对等连接,它是可以使得网络的沟通变得容易起来的一种应用协议

P2P的核心是数据存储在客户本地,通过存储信息(名称、地址、分块)的查询,让终端之间直接数据传递。P2P网络让网络上的数据流量分散化,同时管理点不仅没有服务容量的压力,而且只存储数据的索引与链接,不对数据本身负责,避免了版权与管理的麻烦。

P2P网络实际上是一种“无中央政府的”、“部落式的”网络,加入的方式就...

1 条评论

您还未登录,请先

登录

后发表或查看评论

P2P知识(2)--P2P详解

DoYou?'s csdn

05-19

4169

p2p详解1、什么是p2pP2P是一种技术,但更多的是一种思想,有着改变整个互联网基础的潜能的思想。(1)p2p的概念P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。简 单的说,P2

P2P(Peer to Peer)网络的原理

热门推荐

Machine Learning with Tutors

09-08

4万+

在设计中,每个节点的功能都是一样的。如果需要加入到网络中,不一定跟创世节点链接假设已存在的节点: 创世节点,A、B、C节点,此时有个D节点想要加入到网络。那么D节点不一定非得链接到创世节点,可以链接到A、B、C中的任意一个节点,然后该节点再广播给其他节点说"Hey, 有个新人叫做D的加入了网络"。这样所有人都知道,有个叫做D的节点存在,你可以和它通信,同时D节点和会同步已存在的节点。这样D节点也知道了其他节点的存在了。

简述P2P、P2C、O2O、B2C、B2B、C2C 的区别

weixin_45565886的博客

10-06

2548

简述P2P、P2C、O2O、B2C、B2B、C2C 的区别

P2P网络的概念

wangzhenrende的博客

12-27

5466

P2P ( Peer-to-Peer )网络即点对点网络,是无中心服务器、依靠用户群(Peers)交换信息的互联网体系(图2-1),是分布式网络的一种。通常而言,该网络中各个节点之间的地位是对等的。与有中心服务器的中央网络 C/S 系统(Client-Server)(图2-1)不同,点对点网络的每个节点既是客户端,也是服务器。节点之间依靠相互间的连接进行信息交流,各节点共享它们所拥有的资源(如磁盘...

【P2P学习(2)】P2P 通信,主要存在四种不同的网络模型

Hali_Botebie的博客

10-20

429

1.1 简介NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。1.2 分类。

C/S与P2P的主要区别以及相同点

Trollz的博客

01-05

1万+

Main differences and similarities between c/s and P2P

C/S模式与P2P模式的对比

huabiaochen的博客

03-07

2万+

C/S模式

基本概念

结构特点:分为客户程序和服务程序;

P2P

基本概念

P2P是网络结点之间采取对等的方式,通过直接交换信息打刀共享计算机资源和服务的工作模式;

P2P通信模式是指P2P网络中对等结点之间直接通信的能力

P2P网络是指在Internet中由对等结点组成的一种动态的逻辑网络

P2P实现技术是指为了实现对等结点之间直接通信的功能和特定的应用所涉及的协议与软件

———...

P2P技术介绍

冷山不生云

11-20

2513

看到的一篇对P2P技术的介绍

1. 什么是对等网络(P2P)技术?

P2P技术属于覆盖层网络的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据。这种模式的优点是:

数据的一致性容易控制,系统也容易管理。

但是此种模式的缺点是:

因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一...

信息时代计算机网络的功能

似水流年,是谁苍白了等待

04-30

2183

目录

一、计算机网络在信息时代中的作用

二、互联网概述

1.网路的网络

1.1 互联网基础发展的三个阶段

1.2互联网的标准化工作

1.3互联网的组成

1.4互联网的边缘部分

三、对等连接方式

1.对等连接(peer-to-peer,简写为p2p)

1.1互联网的核心部分

1.2 计算机网络在我国的发展

1.3 计算机网络的类别

四、计算机网络的性能

...

P2P网络技术原理与典型系统开发

12-24

1. 适用初学者完整了解p2p网络原理 2. 有清晰完整的书籍目录

第三代的P2P网络 ANts P2P

06-06

第三代的P2P网络 ANts P2P

分析P2P网络信任机制研究

10-22

摘 要: 对P2P网络存在的问题进行了分析,阐述了建立P2P网络信任模型的需求。在对现有P2P网络中的信任模型进行总结归纳后,指出了以后研究的方向。对仿真系统进行了性能测试,并对测试结果进行了分析。仿真结果表明...

【学习心得】Python好库推荐——websocket-client

最新发布

qq_39780701的博客

03-07

259

【学习心得】Python好库推荐——websocket-client

网络编程(IP、端口、协议、UDP、TCP)【详解】

qq_1424674116的博客

03-02

4451

网络编程是可以让设备中的程序与网络上其他设备中的程序进行数据交互的技术。

ChaosBlade故障注入工具--cpu,内存,磁盘占用\IO,网络注入等

Mr_wilson_liu的博客

03-07

470

ChaosBlade故障注入工具--cpu占用,内存占用,磁盘占用\IO,网络注入等

win11环境下使用hane WIN NFS Server搭建nfs服务

xh_w20的专栏

03-04

632

win11环境下搭建nfs,使用hane win nfs server作为服务端,客户端越是windows使用。

网络安全及信息安全常识

minimonkey850122的博客

03-01

685

网络安全及信息安全常识

P2P网络如何搭建 centos

06-03

在CentOS上搭建P2P网络,可以采用以下步骤:

1. 安装基础环境:在CentOS上安装P2P网络需要先安装基础环境,如gcc、make、openssl等。可以通过以下命令安装:

```

yum install gcc make openssl openssl-devel

```

2. 下载P2P软件:可以选择一款P2P软件来搭建P2P网络,如eMule、qBittorrent、Deluge等。可以在官网上下载并安装,或者使用以下命令安装:

```

yum install qbittorrent deluge

```

3. 配置端口转发:在P2P网络中,需要将本地端口转发到公网上,以便其他节点能够连接到自己的节点。可以使用iptables命令进行端口转发,例如将本地的TCP端口8888转发到公网IP的TCP端口8888:

```

iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination <公网IP>:8888

```

4. 配置P2P软件:在安装好P2P软件后,需要进行配置,以便其他节点能够连接到自己的节点。具体配置可以参考P2P软件的官方文档或者网上的教程。

5. 加入P2P网络:当配置好P2P软件后,可以开始加入P2P网络,与其他节点进行连接和交换信息。可以通过搜索和加入公共节点,或者手动添加其他节点的IP地址和端口号。

需要注意的是,在搭建P2P网络时需要遵守相关法律法规,如不侵犯他人的知识产权等。另外,P2P网络也需要进行合理的管理和维护,以保证网络的安全和稳定。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

yeaqqqq

CSDN认证博客专家

CSDN认证企业博客

码龄4年

暂无认证

1

原创

44万+

周排名

91万+

总排名

5191

访问

等级

66

积分

2

粉丝

1

获赞

1

评论

18

收藏

私信

关注

热门文章

P2P网络基础(学习笔记)

5170

最新评论

P2P网络基础(学习笔记)

万分之一的:

博主你一星期没更啦

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

2020年1篇

目录

目录

最新文章

2020年1篇

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值