FRP源码学习(一)(关于NAT以及内网穿透的认识)

frp是一个可用于内网穿透的高性能反向代理应用。这句话有几个点需要解释。

  1. 内网穿透:即NAT穿透。
  2. NAT
  3. 反向代理
首先,要明白NAT这个概念
NAT在计算机网络领域是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这句话基本揭示了NAT在底层的工作方式。NAT被普遍应用在有多台主机但只有一个公有IP地址可供访问Internet的环境。但是NAT使主机间的通信变得复杂,导致了通信效率的降低。
NAT是作为一种解决IPv4地址短缺的方案而流行的。一个典型的配置就是,一个本地网络使用一个转悠网络的指定子网(比如192.168.x.x或10.x.x.x)和连在这个网络上的一个路由器。并且路由器占据了网络空间的一个专有地址(如192.168.0.1),同时,路由器还通过一个或多个公有IP地址连接到外部网络上。
RFC文档中区分的几种NAT:
1.基本NAT(也可称作静态NAT)
仅支持地址转换,不支持端口映射,一个内网地址对应一个公网IP地址,通常作为服务器使用。基本NAT维护一个无端口号NAT表,如下
内网ip 外网ip
192.168.1.55 210.10.168.200
192.168.1.56 210.10.168.201
192.168.1.57 210.10.168.202
2.NAPT(网络地址端口转换)
支持端口映射,许多主机共享一个公网IP地址。又分为两类,原地址转换,目的地址转换。前者发起连接的计算机IP地址将会被重写,作用是使得内网主机发出的IP数据包能够到达外网主机;后者被连接的计算机IP地址将会被重写,作用是使得外网主机发出的数据包能够到达内网主机。实际上,两种方式需要一起使用以支持双向通信。NAPT维护了一个带有IP以及端口号的NAT表,如下
内网ip 外网ip
192.168.1.55:8080 210.10.168.200:9200
192.168.1.56:8080 210.10.168.200:9201
192.168.1.57:80 210.10.168.200:9202
192.168.1.57:22 210.10.168.200:9203
NAT机制可以保证内网主机能够访问外网,但是问题在于,NAT设备自动屏蔽了非内网主机发起的连接,也就是说,从外网直接发给内网的数据包是会被NAT设备丢弃的。因此,不同NAT设备后的主机是无法直接交换信息的。由于端口限制圆锥形NAT的设计,外部主机要与内网主机相互通信,必须由内网主机主动发起连接。使NAT设备产生一个映射条目。
内网穿透的目的是为了使某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。
【FRP源码学习(一)(关于NAT以及内网穿透的认识)】

    推荐阅读