NAT技术与代理服务器

news2024/9/20 0:53:20

目录

一、NAT与NAPT技术

1.NAT技术

2.NAPT技术

(1)四元组的唯一性

(2)数据的传输过程

(3)NAPT的缺陷

二、代理服务器

1.正向代理和反向代理

2.代理服务器的应用

(1)游戏加速器

(2)科学上网


一、NAT与NAPT技术

1.NAT技术

NAT技术我们在之前的IP协议博客中已经讲过了。

NAT技术可以在数据从内网向公网传输时,将源IP替换为当前节点的WAN口IP,从而保证数据可在公网的主机中间传递。

如果局域网中有多台客户端主机都访问同一个服务器,甚至每台主机上有多个进程在访问这个服务器。所有的请求数据包都可以通过NAT路由器发送给服务器,服务器也都会处理这些收到的请求,并通过运营商路由器公网IP发回数据。

但是运营商服务器接收的所有数据的IP报头中,目的IP必定是当前路由器的WAN口IP,源IP肯定是服务器的公网IP。

那运营商路由器怎么知道各个数据该发给哪个家用路由器呢?

2.NAPT技术

(1)四元组的唯一性

由于局域网中一个IP地址可以标识一台唯一的主机,而且一台主机上的每个端口号又能标识一个唯一的进程。

所以说,IP和端口号的组合就能指定某个局域网内某个主机上的某个进程。

每一份经网络传输的数据中都会存在源IP、目的IP、源端口和目的端口。

所以,我们拿出这四个数据构建一个四元组(这个四元组是我们构建的,实际每个数据都在报头中)。

在一个局域网内,一个四元组可以明确地标识一份数据由哪个主机的哪一个进程发送,最终由哪一个主机的哪一个进程接收,也就是说,四元组标识了数据传递的方向。

我们前面也说过,IP和端口号的组合就能指定某个局域网内某个主机上的某个进程。大多数情况下,服务器和主机都不在一个局域网内。而数据又会经过路由器不断转发到它的上一层或下一层网络的路由器。

在每个局域网中,节点间都能使用一个四元组将数据转发到同局域网的另一个节点上,不同局域网中的四元组又是不一样的。

所以,我们是否可以在节点路由器将数据传输到另一个局域网的的时候,替换当前网络下使用的四元组,使其可以标明数据在另一个局域网内的发送方向。这样不就能做到数据在网络间从一个进程到另一个进程的发送了吗?

NAPT的工作便是如此,它会建立一个互为键值的四元组转换表,在数据进入不同的网段时,对应的四元组就会被替换进报文的数据内,以达到在另一个局域网内数据也能在不同主机进程间传递。

(2)数据的传输过程

这样说,还是有些不清晰。我们以数据从运营商路由器向公网和局域网内的收发为例,观察数据的传输过程。

首先,数据从家用路由器传递到运营商路由器。

假设家用路由器发送给运营商路由器一个数据,它的源IP和源端口为10.0.0.10:1025,目的IP和目的端口为163.221.120.9:80。这个四元组能够标识家用路由器和运营商路由器所在的局域网内数据传输的始末位置,所以这个数据被接收到了。

接着,数据从运营商路由器传递到服务器。

服务器将它收到的数据的源IP和源端口10.0.0.10:1025,目的IP和目的端口163.221.120.9:80构建一个四元组,储存为在映射表中。

此时,运营商服务器知道该数据要发给公网服务器,所以它也构建一个四元组。源IP和源端口为202.244.174.37:1025,目的IP和目的端口为163.221.120.9:80。它用这个四元组内的数据替换原来报头里的四个数据。这样,这个四元组能够标识家用路由器和运营商路由器所在的公网内数据传输的始末位置,所以这个数据也能被服务器接收到。

然后,服务器构建一个新的报文传回给运营商路由器。

服务器构建新报文,内部的四元组数据中,源IP和源端口为163.221.120.9:80,目的IP和目的端口为202.244.174.37:1025。这个四元组标识了公网中数据的传递始末位置,数据可以被运营商服务器接收。

最后,运营商服务器将数据发到家用路由器。

运营商服务器接收到服务器发来的数据。路由器在映射表中查找,发现这个数据的四元组信息能找到对应元素。

此时,运营商路由器就将公网中的四元组替换为局域网中的四元组,再次进行发送。此时,在局域网中,四元组的唯一性被保证,家用服务器也能接收到数据。

