【计算机网络】NAT技术、内网穿透与代理服务器全解析:原理、应用及实践

[复制链接]
发表于 2025-9-10 06:39:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  📚 博主的专栏
  🐧 Linux   |   🖥️ C++   |   📊 数据结构  | 💡C++ 算法 | 🅒 C 语言  | 🌐 计算机网络
  上篇文章:以太网、MAC地址、MTU与ARP协议
下篇文章:五种IO模子与阻塞IO以及多路转接select机制编写echoserver
   摘要:本文深入探讨NAT技术如何通过私有IP与全局IP的转换办理IPv4地址不足题目,并详解NAPT通过IP+端口映射实现多主机外网通讯的原理。进一步解析内网穿透技术,借助云服务器(如frp工具)建立公网与内网端口映射,实现跨内网装备直接通讯,并分析内网打洞在P2P通讯、联机游戏等场景中的应用。对比正向代理与反向代理的焦点差别,前者隐蔽客户端并实现访问控制,后者负载均衡、缓存加速并掩护后端服务。通过代购实例形象阐述代理概念,总结NAT与代理在网络架构中的协同与分工,为实际应用提供技术参考。
  目录
NAT 技术配景
NAT IP 转换过程​编辑
NAPT(NAT转化表)
内网穿透 
内网穿透的应用:
内网打洞
关键原理:
内网打洞的应用:
代理服务器
正向代理
概述
工作原理
功能特点
应用场景
反向代理
概述
根本原理
应用场景
NAT 和代理服务器

NAT 技术配景

办理:IPv4 协议中, IP 地址数量不充足的题目
   NAT 技术当前办理 IP 地址不够用的重要本领, 是路由器的一个重要功能;
  • NAT 可以大概将私有 IP 对外通讯时转为全局 IP. 也就是就是一种将私有 IP 和全局IP 相互转化的技术方法:
  • 许多学校, 家庭, 公司内部采用每个终端设置私有 IP, 而在路由器或须要的服务器上设置全局 IP;
  • 全局 IP 要求唯一, 但是私有 IP 不需要; 在差别的局域网中出现相同的私有 IP是完全不影响的;
  在网络层文章讲到了从内网到公网做一系列的WAN口IP更换,访问到外网服务器。本篇文章将讲解如何从外网返来。

NAT IP 转换过程


   • NAT 路由器将源地址从 10.0.0.10 更换成全局的 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(NAT转化表)

   那么题目来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的 IP 都是相同的,那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机?
  这时候 NAPT 来办理这个题目了,使用 IP+port 来建立这个关联关系:
  在转换表当中,左侧内网对应的IP(在该子网中具有唯一性)和端口被更换为右侧公网IP(公网的IP是在公网具有唯一性的)和公网端口。因此他们互为键值。未来在从外网返来的时候,NAT路由器通过查表,根据这个唯一的公网IP和端口,查到他的目的IP和端口,将目的ip和目的端口更换成在内网中的IP和端口 。从而反向应答。
  
  

  这种关联关系也是由 NAT 路由器自动维护的. 例如在 TCP 的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项。
  
  注意:如果两个主机的IP地址差别,但是端标语相同,路由器照旧会根据外网中端标语差别来区分差别主机。而且在映射表还没有对应的映射关系的时候,外部是无法和内部的某主机进行通讯的。因此需要内部发送哀求给外部,建立了映射关系之后,才气外部和内部通讯。
  
   当Windows作为客户端访问服务器,这时获取到的客户端IP是公网IP:
  1. [INFO][1176507][TcpServer.hpp][107][2025-05-08 11:55:23] get a new link, client info : 117.172.171.76:52288, sockfd is: 5
