NAT技术+代理服务器+内网穿透

NAT技术

IPv4协议中,会存在IP地址数量不充足的问题,所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的,而公网中的IP地址都是唯一的,所以NAT(Network Address Translation,网络地址转换)技术是当前解决IP地址不够用的主要手段, 是路由器的一个重要功能。

  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法。
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的。

 

 NAT转换过程

  1. 当客户端A想要向目标服务器发送数据时,会进行在网络层将源IP和目的IP字段填充进报头字段中,然后进行路由选择,选择合适的发送路径。
  2. NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37。
  3. NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10。
  4. 在NAT路由器内部, 有一张自动生成的, 用于地址转换的表(地址映射表)。
  5. 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系。
  6. 所以有了转换表以后不论是数据发送时私有IP向全局IP地址的转换还是数据接收时的全局IP向私有IP的转换都可以通过NAT路由器内部的路由表进行映射(互为键值关系)

 


如果此时客户端B 也在向目标服务器发送数据呢???

NAPT

如果局域网内,有多个主机都访问同一个外网服务器,并且此时这些主机的端口号也是一样的话,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器在进行IP地址转换后的源地址都是NAT路由器的IP地址,那么转换后的源目的IP组就都是一样的了,所以数据就回不来了。

这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系:

可以看出,当我们的同一局域网下的主句同时访问相同服务器的话,那么 NAT路由器在转换的过程中会将源IP转换成NAT路由器的IP地址,端口的转换就取决于该路由表中是否存在重复的IP+PORT组,如果不重复就端口号不变,如果重复就同时替换端口号。(NAT的右侧不一定是公网,也可能是运营商构建的子网。内网路由器在向上转发报文的时候都会将源IP替换成路由器WAN口IP)

 

NAT技术的缺陷

  • 无法一开始从NAT外部向内部服务器建立连接(NAT转换表未形成,可以看作内网主机保护)
  • 转换表的生成和销毁都需要额外开销。
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开。

 


代理服务器 

代理服务器(Proxy Server)是一种位于客户端与目标服务器之间的中介服务,它充当了客户端和目标服务器之间的“代理”,接收来自客户端的请求,并将其转发给目标服务器,然后将目标服务器的响应返回给客户端。也就是说代理服务器的作用就相当于一个中间跑路人。

正向代理工作原理

正向代理服务器,也称为客户端代理,位于客户端和目标服务器之间。它的主要功能是代替客户端向目标服务器发送请求,并将目标服务器的响应返回给客户端。

当客户端在浏览器中设置好代理服务器后,所有通过该浏览器发出的网络请求都会先发送给代理服务器。代理服务器接收到请求后,会检查自己是否有缓存的响应数据。如果有,则直接返回给客户端;如果没有,则向目标服务器发起请求,并将获取到的响应数据返回给客户端。同时,代理服务器还会将响应数据缓存起来,以便后续相同请求的快速响应。(以上的过程其实我们的校园网就在使用)

优点:

  • 资源共享(代理服务器内部缓存资源)
  • 内网安全(隐藏客户端的真实IP)
  • 用户拦截(客户端访问的URL是可视的)

 


反向代理工作原理 

反向代理服务器位于目标服务器和客户端之间。主要功能是接收客户端的请求,并将这些请求转发给后端的多个服务器中的一个进行处理。

 优点:

  • 负载均衡:将客户端的请求分发到多个服务器上进行处理,提高系统的性能和可靠性。
  • 提供安全性:反向代理服务器可以隐藏真实的服务器地址和配置信息,增加系统的安全性。同时,它还可以对请求进行过滤和检查,防止恶意攻击和非法访问。

 

NAT与代理服务器比较 

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

 

内网打洞和内网穿透

内网打洞

内网打洞主要用于解决两个私有网络(内网)中的设备之间直接通信的问题。内网打洞依赖于NAT技术,通过在内网和外网之间建立一个虚拟通道,使得内网主机能够通过这个通道与另一个内网进行通信。

实现过程

  1. 共享信息:两个位于不同私有网络的设备(例如PC1和PC2)首先需要通过某种方式(如通过共同访问公共服务器),从而公共服务可以分别拿到PC1和PC2两台主机的公网入口路由器的IP+port。服务器得知两台主机各自的公网入口路由器的IP+Port之后,然后服务器将两台主机公网入口路由器的IP+port返回给对方主机,那么此时PC1就可以拿到PC2的公网入口路由器的IP+port,同时PC2就可以拿到PC1的公网入口路由器的IP+port。

  2. 触发NAT映射:接着,双方设备几乎同时向对方的入口路由器的公网IP地址和端口发送UDP数据包。这些数据包触发了各自的NAT设备,并且也会在NAT转换表中创建临时的NAT映射规则,允许后续来自相同源IP地址和端口的数据包通过。

  3. 直接通信:一旦双方的NAT设备都建立了映射规则,双方设备就可以直接进行通信,绕过任何中间服务器。

 内网穿透

内网穿透(也称为NAT穿透)的基本原理是通过某种方式,让外网设备能够访问到内网中的资源。

实现过程:内网穿透的原理其实和内网打洞的原理是一样的,但是实现过程有些许差异。首先两个内网想要进行通信(如PC1和PC2)。首先PC2会访问服务器,建立tcp连接,那么此时途中NAT路由器就会构建生成NAT转化表,然后紧接着PC1将想要发送的数据发给相同的服务器(此时PC1在访问服务器的这条路径中,所有NAT路由器的NAT转换表同样形成),然后该服务器将数据返回给PC2(通过构建好的NAT转换表)。此后双方就建立起通信。其实接下来也可以采用打通的方式进行通信。

 

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

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