路由器通常情况下都带有NAT功能,否则无法完成内网和公网的IP地址转换问题,四元组的映射关系转换表也是由路由器自动维护的。

假设使用TCP协议,当连接建立时,路由器中就会生成这对通信双方的映射表项,断开连接后也会删除这个表项。

(3)NAPT的缺陷

由于NAPT技术依赖映射转换表与上下层网络通信,所以它有下面的不足:

  • 因为只有内网中的客户端给服务发送数据时,四元组的映射关系才会建立,服务器无法从公网主动给内网中的客户端发数据。换句话说,就是内网中的客户端必须先发数据给公网中的服务器,然后服务器才能向客户端发数据。
  • 转换表的生成、管理和销毁需要一定的开销,路由器会有一定的负担。
  • 通信过程中,一旦NAT设备出现异常,所有的TCP连接都会因出现问题而断开。

虽然NAT与NAPT技术确实由一定的问题,但其优势远大于不足。

二、代理服务器

1.正向代理和反向代理

代理模式分为正向代理和反向代理,二者有一定的区别。

举个例子,假如你在太原上大学,想买天津的十八街麻花。由于你每天还有课,不方便去天津买,而你正好有一个老同学在天津上大学。

那你就可以让他帮你去买,然后再给寄你。这个过程中,你同学扮演的就是正向代理的角色。过了一段时间,很多人都知道了这些好麻花是你的同学代购的,所以很多人也都去找你的同学买。而你的同学觉得来一单就去一次鼓楼的十八街总店太麻烦了,所以他就买了很多麻花囤起来。只要有订单来了,直接将家里的货发出去就好了。此时你同学扮演的就是反向代理的角色。

上面的例子虽然比较形象,但是放到网络上可能就不太好理解。我们在网络上再观察一下:

对正向代理而言:

假设你用学校的校园网去看电影《战狼2》,你的客户端向腾讯视频服务器发起请求。首先,你的请求会被学校的代理服务器先拦截下来,然后代理服务器会替你向腾讯视频服务器发起请求。

腾讯视频服务器收到代理服务器的请求后,将对应的电影资源响应给代理服务器。

代理服务器会做两件事,先将这个电影的响应缓存到代理服务器中,再将收到的响应转发给你的客户端。

你觉得挺好看,所以给你同学也推荐了这个电影。

你的同学也会用腾讯视频看这个电影,当他的客户端发起请求后,同样会被代理服务器拦截。

然后学校的代理服务器发现本地已经缓存了这部电影,所以学校的代理服务器就直接将电影的资源返回给客户端了。代理服务器也不会再向腾讯视频的服务器发起请求了。

由于你同学只经过了一次请求和响应,所以你的同学拿到电影资源的速度比比快得多,因为学校的代理服务器离你们更近。

对反向代理而言:

对于我们常用的APP,比如QQ、微信、淘宝、京东之类的。在同一时刻会有很多人同时访问它们的服务器,所以一台机器肯定是不够用的,为我们服务的是一个拥有大量机器的服务器机群。

比如说,当多个请求发送给淘宝服务器时,请求并不由机群中的某台服务器直接接收,而是由淘宝的反向代理服务器先接收。

然后,反向代理服务器会利用均衡策略,将他接收到的大量请求分发到机群内不同的服务器,保证请求压力平均分摊给每一台服务器。

这样的现象称为负载均衡。比如,Nginx就是一种用于实现负载均衡,支持大量线程并发访问的服务器。

这也解释了我们之前讲IP协议时,我们只会向一个公网内的主机发送数据的原因。而且对于用户而言,具体哪台服务器为你提供服务并不重要,只要用户能访问淘宝就可以了。

你可以简单理解为数据离用户近,代理服务器可以自己处理一部分请求,就是正向代理;数据离用户远,代理服务器只负责数据转发,而不负责请求处理,就是反向代理。

2.代理服务器的应用

(1)游戏加速器

在网上,我们总能看到各种各样的游戏加速器,它们的原理就是正向代理。

各个游戏加速器厂商在各个地区都会有自己的代理服务器,使用这个加速器打游戏得客户端都会先向这个代理服务器发送请求,然后代理服务器再将请求转发给游戏服务器。

请求的人多了,代理服务器收到的请求也就多了,同样代理服务器上也增加了许多这个游戏相关的缓存。所以,以后只要有人用加速器玩游戏,代理服务器就可以直接将自己缓存的数据发送给你。这样就完成了加速过程。

