# P2P通信原理与实现

# 1、NAT网络

# 1.1 防火墙(Firewall)

防火墙主要限制内网和公网的通讯,通常丢弃未经许可的数据包。防火墙会检测(但是不修改)试图进入内网数据包的IP地址和TCP/UDP端口信息。

# 1.2 NAT工作原理

将IP数据报文中的IP地址转换为另一个IP地址的过程。当内部IP想要访问外网时,NAT主要实现内部网络和外部网络之间IP的转换,这种通过使用少量的公网IP地址代表较多的私网IP地址的方式,将有助于减缓可用IP地址空间的枯竭。

# 1.3 NAT分类

  1. 基本NAT(Basic NAT)

基本NAT会将内网主机的IP地址映射为一个公网IP,不改变其TCP/UDP端口号。基本NAT通常只有在当NAT有公网IP池的时候才有用。

  1. 网络地址-端口转换器(NAPT)

到目前为止最常见的即为NAPT,其检测并修改出入数据包的IP地址和端口号,从而允许多个内网主机同时共享一个公网IP地址。

  • Full Cone NAT(完全锥型) 在一个新会话建立了公网/内网端口绑定之后,完全圆锥形NAT接下来会接受对应公网端口的所有数据,无论是来自哪个(公网)终端. 完全圆锥形NAT有时候也被称为“混杂”NAT(promiscuous NAT)。
  • Address Restricted Cone NAT(地址限制锥型 ) 地址限制圆锥形NAT只会转发符合某个条件的输入数据包. 条件为:外部(源)IP地址匹配内网主机之前发送一个或多个数据包的结点的IP地址,NAT通过限制输入数据包为一组“已知的”外部IP地址,有效地精简了防火墙的规则。
  • Port Restricted Cone NAT(端口限制锥型) 只当外部数据包的IP地址和端口号都匹配内网主机发送过的地址和端口号时才进行转发。端口限制圆锥型NAT为内部结点提供了和对称NAT相同等级的保护,以隔离未关联的数据。
  • Symmetric NAT(对称型) 不在所有公网-内网对的会话中维持一个固定的端口绑定,其为每个新的会话开辟一个新的端口。
NAT分类

部署在路由器上的NAT:

NAT网络

NAT对比:

NAT对比

不同NAT之间打洞对比:

打洞对比

# 2、P2P通讯技术

对等式网络(英语:peer-to-peer, 简称P2P),又称点对点技术,是去中心化、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。

对等网络

# 2.1 P2P直接通讯

局域网&公网
端口映射

# 2.2 P2P穿透

  • STUN/TURN方式 IETF定义的一种UDP穿透规范,最为普遍。
  • ICE 包括ALG,STUN,TURN等各种穿透方式的组合。
P2P

# 2.3 第三方P2P穿透

花生壳内网穿透:优先打洞 -> 服务器转发(流量限制)

# 3、参考

https://evilpan.com/2015/10/31/p2p-over-middle-box/

https://juejin.cn/post/6844904098572009485

https://developer.aliyun.com/article/243478

https://blog.csdn.net/Vikanill/article/details/95023859

https://blog.csdn.net/D3_3109/article/details/119875626

https://blog.csdn.net/wgl307293845/article/details/120450626

https://zhuanlan.zhihu.com/p/299524798

https://zhuanlan.zhihu.com/p/108635427

https://blog.csdn.net/lisemi/article/details/97672734

https://zhuanlan.zhihu.com/p/510428478

https://www.cdnbye.com/cn/views/

https://blog.csdn.net/shaosunrise/article/details/83627828

https://zhuanlan.zhihu.com/p/468792680

https://zhuanlan.zhihu.com/p/71025431

上次更新: 6/8/2023, 7:20:15 PM