wiki:p2p通信技术
差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
wiki:p2p通信技术 [2024/04/20 07:21] – 创建 math | wiki:p2p通信技术 [2024/04/28 10:18] (当前版本) – [相关] math | ||
---|---|---|---|
行 4: | 行 4: | ||
- | 根据客户端的不同,客户端之间进行P2P传输的方法也略有不同,这里介绍了现有的穿越中间件进行P2P通信的几种技术。 | + | 根据客户端的不同,客户端之间进行P2P传输的方法也略有不同,这里介绍了现有的穿越[[网络地址转换器|NAT]]进行P2P通信的几种技术。 |
===== 2.1 中继(Relaying) ===== | ===== 2.1 中继(Relaying) ===== | ||
行 52: | 行 52: | ||
虽然当前许多P2P系统采用了这种技术,但它的局限性也很明显:只有当至少一方具有公网IP时,连接才能成功建立。随着越来越多的场景出现双方都位于NAT之后的情况,就需要采用我们接下来要介绍的第三种技术。 | 虽然当前许多P2P系统采用了这种技术,但它的局限性也很明显:只有当至少一方具有公网IP时,连接才能成功建立。随着越来越多的场景出现双方都位于NAT之后的情况,就需要采用我们接下来要介绍的第三种技术。 | ||
- | ==== 2.3 UDP打洞(UDP hole punching) ==== | + | ===== 2.3 UDP打洞(UDP hole punching) |
---- | ---- | ||
行 59: | 行 59: | ||
这是一种流行的P2P通信方法,称为“UDP打洞”,它依赖于防火墙和多数NAT设备的行为,这些设备允许通过合法的P2P程序在中间介质中开辟通路以建立直接的连接。这里主要介绍两种常见的情况和应用程序如何高效处理这些情况。第一种情况是两个客户端分别处于不同的NAT背后,这代表了大多数情形;第二种是两个客户端位于同一NAT背后,且这对客户端通常不会意识到这一点。 | 这是一种流行的P2P通信方法,称为“UDP打洞”,它依赖于防火墙和多数NAT设备的行为,这些设备允许通过合法的P2P程序在中间介质中开辟通路以建立直接的连接。这里主要介绍两种常见的情况和应用程序如何高效处理这些情况。第一种情况是两个客户端分别处于不同的NAT背后,这代表了大多数情形;第二种是两个客户端位于同一NAT背后,且这对客户端通常不会意识到这一点。 | ||
- | === 2.3.1. 不同NAT后的端点 === | + | ==== 2.3.1. 不同NAT后的端点 |
---- | ---- | ||
行 86: | 行 86: | ||
UDP打洞技术的优势在于,一旦建立了P2P连接,连接双方都可以作为“中介服务器”辅助背后NAT的其他客户端进行打洞,从而大幅减少了服务器的压力。无论是否存在中间件,或者存在多少中间件,这种技术都能成功建立通信连接。 | UDP打洞技术的优势在于,一旦建立了P2P连接,连接双方都可以作为“中介服务器”辅助背后NAT的其他客户端进行打洞,从而大幅减少了服务器的压力。无论是否存在中间件,或者存在多少中间件,这种技术都能成功建立通信连接。 | ||
- | === 2.3.2. 相同NAT后的端点 === | + | ==== 2.3.2. 相同NAT后的端点 |
---- | ---- | ||
行 113: | 行 113: | ||
- | === 2.3.3. 多级NAT后的端点 === | + | ==== 2.3.3. 多级NAT后的端点 |
---- | ---- | ||
行 146: | 行 146: | ||
最终,他们只能依赖服务器S来进行UDP打洞,然后通过自己的NAT设备进行所谓的回环传输。 | 最终,他们只能依赖服务器S来进行UDP打洞,然后通过自己的NAT设备进行所谓的回环传输。 | ||
- | === 2.3.4. 固定端口绑定 === | + | ==== 2.3.4. 固定端口绑定 |
---- | ---- | ||
行 152: | 行 152: | ||
UDP打洞技术依赖于一个条件:参与的NAT设备必须是Cone NAT类型或者类似的非NAT防火墙,这些设备能够维持内网IP和端口到公网IP和端口的固定映射。只要UDP端口处于活跃状态,映射就保持不变。如果像对称NAT那样,每个新的会话都分配新的公网端口,则UDP打洞就无法建立已经打通的通信链路。幸运的是,Cone NAT在今天被广泛使用,即使有一小部分对称NAT不支持这种打洞技术,UDP打洞还是一个广泛应用的解决方案。 | UDP打洞技术依赖于一个条件:参与的NAT设备必须是Cone NAT类型或者类似的非NAT防火墙,这些设备能够维持内网IP和端口到公网IP和端口的固定映射。只要UDP端口处于活跃状态,映射就保持不变。如果像对称NAT那样,每个新的会话都分配新的公网端口,则UDP打洞就无法建立已经打通的通信链路。幸运的是,Cone NAT在今天被广泛使用,即使有一小部分对称NAT不支持这种打洞技术,UDP打洞还是一个广泛应用的解决方案。 | ||
+ | |||
+ | |||
+ | ===== 相关 ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | [[openvpn]] | ||
+ |
wiki/p2p通信技术.1713568873.txt.gz · 最后更改: 2024/04/20 07:21 由 math