复制代码
我直接在我的Windows上查到的ip是私有IP:
  

  服务器拿到的IP地址并不是内网IP,而是运营商收支口路由器的IP
  内网穿透 

   起首我有一个云服务器,我在我家里有一台呆板,我的朋友在他家也有一台呆板,我的朋友的呆板是Linux呆板,而且他在他的呆板上部署了一种服务,可以向我的云服务器构建TCP连接,而且乐成。朋友的Linux呆板上部署了某种长途登录的服务端标语是22,在我的云服务器上也部署了某个服务,端标语是8888,在云服务器部署的服务可以将收到的发送给端口8888的哀求,全部都转给我朋友的Linux呆板上所部署的端标语为22的服务器当中,也就是从外网将哀求转发到内网当中,也就是已经建立了外网端口8888和内网端口22的映射。将工作做好之后。我在我家,我想登录朋友的Linux呆板,就能先通过访问我自己的云服务器上的服务,再通过云服务器将哀求转发给内网上我朋友的linux呆板上的端口22的服务。从今往后,在我的呆板访问我的云服务器上的服务的时候,就直接从我地点的内网,直接穿透到了我朋友呆板地点的内网。这就是内网穿透技术。
  

  有了内网穿透这项技术,未来可以有一台配置较低的云服务器,就能在我的其他子网当中某个呆板构建好某种服务,使用这个价廉的云服务器,构建好他们的映射关系NAT转化表一直建立着,我就可以用任何内网的主机直接访问云服务器,就能访问另一个内网的主机。
  frp就是用来做内网穿透的工具。frpc、frps。将frpc部署在自己的Linux呆板上,把frps部署在云服务器上,两个配置好都启动,未来就能直接通过云服务器登录我的Linux呆板。
    内网穿透(NAT 穿透)的焦点目标是让处于差别内网环境中的装备可以大概直接通讯,绕过 NAT(网络地址转换)或防火墙的限定。其应用场景广泛,尤其在去中心化、低延长、高隐私需求的场景中尤为重要。以下是内网穿透的典型应用及详细案例:
  内网穿透的应用:

   一方面是配置很好的云服务器太贵了,一方面是一些大公司有自己的子网,公司的呆板只能在公司访问,想要在家里访问在公司的呆板,就需要使用这个技术,公司可能会有一台配置好frcs的云服务器,把公司内部的特定端口袒露出来,我们就可以在家里通过访问云服务器这个端口的服务,穿透到公司的呆板进行办公。frps也能做认证,认证通过才气访问,不是随便一个人都能访问的。可能公司会发一个token装备,上面有一个简单的led表现屏,上面刷新的数字和云服务器是同步的,未来就输入token上表现的随机数再访问云服务器。
  企业级应用
  

  • 场景:安全访问内网资源,提升办公服从。
  • 案例:

    • VPN 替代方案:通过内网穿透工具(如 ZeroTier、Tailscale)组建虚拟局域网。
    • 私有 Git 堆栈访问:直接连接公司内网的 GitLab 或 Jenkins。
    • 跨地域服务器通讯:多地数据中心服务器直接同步数据。

  内网打洞

   我的主机也能知道我地点的子网的运营商收支口路由器的IP和端口,可以通过发送哀求给外网服务器,外网服务器再将他收到的源IP和断后给客户端返回,我就拿到了运营商收支口路由器的IP和端口。
  
  那如果另一台主机也有这个需求,这时候,服务器就拿到了两台主机地点子网的运营商收支口路由器的IP和端口,因此直接在要响应的时候交换所拿到的两组数据,再将响应响应会目的内网的两台主机。两台主机就拿到了对方运营商收支口路由器的IP和端标语数据。而两台主机已经访问过云服务器,在路由器位置已经建立好了NATP,未来就能不颠末云服务器而通过拿到的对方的收支口路由器IP和端标语封装好IP报文,进行服务哀求与响应。

  这项技术就是先通过云服务器交换双方的收支口路由器IP和端标语信息,同时在路由器建立好NAPT,以后直接拿着对方的信息来实现双方主机之间的通讯。
  

  关键原理:

   

  • NAT 类型兼容性:打洞乐成率取决于路由器的 NAT 类型(完全锥型、受限锥型等)。复杂 NAT 可能需要 STUN/TURN 服务器辅助。
  • UDP 优先:UDP 无连接特性更易实现打洞;TCP 需要更复杂的握手过程。
  • 超时与保活:NAT 映射通常有时效性,需定期发送保活包维持连接。
  内网打洞的应用:

   

  • 视频通话(如 WebRTC):两个内网装备直接传输音视频流。
  • 联机游戏:玩家间直接通讯降低延长(如部分 P2P 联机游戏)。
  • 物联网物联网装备长途控制:内网的智能家居装备通过打洞接受外部指令。
  • 下载某文件:不颠末服务器,直接在别人的主机上下载。
  代理服务器

