最近一直在研究网路穿透和网络去中心的化的技术,有一点心得这里写出来与大家分享。
一、中心化网络和去中心化网络
首先讲一讲什么是中心化网络,画个图来说明可能会比较直观一些,如图1,客户端A要和客户端B进行通迅,必须经过服务器。相对于图1来说,图2 是这样一个过程,在客户端A和客户端B相互通讯的初期,通过服务器来交换一下双方必要的信息,而后续通讯就不再需要服务器了,完全可以由两个客户端之间直接进行通讯了,这既是去中心化。
二、NAT穿透技术
要实现去中心化,就必须使用NAT(即:网络地址映射)穿透技术,先说一下为什么要使用该技术。当客户端A和客户端B进行直接通讯时,由于它们两个是隶属与不同局域网的,所以不可能之间去通信,就必须借助于网关,进行跨网通讯,于是NAT穿透技术就应运而生了。两个客户端之间进行通讯,实际上是两个客户端通过网关A和网关B进行通讯。
NAT总共有四种,分别是对称NAT、完全锥形NAT、端口限制锥形NAT、IP限制锥形NAT。
1、完全锥形NAT
当客户端A往任意一台服务器发送数据后,就会在网关上产生一条地址映射记录(源IP+端口:映射IP+端口:目的IP+端口),此时,这台服务器就知道客户端的IP和端口,这这台服务器将这对IP和端口发送给另一台服务器,而另外一台服务器就可以将数据通过网关发送给客户端A,这就是完全锥形NAT。
2、IP限制锥形NAT
客户端A发送一条数据给服务器的2231端口,此时网关上会生成一条地址映射记录,然后服务器从另一个端口2230给客户端发数据,客户端是可以收到的,如果使用另外的IP是发不到客户端的,这就叫IP限制锥形NAT。
3、端口限制锥形NAT
这个与IP限制锥形NAT很类似,客户端往服务器的2230端口发送数据,会在网关上产生一条地址映射记录,然后服务器又从2231这个端口给客户端发数据,此时通过网关是发不过去的,这就是端口限制锥形NAT。
4、对称NAT
这种NAT比较特殊,客户端先向一台服务器发送数据,此时会在网关上生产一条地址映射,客户端再向另一台服务器发送数据,会在网关上再新产生一条地址映射,这两条地址映射的端口是不一样的。两台服务器之间也是相互不知道对方的,这就是对称NAT。