NAT 代理服务器

文章目录

  • 1. NAT
  • 2. 内网穿透
  • 3. 内网打洞
  • 4. 代理服务器
    • 正向代理服务器
    • 反向代理服务器
  • 5. DNS
  • 6. ICMP
  • 7.测试内网穿透

1. NAT

ip协议章节,我们说报文转发给路由器时,由于私有IP地址不能出现在公网中,路由器会将报文源IP地址替换为路由器的WAN口IP地址,这个过程我们称为NAT转换

NAT技术是路由器的一个重要功能,缓解了IP地址不足的问题,因为它允许不同私网主机的IP地址可以相同;公网IP地址要求唯一,但私有IP地址不要求

既然源IP地址被替换了,应答该如何返回到源主机呢?

路由器在对源IP地址替换时,还会保存源IP地址与路由器WAN口IP地址的映射关系,形成NAPT,我们简称为NAT转换表

在这里插入图片描述

私网内的主机第一次向公网发送报文时,映射关系就会保存在NAPT

如果同一局域网内有多台主机向同一服务器发送报文,由于它们的上层路由器都是同一个,应答返回时怎么知道对于哪台主机呢?因此,映射关系采用IP地址 + 端口号的方式

这种映射关系由路由器自主维护,使用tcp,建立连接时,会生成NAPT,断开连接,销毁NAPT

NAT技术的缺陷:

  1. 外网不能直接访问私网IP地址,因为路由器没有映射关系,报文到达路由器时不知道往哪走
  2. NAPT的生成和销毁都需要额外的开销
  3. 一旦NAT设备(路由器)异常,所有连接都断开

现在,我们了解了NAT技术,就能解释平时上网时的出现的现象:

  1. 为什么使用QQ等聊天软件与朋友聊天,必须先登上QQ?
  2. 为什么不同局域网内的两台主机不能直接通信?

所谓登上QQ,就是连接上了公网中的QQ服务器,双方都连上QQ,私网到公网的映射关系建立,消息发给服务器,服务器也就能将消息从公网发送到私网中

在这里插入图片描述

不同局域网内的两台主机不能直接通信,因为路由器没有相应的映射关系

在这里插入图片描述

2. 内网穿透

以Windows作为client,连接云服务器上的服务,发送消息,将源主机的IP地址打印出来,会发现打印出来的IP地址与Windows主机的IP地址不同

在这里插入图片描述

根据学过的内容,最终将报文转发给云服务器的是运营商的路由器,因此,云服务器中打印的实际上是运营商路由器的IP地址

借此,我们可以引出新的技术:内网穿透、内网打洞

在这里插入图片描述

首先,B连接云服务器,路由器建立了对应的映射关系;其次,在云服务器上部署一种服务,该服务将所有发送到云服务器指定端口的报文全部转交给B,由B处理报文并将应答返回给云服务器,再由云服务器将应答返回,这样就完成了两个私网之间的通信,我们把这种技术叫做内网穿透

这种技术有何作用呢?

一般配置好的云服务很贵,这样做就能使用一台便宜的云服务器,让另一台主机完成复杂的工作

有时,我们也需要远程办公,比如B是你家中的主机,A是你在出差地的主机,这样就能在远方访问到家中的主机,完成工作

3. 内网打洞

与内网穿透相对应的技术还有内网打洞

在这里插入图片描述

由于云服务器能得知主机运营商路由器的IP地址,如果两台主机连接同一云服务器,云服务器就得知双方运营商路由器的IP地址;此时,如果云服务器将B运营商路由器IP地址发给A,将A的发给B;之后,A要与B通信,发送报文都往B的运营商路由器发,由于B已经连接过云服务器,路由器中NAPT就有对应的映射关系,报文也就能正确到达B,同理,B向A的运营商路由器发送报文也能正确到达A

同样,我们也能完成不同私网的主机之间的通信

内网打洞有何用呢?

例如直播,数据直接发给对方运营商路由器,一样能发送给对方,而不再需要由服务器进行发送了,大大减少了服务器的压力

有些视频软件,会发现下载视频非常快,如果B要下载某个视频,服务器会先查找距离B主机最接近且有相应资源的主机,如果找到了,B直接从对方主机下载该视频

4. 代理服务器

正向代理服务器

在这里插入图片描述

工作原理:

client要访问公网,先将请求发送给自身子网中的代理服务器,由代理服务器请求,应答也是发送给代理服务器,由代理服务器再返回应答给client

功能:

  1. 缓存:代理服务器能够缓存部分静态资源,下次client如果访问相同的数据,代理服务器直接应答即可
  2. 内容过滤:外网想要访问私网中的主机,必须经过代理服务器,代理服务器就能对公网的不良信息过滤
  3. 访问控制:如果client想要访问非法网址,代理服务器可以直接拦截
  4. 隐藏客户端身份:由于请求是由代理服务器请求的,一定程度上隐藏了client的身份,保护client隐私

**应用场景:**学校的校园网

反向代理服务器

在这里插入图片描述

工作原理:

client发送给服务器的请求,最先到达反向代理服务器,由反向代理服务器选择分配给哪台服务器进行处理请求,并将应答返回给client

功能:

  1. 负载均衡:由反向代理服务器合理规划每台服务器的使用,让每台主机都"有事可做"
  2. 安全保护:私网服务器一般不暴露在公网上,隐藏服务器的IP地址,我们平时使用的云服务器上的公网IP地址可能就是反向代理服务器的IP地址,对client的请求进行过滤
  3. 缓存:反向代理服务器可以缓存服务器的响应内容,对于client重复的请求,可以从缓存中获取

NAT与代理服务器的区别:

  1. 应用上:NAT技术解决的是IP地址不足的问题,代理服务器则是一种具体应用
  2. 底层上:NAT工作在网络层,代理服务器工作在应用层
  3. 部署位置上:NAT一般部署在防火墙、路由器上,代理服务器则是一个软件程序,一般部署在服务器上
  4. 使用范围上:NAT一般在局域网的出口处,代理服务器可以在局域网、广域网等地方

代理服务器还有一个应用:翻墙

在这里插入图片描述

5. DNS

DNS是一套解析域名到IP地址的系统

我们说过,访问任何服务器都要以IP地址 + 端口号的方式,但IP地址对于普通用户来说非常不友好,于是就产生域名,它能增加用户的体验

最开始,由hosts文件维护主机名与IP地址的映射关系,这样做,非常的不方便:

  1. 一旦由新主机连接到互联网,或主机IP地址变化,就要到信息中心更改hosts文件
  2. 计算机需要定期更新hosts文件才能正常上网

于是,就有了DNS系统,域名解析过程:

在这里插入图片描述

域名www.baidu.com,其中com是一级域名,表示盈利组织,还有net(网络提供商)、org(非盈利组织),baidu则是二级域名

使用dig指令,能查看DNS的过程

在这里插入图片描述

如果访问过某个网址,本地DNS服务器也会缓存IP地址

在这里插入图片描述

6. ICMP

ICMP是网络层协议,不是用来传输数据的,而是用来网络问题定位,网络问题诊断的

在这里插入图片描述

由于IP协议不保证可靠性,如果IP报文丢包,IP协议不能通知传输层以及丢包的原因

ICMP的功能:

  1. 确认IP报文成功到达目标主机
  2. 通知报文丢弃的原因

在这里插入图片描述

需要注意的是:ping命令是基于ICMP的,不经过传输层,由OS直接调用网络层接口发送,因此,该命令也就没有端口号

在这里插入图片描述

traceroute命令基于ICMP,打印主机到目标经历过的路由器

在这里插入图片描述

7.测试内网穿透

使用frp软件测试内网穿透,将虚拟机作为frpc,将云服务器作为frps

在这里插入图片描述

在这个过程中,Windows主机会被当成路由器,构建子网,虚拟机是该子网中的一台主机

在这里插入图片描述

下载frp并拷贝到云服务器和虚拟机上

在这里插入图片描述

注意:由于公网不能访问私有IP地址,只能从虚拟机向云服务器拷贝

在这里插入图片描述

在这里插入图片描述

启动服务端和客户端

在这里插入图片描述

在这里插入图片描述

可以看到,frps进程会有两个端口号,8888是虚拟机的连接,8081是未来client向该端口发送的报文都会转交给虚拟机上的服务的连接

确保虚拟机上有sshd服务,也就是远程登录服务,使用client向云服务器的8081端口发送ssh连接,输入用户名密码后,会发现登录的是虚拟机

如果想在虚拟机上部署多个服务,可以继续添加配置文件

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python数据可视化-Pandas

文章目录 一. Pandas数据可视化简介二. Pandas 单变量可视化1. 柱状图2. 折线图3. 面积图4. 直方图5. 饼图 三. Pandas 双变量可视化1. 散点图2. 蜂巢图3. 堆叠图4. 折线图 一. Pandas数据可视化简介 pandas库是Python数据分析的核心库 它不仅可以加载和转换数据,还…

【NLP 18、新词发现和TF·IDF】

目录 一、新词发现 1.新词发现的衡量标准 ① 内部稳固 ② 外部多变 2.示例 ① 初始化类 NewWordDetect ② 加载语料信息,并进行统计 ③ 统计指定长度的词频及其左右邻居字符词频 ④ 计算熵 ⑤ 计算左右熵 ​编辑 ⑥ 统计词长总数 ⑦ 计算互信息 ⑧ 计算每个词…

【Elasticsearch】配置分片分配到指定节点

配置分片分配到指定节点 参考文章:https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html 两种方式:根据节点属性分配和根据节点名称分配。 测试环境 tar xvf elasticsearch-7.17.25-linux-x86_64.tar.gz…

1. Doris分布式环境搭建

一. 环境准备 本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上,Frontend部署3台组成高可用,Backend部署3个节点,组成3副本存储。 主机IP操作系统FrontendBackendhadoop1192.168.47.128Centos7Foll…

计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

gesp(C++四级)(11)洛谷:B4005:[GESP202406 四级] 黑白方块

gesp(C四级)(11)洛谷:B4005:[GESP202406 四级] 黑白方块 题目描述 小杨有一个 n n n 行 m m m 列的网格图,其中每个格子要么是白色,要么是黑色。对于网格图中的一个子矩形,小杨认为它是平衡的…

在Mac上使用 Docker 构建一个 noVNC 环境并运行 MyCobot

本文展示了Mycobot 280 M5 上的 Mycobot 280 M5 moveit2 模拟环境,以及详细介绍了使用 Docker 在 macOS(arm64)上构建 moveit2 环境的步骤。 一、引言 这篇文章主要内容是关于如何在 Ros2 环境中构建在 Mac 上模拟 Mycobot 280 M5 的环境。 …

c语言提供后端,提供页面显示跳转服务

后端代码: #define SERVER_IP_ADDR "0.0.0.0" // 服务器IP地址 #define SERVER_PORT 8080 // 服务器端口号 #define BACKLOG 10 #define BUF_SIZE 8192 #define OK 1 #define ERROR 0#include <stdio.h> #include <stdlib.h> #include <st…

AnaConda下载PyTorch慢的解决办法

使用Conda下载比较慢&#xff0c;改为pip下载 复制下载链接到迅雷下载 激活虚拟环境&#xff0c;安装whl&#xff0c;即可安装成功 pip install D:\openai.wiki\ChatGLM2-6B\torch-2.4.1cu121-cp38-cp38-win_amd64.whl

