P2P技术简介
一言以蔽之,P2P通信技术可以使两个需要通信的节点直接进行数据交换,这些需要交换的数据不需要经过其他节点中转。
如果两个需要通信的节点在同一个局域网环境内,他们通过直接建立tcp socket连接或者直接通过收发udp包就可以通信起来。但大部分场景下,需要通信的两个节点是在不同的局域网环境内,甚至在不同的地区,位于各自的NAT设备(路由器)后面,是无法直接进行通信的,这就需要使用P2P技术进行NAT穿透,让两个节点可以直接通信。
NAT穿透有一定的失败率,这个和通信节点双方所处的网络环境以及路由器等设备的设置有关系;如果NAT穿透失败,则两个通信节点必须通过云端服务器的中转才能进行通信。
如上图所示,clientA和clientB可以理解成两个需要通信的客户端,如果client A可以和ClientB通过对方的ip和端口号直接通信(红色的线),则是点对点(P2P)通信。如果clientA和clientB之间网络不能穿透成功,不能像红色的线直接P2P通信,则他们必须通过部署在云端服务器server以中转方式通信。
如果能p2p通信成功,数据则不需要云端服务器进行中转,可以节省云端服务器的带宽资源,降低通信成本。