网络去中心化技术p2p架构之NAT原理 NAT的实现:实现方案可分为1.静态转换;2.动态转换;3.端口地址映射; 从NAT的实现分了静态转换、动态转换、端口地址映射这三类,这是从技术实现的角度上看。从NAT功能的角度上可分为4类:完全锥形NAT、对称NAT、IP限制锥形NAT、端口限制锥形NAT。

P2P架构介绍:

传统的C/S架构中,任意一个客户端要想与另一个客户端通信必须要经过server, 在多个客户端通信时,这种架构网络拓扑图可描述为星型网络拓扑图,这样的网络被称为中心化网络;去中心化网络中,每个客户端都是平等的,没有客户端与服务器之分,去掉了中心服务器节点,这样做不仅仅解除了中心化服务器绝对控制的风险,也提高了网络传输效率,也去除了中心化服务器数据路由的压力。中心节点服务在p2p架构中被称为集中服务器。

p2p架构聊天软件 p2p架构是什么意思_p2p架构聊天软件

P2P端对端,也叫点对点通信,在IM即时通信中的实时音视频通信、实时文件传输甚至文字聊天等得到了广泛的应用。

P2P网络具有分散性、可扩展性、健壮性等特点,这使得P2P技术在信息共享、即时通讯、协同工作、分布式计算、网络存储等领域都有广阔的应用。

 

NAT原理

NAT:网络地址转换,公网地址映射为私网地址。网络通信拓扑图如下图所示,

p2p架构聊天软件 p2p架构是什么意思_p2p架构聊天软件_02

图中私网内部网络是192.168.1.0的网络,路由器公网IP是112.93.114.23,服务器公网IP是120.94.24.180。服务器发送数据与路由器公网 IP 时,能够将数据映射到私网中的机器;私网内的机器发送数据给服务器,路由器也能够映射为公网 IP 地址的过程,成为网络地址映

射。

NAT原理:

   如何标识一个私有网络机器的网络进程?IP+port端口号

   当一个私有网机器上的操作系统中的网络进程访问公网服务器的IP120.94.24.180时,NAT路由器会为每一个网络进程分配一个网络IP和端口,使得私网机器与公网服务器进行通信。以上图为例:如果将路由器生成的映射表可模拟NAT路由器分配表示如下。在这里是举例,

{192.168.1.2:23234, 112.93.114.23:23423}

{192.168.1.3:24512, 112.93.114.23:43418}

{192.168.1.4:12543, 112.93.114.23:33446}

{192.168.1.5:44523, 112.93.114.23:43478}

如果是同一台私网机器上的多个网络进程与公网服务器进行通信时,NAT路由器会为每一个网络进程分配相应的端口号和公网服务器通信,比如同时开起来QQ和头条NAT映射表可模拟NAT路由器分配表示为:

QQ: {192.168.1.2:23234, 112.93.114.23:23423}

头条:{192.168.1.2:24563, 112.93.114.23:43418}

 

当公网的服务器与私网网络进程通信时,也是通过NAT路由器的路由表进入私网到达网络进程。由此可见,NAT理论的诞生在一定的程度上缓解了IPv4地址耗尽的问题。

 

NAT的实现:实现方案可分为1.静态转换;2.动态转换;3.端口地址映射;具体实现如下

1:静态转换(路由器会为每个私网IP静态配置一个公网IP,这意味着私网IP地址有多少,与之对应就需要静态配置多少公网IP地址,这种实现并不能节省公网IP地址),则上图的NAT静态映射表为:

 

{192.168.1.2, 112.93.114.23}

 

{192.168.1.3, 112.93.114.24}

 

{192.168.1.4, 112.93.114.25}

 

{192.168.1.5, 112.93.114.26}

 

2:动态转换

 

   动态转换时会将可分配的公网IP地址生成一个公网IP地址池,当私网机器网络进程访问公网服务器时NAT路由器会随机从公网IP地址池分配一个公网IP地址给这个网络进程使用,当数据传输结束后收回,这个公网IP才能被分配给其他网络进程使用。

 