正向代理

概述

   • 正向代理(Forward Proxy) 是一种常见的网络代理方式, 它位于客户端和目标服务器之间, 代表客户端向目标服务器发送哀求。 正向代理服务器吸收客户端的哀求, 然后将哀求转发给目标服务器, 最后将目标服务器的响应返回给客户端。 通过这种方式, 正向代理可以实现多种功能, 如进步访问速度、 隐蔽客户端身份、 实行访问控制等。
  

工作原理

   • 客户端将哀求发送给正向代理服务器。
  • 正向代理服务器吸收哀求, 并根据配置进行处理, 如缓存查找、 内容过滤等。
  • 正向代理服务器将处理后的哀求转发给目标服务器。
  • 目标服务器处理哀求, 并将响应返回给正向代理服务器。
  • 正向代理服务器将响应返回给客户端
  功能特点

   • 缓存功能: 正向代理服务器可以缓存经常访问的资源, 当客户端再次哀求这些资源时, 可以直接从缓存中获取, 进步访问速度。
  • 内容过滤: 正向代理可以根据预设的规则对哀求或响应进行过滤, 如屏蔽广告、阻止恶意网站等。
  • 访问控制: 通过正向代理, 可以实现对特定网站的访问控制, 如限定员工在工作时间访问娱乐网站。
  • 隐蔽客户端身份: 正向代理可以隐蔽客户端的真实 IP 地址, 掩护客户端的隐私。
  • 负载均衡: 在多个目标服务器之间分配客户端哀求, 进步系统的可扩展性和可靠性。
  应用场景

   企业网络管理: 企业可以通过正向代理实现对员工网络访问的管理和控制, 确保员工在工作时间内专注于工作, 克制访问不良网站或泄漏公司秘密。
  公共网络环境: 在公共场所如图书馆、 学校等提供的网络环境中, 通过正向代理可以实现对网络资源的合理分配和管理, 确保网络使用的公平性和安全性。
  内容过滤与掩护: 家长可以通过设置正向代理来过滤不良内容, 掩护孩子免受网络上的不良信息影响。
  进步访问速度: 对于经常访问的网站或资源, 正向代理可以通过缓存机制进步访问速度, 减少网络延长。
  跨境电商与外洋访问: 对于跨境电商或需要访问外洋资源的企业和个人, 正向代理可以帮助他们突破网络限定, 顺畅地访问外洋网站和资源
  反向代理

概述

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

