区块链入门系列之P2P

这篇具有很好参考价值的文章主要介绍了区块链入门系列之P2P。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区块链入门系列文章

区块链基本概念和名词解释
P2P
共识算法
梅克尔-帕特里夏树
从零开始搭建区块链

前言

为什么前面讲过P2P的概念了这里还要单独起一篇文章来讲解,因为前面只是讲解了P2P的基本概念,即各网络节点间是直接或间接连接起来的。但这里面还涉及到很多网络知识,如果不清楚,是没办法构建一个P2P网络的。

中心化架构

现在所处的Web2时代,绝大部分应用都是中心化架构,比如微X、淘X、百X、京X、抖X、美X、滴X等。这些应用都有个显著特点,那就是服务提供入口是固定的,也就是他们使用的服务域名地址是固定的。需要使用这些服务的用户可以通过DNS进行域名地址解析得到服务的IP地址,然后才能将流量发送到对应的服务器。不知道大家有没有思考过一个问题,我们在浏览器输入www.xx.com敲下回车到渲染完页面期间发生了上面事情呢?
下面我通过一个时序图来对这个过程进行简要叙述。

以上仅简要画出了网络层的转发规则,不涉及具体的转发算法、查表算法甚至传输层的网络协议握手步骤等。可以看出我们在访问中心服务器时,都需要经过很多中继设备的转发。什么是中继设备?就是数据报文在传输过程中每一次转发的物理或逻辑设备,比如路由器、信号放大器等。对于路由器来说,其管理着一个子网络。

子网络中,每个路由端口对应着一个终端节点,如果路由器有公网IP,进行地址映射时就会对该公网IP的某一个端口绑定上某个终端。而如果路由器没有公网IP,说明这是一个内网路由器,则会在路由器所在子网的IP上的某个端口绑定上某个终端。这个过程就对应上述时序图中中继设备间的跳转。现在问大家一个灵魂拷问的问题,为什么要进行地址映射?其实它也不想,它也想直接进行转发,可是…
区块链入门系列之P2P
因为IPv4的地址已经枯竭,无法满足海量互联设备的联网需求,所以只能设计出子网掩码将大量有联网需求的设备放到某个子网中,分配一个IP就对其进行管理,而且子网还能嵌套子网,理论上甚至可以无限套娃🤣

去中心化架构

既然中心化架构的情况下能进行地址映射,那去中心化架构同样也能实现呀,只要按照同样的套路就能实现既定结果。我只能说TYTS,中心化架构下,由于中心服务器都是有固定公网IP的,在进行地址映射时映射的结果相对比较固定。而放到去中心化架构中时就是另外一番光景了,因为网络中的节点不全是有公网IP的。对于存在公网IP的情况,其通信流程大致和上述时序图描述的类似,但对于两边没有公网IP时通信情况就不一样了。因为互相都不知道对方的IP地址,也就没办法率先发起请求,也就没办法进行地址映射。

这就需要用到NAT技术了。

NAT

即Network Address Translation,网络地址转换。其实吧,严格来说,上述中心化架构来说也使用到了NAT技术,只是该场景由于通信的另一端具有公网IP,使的该技术重要性降低了。
简要阐述NAT的步骤

通过上述时序图,我们可以知道网络地址转换其实在数据报文转发时是一个很常见的情况。NAT按照不同的维度有不同的类型分法,比如按照是否动态维度来说,分为静态NAT和动态NAT。本文都是基于动态NAT进行展开的,接下来我们就针对动态NAT的转发种类进行一个简单的区分说明。

锥型NAT

初看这个定义可能会有点懵逼,和锥型有什么关系,其实想象一下锥型是形状可能就能明白了。
区块链入门系列之P2P

图源自网络(侵删)

可以看到锥型的顶部是一个点,通过这个点向某个子网络打了一个洞,这个点就是我们映射出来的网络地址,外部网络通过该地址就能和子网中的某一台特定终端进行通信。即一个内部地址可以对应N个外部地址,如果把这些通联设备用线连接起来,就像是一个锥型,故名锥型NAT。

完全锥型NAT

完全锥型NAT首先得是锥型NAT,也就说具备锥型NAT的所有特征,而且前面加入的修饰词是“完全”,所以没有其他任何额外的限制。
在进行NAT时,大致的时序图如下。

非完全锥型NAT

非完全锥型NAT也叫受限锥型NAT,什么受限呢,也就是映射时的IP地址受限,或者端口受限。

IP受限NAT

顾名思义就是在进行NAT时,映射出的公网地址只能和固定的IP进行通信,也就是通过该点打出的洞是有限制的,所限制的范围就是某个IP的所有流量(不限制端口)。由于和不同的外部IP通信会映射出不同的公网地址,所以其NAT的步骤和完全锥型NAT相比要复杂一点。IP受限NAT有个特点,就是单个Socket(或FD)映射出的公网地址是固定的,只要内网节点通过这个映射地址向外发送过数据,对应的外部地址(不限端口)就可以通过该映射地址向内网节点发送数据。这里就拿两边都是IP受限NAT进行通信来举例。

端口受限NAT

对于端口受限NAT就会在IP受限NAT的基础上再加上端口号的限制,限制条件更为苛刻,所以对应的NAT过程相对于IP受限NAT而言又要更加复杂。端口相对于IP受限NAT增加了限制条件,就是单个Socket(或FD)映射出的公网地址是固定的,只要内网节点通过这个映射地址向外发送过数据,对应的外部地址(发送过数据的特定IP+端口)就可以通过该映射地址向内网节点发送数据。为了方便说明问题,就拿一边是完全锥型NAT一边是端口受限NAT进行通信来举例。