假设这个公网IP地址池有三个公网IP课被分配,公网IP池:

 

{ 112.93.114.23}

 

{112.93.114.24}

 

{ 112.93.114.25}

 

NAT静态映射表可模拟NAT路由器分配表示为:

 

{192.168.1.2, 112.93.114.23}

 

{192.168.1.3, 112.93.114.24}

 

{192.168.1.4, 112.93.114.25}

 

{192.168.1.5, 112.93.114.24}

 

3:端口地址映射

 

路由器会对私网机器与公网机器通信的源端口号进行端口转换。这样的实现有两个优点:1,节省公网IP地质资源;2,隐藏私网机器,避免其他公网机器攻击。

 

NAT静态映射表可模拟NAT路由器分配表示为:

 

{192.168.1.2:23234, 112.93.114.23:23423}

 

{192.168.1.3:24512, 112.93.114.23:43418}

 

{192.168.1.4:12543, 112.93.114.23:33446}

 

{192.168.1.5:44523, 112.93.114.23:43478}

 

NAT种类

 

   从NAT的实现分了静态转换、动态转换、端口地址映射这三类,这是从技术实现的角度上看。从NAT功能的角度上可分为4类:完全锥形NAT、对称NAT、IP限制锥形NAT、端口限制锥形NAT。

 

通信模型拓扑图为:

p2p架构聊天软件 p2p架构是什么意思_p2p架构聊天软件_03

1.完全锥形NAT: 

  锥形NAT client只有一个端口对外使用,即同一个网关IP和端口号,但会与不同的目的地址及端口生成记录表中的不同的记录。

  完全锥形NAT一旦内部主机端口对(iAddr:iPort)被NAT网关映射到(eAddr:ePort),所有后续的(iAddr:iPort)报文都会被转换为(eAddr:ePort);任何一个外部主机发送到(eAddr:ePort)的报文将会被转换后发到(iAddr:iPort)。

区别完全锥形NAT和对称NAT:

同一个client socket给两个server 120.94.23.180:2230;120.94.23.180:2234发送消息;server1把获取到的client IP地址发给server2,server2来对比这两个网关的IP地址是否是一样,如果一样是锥形NAT,不一样是对称NAT;

 

2.对称NAT: 同一私网机器网络进程同一个端口访问不同的服务器都会产生不同的映射关系。

   当私网中的一台机器与公网中的多台机器网络通信时,这台私网机器与每一个公网机器通信的网络进程,NAT路由器会转换成112.93.114.23:43478, 112.93.114.23:33446,112.93.114.23:43418;这时每个网络通信的网络进程都是一个连接。强调即使网络进程同一个端口访问不同的服务器都会产生新的映射关系,这样的网络通信模型称为对称NAT。举例一个网络通信连接的网络通信拓扑图如下:

p2p架构聊天软件 p2p架构是什么意思_IP_04

3.限制锥形NAT,即IP限制锥形NAT:

 

这台机器与120.94.23.180这台server1网络通信,经过NAT路由器地址转换,192.168.1.23:23452会产生一个映射112.92.114.33:20588。当这台私网机器没有给120.23.43.114 这台server2发送报文,server2发送发送数据到112.92.114.33:20588时,数据会被NAT路由器丢弃,这样的NAT模型称为限制锥形NAT。只有当这台私网机器给120.23.43.114 这台server2发送报文后,才可以收到server2发送的网络数据。

4.端口限制NAT:

 

在 IP 限制锥型 NAT 的基础上,又添加了一层端口限制。只有私网机器网络进程发送数据给公网机器(120.94.23.180)的其他端口,NAT 路由器生成一条 NAT 记录,才允许该端口的数据报文到达网络进程

 

场景:server 120.94.23.180:8080;120.94.23.180:8090都对外提供服务.