根本原理

   • 反向代理服务器位于客户端和 Web 服务器之间, 当客户端发起哀求时, 它起首会到达反向代理服务器。 反向代理服务器会根据配置的规则将哀求转发给后端的 Web服务器, 并将 Web 服务器的响应返回给客户端。 在这个过程中, 客户端并不知道实际与哪个 Web 服务器进行了交互, 它只知道与反向代理服务器进行了通讯。
  应用场景

   • 负载均衡: 反向代理服务器可以根据配置的负载均衡计谋, 将客户端的哀求分发到多个后端服务器上, 以实现负载均衡。 这有助于提升网站的整体性能和响应速度,特别是在高并发场景下。
  • 安全掩护: 反向代理服务器可以隐蔽后端 Web 服务器的真实 IP 地址, 降低其被直接攻击的风险。 同时, 它还可以配置防火墙、 访问控制列表(ACL) 等安全计谋,对客户端的哀求进行过滤和限定, 以掩护后端服务器的安全。
  • 缓存加速: 反向代理服务器可以缓存后端 Web 服务器的响应内容, 对于重复的哀求, 它可以直接从缓存中返反响应, 而无需再次向后端服务器发起哀求。 这可以大大减少后端服务器的负载, 提升网站的响应速度。
  • 内容过滤和重写: 反向代理服务器可以根据配置的规则对客户端的哀求进行过滤和重写, 例如添加或删除哀求头、 修改哀求路径等。 这有助于实现一些特定的业务需求, 如 URL 重写、 用户认证等。
  • 动静分离: 在大型网站中, 通常需要将静态资源和动态资源分开处理。 通过将静态资源部署在反向代理服务器上, 可以直接从反向代理服务器返回静态资源的响应, 而无需再次向后端服务器发起哀求。 这可以大大提升静态资源的访问速度。
  • CDN(Content Delivery Network, 内容分发网络) 就是采用了反向代理的原理
  NAT 和代理服务器

路由器每每都具备 NAT 装备的功能, 通过 NAT 装备进行中转, 完成子网装备和其他子网装备的通讯过程.代理服务器看起来和 NAT 装备有一点像. 客户端像代理服务器发送哀求, 代理服务器将哀求转发给真正要哀求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.
   那么 NAT 和代理服务器的区别有哪些呢?
  • 从应用上讲, NAT 装备是网络底子装备之一, 办理的是 IP 不足的题目。代理服务器则是更贴近详细应用, 好比通过代理服务器进行FQ, 另外像迅游这样的加速器,也是使用代理服务器.
  • 从底层实现上讲, NAT 是工作在网络层, 直接对 IP 地址进行更换. 代理服务器每每工作在应用层.
  • 从使用范围上讲, NAT 一样平常在局域网的出口部署, 代理服务器可以在局域网做,也可以在广域网做, 也可以跨网.
  • 从部署位置上看, NAT 一样平常集成在防火墙, 路由器等硬件装备上, 代理服务器则是一个软件步伐, 需要部署在服务器上
  代理服务器是一种应用比较广的技术.
   • FQ: 广域网中的代理.
  • 负载均衡: 局域网中的代理
  代理服务器又分为正向代理和反向代理.
代购例子
   花王尿不湿是一个很经典的尿不湿品牌, 产自日本.
  我自己去日本买尿不湿比较不方便, 但是可以让我在日本工作的表姐去超市买了快递给我. 此时超市看到的买家是我表姐, 我的表姐就是 "正向代理";
  后来找我表姐买尿不湿的人太多了, 我表姐以为天天去超市太麻烦, 干脆去超市买了一大批尿不湿屯在家里, 如果有人来找她代购, 就直接把屯在家里的货发出去,而不必再去超市.
  此时我表姐就是 "反向代理"正向代理用于哀求的转发(例如借助代理绕过反爬虫).
  反向代理每每作为一个缓存
  
    结语:
         随着这篇博客接近尾声,我衷心希望我所分享的内容能为你带来一些启发和帮助。学习和明白的过程每每充满挑衅,但正是这些挑衅让我们不断发展和进步。我在预备这篇文章时,也深刻体会到了学习与分享的乐趣。    
           在此,我要特别感谢每一位阅读到这里的你。是你的关注和支持,给予了我持续写作和分享的动力。我深知,无论我在某个范畴有多少见解,都离不开各人的鼓励与指正。因此,如果你在阅读过程中有任何疑问、发起或是发现了文章中的不足之处,都接待你慷慨见教。
          你的每一条反馈都是我进步路上的宝贵财富。同时,我也非常等待可以大概得到你的点赞、收藏,关注这将是对我莫大的支持和鼓励。固然,我更等待的是可以大概持续为你带来有价值的内容。
  
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表