[网络]NAT、代理服务、内网穿透、内网打洞

目录

一、NAT

1.1 NAT 技术背景

1.2 NAT IP 转换过程

1.3 NAPT(Network Address Port Translation)

1.地址转换表

2. NAPT(网络地址端口转换Network Address Port Translation)

3. NAT技术的缺陷

二、代理服务器

2.1 正向代理

2.2 反向代理

2.3 正向代理与反向代理

2.4 NAT 和代理服务器

三、内网穿透


一、NAT

        NAT(Network Address Translation,网络地址转换)技术是一种在计算机网络中广泛使用的技术,主要用于将私有网络地址(如局域网内部地址)转换为公共网络地址(如互联网地址),以实现内部网络用户能够安全、有效地访问外部网络。

1.1 NAT 技术背景

IPv4 协议中, 存在IP 地址数量不充足的问题 ,而NAT 技术是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能;

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

1.2 NAT IP 转换过程

如图所示,主机A想要访问公网中的一台服务器,刚开始数据包目的地址就是服务器的公网IP地址,源IP地址是主机A所在局域网的私有IP地址,由于目的地址是公网IP地址,在自己所在局域网中一定找不到,所以数据包就会不断地向上层路由器交付,当数据包经过NAT路由器时,由于死亡IP不能出现在公网中,路由器就会将源地址换为自己的WAN口IP地址,由自己代主机A发送数据。

当服务器也想给主机A发送数据时,会存在一个问题,服务器收到的源IP地址是NAT路由器的WAN口IP地址,那就无法准确找到主机A,其实在NAT路由器中维护了一张地址转换表,可以根据这个表中的映射关系找到主机A在这个局域网中的IP地址。