(2)科学上网

最开始重要的事情说三遍:翻墙属于违法行为,翻墙属于违法行为,翻墙属于违法行为!!!

《中华人民共和国计算机信息网络国际联网管理暂行规定》规定“计算机信息网络直接进行国际联网,必须使用邮电部国家公用电信网提供的国际出入口信道。任何单位和个人不得自行建立或者使用其他信道进行国际联网。”如违反上述规定,公安机关会责令停止联网,给予警告,可以并处15000元以下的罚款;有违法所得的,没收违法所得。

我们只在技术层面讨论该问题。

所谓科学上网,也称为翻墙,是指绕过相应的IP封锁、内容过滤、域名劫持、流量限制等,实现对网络内容的访问。

比如说,我们要想在国内访问谷歌、facebook、推特(现在改名叫X了)这些网站,我们是登不上去的。

由于国内的移动、联通、电信三大运营商设计了我们的网络,所以所有的数据都会先经过运营商然后再转发给我们访问的服务器。

由于我们申请这些网站在国内法律规定中是不允许访问的,所以运营商就会将你的请求拦截下来,你也就不能访问这些网站。

这一套拦截特定域名请求的处理逻辑就叫做防火墙。

如果你使用了VPN软件(梯子),就能支持你的主机访问这些网站。

梯子的原理就是反向代理。

在我国有一些地区是能访问外网的,比如说香港地区的机器就可以访问国际互联网。如果,有人在可访问外网的地区设立了一个服务器,这台服务器可以访问国际网络。再有人设计一个软件,允许你访问该服务器。此时就能支持用户访问国际互联网。

那数据是怎么传到外网的服务器上的?

首先,用户建立好VPN链接,向运营商发送了一份被加密的数据,比如说是一个访问外网的http请求。

运营商只拿到了一串密文,它也没有解密的密钥,根本不知道这是什么东西,所以将该数据放行。数据最终路由到这个可以访问外网的服务器,此时服务器将密文解密,并再次发送数据到外网的服务器。

外网服务器给代理服务器发来一个应答,代理服务器再次加密响应,再把响应转发给国内运营商,运营商依旧看不懂密文,再次放行。

此时,主机收到了应答,也就完成了对外网的访问。

最后,再次声明,遵守国家法律,翻墙违法!!!

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

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

相关文章

16、Python --案例实操:控制台打印【 菱形 】和 【 圆 】

目录 控制台打印菱形控制台打印圆 控制台打印菱形 # 控制台打印菱形# 层数 num 8 # 打印上半部分 for i in range(num):# 第一行if i 0:print( * (num - 1 - i) *)else:print( * (num - 1 - i) * (i * 2 - 1) * *)# 打印下半部分 for i in range(num - 1):if i num …

Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022

Qt重定向QDebug,自定义一个简易的日志管理类 Chapter1 Qt重定向QDebug,自定义一个简易的日志管理类0.前言1.最简单的操作运行结果2.实现一个简易的日志管理类 Chapter2 Qt::Qt Log日志模块Qt Log日志模块官方解释官方Demo思路 Chapter3 QT日志模块的个性…

Vue3 创建项目

1 桌面打开 CMD窗口,使用vue create 项目名创建项目。 2 选择Manually select features 自定义配置 3 选择配置:使用空格确认/取消,回车确定: Babel 降级处理 CSS Pre-processors CSS预处理器 Linter/Formatter 代码检查 4 选择vu…

「滚雪球学Java」:基础程序设计(章节汇总)

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!&#xf…

Vue3:将表格数据下载为excel文件

需求 将表格数据或者其他形式的数据下载为excel文件 技术栈 Vue3、ElementPlus、 实现 1、安装相关的库 下载xlsx 和 file-saver 库 npm install -S file-saver npm install -S xlsx引入XLSX库和FileSaver库 import XLSX from xlsx; import FileSaver from file-saver;…

华为OD机考算法题:高效的任务规划

题目部分 题目高效的任务规划难度难题目说明 你有 n 台机器编号为 1 ~ n,每台都需要完成一项工作, 机器经过配置后都能独立完成一项工作。 假设第 i 台机器你需要花 分钟进行设置, 然后开始运行, 分钟后完成任务。 现在&#x…

虹科培训 | 虹科携手PLCopen开展IEC 61131-3国际工程师培训