Sentinel服务保护 + Seata分布式事务

服务保护 【雪崩问题】微服务调用链路中某个服务&#xff0c;引起整个链路中所有微服务都不可用。 【原因】&#xff1a; 微服务相互调用&#xff0c;服务提供者出现故障。服务调用这没有做好异常处理&#xff0c;导致自身故障。调用链中所有服务级联失败&#xff0c;导致整个…

六、Angular 发送请求/ HttpClient 模块

一、应用 HttpClient 模块 angular/common/http 中的 HttpClient 类基于浏览器提供的 XMLHttpRequest 接口。要想使用 HtpClient 模块&#xff0c;就要先导入 Anqular 的 HttpClientModule。大多数 Web 应用程序都会在根模块 AppModule 中导入它。 编辑 src/app/app.module.ts…

CompletableFuture // todo

相比较所有代码都在主线程执行&#xff0c;使用Future的好处&#xff1a;利用服务器多核、并发的优势。 不足&#xff1a; 开启没有返回值的异步线程&#xff1a; 1、runAsync 使用lambda表达式&#xff1a; 开启有返回值的异步线程&#xff1a; 1、supplyAsync 异步任务中的…

css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

arcgisPro加载天地图(CGCS2000)影像

1、注册天地图账号&#xff1b; 2、申请key&#xff1b; 3、添加WMTS服务器。 这里已经办好了前两步&#xff0c;下面详细介绍最后一步。 添加WMTS服务器。 在天地图网站&#xff0c;找到如下页面&#xff0c; 复制网址&#xff0c;如&#xff1a;http://t0.tianditu.gov.cn…

继承(7)

大家好&#xff0c;今天我们继续来学习一下继承的知识&#xff0c;这方面需要大家勤动脑才能理解&#xff0c;那么我们来看。 1.9 protected关键字 在类和对象章节中&#xff0c;为了实现封装特性,java中引入访向限定符,主要限定:类或者类中成员能否在类外和其他包中被访问. …

ModuleNotFoundError: No module named ‘podm.metrics‘报错等解决方法

ModuleNotFoundError: No module named podm.metrics’报错等解决方法 podm.metrics 在运行时报错&#xff1a; ModuleNotFoundError: No module named ‘podm.metrics’ 安装了podm后还是报错 解决方法&#xff1a; 查看安装位置 查看podm的安装位置&#xff0c;并打开到该…

HDFS异构存储和存储策略

一、HDFS异构存储类型 1.1 冷、热、温、冻数据 通常&#xff0c;公司或者组织总是有相当多的历史数据占用昂贵的存储空间。典型的数据使用模式是新传入的数据被应用程序大量使用&#xff0c;从而该数据被标记为"热"数据。随着时间的推移&#xff0c;存储的数据每周…

sklearn-逻辑回归-制作评分卡

目录 数据集处理 分箱 分多少个箱子合适 分箱要达成什么样的效果 对一个特征进行分箱的步骤 分箱的实现 封装计算 WOE 值和 IV值函数 画IV曲线&#xff0c;判断最佳分箱数量 结论 pd.qcut 执行报错 功能函数封装 判断分箱个数 在银行借贷场景中&#xff0c;评分卡是…

中学综合素质笔记3

第一章职业理念 第三节 教师观 考情提示&#xff1a; 单选题材料分析题 学习要求&#xff1a; 理解、 识记、 运用 &#xff08;一&#xff09;教师职业角色的转变&#xff08;单选材料分析&#xff09; 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…

【Linux】设备驱动中的ioctl详解

在Linux设备驱动开发中&#xff0c;ioctl&#xff08;输入输出控制&#xff09;是一个非常重要的接口&#xff0c;用于用户空间应用程序与内核空间设备驱动之间进行通信。通过ioctl&#xff0c;应用程序可以发送命令给设备驱动&#xff0c;控制设备的行为或获取设备的状态信息。…