NAT ,代理服务器和内网穿透:内网设备通信的底层逻辑

NAT技术背景

我们知道IPV4地址大概有四十多亿个,随着网络的发展,IPV4地址也逐渐枯竭,随着路由压力1994 年以 RFC 1631 标准化为 "短期解决方案",通过地址复用与端口转换实现私网对公网的高效接入,同时推动私有地址规范与 NAT 穿越、IPv6 过渡技术发展,成为 IPv4 延长生命周期的关键支柱。

NAT技术当前解决IP地址不够⽤的主要⼿段, 是路由器的⼀个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP. 也就是就是⼀种将私有IP和全局IP相互转化的技术⽅法:
  • 很多学校, 家庭, 公司内部采⽤每个终端设置私有IP, ⽽在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯⼀, 但是私有IP不需要; 在不同的局域⽹中出现相同的私有IP是完全不影响的;

NAT IP转换

在主机通过路由器访问公网时,是一定会在路由器上留下痕迹的,例如主机的私网IP和你所访问的服务器的公网IP,而路由器就会将此映射关系保存在NAT表中。由此服务器所返回的内容就可以通过该表一层一层返回到你的主机。

假设主机(IP:10.0.0.10)要通过路由器(LAN口IP:10.0.0.1, WAN口IP:202.244.174.37)访问服务器(IP:163.221.120.9)步骤就如下。

  • NAT路由器将源地址从10.0.0.10替换成自己的WAN端口全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时, ⼜会把⽬标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部, 有⼀张⾃动⽣成的, ⽤于地址转换的表;
  • 当 10.0.0.10 第⼀次向 163.221.120.9 发送数据时就会⽣成表中的映射关系;

NAPT

但是仅仅靠IP的映射还是会有很多问题:局域⽹内, 有多个主机都访问同⼀个外⽹服务器, 那么对于服务器返回的数据中, ⽬的IP都是相同的(路由器的WAN口IP). 那么NAT路由器如何判定将这个数据包转发给哪个局域⽹的主机?

NAPT解决这个问题了. 使⽤IP+port来建⽴这个关联关系。

由主机IP+端口号与路由器的LAN口IP+端口号**<构成唯一映射>**路由器WAN口IP+端口号与服务器IP+端口号。

目的IP的端口号一般都是设定好的(例如HTTP默认端口号80),主机源IP端口号也简单由操作系统直接分配,路由器会维护一个可用端口池,WAN口IP端口号则会直接直接在池子中选一个。

这种关联关系也是由NAT路由器⾃动维护的. 例如在TCP的情况下, 建⽴连接时, 就会⽣成这个表项; 在断开连接后, 就会删除这个表项。

NAT技术的缺陷

  • 由于NAT依赖这个转换表,所以有诸多限制:
  • 无法从NAT外部向内部服务器建立连接。
  • 装换表的生成和销毁都需要额外开销。
  • 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开。

代理服务器

代理服务器

正向代理(Forward Proxy)是⼀种常⻅的⽹络代理⽅式,它位于客⼾端和⽬标服务器之间,代表客⼾端向⽬标服务器发送请求。正向代理服务器接收客⼾端的请求,然后将请求转发给⽬标服务器,最后将⽬标服务器的响应返回给客⼾端。通过这种⽅式,正向代理可以实现多种功能,如提⾼访问速度、隐藏客⼾端⾝份、实施访问控制等。

工作原理

  • 客户端配置代理:客户端在浏览器 / 系统设置中,指定正向代理服务器的 IP 和端口。
  • 客户端发起请求 :客户端需要访问目标服务器时,不会直接发送请求,而是将请求发送给正向代理服务器
  • 代理转发请求 :正向代理服务器收到请求后,会以自己的身份向目标服务器发送请求。
  • 代理接收并回传响应:目标服务器将响应返回给正向代理,代理再把响应转发给客户端。

正向代理有一个特点就是:在这个过程中,目标服务器只能看到正向代理的 IP 地址,无法获取客户端的真实 IP。

功能特点

  • 缓存功能:正向代理服务器可以缓存经常访问的资源,当客⼾端再次请求这些资源时,可以直接从缓存中获取,提⾼访问速度。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进⾏过滤,如屏蔽⼴告、阻⽌恶意⽹站等。
  • 访问控制:通过正向代理,可以实现对特定⽹站的访问控制,如限制员⼯在⼯作时间访问娱乐⽹站。
  • 隐藏客⼾端⾝份:正向代理可以隐藏客⼾端的真实IP地址,保护客⼾端的隐私。
  • 负载均衡:在多个⽬标服务器之间分配客⼾端请求,提⾼系统的可扩展性和可靠性。

