
目录
[NAT IP转换过程](#NAT IP转换过程)
NAT IP转换过程
NAT IP转换的过程大致如下图所示:

内网IP地址+端口号,可以标志内网中进程的唯一性,公网IP地址+端口号也可以标志公网路由器服务的唯一性。左右都是唯一的,在这个映射关系中,两个具有唯一性的数据就可以互为键值,从左向右查具有唯一性,从右向左也具有唯一性,当进行应答时,从公网到内网时,通过这个映射表,进行目标地址的替换,将目标地址替换为内网地址,就可以继续进行内网转发了,实现内网穿透。
如果两个报文源地址的端口号一样,经过NAT路由器后,都会映射到同一IP地址和端口号,此时IP地址+端口号就不唯一了,也就没办法做映射了。因此,源端口号也可能会被NAT路由器替换。
内网打洞
当某一主机访问目标服务器时,目标服务器收到的客户端的IP,其实不是内网IP,收到的其实是运营商的出入口路由器WAN口的IP,报文从主机发送到服务器的过程中,每经过一个路由器,都会通过NAT转换表进行转换,如果将双方的IP地址进行交换,那么就可以直接发送到对应的路由器,这种通过中间的公共服务器做中转,可以直接访问对应路由器的技术,称为内网打洞技术。如下图所示:

内网打洞通常用UDP来实现。
内网穿透
内网穿透是一种解决内网设备无法被公网直接访问问题的网络技术。在日常网络环境中,家庭、公司等局域网内的设备,通常会通过路由器的 NAT功能共享同一个公网 IP 接入互联网,路由器会为内网设备分配仅在局域网内有效的私有 IP,同时隐藏内网,这就导致外网设备无法主动发起对这些内网设备的访问请求,而内网穿透的核心作用,就是打破这种 NAT 隔离,让内网设备的服务可以被公网稳定访问。如下图所示:

首先在拥有固定公网 IP 的云服务器上部署 frp 服务端 frps,同时在家庭内网的目标主机上部署 frp 客户端 frpc,由客户端主动向公网服务端发起 TCP 长连接,在家庭路由器上建立 NAT 映射,打通内网到公网的专属隧道,并配置端口映射规则,将本地 SSH 服务的 22 端口映射到云服务器的 8888 端口;完成配置后,处于公司或学校等外网环境的设备,只需直接访问云服务器的 8888 端口,公网服务端就会将流量通过预先建立的隧道转发给家庭内网的客户端,最终由客户端将流量转发到本地主机的 22 端口,从而实现外网设备对家庭内网主机的无障碍访问,解决了内网设备无公网 IP、无法被公网直接访问的问题。
代理服务器
代理服务器也是一种服务器,也有操作系统,一般都是Linux系统,也有代理软件,代理服务器更贴近具体应用,工作在应用层,可以在局域网做,也可以在广域网做,也可以跨网。
正向代理
正向代理是一种常见的网络代理方式,位于客户端和目标服务器之间,如下图所示:

正向代理服务器接受客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,包括以下功能:
缓存功能:正向代理服务器可以缓存经常访问的资源,当客户端再次请求这些资源时,可以直接从缓存中获取,提高访问速度。
内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作时间访问娱乐网站。
负载均衡:在多个目标服务器之间分配客户端请求,提高系统的可扩展性和可靠性。
隐藏客户端身份:正向代理可以隐藏客户端的真实IP地址,保护客户端的隐私。
反向代理
反向代理服务器用来给后端提供服务,它接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客户端。如下图所示:

反向代理可以通过负载均衡算法来保证流量分散到不同的服务器中。当访问静态资源时,反向代理直接返回给客户端即可,可以提速。