NAT详解

news/2024/7/4 13:08:17 标签: 网络

        

1.为什么出现了NAT?



IP地址只有32位,最多只有42.9亿个地址,还要去掉保留地址、组播地址,能用的地址只有36亿左右,但是当下有数以万亿的主机,没有这么多IP地址怎么办,后面有了IPv6,但是当下IPv4还是主流,利用IPv4怎么满足这么多主机的IP地址呢?答案就是NAT,NAT技术使公司、机构以及个人产生以及局域网,然后在各个局域网的边界WAN端口使用一个或多个公网的IPv4进行一对多转换



NAT使用基于session的转换规则

TCP/UDP :私有Host的Ipv4 + port   <======>  NAT公网的Ipv4 + port
ICMP :私有Host的Ipv4 + sessionID <======>  NAT公网的Ipv4 +  sessionID


2.NAT定义

NAT是 Network Address Translation 网络地址转换的缩写。
NAT是将私有IP地址通过边界路由转换成外网IP地址,在边界路由的NAT地址转换表记录下这个转换映射记录,当外部数据返回时,路由使用NAT技术查询NAT转换表,再将目标地址替换成内网用户IP地址。

RFC1918规定了三块专有的地址,作为私有的内部组网使用:

  • A类:10.0.0.0—10.255.255.255      10.0.0.0/8

  • B类:172.16.0.0—172.31.255.255   172.16.0.0/12

  • C类:192.168.0.0—192.168.255.255 192.168.0.0/16

这三块私有地址本身是可路由的,只是公网上的路由器不会转发这三块私有地址的流量;当一个公司内部配置了这些私有地址后,内部的计算机在和外网通信时,公司的边界路由会通过NAT或者PAT技术,将内部的私有地址转换成外网IP,外部看到的源地址是公司边界路由转换过的公网IP地址,这在某种意义上也增加了内部网络的安全性。

3.三种NAT技术

   假设一种场景,公司对外的有两个公网IP地址是 191.4.4.1/191.4.4.2,有两台主机A和B,局域网地址分别是192.168.1.2和192.168.1.3

3.1 静态NAT



 静态NAT就是一对一映射,内部有多少私有地址需要和外部通信,就要配置多少外网IP地址与其对应,并不节省外网IP,所以一般不用
   

3.2 动态NAT



 动态NAT是在路由器上配置一个外网IP地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网IP,并将他们的对应关系绑定到NAT表中,通信结束后,这个外网IP才被释放,可供其他内部IP地址转换使用,这个DHCP租约IP有相似之处。

3.3 PAT(port address Translation,端口地址转换,也叫端口地址复用)

    

 这是最常用的NAT技术,也是IPv4能够维持到今天的最重要的原因之一,它提供了一种多对一的方式,对多个内网IP地址,边界路由可以给他们分配一个外网IP,利用这个外网IP的不同端口和外部进行通信。

本文转自帅气的头头博客51CTO博客,原文链接http://blog.51cto.com/12902932/1924613如需转载请自行联系原作者


sshpp


http://www.niftyadmin.cn/n/994285.html

相关文章

macOS Pillow Build

Mac Pillow Environment:macOS Mojave Version:10.14.2 Time:2019.03.01PIL是python的一个图形库&#xff0c;而最新的一个版本是2009年为1.1.7更新的&#xff0c;虽然这么久远了&#xff0c;但是官方还未说明PIL项目被抛弃。而Pillow是fork PIL项目的&#xff0c;Pillow的作者…

教你如何制作RPM安装包

2019独角兽企业重金招聘Python工程师标准>>> checkinstall &#xff0c;是一个能从 tar.gz 类的源代码自动生成 RPM &#xff0f;Debian 或Slackware 安装包的程序 本文环境介绍&#xff1a;本文的示例程序时nagios的插件&#xff0c;目的是把nagios的插件编译安装好…

微软公司昨天发布SQL Server 2005 Samples and Sample Databases更新版——超过100个的SQL Server 2005示例【转】...

从SQL Server 2000到SQL Server 2005&#xff0c;微软公司在SQL Server 2005上投入了相当多的精力。所谓五年磨一剑&#xff0c;与SQL Server 2000相比&#xff0c;SQL Server 2005在各个功能上都有了极为显著的进步&#xff0c;但随之自然而来的在功能上的复杂性也让开发者难以…

MongoDB/MySQL命令行导入导出数据库/表结构/数据/集合

前言 整理了MongoDB和MySQL使用命令行导入导出数据库和表结构的操作。 MongoDB 导出导入数据库集合 使用export导出数据库集合到json文件 mongoexport -h localhost:27017 -u db_name -p password -d [db] -c [collection] -o a.json-h 地址-u 数据库账号名-p 数据库账号密…

android studio - 导入工程报错[Plugin with id 'com.android.application' not found]

出错现象&#xff1a; 大概意思是找不到:com.android.application 插件&#xff0c;以上现象对于初学者来说会经常碰到&#xff0c;下面分析下产生的原因。 原因分析 首先来看看导入后的工程结构&#xff1a; 对于此工程结构&#xff0c;是否有个疑问&#xff1f; 这是未正常同…

MySQL高版本导出数据库,低版本导入不了的问题

前言 有关docker在创建mysql container的时候&#xff0c;初始化数据库失败的问题解决记录&#xff1b; Config docker&#xff1a;19.03.5mysql image&#xff1a;5.7system&#xff1a;centos 7Operate 正常操作 mysql在docker-compose上的配置如下 test_mysql:image: t…

Mac os x 下配置Intellij IDEA + Tomcat 出现权限问题的解决办法

零,写在最前面 帮同学解决问题时在网上找到的,很好用转载一下 一,解决方法 出现的错误提示如下&#xff1a; 下午9:11:27 All files are up-to-date 下午9:11:27 All files are up-to-date 下午9:11:27 Error running Tomcat 8.0.18: Cannot run program “/Users/horse_leo…

Docker打包镜像的两种方式

前言 Docker镜像是一个特殊的文件系统&#xff0c;既提供了运行时所需的程序、库和资源&#xff0c;还提供了相应的配置参数&#xff0c;只是不包含动态数据。我们可以将任何我们的软件产品打包成镜像&#xff0c;以供服务器能够用Docker直接快速安装并部署运行。 System&…