NAT/代理服务器/内网穿透

目录

一 NAT技术

二 内网穿透/内网打洞

三 代理服务器


一 NAT技术

跨网络传输的时候,私网不能直接访问公网,就引入了NAT能讲私网转换为公网进行访问,主要解决IPv4(2^32)地址不足的问题。

1. NAT原理

当某个内网想访问公网,就必须先找到处于同一个网段的出入口路由器,而内网又不能暴露在公网上,所以当IP地址到达路由器时,路由器会把源IP转换成路由器的WAN口IP,并和源IP进行映射,这里他们互为 key <=> val,当服务器回显时,填充目的服务器IP地址,也就是之前经过转换后的IP地址,源地址填服务器的IP地址,在路由到目的IP所在的路由器,并由该路由器进行查映射表,查到转换之前的私有IP,在进行转发。

示例:

假设路由器的IP地址是202.244.174.37,源主机IP为10.0.0.10,目的IP地址为163.221.120.9

1. 经过路由器转换进行映射:

源:    10.0.0.10 <=> 路由器:202.244.174.37

目的:163.221.120.9 <=> 路由器:163.221.120.9

2. 经过服务器响应并路由回来:

服务器填充源IP:163.221.120.9,目的IP:202.244.174.37

路由器进行查表:202.244.174.37,查到得到:10.0.0.10,并交付给最初的主机。

3. 如果有2台主机同时向同一个目标服务器,那么路由器进行替换的时候就是:

源:    10.0.0.10 <=> 路由器:202.244.174.37

源:    10.0.0.11 <=> 路由器:202.244.174.37

这时就有2对一样的key了,后面的key会把前面的key覆盖掉,导致一方的主机的请求响应给后一个主机了,针对这个问题,路由器不仅要保存IP地址还要保存端口号,并让后来的端口号++,这样后续响应回来的数据虽然IP地址重复了,但端口号不一样,也就解决了多台主机访问同一资源映射导致的问题了,所以路由器不仅要缓存IP地址也要缓存端口号。

4. 这种把源IP地址/端口进行替换并建立映射就是NAT技术。

二 内网穿透/内网打洞

1. 前置

1. 正常主机A访问服务器进行一系列的NAT转换最终得到响应。

2. 那么一开始映射表没有服务器能不能直接访问主机A,不能,私网不能出现在公网上,同样的不同子网的内网最开始也不能直接通信。

2. 内网穿透

当B访问B自己的服务器建立映射表,并且服务器将来把收到的报文在转发到B自己,此时A访问这个服务器,服务器就会把A的报文转发到B,之前已经建立了B到服务器的映射,现象就是A直接穿透到了B,也就是内网穿透。

2. 内网穿透

这种通过得到对方转换后的IP地址,并且对方已经建立了映射表,后续就可以不通过公网服务器,直接路由到对方的路由器,因为对方已经和路由器建立了映射,发送方拿映射后的IP地址就能直接访问到对方建立映射表的路由器,这种不通过公网,直接从一个路由器跳到另一个路由器的技术也就是内网打洞,类似对方的路由器打了个洞,让发送方直接进去。

三 代理服务器

1. 正向代理

多个主机访问外网首先会经过代理服务器,由该服务器部署的某些服务帮你访问并响应回去,为什么要这么做?统一管理这些主机,比如访问非法网站,陌生的IP地址就直接不做转发,请求也就失败了。如果有多台主机访问同一个静态资源,代理服务器也能缓存,收到请求直接返回提高效率。当进行转发的时候把主机的IP替换成代理服务器的IP地址,也能保护主机的身份。某个主机资源开销高,就限制这台主机的资源速率,比如控制下载速度等。

2. 反向代理

发送方主机请求打到代理服务器,由代理服务去分配给接收方主机,比如采用轮询,随机分配等策略,避免某一台主机压力爆满,而其他的一直空闲,这种技术叫做负载均衡,当然也能保护客户端的身份,缓存等。

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

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

相关文章

Git的安装和配置(idea中配置Git)

一、Git的下载和安装 前提条件&#xff1a;IntelliJ IDEA 版本是2023.3 &#xff0c;那么配置 Git 时推荐使用 Git 2.40.x 或更高版本 下载地址&#xff1a;CNPM Binaries Mirror 操作&#xff1a;打开链接 → 滚动到页面底部 → 选择2.40.x或更高版本的 .exe 文件&#xf…

【教程】Docker更换存储位置

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 背景说明 更换教程 1. 停止 Docker 服务 2. 创建新的存储目录 3. 编辑 Docker 配置文件 4. 迁移已有数据到新位置 5. 启动 Docker 服务 6…

PostgreSQL 配置设置函数

PostgreSQL 配置设置函数 PostgreSQL 提供了一组配置设置函数&#xff08;Configuration Settings Functions&#xff09;&#xff0c;用于查询和修改数据库服务器的运行时配置参数。这些函数为数据库管理员提供了动态管理数据库配置的能力&#xff0c;无需重启数据库服务。 …

sql server 2019 将单用户状态修改为多用户状态

记录两种将单用户状态修改为多用户状态&#xff0c;我曾经成功过的方法&#xff0c;供参考 第一种方法 USE master; GO -- 终止所有活动连接 DECLARE kill_connections NVARCHAR(MAX) ; SELECT kill_connections KILL CAST(session_id AS NVARCHAR(10)) ; FROM sys.dm_ex…

主机A向主机B发送一个长度为L字节的文件,假设TCP的MSS为1460字节,则在TCP的序号不重复使用的前提下,L的最大值是多少?

&#x1f4d8;题干回顾&#xff1a; 主机A向主机B发送一个长度为L字节的文件&#xff0c;假设TCP的MSS为1460字节&#xff0c;则在TCP的序号不重复使用的前提下&#xff0c;L的最大值是多少&#xff1f; 这个问题关键在于“TCP序号不重复使用”。 ✅ 正确答案是&#xff1a;D.…

一次因校时服务器异常引起的性能差异分析

一次因校时服务器异常引起的性能差异分析 一.背景知识1. **TSC 频率**:硬件级高精度计时2. **gettimeofday**:用户态时间接口3. **adjtimex**:系统时钟的软件校准4. **`clock_adjtime(CLOCK_REALTIME, {modes=ADJ_TICK})`**: 用于修改系统时钟中断间隔(`tick` 值)。5. 关系…

acwing 4275. Dijkstra序列

题目背景 输入 输出 完整代码 #include<bits/stdc.h> using namespace std; int n,m,k,a[1010],dist[1010],g[1010][1010],st[1010];int dij(int u){memset(st,0,sizeof st);memset(dist,0x3f,sizeof dist);dist[u]0;for(int i0;i<n;i){int ta[i];for(int j1;j<n;…

[思维模式-37]:什么是事?什么是物?什么事物?如何通过数学的方法阐述事物?

一、基本概念 1、事&#xff08;Event) “事”通常指的是人类在社会生活中的各种活动、行为、事件或情况&#xff0c;具有动态性和过程性&#xff0c;强调的是一种变化、发展或相互作用的流程。 特点 动态性&#xff1a;“事”往往涉及一系列的动作、变化和发展过程。例如&a…

Linux常用命令40——alias设置命令别名

在使用Linux或macOS日常开发中&#xff0c;熟悉一些基本的命令有助于提高工作效率&#xff0c;alias命令来自英文单词alias&#xff0c;中文译为“别名”&#xff0c;其功能是设置命令别名信息。我们可以使用alias将一些较长的命令进行简写&#xff0c;往往几十个字符的命令会变…

310. 最小高度树

题目 树是一个无向图&#xff0c;其中任何两个顶点只通过一条路径连接。 换句话说&#xff0c;任何一个没有简单环路的连通图都是一棵树。 给你一棵包含 n 个节点的树&#xff0c;标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表&#xff08;每一个边都…

Axure 纵向滚动隐藏滚动条 Axure 滑动开关(属性开关)on-off

