【每天学习一点新知识】互联网安全--NAT和PAT

2023-10-18 13:50

本文主要是介绍【每天学习一点新知识】互联网安全--NAT和PAT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、NAT

1.1 为什么要有NAT

1.2 NAT概述

1.3 私有IP地址

1.4 静态NAT/动态NAT

2、PAT

2.1 PAT概述

2.2 静态PAT/动态PAT


1、NAT

1.1 为什么要有NAT

我们都知道IP v4的地址由32位(4个字节)组成,因此地址空间中只有4,294,967,296(2)个地址。不过,一些地址是为特殊用途所保留的,如专用网络(约1800万个地址)和多播地址(约2.7亿个地址),这减少了可在互联网上路由的地址数量。随着地址不断被分配给最终用户,IPv4地址枯竭问题也在随之产生。由 IANA 管理的 IPv4 位址,于 2011 年 1 月 31 日完全用尽

所以为了缓解IP地址枯竭,节省地址空间的需要,出现了NAT,即网络地址转换技术。

1.2 NAT概述

出于安全和节省地址空间的需要,内部网络的终端只分配私有IP地址,但私有IP地址无法与公网中的终端进行通信,所以需要为内网终端分配一个公共网络可以识别的全球IP地址以实现内外网的通信。在通信过程中,边界路由器(连接内网和外网的路由器)实现私有IP地址和全球IP地址的转换,这就是NAT技术。

 如图所示,边界路由器R根据内外网的地址转换来实现终端A和终端B的通信。

我们通常将内部网络使用的地址叫做私有地址,将外部网络使用的地址叫全球地址。

  • 内部本地地址:内部网络终端使用的本地地址
  • 内部全球地址:内部网络终端使用的全球地址
  • 外部本地地址:外部网络终端使用的本地地址
  • 外部全球地址:外部网络终端使用的全球地址

1.3 私有IP地址

内部网络使用的私有地址和公共网络使用的全球地址不能重复

  • 10.0.0.0/8,即10.0.0.0~10.255.255.255

  • 172.16.0.0/12,即172.16.0.0~172.31.255.255

  • 192.168.0.0/16 ,即192.168.0.0~192.168.255.255

 为什么不同的内部网络可以使用相同的私有地址?

因为内部网络使用的私有地址对外是透明的,是不可见的,两个使用相同私有地址空间的内部网络相互通信,看到的也都是对方经过转换后的全球IP地址。

1.4 静态NAT/动态NAT

  • 静态NAT:是一对一的,一个私有IP固定对应到一个公网IP上实现地址的转换(直接写死)
  • 动态NAT:提出了地址池的概念,将一个范围内可用的公网IP放进地址池中,当内部主机访问外部网络时为其临时分配一个地址池中未使用的地址,当该主机不再访问外部网络时回收分配的地址。因此,内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的。(当地址池中的IP地址已经被分配完之后,内部终端想要与外部通信,路由器会丢弃该数据包)

 动态NAT必须是内部网络终端发起会话请求,只能实现单向会话

静态NAT可以实现双向会话

2、PAT

2.1 PAT概述

如果同时有多个内部网络终端想要访问Internet中的服务器,而全球IP地址只有一个的情况下,我们就使用PAT(端口地址转换)来实现,让这些内部终端使用同一个IP地址,用不同的端口号来区分。 

 边界路由器在用全球IP取代私有IP时,必须用内部网络内唯一的源端口号取代IP分组的原始源端口号,在地址转换表中记录,将源IP地址、源端口号、全球地址、目的端口号绑定在一起。

当服务器的回应IP分组到达路由器时,通过目的端口号查找转换表,找到对应项,再用源IP地址、源端口号替换目的IP地址、目的端口号,将IP分组继续转发给内部网络。

说到底就是内部外部的IP地址及端口号的转换

不同的终端可能用相同的源端口号来标识终端内的进程,所以边界路由器必须用内部网络内唯一的源端口号取代IP分组中的原始源端口号,以此实现用源端口号唯一表示内部网络内终端的目的。

2.2 静态PAT/动态PAT

  • 静态PAT:需要手工配置建立地址转换表实现某个本地IP和内部网络内唯一端口号之间的映射(直接写死)
  • 动态PAT:多个用户同时用一个地址时,路由器用上层的TCP或UDP的端口等唯一标识某个地址。地址转换表中的每一项和某个会话绑定在一起,在会话开始时创立转换项,会话结束时删除该转换项。每一个会话用源和目的IP地址、源和目的端口号作唯一标识。

 

网上搜了很多资料,说PAT是NAT的一部分,就是当只有一个全球IP地址,而内部网络中又有多个终端想要与外网通信时,NAT也无法实现一对一分配IP地址,所以使用PAT,用端口号来进行进一步的区分。 

这篇关于【每天学习一点新知识】互联网安全--NAT和PAT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert