当前位置: 首页 > news >正文

46.NAT、代理服务、内网穿透

NAT(IP地址转换)

如果局域网内,多个主机访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的(通过同一个公网出入口路由器发的,用的同一个公网IP),如何判断数据要给哪个主机?

        NAPT转换表:通过IP+port建立映射关系

私有IP虽然可以重复,但是在一个子网中是唯一的!私有IP+port = 内网中总唯一一个进程。

公网IP具有全球唯一性,公网IP+port = 全网中唯一一个进程。

实例:

        客户端A 10.0.0.10:1025 向目标服务器 163.221.120.9:80(http协议) 发送数据,这时转换表就要记录下来:

        此时,服务器发送数据返回时,dst = 202.244.174.37:1025,就可以找到对应公网出入口路由器,然后通过映射关系再转换回:dst = 10.0.0.10:25 ,找到主机A。

        如果此时主机B 10.0.0.11:1025 也向目标服务器 163.221.120.9:80(http协议) 发送数据,转换表就要记录下来:

主机B对应的转换port可以是一个随机的数,只要不和主机A的port冲突就行了!(转化值只是用来标识唯一性的,port可以是随机值)

NAT的过程,不仅仅是源IP(内网IP的替换),端口号也可以进行替换!

转化表的左边和右边互为键值!

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

NAT技术的缺陷,由于NAT依赖这个转换表, 所以有诸多限制:

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

        用NAT技术,两个不同局域网的主机要通信,需要连接同一个公网IP的服务器,然后通过NAPT内网转发才能进行发消息。

代理服务

        正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。

        正向代理可以实现多种功能,如提高访问速度(对于响应的缓存机制)、隐藏客户端身份(以代理服务器身份发送和接收)、实施访问控制(禁域名,不做转发)等。

        反向代理服务器位于客户端和Web服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的Web服务器,并将Web服务器的响应返回给客户端。

应用场景:

  • 负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发到多个后端服务器上,以实现负载均衡。
  • 安全保护:反向代理服务器可以隐藏后端Web服务器的真实IP地址。
  • 缓存加速:反向代理服务器可以缓存后端Web服务器的响应内容
  • 内容过滤和重写:反向代理服务器可以根据配置的规则对客户端的请求进行过滤和重写,例如添加或删除请求头、修改请求路径等(URL重写、用户认证)
  • 动静分离:在大型网站中,通常需要将静态资源和动态资源分开处理。通过将静态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应,而无需再次向后端服务器发起请求。这可以大大提升静态资源的访问速度。
  • CDN(Content Delivery Network,内容分发网络)就是采用了反向代理的原理(CDN内部也是反向代理模式)。假设一个小型公司的网站有5000张图片,而这个公司的反向代理服务器处理这种静态资源压力比较大,就可以用CDN。将静态资源放在CDN上,反向代理服务器收到请求后交给CDN,CDN处理后直接返给客户端。

科学上网

如何区分代理模式是正向代理还是反向代理?

        看公网在代理服务器的左侧还是右侧。

        流程:发起请求,特殊客户端,识别请求,对于特定的请求做加密,经过运营商搭建的子网发送给服务器,服务器做解密,访问目标网址,带回结果,结果加密,经过运营商搭建的子网返回给特殊客户端,结果解密。

内网穿透和内网打洞

场景:公司内部主机用的是公司内网,家里面用的也是内网。如果回家后想远程访问公司主机,该如何做?

  • 步骤1:把本地某个端口,配置到 frp(内网穿透软件)上。例如本地的linux机器,ssh22号端口映射到8888端口(8888->22)(本地frp客户端会和frp云服务器建立连接,并绑定端口8888)
  • 步骤2:另一台主机上,直接访问frp云服务器的8888端口,就可以直接访问本地的linux机器的22号端口。

两个处于内网的主机想要通信,还有一种做法:内网打洞

        内网打洞原理:基于NAT技术缺陷,两台不同内网中的主机想要通信需要访问同一公网IP的主机。主机A向公网服务器发起请求,公网服务器收到记录IPA,主机B同样。公网服务器在将它们的IP地址进行调换(它们收到的应答srcIP就是对方的),这样就实现了A和B连接上了(person to person)

        实例:以直播平台为例:主机A要直播,如果让直播平台的服务器进行转发给对应看直播的客户端,那么直播平台的服务器压力就太大了。直播平台服务器可以利用内网打洞,将主机A发送的数据直接给到具体的看直播客户端,那么直播平台服务器压力就减轻了,同时它自身的流量消耗也就减少了(但由于这种做法使得本该有服务器消耗的流量,让运营商承担了,运营商可能不允许你进行内网穿透或者打洞同时,直接由主机A直播客户端主机承担发送多份数据给不同看直播的客户端主机,主机A自身压力也变大了

交换机

交换机是工作在数据链路层的设备,作用:划分碰撞域,减少碰撞的发生。

        实例:主机A向主机E发送报文,局域网内所有主机都会收到,检查MAC地址发现不是自己就会丢弃。交换机位于AE之间,它收到数据后,会记录下主机A的位置,并转发出去。正常工作了很久,假设交换机记录了所有主机的位置,当主机A向主机D发送数据时,交换机判定到A和D位于交换机的左侧,它就会把报文拦下,不再转发给右侧,减少了右侧的碰撞。

http://www.dtcms.com/a/419873.html

相关文章:

  • 网站平台建设规划西安最好的设计院排名
  • 基于Spring Boot与SSM的中药实验管理系统架构设计
  • 【Spring】Spring Boot 自动配置原理分析
  • git 的常用命令
  • 现在ui做的比较好的网站免费云手机无限时间版
  • 整体设计 逻辑系统程序 之2 Target 之1 靶点根治的逻辑体系深化与落地设计:从规则双轨到语言 - 知识桥梁
  • 网站php源码长沙设计公司都有哪些
  • 第一版代码
  • 2025年AI费控系统避坑指南:智能风控+预算管控能力对比
  • Windows的多路复用IOCP
  • 做网站的规范暴雪公司现状
  • 前端提效工具清单,常用前端效率工具推荐与开发提效实战经验
  • 做的网站怎么把技术支持去掉个人社保缴费年限怎么查询
  • 李宏毅机器学习笔记15
  • 数字化转型:开发者思维破局之道
  • 网站会员功能介绍营销背景包括哪些内容
  • 【NCS随笔】peripheral_hids_mouse例程修改为不使用PIN码绑定
  • 第三方软件验收测试:【AutoIt与Selenium结合测试文件上传/下载等Windows对话框】
  • 网站的二级目录是什么10个不愁销路的小型加工厂
  • K8S中关于容器对外提供服务网络类型
  • 建设网站需要虚拟空间嘛专业网站制作公司采用哪些技术制作网站?
  • 超声波水表:原理、实现与核心技术解析
  • 怎样 建设电子商务网站直播网站app开发
  • Nginx 核心功能配置:访问控制、用户认证、HTTPS 与 URL 重写等
  • 大模型显存占用完全指南:从训练到推理的计算公式与实战案例(建议收藏)
  • 惠州做网站采招网招标官网
  • 烟台做网站找哪家好哪个网站可以做海报
  • 【星海出品】计算机科学之磁盘数据读取时间逻辑
  • 模力通AI风格仿写 让公文写作告别“风格焦虑”
  • 构建AI智能体:四十七、Agent2Agent多智能体系统:基础通信与任务协作实现