相关文章

linux/ubuntu国内镜像安装gitleaks敏感信息扫描工具教程及避坑点

1、背景 利用gitleaks扫描git仓库或者文件 GitHub上有比较详细的教程,但是由于每个人的安装环境不同,坑很多,网上能查到的有效信息也比较少。这里就以我坑很多的环境为例,捋一下步骤。 GitHub - gitleaks/gitleaks: Protect an…

集成学习(Ensembling Learning)

0. 来源 概念比较全,可以作为目录,前置知识讲得好,其他一般。 01.内容简介_哔哩哔哩_bilibili01.内容简介是集成学习:XGBoost, lightGBM的第1集视频,该合集共计19集,视频收藏或关注UP主,及时了…

乔迁新址,盛启新章!聚铭网络河北办事处盛大开业

2024年9月10日,金秋九月,阳光灿烂。在这样一个美好的日子里,聚铭网络河北办事处正式迎来了乔迁之喜并盛大开业。随着公司业务规模的快速扩张,原有的办公空间已经不足以支撑未来的增长,新址的启用不仅代表了我们迈出的一…

招生管理|基于Java+vue的招生管理系统(源码+数据库+文档)

招生管理|学生管理系统|高校招生管理 目录 基于Javavue的招生管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|…

OpenCV结构分析与形状描述符(21)计算包围给定点集的最小面积三角形函数minEnclosingTriangle()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 找到一个包围二维点集的最小面积三角形,并返回其面积。 该函数找到一个包围给定的二维点集的最小面积三角形,并返回其面…

【笔记】自动驾驶预测与决策规划_Part1_自动驾驶决策规划简介

自动驾驶决策规划简介 0、前言1、自动驾驶概述1.1 预测(Prediction)1.2 决策(Decision Making)1.3 规划(Planning) 2、自动驾驶历史和背景3、自动驾驶级别和分类4、预测决策规划的重要性4.1 预测的重要性4.…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲,在演讲中Larry将AI技术和云战略推到了前所未有的高度,从新的Oracle 23c改名到Oracle23ai,到Oracl…

性能测试-jmeter脚本录制(十五)

一、jmeter脚本录制(不推荐)简介: 二、jmeter脚本录制步骤 1、添加代理服务器和线程组 2、配置http代理服务器的端口和目标线程组 3修改本机浏览器代理 4、点击启动 5、每次操作页面前,修改提示文字

如何删除电脑系统桌面文件右键菜单多余选项

你可能会遇到以下情况,电脑鼠标右键有较多无用的菜单选项,或者安装某个程序卸载后,右键菜单仍有相关的选项。下面小编就来和大家分享电脑桌面右键菜多余选项删除方法,适用于win7、win10、win11等windows系统。 举例说明&#xff…

NVIDIA AI Workbench 让 Windows 上的 GPU 使用更加简便

NVIDIA AI Workbench 是一款免费的、用户友好型开发环境管理器,可在您选择的系统(PC、工作站、数据中心或云)上简化数据科学、ML 和 AI 项目。在 Windows、macOS 和 Ubuntu 上,您可以本地开发、测试项目和构建项目原型&#xff0c…

vue2实践:el-table实现由用户自己添加删除行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的&#x…

信刻光盘安全隔离与信息交换系统

随着各种数据传输、储存技术、信息技术的快速发展,保护信息安全是重中之重。军工、政府、部队及企事业单位等利用A网与B网开展相关工作已成为不可逆转的趋势。针对于业务需要与保密规范相关要求,涉及重要秘密信息,需做到安全的物理隔离&#…

PHP实时统计结果秒出高效能在线投票工具系统小程序源码

实时统计,结果秒出 —— 体验高效能在线投票工具系统 🚀 投票新纪元,效率为王! 在这个快节奏的时代,每一秒都至关重要。你是否厌倦了传统投票方式中漫长的等待和繁琐的统计过程?那么,就让我带你…

数字乡村网络文化服务平台建设方案

1. 平台建设背景与目标 数字乡村网络文化服务平台的建设旨在通过数字化手段整合乡村内外资源,打造全面覆盖、精准服务的乡村服务体系,以改善民生和促进社会稳定。平台包括居民管理、互动交流、服务管理等五大应用,实现乡村服务的多元化、精确…

Mac在Python项目中通过opencv模版匹配定位不到图片

起因 原本一行代码的事情,但是在Mac上总能出现意外,如下 box pyautogui.locateOnScreen(obsidian.png) print(box) pyautogui.moveTo(box[0],box[1])上面的代码用来定位图片在屏幕中的位置,然后移动鼠标到定位到的屏幕位置坐标。 意外…

实战OpenCV之像素操作

基础入门 在OpenCV中,像素是最基本的操作单位。图像可以视为一个三维数组,其中第三维表示颜色通道。图像数据在内存中以连续或几乎连续的方式存储,对于多通道图像(比如:BGR图像),每个像素的各通…

EmguCV学习笔记 VB.Net 11.5 目标检测

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

初识时序数据库InfluxDB

最近项目开发中,需要记录时间序列的日志信息,InfluxDB 刚好契合。于是准备研究一下,发现已经有整理很好的文档,以下两篇觉得很好,入门开发可以参考一下。 因为项目是用C#开发的,因此,简单介绍一下C#开发中,InfluxDB的API使用。 1.简介 InfluxDB是一个由InfluxData开发…

《食品安全导刊》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《食品安全导刊》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《食品安全导刊》级别? 答:国家级。主管单位: 中国商业联合会 主办单…