您的位置:首页 > 财经 > 金融 > 关于P2P(点对点)

关于P2P(点对点)

2024/12/23 3:30:42 来源:https://blog.csdn.net/liulilittle/article/details/140755089  浏览:    关键词:关于P2P(点对点)

P2P 是一种客户端与客户端之间,点对点连接的技术,在早前的客户端都是公网IP,没有NAT的情况下,P2P是较为容易实现的。

但现在的P2P,实现上面会略微有一些复杂:需要采取UDP打洞的技术,但UDP打出来的洞,是有持续时间的,因为ASN/ISP(运营商)对于P2P,存在较为严重的技术限制。

并且UDP能不能打洞,还需要取决于NAT的限制类型,可以参考下文了解NAT的类型及限制条件

关于NAT的几种类型_nat有几种-CSDN博客

P2P示意图:

上图为P2P的标准架构,即一个P2P中心服务器,用以为P2P发现其它P2P客户端提供支援,并可以实现UDP打洞。

P2P具体流程/NS为:

1、P2P Client 上线流程

     1.1、P2P Client 分配一个随机UDP端口并向中心服务器,发送 Hello 数据报

     1.2、P2P Center 收到来自P2P Client 的 Hello 数据报后,分配一个随机的临时UDP端口并反向该客户端的目的 IPEndPoint(地址端点;IP+PORT)发送数据,来等待测试 ACK 应答,这类似 TCP SYN/CONNECT 的三次握手的流程,其目的是为了确保NAT的类型是被支援P2P工作流的。

2、根据P2P业务类型的不同,当P2P Client 上线流程完成之后,则P2P Center,可能需要广播所有在线的 P2P Client 的IP+PORT(地址端点)

     当然,这也可能不需要,而是P2P Client 在上线后主动进行 “Discover(发现)”,在大多数的 P2P 工程及解决方案之中,并不需要在P2P上线后,主动广播并告知所有其它在线的P2P Client 链路信息。

3、当P2P Client 获取到其它 P2P Client 的链路信息之后,则需要向目的 P2P Client 进行双向握手,以确保双方之间建立所需的通信链路。

4、当第三条完成之后,P2P Client 之间便可以正常交换数据,但在一些P2P解决方案及场景之中并不需要握手这个过程,它们是直接投递并双向交换数据报。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com