NAT技术介绍+缺陷(内网穿透+工具),NAPT(介绍,替换过程,原理,NAT转换表)

2024-09-05 17:44

本文主要是介绍NAT技术介绍+缺陷(内网穿透+工具),NAPT(介绍,替换过程,原理,NAT转换表),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

NAT技术

介绍

NAT转换表

引入

介绍

NAPT技术介绍 

NAPT替换过程

NAPT原理

注意点

NAT缺陷

无法直接访问其他内网主机

内网穿透

工具

其他 


NAT技术

介绍

NAT 是一种网络技术,它允许在一个公共 IP 地址和多个私有 IP 地址(入口路由器的wan口地址 和 私网内的私有ip)之间进行转换

  • 目前解决ip地址不足的最主要手段
  • 路由器的重要功能之一

私有ip(介绍,地址范围),私网和公网的关系(访问外部网站的过程,NAT技术)-CSDN博客

NAT转换表

引入

如果局域网内有多台主机请求同一个服务器,经过NAT技术,会在入口路由器处转换ip地址

  • 源ip 替换成 路由器的wan口ip地址

但是,在响应返回的过程中,当路由到入口路由器处时,就会出现多条[目的ip]相同的报文

  • 该如何确定究竟发送局域网内哪台主机呢?
  • 实际上,路由器内会形成一张转换表

介绍

NAT 转换表是路由器用来管理网络地址转换过程的一个数据表

  • 私有源ip+源端口,目的ip+目的端口 -> 公有源ip+源端口,目的ip+目的端口
  • 简单来说就是,建立了[内网使用的套接字->公网使用的套接字]的映射关系

以上过程叫做NAPT技术,NAPT是NAT的一种形式/类型

NAPT技术介绍 

NAPT(Network Address Port Translation,网络地址端口转换)是一种 NAT(网络地址转换)技术的具体实现

  • 用于允许多个内网设备通过一个公共 IP 地址与外部网络进行通信
  • 它不仅仅转换 IP 地址,还涉及到端口号的转换,以便管理和区分不同的网络连接

NAPT替换过程

  • 源ip -- 私有ip -> 入口路由器wan口ip
  • 源端口号 -- 内网某主机的端口号 -> 临时端口号(由路由器分配)

NAPT原理

如果把左侧内容当成一个大字符串,它一定是全网唯一的

  • 之前我们就说过,套接字信息可以唯一标识一条网络通道
  • 即使访问相同的服务器,所有主机的ip地址也会不一样,即使是同一个主机,端口号也会不同
  • 那么,[私有ip可重复]会对这个唯一性造成影响吗?
  • 不会,因为那是在不同局域网内的情况,同一个路由器虽然可以连接多个子网,但如果有重复ip地址,就无法识别,所以不会出现一个路由器内有重复ip
  • 而这个表是路由器内部维护的,所以不会重复

右侧,也是全网唯一

  • 虽然源ip相同,但因为连端口号也替换了,而这个端口号是路由器内部的标识,所以可以保证唯一性

因为左右均唯一,所以它们互为键值,于是可以实现:

注意点

因为每条连接都会占用一个端口号,那会不会出现超出路由器的容纳上限呢?

  • 不会
  • 路由器分为家庭路由器 和 企业路由器,虽然两种承受能力不同,但家庭路由器完全可以承载一个家庭内的所有设备,企业路由器可以承载更多
  • 即使真的超出数量,运营商也会自动重新组建子网(在大型企业网络和数据中心,通常会使用自动化工具来管理和配置子网)

并且,主机数量过多也会让数据碰撞概率增大,所以一个局域网内也不会有太多主机

  • 所以NAT查表过程成本不高

NAT缺陷

无法直接访问其他内网主机

我们无法主动访问其他私网内主机

  • NAT 主要用于将私网中的 IP 地址转换为公共 IP 地址,从而允许内部设备通过公共 IP 地址访问外部网络
  • NAT 设备不会自动创建外部到内部的映射关系,因此,外部网络设备无法主动发起连接到内部私网中的设备
  • 只能是两台主机先与某公网服务通信,然后由公网服务转发给主机
内网穿透

如果非要这么做 -- 内网穿透 -> 利用一个公网服务器作为中介,使得在内网中的设备能够与外部网络进行通信

  • 首先要建立一个公网服务器,目的主机(内网设备)与该服务器之间要先建立好tcp长连接
  • 这样我们就可以通过这个服务器,来直接与目的主机通信 (公网服务器接收到想要访问目的主机的请求后,通过之前建立的 TCP 连接,将请求转发到内网设备)
  • 这一切的前提是 -- 目的主机已经与服务器建立好连接
工具

frp -- 高效的内网穿透工具,允许通过公网服务器将内网设备的服务暴露给外部网络,实现远程访问

  • 包含两个主要组件 -- frps(服务端) ,  frpc(客户端)
  • 我们可以在云服务器上部署frps,家里的电脑部署frpc:
  • 只要能访问云服务器,你就能通过 frp 提供的映射访问家里的电脑上的服务,实现远程操作

其他 

  • 装换表的生成和销毁都需要额外开销
  • 通信过程中一旦NAT设备异常, 即使存在热备(备份系统或组件在主系统运行时已经在线并处于活动状态), 所有的TCP连接也都会断开

这篇关于NAT技术介绍+缺陷(内网穿透+工具),NAPT(介绍,替换过程,原理,NAT转换表)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139632

相关文章

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

如何将Tomcat容器替换为Jetty容器

《如何将Tomcat容器替换为Jetty容器》:本文主要介绍如何将Tomcat容器替换为Jetty容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat容器替换为Jetty容器修改Maven依赖配置文件调整(可选)重新构建和运行总结Tomcat容器替

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语