美文网首页
P2P网络穿透技术在比特币中的应用

P2P网络穿透技术在比特币中的应用

作者: 链人成长chainerup | 来源:发表于2019-09-15 22:29 被阅读0次

本文是《循序渐进比特币》系列第五篇文章-《P2P网络穿透技术在比特币中的应用》,希望对你有所帮助。

1 一个场景

你是否想过这样一个场景,同一个局域网内部的两部手机同时访问百度,百度怎么知道应该响应哪部手机,并且将响应内容分开?

2 打洞

上述问题就涉及到了“穿透内网”的技术,也叫打洞。打洞一般分为两种:
(1)路由器上做端口映射。这儿提供一篇参考文章,大家如果想弄,自己照着文章配置即可 https://blog.csdn.net/Andrewniu/article/details/75506723
(2)NAT打洞。意思是不在路由器上做映射了,而是在NAT上做映射。
那什么是NAT呢?什么又是NAT打洞呢?

3 NAT介绍

NAT: Network Address Translation. 网络地址转换。其是在 IPv4 地址不够,而IPv6 又推广不给力的场景下产生的。A/B/C 三类网络都留了一个地址端,用作局域网内的机器使用,局域网对外只有一个外网IP。
NAT很好,但是如果从外部想访问局域网内的某个服务,是很难的。那就需要NAT打洞。

4 NAT打洞

NAT打洞就是在NAT上 配置内网服务端口 跟对外输出时的映射关系, 这样如果外部请求想找内部的某个服务,只要知道内部服务对应的外网ip以及 在NAT上对应的转发端口 就可以直接访问内网服务了。
NAT打洞有多种实现技术(STUN、TURN、UPNP),由于比特币中使用了UPNP,所以我们这儿只讲一下UPNP的步骤:

(1) 发送查找消息:

  • 一个设备添加到网络以后,会多播大量发现消息来通知其嵌入式设备和服务,所有的控制点都可以监听多播地址以接收通知,标准的多播地址是239.255.255.250:1900。

(2) 获得根设备描述url

  • 如果网络中存在upnp设备,此设备会向发送了查找请求的多播通道的源IP地址和端口发送响应消息

(3) 通过(2)中找到的设备描述URL的地址得到设备描述URL得到XML文档。

(4) 进行端口映射
拿到设备的控制URL以后就可以发送控制信息了,比如添加本地节点到映射表等。

5 比特币中的UPNP应用

比特币网络中的 UPNP 实现了上述的流程。

Discover 过程:

  • 首先是newServer 时,如果配置了upnp, 则会执行Discover方法。Discover中通过多播找到upnp设备, 然后组装一个upnpNAT对象,等待在server.start中使用。如果没有找到upnp设备,则返回nil.

upnpUpdateThread过程:

到了服务启动时(server.start ), 如果检查到第一步中Discover返回的NAT不为空,则执行upnpUpdateThread操作。
upnpUpdateThread 的核心逻辑是
(1)执行AddPortMapping : 利用内网的port 从upnp router上获取本地节点对应的外网port;并在外部UPNP设备上加载自己的映射信息。
(2)执行GetExternalAddress: 获取当前节点的外网IP
(3)执行 AddLocalAddress: 将映射信息也加载到本地的映射表。

6 总结

本文从一个场景出发,描述了P2P网络中的内网穿透问题,进而引出了NAT以及NAT打洞,接下来讲解了比特币网络中采用的打洞技术UPNP的原理,最后又简单描述了在比特币代码中是如何实现的。

7 参考文献

https://yq.aliyun.com/articles/683326
https://juejin.im/post/5b019ee66fb9a07ac85ab314
比特币源码

8 其他

本文是《循序渐进比特币》的第六篇-P2P网络穿透技术在比特币中的应用。
如果有疑问,可以直接留言,也可以关注公众号 “链人成长chainerup” 提问留言,或者加入知识星球“链人成长”~

相关文章

  • P2P网络穿透技术在比特币中的应用

    本文是《循序渐进比特币》系列第五篇文章-《P2P网络穿透技术在比特币中的应用》,希望对你有所帮助。 1 一个场景 ...

  • 比特币和传统P2P应用的架构对比分析

    比特币是一种基于P2P网络的加密数字货币,本文将从P2P技术的角度来讲解比特币的架构和实现,通过跟传统P2P应用的...

  • 白话比特币第八章:比特币网络

    比特币采用基于Internet的P2P网络架构。 比特币网络中也包含其他协议:Stratum协议被应用于挖矿、轻量...

  • P2P网络架构

    “比特币网络”是按照比特币P2P协议运行的一系列节点的集合。除了比特币P2P协议之外,比特币网络中也包含其他协议。...

  • 精通比特币六

    这章学习比特币网络。 1 P2P网络架构 比特币采用了基于国际互联网(Internet)的P2P(peer-to-...

  • IPFS丨从默默无闻到超级巨星,做了这6件事

    它像比特币网络一样,并没有发明什么新技术,它只是将很多种技术(P2P网络技术、BitTorrent传输技术、Git...

  • 网络

    “比特币网络”是按照比特币P2P协议运行的一系列节点的集合。除了比特币P2P协议之外,也包含其他协议。例如Stra...

  • 区块链技术与比特币之间的区别

    区块链技术是比特币得以实现的基础技术,比特币是区块链技术比较成功的应用之一;区块链技术是一个基于点对点网络架构的分...

  • 比特币系统

    比特币(BitCoin)的概念最初由中本聪在2009年提出,是基于区块链的P2P网络。比特币是一种P2P形式的数字...

  • 分析比特币网络:一种去中心化、点对点的网络架构

    比特币采用了基于互联网的点对点(P2P:peer-to-peer)分布式网络架构。比特币网络可以认为是按照比特币P...

网友评论

      本文标题:P2P网络穿透技术在比特币中的应用

      本文链接:https://www.haomeiwen.com/subject/doddyctx.html