文章来源:虹科工业控制 阅读原文:https://mp.weixin.qq.com/s/MLYhBWiWx7qQSApx_3xhmA (一)课程背景 什么是IEC 61131-3? IEC 61131-3 是工业自动化行业唯一得到大量应用的组态编程语言国际标准;主导制定…

安卓端GB28181设备接入模块如何实现实时位置订阅(MobilePosition)

技术背景 实时位置(MobilePosition)订阅和上报,对GB28281设备接入终端尤其重要,如移动单兵设备、执法记录仪、智能安全帽、车载终端等,Android国标接入设备通过获取到实时经纬度信息,按照一定的间隔上报到…

引入二维码技术,易点易动全员盘点方案助力高效海量资产盘点

固定资产是企业重要的财务资源之一,而高效准确地进行海量固定资产盘点一直是企业管理的重要挑战。为了解决盘点过程中的繁琐和错误问题,易点易动固定资产管理系统引入了先进的二维码技术,并采用全员盘点方案。本文将详细介绍易点易动固定资产…

单目3D目标检测[基于深度辅助篇]

基于深度辅助的方法 1. Pseudo-LiDAR Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving康奈尔大学https://zhuanlan.zhihu.com/p/52803631 首先利用DRON或PSMNET从单目 (Monocular)或双目 (Stereo)图像获取对应的…

海外公司注册推广的9个实用技巧建议-华媒舍

在全球化的时代背景下,海外市场的开发对于企业来说是非常重要的战略决策。海外公司注册是进入海外市场的第一步,通过注册在海外的公司,企业可以获得更多的商业机会和巨大的价值。本篇文章将为您介绍海外公司注册推广的9个实用建议&#xff0c…

干洗店预约下单管理系统收衣开单拍照必备软件

随着生活水平的提高和节奏的加快,商务人士的衣物越来越多,但精力和时间却越来越少。于是,干洗店应运而生,在中国,几乎所有的中心城市干洗店都门庭若市。若每人每月需要干洗一套服装,一个城市每月则需干洗50…

Postgresql在jdbc处理bit字段的解决方案

问题: bit如果长度为1,则会默认为布尔型(1-true 0-false); bit如果长度大于1,则会默认为bit类型,但是代码中以前常用的两种set方式,会报错 第一种方式: ps.setObject(i1,…

vm_flutter

附件地址 https://buuoj.cn/match/matches/195/challenges#vm_flutter 可以在buu下载到。 flutter我也不会,只是这个题目加密算法全部在java层,其实就是一个异或和相加。 反编译 package k;import java.util.Stack;/* loaded from: classes.dex */ pu…

传智教育研究院重磅发布Java学科新研发《智慧养老》项目

在招聘Java开发人才的过程中,企业往往对候选人的项目经验有着严格的要求,项目经验成为顺利就业的重要敲门砖之一。而在数字化技术的学习中,如何让学员通过项目课程有效地积累实战开发经验,就成了数字化技术职业教育的一个重大难点…

EasyRecovery2024破解版数据恢复软件下载

当我们处理重要的文件数据时,遇到突然停电导致数据来不及保存,再次打开电脑后,此前处理的数据可能丢失,这无疑会影响我们的工作进度,数据恢复软件在此时就派上用场,那么下面就来具体介绍EasyRecovery软件的…

EasyRecovery2024破解版激活码

当我们处理重要的文件数据时,遇到突然停电导致数据来不及保存,再次打开电脑后,此前处理的数据可能丢失,这无疑会影响我们的工作进度,数据恢复软件在此时就派上用场,那么下面就来具体介绍EasyRecovery软件的…

5G与医疗:开启医疗技术的新篇章

5G与医疗:开启医疗技术的新篇章 随着5G技术的快速发展和普及,它已经在医疗领域产生了深远的影响。5G技术为医疗行业提供了更高效、更准确、更及时的通信方式,从而改变了医疗服务的模式和患者的体验。本文将探讨5G技术在医疗领域的应用场景、优…

10月《中国数据库行业分析报告》已发布,深度剖析甲骨文大会Oracle技术新趋势

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生…

k8s快速部署nacos2.2.0集群

nacos2.2.0集群部署。nacos-headless内部集群端口服务,nacos-service为了方便ingress转发提供给用户web界面操作,requiredDuringSchedulingIgnoredDuringExecution强制反亲和禁止同一个节点部署nacos实列。 1、数据库导入nacos的sql # 创建数据库 crea…