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

【Linux】NAT

一、NAT技术背景

       之前,我们就讨论了在IPv4协议中:IP协议数量不充足的问题。NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能。对,现在路由器不仅可以工作到网络层,也可以工作到应用层。

  • NAT能够将私有IP对外通信时转为全局IP,也就是一种将私有IP和全局IP相互转化的技术方法
  • 很多学校,家庭,公司内部采用每一个终端设置私有IP,而在路由器或必要的服务器上设置全局IP
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的

二、NAT IP 转换过程

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

三、NAPT

       那么问题来了,如果局域网中,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判定将这个数据报转发给哪一个局域网的主机?

       这个时候就需要使用NAPT来解决这个问题,使用 IP + Port 来建立这个关联关系。为什么一个网络层的设备可以管理端口号呢??在这里,我们不可以小看路由器,因为路由器是工作在网络层,不是只工作在网络层的。

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

四、NAT技术的缺陷

由于NAT依赖这个转换表,所以有很多限制:

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

http://www.kler.cn/news/307558.html

相关文章:

  • 医学数据分析实训 项目三 关联规则分析预备项目---购物车分析
  • Django——多apps目录情况下的app注册
  • 在Ubuntu 16.04上安装R的方法
  • 题目:单调栈
  • SpringBoot用kafka.listener监听接受Kafka消息
  • 基于SpringBoot+Vue+MySQL的美术馆管理系统
  • 基于MySQL 8.0.39的高性能优化版将于10月份开源
  • 15. 三数之和(实际是双指针类型的题目)
  • 记一次实战中对fastjson waf的绕过
  • Python Pickle 与 JSON 序列化详解:存储、反序列化与对比
  • 管家婆云辉煌手机端怎么连接蓝牙打印机?
  • [C++]spdlog学习
  • ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码
  • 157-安全开发-Python 自动化挖掘项目SRC 目标FOFA 资产Web 爬虫解析库
  • Spring Boot-定时任务问题
  • 兴趣推送与相似推送逻辑设计
  • 第T1周:Tensorflow实现mnist手写数字识别
  • AI学习指南深度学习篇-RMSprop在深度学习中的应用
  • 【网络】高级IO——select版本TCP服务器
  • 【系统架构设计师-2009年真题】案例分析-答案及详解
  • 【Python 数据分析学习】Matplotlib 的基础和应用
  • C/C++:优选算法(持续更新~~)
  • 【linux】cp命令
  • HTML、CSS实现树状图
  • 【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)
  • 基于SpringBoot+Vue+MySQL的教学资源共享平台
  • [C++]类和对象(上)
  • 携手鲲鹏,长亮科技加速银行核心系统升级
  • 7.Jmeter数据驱动(csv数据文件设置)+Jmeter数据库操作
  • 从零搭建 Docker 私有库