NAT技术

目录

NAPT

内网穿透

代理服务器

NAT与代理服务器的区别


本文仅从计算机网络原理角度进行技术探讨,不涉及任何违规工具的推荐使用。

NAPT

传统NAT技术可以将内网IP转化为公网IP ,它只负责映射内网IP和外网IP。现在说的NAT技术一般指NAPT,它负责映射内网IP:端口和外网IP:端口

在内网主机向公网主机发数据时,首先通过将目的IP与子网掩码按位与后发现该目标IP不在当前网段中,于是交给默认网关

路由器通过将目的IP与子网掩码按位与确认该目标IP也不在当前网段中,继续交给默认网关。但它会将报文中的源IP替换成自己的IP(WAN口IP) ,并在路由器中的转换表中记录下原IP:port和转换后IP:port的映射关系

这样当服务器发送响应给公网路由器后,就可以通过查转换表将IP:port重新映射回去

若一局域网有多台主机都请求同一个服务器,由于转换后的IP与port都相同,不能保证唯一性,因此会改变转换后的端口号

这样双端都可以在各自网段中确保唯一性 ,互为Key,从左往右或从右往左查都可以找到唯一的值(唯一四元组)

内网穿透

因为NAPT的存在,只有内网主机可以直接访问公网主机 ,而公网主机要访问内网主机需要先让内网主机向公网主机发消息,在路由器的转换表中建立映射关系(外网不能主动找内网,但内网主动找外网后,外网可以顺着这条线回话)

但如果先让内网主机和自己的公网服务器建立连接 ,当其他人有数据想发送给内网主机时,先发到公网服务器,再由服务器转发给内网主机,就可以解决NAPT,这就是内网穿透

代理服务器

代理分为正向代理 和反向代理

若一个公司的用户量很庞大,一般都会有多个服务器来减轻负担,但如果将每个主机都暴露在公网上,客户端到底该访问哪个服务器?

因此一般会有一个入口服务器(负载均衡器 ),所有客户端的请求都发给入口服务器 ,由该服务器的策略将请求均匀分到所有服务器上 ,即负载均衡 。

这种就是反向代理

策略一般有轮询、随机、IP哈希等等(但返回响应时一般是该服务器直接发送,不会再传给负载均衡器)

再比如校园网, 当连着校园网时,所有数据都会先被转发到学校的机房服务器 ,由该服务器代替我们转发到目标公网IP ,当返回响应时,也会由学校机房服务器先接收 ,再转发给指定主机 ,这就是正向代理

简而言之,正向代理隐藏的是"客户端"(买家),反向代理隐藏的是"服务端"(卖家)。

正向代理离客户端更近,反向代理离服务器更近

对比维度 正向代理 (Forward Proxy) 反向代理 (Reverse Proxy)
代理的对象 客户端(代表客户端去请求) 服务端(代表服务端接收请求)
隐藏的对象 隐藏真实的客户端 IP 隐藏真实的服务器 IP
客户端是否知道目标 知道(客户端明确知道要访问哪个目标网址) 不知道(客户端以为代理服务器就是最终目标)
配置位置 配置在客户端(如浏览器设置代理、系统网络设置) 配置在服务端(如部署在机房入口的 Nginx)
流量走向 客户端 -> 代理 -> 目标服务器 客户端 -> 代理 -> 真实服务器
典型工具/软件 Squid、Privoxy、浏览器代理插件 Nginx、HAProxy、CDN、云厂商的 WAF

NAT与代理服务器的区别

两者都能实现"让内网机器访问外网 "以及"隐藏真实 IP "的功能,但它们的工作层级 和底层逻辑完全不同

NAT主要解决IPv4枯竭问题 ,工作在网络层,是必须要有的,部署在局域网出口

而代理服务器工作在应用层,用于加速,网络优化,负载均衡等,可在局域网/广域网部署

对比维度 NAT (网络地址转换) 代理服务器 (Proxy Server)
工作层级 网络层 (L3) / 传输层 (L4) 主要工作在 应用层 (L7)(如 HTTP 代理),部分在 L4/L5(如 SOCKS 代理)
处理对象 只修改 IP 头部 和 TCP/UDP 头部(改 IP 和端口) 解析并处理 应用层数据(如 HTTP 请求头、URL、Cookie)
连接状态 "修改报文":维持客户端到服务端的端到端连接假象 "断开重连":建立两段独立连接(客户端↔代理,代理↔服务端)
客户端感知 完全透明:客户端无需任何配置,以为自己直接连着外网 通常需要配置:客户端必须在系统或软件中手动指定代理 IP 和端口
协议感知 不感知:不管是 HTTP、FTP 还是游戏数据包,一视同仁转发 深度感知:知道你在访问什么网页,可以缓存图片、过滤敏感词
主要目的 解决 IPv4 地址短缺、实现内外网基础隔离 访问控制、缓存加速、突破访问限制、深度隐藏身份
典型设备/软件 家用路由器、企业防火墙、云厂商的 NAT 网关 Squid、Nginx、浏览器代理插件
相关推荐
千舟软件15 小时前
报修系统对接企业微信和钉钉的3种方式_千舟报修云
服务器·钉钉·企业微信
LongRunning1 天前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
迪康coolmu1 天前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
xiaoye-duck1 天前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
民乐团扒谱机1 天前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜1 天前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_371802111 天前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT1 天前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅1 天前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖1 天前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习