1.3 NAPT(Network Address Port Translation

1.地址转换表

当数据包进过NAT路由器时,路由器会将源IP地址修改为自己的WAN口IP地址,此时NAT路由器也会自动生成一张地址转化表,构建转换的映射关系

在上述的例子中,会生成这样的转换表

但是,我们发现,一个局域网内的主机在经过NAT路由器替换IP后,发给目标主机的源IP地址都是路由器的WAN口IP,这就存在一个问题,这个转化是单向的,主机可以向目的服务器发送数据,但是如果服务器也要给主机发送数据时,由于不同主机给自己发送的源IP地址是一样的,这就导致服务器给不同主机发送的数据只能发送到NAT路由器,而NAT路由器就算查表也无法判断数据到底是发给谁的。不过NAPT就可以解决这个问题。

2. NAPT(网络地址端口转换Network Address Port Translation

NAPT属于NAT(Network Address Translation,网络地址转换)的一种变种。为了解决上述问题,使用的是 IP+port 来建立这个关联关系,NAPT的主要功能是在私有网络和公共网络之间实现地址和端口的转换,以允许多个内部设备共享一个公共IP地址进行网络通信。

当内部设备(如计算机、手机等)通过NAT设备(如路由器)发送数据包到外部网络时,NAPT设备会将数据包的源IP地址和源端口号替换为公共IP地址和一个唯一的端口号,也就是说替换前后的IP+端口号是互为键值的,NAPT设备会维护一个映射表,记录内部设备的私有IP地址和端口号与公共IP地址和端口号之间的对应关系。当外部网络响应数据包时,NAPT设备会根据映射表将数据包的目标IP地址和目标端口号转换回相应的内部设备的私有IP地址和端口号,然后将数据包转发给内部设备。

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

3. NAT技术的缺陷

由于 NAT 依赖这个转换表, 所以有诸多限制:

  • 无法从 NAT 外部向内部服务器建立连接;
  • 装换表的生成和销毁都需要额外开销;
  • 通信过程中一旦 NAT 设备异常, 即使存在热备, 所有的 TCP 连接也都会断开;

二、代理服务器

代理服务器是计算机网络中的一种重要应用,它位于客户端和服务器之间,充当了二者之间的中介角色。它可以接收客户端的请求,并代表客户端向服务器发起请求,然后将服务器返回的数据转发给客户端。

2.1 正向代理

正向代理(Forward Proxy)位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。

  • 提高访问速度:正向代理服务器可以将目的服务器对应的资源缓存到本地,此时当其他人要访问该资源时,直接在正向代理服务器就可以获取,而不需要再次进行外网访问(部分加速器)。
  • 访问控制:访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作时间访问娱乐网站。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
  • 隐藏客户端身份:正向代理可以隐藏客户端的真实IP地址,保护客户端的隐私。

工作原理:

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

应用场景

企业网络管理:企业可以通过正向代理实现对员工网络访问的管理和控制,确保员工在工作时间内专注于工作,避免访问不良网站或泄露公司机密

公共网络环境:在公共场所如图书馆、学校等提供的网络环境中,通过正向代理可以实现对网络资源的合理分配和管理,确保网络使用的公平性和安全性。

内容过滤与保护:家长可以通过设置正向代理来过滤不良内容,保护孩子免受网络上 的不良信息影响。

提高访问速度:对于经常访问的网站或资源,正向代理可以通过缓存机制提高访问速 度,减少网络延迟。

跨境电商与海外访问:对于跨境电商或需要访问海外资源的企业和个人,正向代理可 以帮助他们突破网络限制,顺畅地访问海外网站和资源。

2.2 反向代理

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

基本原理

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

应用场景

负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发到多个后端服务器上,以实现负载均衡。这有助于提升网站的整体性能和响应速度, 特别是在高并发场景下。

安全保护:反向代理服务器可以隐藏后端 Web 服务器的真实 IP 地址,降低其被直接攻击的风险。同时,它还可以配置防火墙、访问控制列表(ACL)等安全策略, 对客户端的请求进行过滤和限制,以保护后端服务器的安全。

缓存加速:反向代理服务器可以缓存后端 Web 服务器的响应内容,对于重复的请求,它可以直接从缓存中返回响应,而无需再次向后端服务器发起请求。这可以大大减少后端服务器的负载,提升网站的响应速度。

内容过滤和重写:反向代理服务器可以根据配置的规则对客户端的请求进行过滤 和重写,例如添加或删除请求头、修改请求路径等。这有助于实现一些特定的业务需求,如 URL 重写、用户认证等。

动静分离:在大型网站中,通常需要将静态资源和动态资源分开处理。通过将静态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应, 而无需再次向后端服务器发起请求。这可以大大提升静态资源的访问速度。

CDN(Content Delivery Network,内容分发网络)就是采用了反向代理的原理

2.3 正向代理与反向代理
  • 正向代理是客户端的代理,帮助客户端访问其无法访问的服务器资源的,而反向代理则是服务器的代理,帮助服务器做负载均衡、安全防护等工作的。
  • 正向代理一般是客户端架设的,而反向代理一般是服务端架设的。
  • 正向代理中,服务器不知道真正的客户端到底是谁,服务器认为正向代理服务器就是真实的客户端,而反向代理中,客户端不知道真正的服务器是谁,客户端认为反向代理服务器就是真实的服务器。
2.4 NAT 和代理服务器

路由器往往都具备 NAT 设备的功能, 通过 NAT 设备进行中转, 完成子网设备和其他子 网设备的通信过程. 代理服务器看起来和 NAT 设备有一点像. 客户端像代理服务器发送请求, 代理服务器将 请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.

那么 NAT 和代理服务器的区别有哪些呢?

  • 从应用上讲, NAT 设备是网络基础设备之一, 解决的是 IP 不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
  • 从底层实现上讲, NAT 是工作在网络层, 直接对 IP 地址进行替换. 代理服务器往往工作在应用层.
  • 从使用范围上讲, NAT 一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
  • 从部署位置上看, NAT 一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.

翻墙的原理(仅解释原理)

       我们在网络中发送的数据都是要经过运营商的,当我们想访问外网的网址例如githup等等,运营商检测出我们访问的目的IP是公网,就会拦截我们的请求,所以我们想要访问公网中的网址首先需要骗过运营商。首先我们需要一台可以直接访问公网的服务器,并在上面部署一个代理软件server,我们也需要在自己的主机上安装上代理软件client,假设我们想访问githup的网站,首先在我们的主机上构建一个Http请求,并对这个请求进行加密,发送给我们的服务器,运营上看到这个数据报时,看到目的IP是一台合法的服务器,由于我们对数据进行了加密,运营商也只能将数据推送给我们的服务器,此时我们的服务器就可以对数据进行解密,然后访问我们请求的网站,并将请求的数据进行加密在发送给我们的主机,这样就实现了翻墙

三、内网穿透

定义

内网穿透是指在内网环境下的设备通过互联网与外界通信的技术手段,它能够让无法直接暴露在公网上的设备被外界访问。这一技术通过在内网和外网之间建立一条安全的隧道,将内网中的数据封装起来,通过外网传输到目标主机,从而实现内网设备与外网的互通。

实现原理:

  • 首先在代理服务器上部署安装配置"frps"(frp服务端),在主机部署安装配置"frpc"(frp客户端)。
  • 让一台主机与代理服务器建立连接,生成NAT映射表。
  • 通过"frpc"将本地某个端口映射到代理服务器"frps"的某端口。

这样我们在另一台主机通过访问服务器的特定端口,就可以直接访问到内网主机中的特定端口

内网打洞

定义:

内网打洞是在内网中进行网络连接的建立和通信的过程。它依赖于NAT(网络地址转换)技术,通过在内网和外网之间建立一个虚拟通道,使得内网主机能够通过这个通道与外网进行通信。

实现原理:

假设有两个存在不同局域网的主机,这两个主机都向同一个服务器构建好了NAT映射,服务器可以将两台主机的源IP和端口号交换给对方,此时两台内网中的主机就知道了对方的NAT路由器的WAN口IP地址和端口号,此时这两台主机就可以不经过服务器直接开始通信,当数据发送到对方的NAT路由器时,查转换表就可以直接找到对应主机,将数据发送。

内网打洞可以大幅度减轻服务器的压力,我们使用的QQ就是使用了这种技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北交大研究突破:塑料光纤赋能低成本无摄像头AR/VR眼动追踪技术

北交大研究:探索无摄像头低成本AR/VR眼动追踪新路径 在AR/VR技术领域,眼动追踪作为一项关键技术,对于提升用户体验、优化渲染效率具有重要意义。然而,传统的眼动追踪方案多依赖于高成本的摄像头,这不仅增加了设备的制造…

解锁 Python 嵌套字典的奥秘:高效操作与实战应用指南

文章目录 前言🍀一、 什么是 Python 字典?1.1 字典的语法 🍀二、 字典的基本操作2.1 字典的创建2.2 访问字典中的值2.3 添加或修改键值对2.4 删除字典中的键值对 🍀三、 字典的遍历操作3.1 遍历字典的键3.2 遍历字典的值3.3 同时遍…

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

大数据新视界 --大数据大厂之大数据驱动智能客服 -- 提升客户体验的核心动力

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例 在某地市的 XX 音乐节保障准备期间,为确保活动期间的网络质量,现场新开了 4.9G HUAWEI 室外基站。在网络优化和测试中,发现UE无法实现从 2.6G 到 4.9G 的正常切换。虽然现场具备 4.9G信号覆…

每日OJ题_牛客_组队竞赛_贪心_C++_Java

目录 牛客_组队竞赛_贪心 题目解析 C代码1 C代码2 Java代码 牛客_组队竞赛_贪心 组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 描述: 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个…

【自然语言处理】补充:基于向量空间的分类器

【自然语言处理】补充:基于向量空间的分类器 文章目录 【自然语言处理】补充:基于向量空间的分类器1. 特征选择2. 基于向量空间的分类方法3. Rocchio4. KNN5. 线性分类器1. 特征选择 特征选择 文本分类中,通常要将文本表示在一个高维空间下,每一维对应一个词项许多维上对应…

VMware WorkStation Pro 15.5(低版本安装) 教学用

VMware WorkStation Pro 15.5(低版本安装) 教学用 文章目录 VMware WorkStation Pro 15.5(低版本安装) 教学用前言安装使用 前言 VMware Workstation Pro 15.5 是一款功能强大的桌面虚拟化软件,适用于在单台物理电脑上运行多个操作系统。它被广泛应用于软件开发、测…

PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程

介绍: 真正的好东西,搞网站优化seo从业必备。可以快速提升网站权重,带来的流量哗哗的 PHP泛目录生成源码 可生成新闻页面和关键词页面 带使用方法视频教程 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果…

WDG看门狗在stm32中的应用

一,WDG看门狗的介绍 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看…

这些编程工具竟然能让我效率翻倍?开发者必备神器盘点!

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

在找工作吗?给你一个AI虚拟面试官助力你提前准备面试

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 让AI点亮我们的生活,是Shelly对…

3GPP链路级仿真-Link-Level Simulator for 5G Localization

文章目录 II. SYSTEM ARCHITECTURE AND CAPABILITIESA. System Architecture III. KEY COMPONENTSA. Transmission Models of the Positioning SignalsB. Dedicated Wireless Channel Model IV. APPLICATION CASESA. Two-Dimensional Mobile Terminal Localization仿真工作流程…

JavaWeb - 8 - 请求响应 分层解耦

请求响应 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程…

【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树 大家好,这里是店小二!今天我们将深入探讨高阶数据结构中的AVL树。AVL树是一种自平衡的二叉搜索树,可以看作是对传统二叉搜索树的优化版本。如果你对数据结…

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看,除了这段字符串,没有其他信息;尝试解密,长度32位;各种解密方式试试; MD5免费在线解密破解_MD5在…

PIKACHU | PIKACHU 靶场 XSS 后台配置

关注这个靶场的其他相关笔记:PIKACHU —— 靶场笔记合集-CSDN博客 PIKACHU 自带了一个 XSS 平台,可以辅助我们完成 XSS 攻击,但是该后台需要配置数据库以后才能使用。本教程,就是教大家如何配置 PIKACHU XSS 平台的。 PIKACHU XS…

【Conda】Conda命令详解:高效更新与环境管理指南

目录 1. Conda 更新命令1.1 更新 Conda 核心1.2 更新所有包 2. 严格频道优先级3. 强制安装特定版本4. 创建与管理环境4.1 创建新环境4.2 激活和停用环境4.3 导出和导入环境4.4 删除环境 5. 清理缓存总结 Conda 是一个强大的包管理和环境管理工具,广泛应用于数据科学…

Linux ssh 免密登录配置

参考资料 ~/.ssh/configについて~/.ssh/configを使ってSSH接続を楽にする.ssh/configファイルでSSH接続を管理する 目录 一. 密钥生成1.1 生成工具1.1.1 OpenSSH1.1.2 Git 1.2 生成命令1.3 注意事项1.4 解决路径中的用户名乱码 二. 将公钥配置到目标服务,免密登录2…

用Python实现运筹学——Day 14: 线性规划总结与案例复习

一、学习内容 在本节中,我们将复习之前所学的线性规划模型与求解方法,并通过一个综合案例将这些知识应用于求解一个多阶段的生产计划问题。 主要复习内容包括: 线性规划的基础概念:目标函数、约束条件、决策变量。求解方法&…