主页 > imtoken > 比特币源码讲解从零到一学习比特币源码分析第11讲:比特币源码分析-网络

比特币源码讲解从零到一学习比特币源码分析第11讲:比特币源码分析-网络

imtoken 2023-09-22 05:13:24

李跃春

孔子学院创始人兼CEO

如果您对区块链有任何疑问,可以加入区块链技术交流QQ群(群里讲解比特币源码无需添加验证信息,直接点击下一步,等待管理员通过),我们会一一为您解答。

从零到一学习比特币源码分析是系列11讲,包括预备知识、源码分析等,今天给大家介绍的是从零到一学习比特币源码分析第十一讲:比特币源码分析——网络。 话不多说,下面开始我们的比特币源码分析和学习之旅。

课程学习,加百合微信即可获取()。

孔子学院

用比特币源码做山寨币_比特币源码分析教程_比特币/山寨币交易平台源码

比特币讲解_比特币源码讲解_比特币蜡烛图分析讲解

P2P网络架构

比特币使用基于互联网的 P2P(点对点)网络架构。 P2P是指同一网络中的每一台计算机都是对等的,各个节点共同提供网络服务,没有“特殊”的节点。 每个网络节点都以“扁平”拓扑相互连接。 P2P 网络中没有服务器、集中式服务和层次结构。 P2P网络的节点交互和协同运行:每个节点对外提供服务,同时也使用网络中其他节点提供的服务。 因此,P2P 网络是可靠的、去中心化的和开放的。

“比特币网络”是在比特币 P2P 协议下运行的节点集合。 除了比特币 P2P 协议之外,比特币网络中还包含其他协议。 例如,Stratum 协议用于挖矿、轻型或移动比特币钱包。 网关路由服务器提供这些协议,使用比特币 P2P 协议连接到比特币网络,并将网络扩展到运行其他协议的各个节点。 例如,Stratum 服务器通过 Stratum 协议将所有 Stratum 挖矿节点连接到比特币主网,并将 Stratum 协议桥接到比特币 P2P 协议。 我们用术语“比特币网络”来指代整个网络结构,包括比特币P2P协议、矿池协议、Stratum协议、

UDP打洞

比特币讲解_比特币蜡烛图分析讲解_比特币源码讲解

用比特币源码做山寨币_比特币/山寨币交易平台源码_比特币源码分析教程

网络模型

假设客户端A和客户端B的地址都是内网地址,并且位于不同的NAT之后。 A、B和服务器S上运行的P2P应用程序都使用UDP端口9982,A和B各自发起与服务器的UDP通信。 地址映射如图所示:

现在假设客户端 A 打算直接与客户端 B 建立 UDP 通信会话。 如果A直接向B的公网地址120.26.10.118:3000发送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链接一旦建立,链接的两端就可以充当“引导服务器”,帮助其他中间件后面的客户端打洞,从而大大减轻服务器的负载。 应用程序不需要知道中间件是什么(如果有的话),因为上述过程也可以在没有中间件或有多个中间件的情况下建立通信链路。

比特币/山寨币交易平台源码_用比特币源码做山寨币_比特币源码分析教程

冲孔工艺

假设现在A要和B建立udp会话,建立的基本过程是:

先决条件

比特币讲解_比特币蜡烛图分析讲解_比特币源码讲解

能够完成打孔有几个先决条件:

源代码示例

比特币/山寨币交易平台源码_用比特币源码做山寨币_比特币源码分析教程

使用三台设备进行模拟,外网设备207.148.70.129模拟Server S,执行server.go代码:

不同内网后面的另外两台设备运行相同的代码peer.go:

注意,代码只是模拟了打孔的基本过程。 如果阅读器测试网络条件不好比特币源码分析教程,出现udp丢包,可能看不到预期的结果。 在这种情况下,只需重新启动服务器和对等方即可。

完整代码参考github

udp打洞转tcp通信

通常,由于udp打孔实现简单,p2p实现更多的是使用udp打孔来解释比特币源码,但是通道建立后,使用tcp进行节点间通信可以获得更好的通信效果。 由于udp打孔后形成的nat映射与tcp/udp无关比特币源码分析教程,此时可以切换为使用tcp建立连接,实现最终的p2p tcp通讯。 由于代码比较简单,这里就不举例了。

用比特币源码做山寨币_比特币源码分析教程_比特币/山寨币交易平台源码

参考文件

利用打孔技术实现UDP穿透NAT的原理及实现

P2P通信原理与实现

挖矿网Ethos中文网拥有简单易用的挖矿系统,为挖矿行业提供教程软件和矿机评测及交易信息,对比计算各种数字货币在挖矿网的挖矿收益,以及介绍矿网挖矿工具,矿场最新动态等。

矿业网络,版权所有丨如未注明,均为原创丨本站采用BY-NC-SA协议授权

转载请注明原文链接:比特币源码讲解从零到一学习比特币源码分析第11讲:比特币源码分析-互联网