文章目录 I 滑动开关(属性开关)操作说明block 矩形操作说明round小圆圈操作说明on-off 属性开关组合操作说明II Axure 纵向滚动隐藏滚动条思路包含图片的动态面板1操作说明包含动态面板的顶级动态面板I 滑动开关(属性开关)操作说明 block 矩形操作说明 在画布中添加一个矩形…

MySQL之基础事务

目录 引言&#xff1a; 什么是事务&#xff1f; 事务和锁 mysql数据库控制台事务的几个重要操作指令&#xff08;transaction.sql&#xff09; 1、事物操作示意图&#xff1a; 2.事务的隔离级别 四种隔离级别&#xff1a; 总结一下隔离指令 1. 查看当前隔离级别​​ …

VS Code 重磅更新:全新 MCP 服务器发现中心上线

目前各种 MCP 客户端层出不穷&#xff0c;但是安装 MCP 服务却格外繁琐&#xff0c;尤其 VS Code 中无界面化的 MCP 服务配置方式&#xff0c;效率较低。 Copilot MCP 是一个 VS Code 插件&#xff0c;在今天发布的新版本中&#xff0c;插件支持了自动发现与安装开源 MCP 服务…

智能家居“心脏“升级战:GD25Q127CSIG国产芯片如何重构家庭物联生态

在智能家居设备出货量突破10亿台的2023年&#xff0c;家庭网关正经历着前所未有的技术革新。作为连接云端与终端设备的中枢神经&#xff0c;智能网关的存储芯片选择直接决定着整个智能生态系统的运行效率。在这场技术升级浪潮中&#xff0c;兆易创新GD25Q127CSIG串行闪存芯片主…

R语言机器学习算法实战系列(二十五)随机森林算法多标签分组分类器及模型可解释性

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程内容加载必要的R包(带详细注释)1. 加载数据2. 数据分割(按Species分层抽样)3. 数据预处理配方4. 创建随机森林模型(多分类)5. 创建工作流6. 设置交叉验证和参数调优7. 参…

速查 Linux 常用指令 II

目录 一、网络管理命令1. 查看和配置网络设备&#xff1a;ifconfig1&#xff09;重启网络命令2&#xff09;重启网卡命令 2. 查看与设置路由&#xff1a;route3. 追踪网络路由&#xff1a;traceroute4. 查看端口信息和使用情况1&#xff09;netstat 命令2&#xff09;lsof 命令…

关于github使用总结

文章目录 一、本地使用git&#xff08;一&#xff09;创建一个新的本地Git库首先在本地创建一个新的git仓库然后进行一次初始提交提交过后就可以查看提交记录 &#xff08;二&#xff09;在本地仓库进行版本恢复先执行 git log 查看项目提交历史使用 git checkout 恢复版本 二、…

【Python】Python 单例模式 8 大核心应用场景深度解析(2025 新版)

单例模式&#xff08;Singleton Pattern&#xff09;作为一种经典的设计模式&#xff0c;始终保持着重要的工程价值。 本文着重于单例模式的主要核心应用场景。 至于实现方法&#xff0c; 晚些时候发出。 一、配置管理器 全局配置信息管理是单例模式最典型的应用场景。通过单…

计算机网络网络层(下)

一、互联的路由选择协议&#xff08;网络层控制层面内容&#xff09; &#xff08;一&#xff09;有关路由选择协议的几个概念 1.理想的路由算法 &#xff08;1&#xff09;理想路由算法应具备的特点&#xff1a;算法必须正确和完整的&#xff0c;算法在计算上应简单&#x…

云存储桶的“公开陷阱”|渗透测试中如何利用与防御配置错误的存储服务

引言 云存储服务&#xff08;如AWS S3、阿里云OSS、Google Cloud Storage&#xff09;因便捷性被企业广泛使用&#xff0c;但权限配置错误却成为近年来数据泄露的重灾区。 攻击者无需复杂漏洞&#xff0c;仅需一个公开链接即可下载敏感数据。本文将深入解析这类漏洞的渗透…