应⽤场景

  1. 企业⽹络管理:企业可以通过正向代理实现对员⼯⽹络访问的管理和控制,确保员⼯在⼯作时间内专注于⼯作,避免访问不良⽹站或泄露公司机密。
  2. 公共⽹络环境:在公共场所如图书馆、学校等提供的⽹络环境中,通过正向代理可以实现对⽹络资源的合理分配和管理,确保⽹络使⽤的公平性和安全性。
  3. 提⾼访问速度:对于经常访问的⽹站或资源,正向代理可以通过缓存机制提⾼访问速度,减少⽹络延迟。
  4. 跨境电商与海外访问:对于跨境电商或需要访问海外资源的企业和个⼈,正向代理可以帮助他们突破⽹络限制,顺畅地访问海外⽹站和资源。

反向代理

原理

反向代理服务器,也是一个位于客户端和目标服务器之间的服务器,与正向代理相反,是建立在服务器之前,客户端向抖音服务器发起数据请求时,由反向代理服务器将客户端的数据请求收集起来,再由其推送给真正的后端目标服务器进行处理,数据处理完毕后抖音服务器再将数据结果直接返回给客户端。

反向代理服务器是⼀种⽹络架构模式,其作为Web服务器的前置服务器,接收来⾃客⼾端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客⼾端。这种架构模式可以提升⽹站性能、安全性和可维护性等

内网穿透

可是再平常生活中并不仅仅只访问服务器,有时候内网之间也要交互,比如微信聊天就是两台内网中的主机进行信息交互,那要咋整呢?

内网穿透(也叫NAT 穿透)是一种突破内网与公网隔离限制的网络技术,核心目标是让公网设备能够主动访问处于 NAT / 防火墙后的内网服务。

为了实现内网穿透,我们来了解一下内网打洞,它是实现内网穿透的核心技术手段。

内网打洞

以两个处于不同 NAT 后的设备 A(内网)和设备 B(公网)通信为例:

  1. 获取 NAT 映射信息:设备 A 先向服务器(有公网 IP的)发送请求,服务器会返回设备 A 在 NAT 上的公网 IP: 端口映射关系(比如202.244.174.37:32768)。
  2. 交换映射信息:设备 A 将自己的公网映射信息,通过一个公共信令服务器发送给设备 B。
  3. 发起打洞请求:设备 B 使用收到的公网映射信息,向设备 A 的 NAT 公网端口发送数据包;同时设备 A 也向设备 B 的公网 IP 发送数据包。
  4. 建立直连通道:双方的数据包会触发各自的 NAT 设备生成映射条目,最终实现设备 A 和设备 B 的P2P 直连,后续数据无需中继。

总结

  • NAT/NAPT:解决 IPv4 地址枯竭,通过私有 IP 与公网 IP 的转换实现内网访问公网,NAPT 进一步用IP + 端口的映射,解决多主机共享公网 IP 的转发歧义。
  • 正向 / 反向代理:正向代理替客户端发请求,可隐藏客户端 IP、突破访问限制;反向代理部署在服务端前,优化服务性能与安全性。
  • 内网穿透(NAT 打洞):借助公网信令服务器交换设备的公网映射信息,双向发包触发 NAT 生成映射,实现内网设备 P2P 直连,满足内网间通信需求。
相关推荐
杨江2 小时前
onlyoffice的安装
运维
Gofarlic_OMS2 小时前
如何将MATLAB网络并发许可证闲置率降至10%以下
大数据·运维·服务器·开发语言·人工智能·matlab·制造
佑白雪乐2 小时前
<Linux基础第3集>清华镜像源配置+网络基础概念理解(IP地址+网卡+网关+子网掩码+DNS...)
linux·网络·tcp/ip
代码AC不AC2 小时前
【Linux】进程优先级和进程切换
linux·进程·进程优先级·进程切换调度算法
Configure-Handler2 小时前
ubuntu 22.04 配置VNC远程连接
linux·运维·ubuntu
一个平凡而乐于分享的小比特2 小时前
Makefile 源码编译系统详解
linux·makefile
木卫二号Coding3 小时前
在 Ubuntu 上安装 noVNC
linux·运维·ubuntu
爱吃苹果的梨叔3 小时前
NTP 网络时间服务器硬件驯服技术说明(投标技术响应说明)
linux·运维·服务器·网络·嵌入式硬件·tcp/ip
工业HMI实战笔记3 小时前
HMI权限分级设计:兼顾安全与操作效率的平衡术
运维·数据库·安全·ui·自动化·人机交互·交互