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

NAT、服务代理、内网穿透

文章目录

  • NAT技术
  • NAT IP转换过程
    • NATP
    • NAT的优点
    • NAT的缺点
  • 代理服务器
    • 正向代理
    • 反向代理
  • 内网穿透和内网打洞
    • 内网穿透
    • 内网穿透

NAT技术

NAT技术即网络地址转换技术。用于将私有IP地址转换为公共IP地址,以便在互联网或其他外部网络中通信。为了解决IPv4协议下IP地址不足的问题,我们把IP地址分为私有IP和公有IP。具体的,在不用局域网中的两台主机,其私有IP可以是一样的,这样就有效的解决了IP地址不够的问题。下面具体介绍NAT技术工作原理。

NAT IP转换过程

在这里插入图片描述

  • NAT 路由器将源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37
  • NAT 路由器收到外部的数据时, 又会把目标 IP 从 202.244.174.37 替换回10.0.0.10;
  • 在 NAT 路由器内部, 有一张自动生成的, 用于地址转换的表
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NATP

NATP是NAT技术的一种具体类型。如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的 IP 都是相同的. 那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候 NAPT 来解决这个问题了. 使用 IP+port 来建立这个关联关系
在这里插入图片描述

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

NAT的优点

  • 节省公共IP地址:NAT允许多个设备共享一个或少量的公共IP地址,从而缓解了IPv4地址短缺的问题。
  • 提高网络安全性:由于外部网络无法直接访问内部网络的私有IP地址,NAT增加了网络的安全性,外部设备无法直接与内部设备通信,除非通过NAT设备的配置允许。
  • 支持私有网络的扩展:使用NAT,可以在内部网络中使用私有IP地址,这些地址可以重复使用于不同的网络,从而支持网络的扩展。

NAT的缺点

  • 增加延迟,NAT设备需要处理每个通过的数据包,可能会增加网络的处理延迟,尤其是在高流量的网络中。
  • 无法从 NAT 外部向内部服务器建立连接
  • 通信过程中一旦 NAT 设备异常, 即使存在热备, 所有的 TCP 连接也都会断开

代理服务器

正向代理

正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等
在这里插入图片描述

反向代理

反向代理服务器是一种网络架构模式,其作为 Web 服务器的前置服务器,接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客户端。这种架构模式可以提升网站性能、安全性和可维护性等。

在这里插入图片描述

内网穿透和内网打洞

内网穿透

内网穿透是一种技术手段,用于使处于不同内网中的设备能够通过外部网络进行通信。内网设备通常使用私有IP地址,这些地址在互联网中不可路由,因此需要通过NAT或防火墙的转换来实现通信。内网穿透通常借助第三方服务器或中介(如云服务器)来实现。简单来说,主机A和主机B处于不同的内网中,主机A想要和主机B进行通信,可以先让主机B和服务器C建立连接,主机A再和服务器C建立连接,这样就能通过服务器来实现主机A和主机B的通信了。
在这里插入图片描述

内网穿透

内网打洞是一种技术,用于在两个都处于NAT后面的设备之间建立直接的点对点(P2P)连接,而无需借助中介服务器传输数据。这种技术常用于实时通信、文件共享等需要低延迟的应用场景。

主机A先访问服务器C,于是服务器就拿到了主机A的出入口路由器的地址加端口号的映射,主机B也是一样。然后服务器把A的出入口入口器的地址交给B,把B的出入口路由器的地址交给A.此后,主机AB就能直接进行连接了而不需要服务器中介。
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • WPF篇(3)- WrapPanel控件(瀑布流布局)+DockPanel控件(停靠布局)
  • 全新博客X主题/简约WordPress主题模板/主题巴巴/免授权版源码+自适应设计
  • Vue+Element Plus后台管理主界面搭建实现
  • MySQL:基本概念,DDL语句,数据库约束,索引视图
  • 低代码开发
  • 【MySQL】数据基本的增删改查操作
  • 聊聊使用场景法进行性能测试
  • 科技赋能生活——便携气象站
  • 假如有一个嵌套集合,怎么通过stream流将集合放到一个集合之中?
  • MySQL数据库基础:约束
  • 【Android】手写笔适配
  • Rest风格快速开发
  • 安卓默认混淆规则文件的区别
  • 【设计模式】六大原则-上
  • SQL面试题练习 —— 计算用户首单是即时单的比例
  • [nginx文档翻译系列] 控制nginx
  • canvas 高仿 Apple Watch 表盘
  • ES6 学习笔记(一)let,const和解构赋值
  • ES学习笔记(12)--Symbol
  • Idea+maven+scala构建包并在spark on yarn 运行
  • MySQL主从复制读写分离及奇怪的问题
  • Node项目之评分系统(二)- 数据库设计
  • sublime配置文件
  • 从setTimeout-setInterval看JS线程
  • 大整数乘法-表格法
  • 搞机器学习要哪些技能
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 简单实现一个textarea自适应高度
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 日剧·日综资源集合(建议收藏)
  • - 转 Ext2.0 form使用实例
  • FaaS 的简单实践
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # Apache SeaTunnel 究竟是什么?
  • #include到底该写在哪
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #传输# #传输数据判断#
  • (09)Hive——CTE 公共表达式
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)Android布局类型(线性布局LinearLayout)
  • .bat批处理(六):替换字符串中匹配的子串
  • .net 7 上传文件踩坑
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net/c# memcached 获取所有缓存键(keys)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net小白的大学四年,内含面经
  • /etc/fstab和/etc/mtab的区别
  • :“Failed to access IIS metabase”解决方法