区块链从P2P通信开始(区块链从p2p开始 一)

 

  • 大多数中间件(MIddleBoxes)实现了一种非对称的通讯模型,即内网中的主机可以初始化对外的链接,而外网的主机却不能初始化对内网的链接, 除非经过中间件管理员特殊配置(如端口映射或PNP)。
  • 本文讨论的就是如何跨越NAT实现内网主机直接通讯的问题。

术语

  • 防火墙(Firewall)
  • 网络地址转换器(NAT)
  • 基本NAT(Basic NAT)
  • 网络地址-端口转换器(NAPT)
  • 锥形NAT(Cone NAT)
    • 全锥形NAT(Full Cone NAT)
    • 受限锥形NAT(Restricted Cone NAT)
    • 端口受限锥形NAT(Port-Restricted Cone NAT)
  • 对称NAT(Symmetric NAT)

P2P通信

  • 中继(Relaying)
    • 其原理是通过一个有公网IP的服务器中间人对两个内网客户端的通信数据进行中继和转发。
  • 逆向链接(Connection reversal)
    • 只有当其中一方有公网IP时链接才能建立。
  • UDP打洞(UDP hole punching)
    • 端点在不同的NAT之后:透過已知可用的服務器儲存個別的位置, 之後再通信
    • 端点在相同的NAT之后:同時送內網IP
    • 端点在多级NAT之后:只能已知可用的服務器来进行打洞并进行回环传输。
  • 固定端口绑定

具体实现问题

例如A想要与B建立 通信链路

  • 先给服务器发送punch命令以及给B发送数据
  • 服务器接到命令后给B发送punch_requst信息以及A的端点信息
  • B收到之后向A发送数据打通通路
  • 然 后A与B就可以进行P2P通信了。
  • 经测试,打通通路后即便把服务器关闭,A与B也能正常通信。

原文網址: https://goo.gl/8htI2C