P2P网络的形成需要经过以下步骤:
- 运行
- 发现
- 传输
发现其它节点是P2P网络的开端,节点能够自行发现才能摆脱中央服务器。
局域网可以使用广播mDNS,互联网可以使用DHT。互联网上的发现显然比局域网麻烦,至少需要一个启发节点。
示例 [go-mdns-example]
示例 [go-dht-fire]
传输是P2P网络的最终目的,也是最复杂的部分。
特别是在中国,很少有设备能够分到互联网IP,需要使用NAT穿越能够让不同局域网中的设备建立通信。
很多设备位于防火墙之后或无法进行NAT穿越,对于这些设备需要使用短路中继。