可以看到,这里面用到了夹逼原理,即我连续映射几个不同的端口,看看映射出地址的端口变化规律,进而确定目标地址对应的映射端口是多少。该场景有很大的限制性,比如路由设备必须是单网卡,如果是两个网卡,甚至是网卡池,存在许多个IP,就无法通过该原理进行。还有映射的算法如果不是自增,而是随机,也无法通过该方法进行NAT。所以实际使用中NAT的成功率不是100%,往往只有80%~95%左右。

对称NAT

即Symmetric NAT,这个类型的NAT限制就更为苛刻了。每次主动向外通信会生成一个对应的映射地址,准确来说单个Socket(或FD)映射出的公网地址不是固定的,会随着访问的外部地址而变化(根据NAT设备是否存在多个网卡确定IP是否会变,端口是否会变,总之IP+端口的组合结果肯定会变)。所以看起来就像是一次次完全对称的映射关系,故名对称NAT。针对这个特性,这里不再赘述对称NAT的穿透时序图,各位看官可自行拓展研究。

总结

如果要开发一套用于生产环境的公链型区块链产品,则必不可少需要用到NAT的相关技术。但是对于只开发Demo用于教学,或者联盟链、私链的区块链产品,由于其节点之间都是预知IP和端口的,也就不需要关注NAT技术点。专门开篇将这部分内容,是为了对现在耳熟能详的公链能有一个更为细致的技术认知。最后的最后,抛一个简单的问题给大家,P2P网络由于没有固定的服务地址,新加入时要如何获得连接地址呢?文章来源地址https://www.toymoban.com/news/detail-418703.html

到了这里,关于区块链入门系列之P2P的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链(8):p2p去中心化之websoket服务端实现业务逻辑

    1 业务逻辑 例如 peer1和peer2之间相互通信 peer1通过onopen{ write(Mesage(QUERY_LATEST))} 向peer2发送消息“我要最新的区块”。 peer2通过onMessage收到消息,通过handleMessage方法对消息进行处理。 handleMessage根据消息类型进行处理 RESPONSE_BLOCKCHAIN:返回区块链,RESPONSE_BLOCKCHAIN处理进入handleB

    2024年02月08日
    浏览(30)
  • 【区块链 | 智能合约】Ethereum源代码(8)- Ethereum服务和以太坊P2P协议发送广播源码分析

    在“【区块链 | 智能合约】Ethereum源代码(2)- go-ethereum 客户端入口代码和Node分析”一文中,我们提到Ethereum作为一个service,被Node 注册进去。Node start的时候会启动其注册的所有服务,Ethereum service也是一样。 初始化方法

    2024年01月21日
    浏览(40)
  • P2P 应用

    ·在 P2P 工作方式下,所有的音频/视频文件都是在普通的互联网 用户之间传输 。 ·Napster 最早 使用 P2P 技术,提供免费下载 MP3 音乐。 ·Napster 将所有音乐文件的索引信息都集中存放在 Napster 目录服务器中。 ·使用者只要查找目录服务器,就可知道应从何处下载所要的 MP3 文件

    2024年02月19日
    浏览(32)
  • 什么是P2P?

    P2P (Peer-to-Peer) 是一种分布式的网络架构,其中各个节点(通常被称为“peers”或“节点”)直接进行数据共享和交换,而无需依赖中央服务器。P2P 网络强调平等的参与和共享,每个节点既可以是数据的消费者(下载者),也可以是提供者(上传者)。 以下是 P2P 协议和技术的

    2024年02月13日
    浏览(39)
  • P2P通信基本原理

    在数字世界的脉络中,点对点(P2P)技术如同一条悄无声息的河流,流经信息的每个角落,连接着世界各地的计算机和设备。这种去中心化的网络模型,不仅打破了传统的客户端-服务器架构的界限,还赋予了数据传输一种前所未有的自由和效率。通过P2P,每个参与者既是消费

    2024年04月16日
    浏览(34)
  • P2P协议的传输艺术

    TP 采用两个 TCP 连接来传输一个文件。 控制连接:服务器以被动的方式,打开众所周知用于 FTP 的端口 21,客户端则主动发起连接。该连接将命令从客户端传给服务器,并传回服务器的应答。常用的命令有:list——获取文件目录;reter——取一个文件;store——存一个文件。

    2024年02月07日
    浏览(33)
  • P2P 网络,PING程序。

    没有废话,直接上版本号和代码,以及讲解。 crate 版本号 libp2p 0.52.1 tokio 1.30.0 Peer-to-Peer是一种网络技术。一种点对点的通讯技术。没有client-service概念。 在P2P网络中,节点标识被成为PeerId。

    2024年02月12日
    浏览(34)
  • P2P DMA发展全景分析解读

    P2P DMA(Peer-to-Peer Direct Memory Access)技术是一种允许连接到PCIe总线上的不同设备之间直接进行数据交换的机制,无需通过CPU和系统内存中转。这一特性极大地提升了数据传输效率,减少了CPU负载,并在特定场景下优化了系统性能。 历史和发展: P2P DMA的概念早在NVMe SSD和RDMA技

    2024年01月21日
    浏览(31)
  • Android12 P2P 初始化

    目录  学习资料:Android Miracast 投屏 1. 开机log 2. WifiP2pService 启动

    2024年02月06日
    浏览(36)
  • OSPF的P2P和Broadcast

    OSPF(开放最短路径优先)协议中存在P2P(点对点)和BROADCAST(广播多路访问)两种网络类型,主要是为了适应不同类型的网络环境和需求。具体分析如下: **P2P(点对点)网络类型**: 1. **适用于**:当数据链路层协议为PPP(点对点协议)或HDLC(高级数据链路控制协议)时,

    2024年04月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包