VLSM、CIDR技术解析与NAT介绍

article/2025/9/23 10:26:15

随着互联网的快速发展,IPv4地址基本耗尽,早在2011年2月3日,互联网编号分配机构(IANA)就已经宣布最后的468万个IPv4地址平均分配给了全球5个区域互联网注册管理机构(RIR),此后IANA再也没有可分配的IPv4地址了,在2019年11月25日全球五大区域互联网注册管理机构之一的欧洲网络协调中心(RIPE NCC)宣布最后一批IPv4地址已经分配完毕,意味着欧洲区的IPv4地址池已经清空,从此之后,RIPE NCC所负责的欧洲、中东、中亚部分地区将完全停止分配IPv4地址,所以该如何有效利用IP地址呢?

进制转换

先回顾一下十进制转二进制

  1. 除2取余,逆向排序法

    比如将66转为二进制,使用66除以2,直到商为1,然后将1与余数逆序排列得到的就是二进制结果,如下图所示

  2. 牢记常用的十进制对应的二进制,然后使用加法运算

    比如将166转为二进制,需要先牢记1、2、4、8、16、32、64、128对应的二进制,已知166=128+32+4+2,将128、32、4、2对应的二进制相加得到166的二进制结果,如下图所示

IP地址分类

IP分为A、B、C、D、E 5个类别,工作和生活中常用到A、B、C3个类别,D类和E类基本用不到

A类地址:1.0.0.0 ~ 126.255.255.255
B类地址:128.0.0.0 ~ 191.255.255.255
C类地址:192.0.0.0 ~ 223.255.255.255
D类地址:224.0.0.0 ~ 239.255.255.255
E类地址:240.0.0.0 ~ 255.255.255.255

私有IP地址

私有IP是不能在互联网(广域网)中使用的,只能作为内网(局域网)使用,地址范围如下:

10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)
172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)
192.168.0.0 ~ 192.168.255.255(192.168.0.0/16)

特殊IP地址

特殊IP是具有指定用途的,比如127.0.0.1指的就是本机,一般是用于测试的,0.0.0.0是作为默认路由使用,255.255.255.255是限制广播地址

IP编址

IP地址由32个二进制位组成,分为网络部分和主机部分组成,我们通常看到的IP地址是点分十进制表示法,比如IP地址为188.88.18.8,组成部分如下图所示

网络位的作用是用来网络寻址,它决定了一个区域的网段,主机位的作用是确定区域内具体的终端

子网掩码

子网掩码的作用是区分网络位和主机位的,同样由32个二进制位组成,掩码中的1表示网络位,0表示主机位

A、B、C三类地址的默认子网掩码如下所示:

A类:255.0.0.0(/8) 网络位是255,主机位是.0.0.0,主机位空间较大,适用于大型网络

B类:255.255.0.0(/16) 网络位是255.255,主机位是.0.0,主机位空间适中,适用于中型网络

C类:255.255.255.0(/24) 网络位是255.255.255,主机位是.0,主机位空间较小,适用于小型网络

在Linux系统中使用命令ip a查看IP地址时后面会带/24,这个指的就是C类的默认子网掩码,表示24个1,二进制表示11111111.11111111.11111111.0000,知道子网掩码后就可以得到IP地址的网络位和主机位,比如:计算166.66.6.6/16的网络位和主机位,将/16转换为二进制掩码11111111.11111111.00000000.00000000,网络位就是166.66,主机位就是.6.6

IP地址类型

IPv4网络中的地址类型分为网络地址、广播地址和主机地址

  1. 网络地址:在网络中IPv4地址范围内,最小的地址作为网络地址,也就是把主机位全部置为0得到的就是网络地址。比如计算192.168.6.6/24的网络地址

    ① 首先通过/24可知是C类默认子网掩码,进而可知IP地址的网络位是192.168.6,主机位是.6

    ② 然后将主机位置零,得到网络地址为192.168.6.0

    通过网络地址可以判断两个IP地址是否在同一个网段,网络地址相同则在同一网段,反之则不在同一网段

  2. 广播地址:用于向网络中所有主机发送数据的特殊地址,使用该网络范围内的最大地址,也就是把主机位全部置为1得到的就是广播地址。比如计算168.68.68.8/29的广播地址

    ① 将IP地址转为二进制10101000.01000100.01000100.00001000,根据子网掩码/29可知浅蓝色部分是网络位,后面的是主机位

    ② 然后将主机位全部置为1得到10101000.01000100.01000100.00001111

    ③ 转为十进制为168.68.8.15,即广播地址为168.68.8.15

  3. 主机地址:分配给网络中终端设备的地址,就是我们平常每个主机上查看的IP地址,一个网络中能分配多少个IP地址就是计算可用地址主机范围,因为网络地址和广播地址不能给主机使用,所以剩下的都是可用的主机地址,以广播地址中的例子为例,计算168.68.68.8/29的可用地址主机范围

    ① 已经的到它的广播地址为168.68.8.15

    ② 计算网络地址,将主机部分全部置为0得到10101000.01000100.01000100.00001000

    ③ 转为十进制168.68.8.8,即网络地址为168.68.8.8

    ④ 去掉网络地址和广播地址,得到的可用地址主机范围是168.68.8.9~168.69.8.14

    若只是单纯计算有多少个IP可用,可以使用公式2^n-2 计算,n表示主机位的个数,比如例子中主机位共有2个,计算可得2^3-2=6

VLSM

假如一个公司有500台主机,C类IP地址共有254个,分配C类是不够用的,B类IP地址共有65034个,使用B类又会产生IP地址大量浪费,这是标准的A、B、C类的网络缺陷,会造成IP地址空间的极大浪费,而且一个广播域中主机数量过于庞大时网络可能会被广播报文消耗大量的资源

VLSM(可变长子网掩码)主要作用就是将IP网段进行分割细化,从而达到节省IP地址空间的目的,该如何分割网段,需要根据实际需求而定,具体分割方法如下:

通过上文已经了解子网掩码的作用是区分网络位和主机位,所以掩码变更网络位和主机位肯定也会变化,当掩码向后借位时,实际上就是网络位向主机位借位,从而使网络部分的位数变长,比如IP地址为172.18.1.0/24,首先向右借1位,子网掩码由/24变为/25,此时会出现2种情况,借出去的要么是0,要么是1借位后产生的子网个数=2^m,m表示所借的位数

  1. 借来的是0时,IP转为二进制表示为10101100.00010010.00000001.00000000,即子网为172.18.1.0/25

    通过计算可得网络地址为172.18.1.0,广播地址为172.18.1.127,主机范围为172.18.1.1~172.18.1.126,总个数为2^7-2=126

  2. 借来的为1时,IP转为二进制表示为10101100.00010010.00000001.10000000,即子网为172.18.1.128/25

    通过计算可得网络地址为172.18.1.128,广播地址为172.18.255,主机范围为172.18.1.129~172.18.1.254,总个数同样为2^7-2=126

如果借2位,子网掩码就会变成/26,此时会出现(2^2=)4种情况,借出去的有00011011四种可能,可以使用上面的方法计算获得子网。下面介绍另一种方法,当子网掩码变为/26时,说明网络位为26位,主机位为32-26=6位,每个子网都会有6位的主机位,每个子网的总主机数就是2^6=64个,确定第一个子网后,主机位加上64就得到另一个子网地址,实际可用地址主机范围需减二,要去掉网络地址和广播地址

  1. 借来的是00时,子网为172.18.1.0/26,网络地址为172.18.1.0,广播地址为172.18.1.63,主机范围172.18.1.1~172.18.1.62

  2. 借来的是01时,子网为172.18.1.64/26,网络地址为172.18.1.64,广播地址为172.18.1.127,主机范围172.18.1.65~172.18.1.126

  3. 借来的是10时,子网为172.18.1.128/26,网络地址为172.18.1.128,广播地址为172.18.1.191,主机范围172.18.1.129~172.18.1.190

  4. 借来的是11时,子网为172.18.1.192/26,网络地址为172.18.1.192,广播地址为172.18.1.255,主机范围172.18.1.193~172.18.1.254

依次类推,多借一位就能得到更多不同网段的子网

CIDR

CIDR(无类别域间路由)是VLSM的反向运算,是聚合操作,用于给用户分配IP地址以及路由分配IP地址的方法,消除了传统IP地址的分类边界,实现了路由缩放功能,将路由表中的多个路由汇聚为一条路由,减少路由表的规模,从而减少路由设备的负担,提高路由表查询速度

比如10.16.1.0/2410.16.2.0/2410.16.3.0/2410.16.4.0/24该如何聚合呢?方法如下:

  1. 先把IP地址转为二进制,然后找不同点,将IP地址转为二进制

    10.16.1.0/24 → 00001010.00010000.000000001.00000000

    10.16.2.0/24 → 00001010.00010000.000000010.00000000

    10.16.3.0/24 → 00001010.00010000.000000011.00000000

    10.16.4.0/24 → 00001010.00010000.000000100.00000000

  2. 不同之处统一置为0,得到00001010.00010000.000000000.00000000

  3. 使用掩码减去不相同的位数得到新的掩码24-3=21

  4. 转为十进制得到最终IP地址为10.16.0.0/21

VLSM和CIDR的区别

从上文可以总结出VLSM和CIDR的不同之处:

  • VLSM和CIDR二者可以看做是逆过程

  • VLSM是把一个大网络分割细分为几个小网络(子网),实现高效划分子网,可以充分利用IP地址,解决IP地址被浪费的问题

  • CIDR是把几个小网络汇聚成一个大网络(超网),实现路由地址聚合,能够有效减少路由器中的路由条目

  • VLSM是掩码右移,变长了网络位,缩短了主机位

  • CIDR是掩码左移,变长了主机位,缩短了网络位

NAT网关

NAT即网络地址转换,是在路由器中使用的服务,目的是将IP数据报文头中的原始IP地址转换为另一个IP地址的过程,可以使得内网和公网之间相互访问,NAT的产生同样是为了节约数量有限的IP地址

上文已经介绍私有IP是不能直接访问互联网的,只能在内部使用,比如企业内,家庭内等,当有一台电脑需要上网,就必须要有一个公网IP,我们可以购买一个公网IP供这台电脑使用,当有多个电脑时可以为每台电脑都申请公网IP,但是此方式不仅要花更多的钱,还会造成公网IP的浪费,所以可以让路由器为家庭或企业内部的设备分配私有IP地址,当这些设备需要访问互联网时,在路由器内部将它们的私有IP转换成公网IP地址,就可以访问外网啦!这个IP转换功能就是由NAT网关控制的

至于NAT网关是怎么知道需要转换成哪个IP的,是需要设置NAT规则的,NAT网关会根据设置的规则进行转换,NAT规则包括匹配条件、转换方式和转换结果

  • 匹配条件包括:源IP地址、目的IP地址、出入安全组、服务

  • 转换方式包括:源地址转换(SNAT)、目的地址转换(DNAT)

  • 转换结果包括:固定IP、地址组

比如,当一台外部的网络设备需要访问内网中的设备时,会先发出请求报文,到达网关路由器后,会根据设置的NAT规则,进行转换,转换成功后网关服务器会重新封装请求报文,转发给内部的网络设备,过程如下图所示

当一台内网中使用的设备需要访问外部的网络设备时,同样会先发出请求报文,然后网关路由器转换地址后重新封装报文,转发给外部网络设备,如下图所示

现如今,已经有了新一代的IPv6地址,并且很多应用设备已经支持IPv6,IPv6可供世界上每台设备都拥有自己的公网IP地址,在未来,就不需要区分公有IP和私有IP了,也就不再需要VLSM、CIDR、NAT服务啦


http://chatgpt.dhexx.cn/article/NVvorCsM.shtml

相关文章

VLSM划分子网

###VLSM划分子网,按我的意思理解就是最大、节约的利用IP地址,不浪费。 ####举个例子: 一个公司所获取的网段为192.168.10.0/24 (24表示IP地址32位的前24位都是1,表示子网掩码255.255.255.0) 而这个公司的要求划分5个子网 NetA&…

网络的那些事之VLSM

上次说到关于IP地址的时候,IP地址如果只使用ABCDE类来划分,会造成大量的浪费。因此,IP地址还支持VLSM技术,可以在ABC类网络的基础上,进一步划分子网。 一、VLSM的概念 VLSM(Variable Length Subnet Mask&…

一篇搞懂 VLSM

一篇搞懂 VLSM 什麼是 VLSM ?為什麼要有 VLSM ?VLSM 工作機制Step0Step1Step2Step3Step4Overview 什麼是 VLSM ? VLSM 的全稱是 Variable Length Subnet Mask。顧名思義,就是允許不同子網使用不同的子網掩碼。根據不同子網所需要的 ip 地址數,各自劃…

可变长子网掩码(VLSM)

一.什么是可变长子网掩码 VLSM(Variable Length Subnet Mask,可变长度子网掩码)规定了如何在一个进行了子网划分的网络中的不同部分使用不同的子网掩码。VLSM其实就是相对于类的IP地址来说的。A类的第一段是网络号(前…

掩码位数原理、掩码位数计算方法、VLSM详解(IP地址划分方法)、CIDR详解

文章目录 掩码位数说明使用IP地址掩码标记IP地址网络位说明使用VLSM技术增加IP掩码的长度VLSM技术划分IP思路讲解实例一根据网络数量来划分根据主机数量来划分 实例二根据主机数量来划分总结 VLSM实例及解法题目要求解析过程 CIDR介绍,超网介绍CIDR的介绍和地址块计…

Axure绘制轮播图

相信大家在日常的原型绘制中经常会进行轮播图的设计,轮播图对于产品的重要性,在这里就不给大家做过多的强调了,本文主要是教大家如何使用动态面板制作轮播图,废话不多说,直接上干货 一、效果展示 二、功能分析 首先先…

JavaScript简单点击切换效果——轮播图

如何实现一个简单轮播图效果,通过点击切换图片?在JavaScript内容的实现是使用点击触发事件,改变src图片路径。 直接展示JS代码哈! // 创建一个数组来保存图片的路径var imgArr ["img/001.jpg", "img/002.jpg&qu…

JavaScript随手笔记---轮播图(点击切换)

💌 所属专栏:【JavaScript随手笔记】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#…

swiper 点击切换轮播图实现

mySwiper.slideTo(index, speed, runCallbacks 控制Swiper切换到指定slide。 参数名 类型 是否必填 描述 index num 必选 指定将要切换到的slide的索引 speed num 可选 切换速度(单位ms) runCallbacks boolean 可选 设置为false时不会触发transition回调函数 代码如下&#x…

快速实现轮播图片效果

效果描述&#xff1a; 轮播图&#xff0c;默认情况下循环向左轮播&#xff0c;点击左右箭头实现切换到上一张以及下一张&#xff0c;点击小圆点将直接显示单击的那张图片。 实现代码&#xff1a; 使用bootstrap中的Carousel插件实现 <!DOCTYPE html> <html> <…

html图片轮播加上切换按钮,轮播图(点击按钮切换)

结构部分&#xff1a; 上一张 下一张 样式部分&#xff1a; *{ margin: 0; padding: 0; } #container{ width: 450px; margin:50px auto; padding: 20px; text-align: center; background-color: antiquewhite; } img{ width: 450px; height: 200px; } .btn button{ background…

html 轮播图左右切换代码,js实现左右轮播图

本文实例为大家分享了js实现左右轮播图的具体代码,供大家参考,具体内容如下 我的轮播图功能有:自动播放、点击焦点切换和点击左右按钮切换 效果图: 自动轮播 点击焦点切换 点击左右按钮切换 注意:本文用带背景颜色的li标签指代图片,有需要的话可以将图片插入li标签内 思路…

java添加轮播图_[Java教程]原生js实现轮播图

[Java教程]原生js实现轮播图 0 2018-10-14 19:01:28 如何使用原生js实现轮播图效果呢,现在带着大家做一个小小的例子 先说一下这次的轮播图需要实现的功能点: 1.3s自动切换图片,图片切换时提示点跟随切换 2.鼠标划到图片上,自动切换轮播图停止 3.指示点划过切换对应的图片,…

js实现轮播图(点击小图片切换大图片+自动切换)

js实现轮播图(点击小图片切换大图片自动切换) 实现效果如下&#xff1a; 点击小图切换大图和轮播标题&#xff0c;点击左右按钮大小图和轮播标题切换&#xff0c;鼠标进入清除定时器&#xff0c;鼠标移出恢复轮播 html代码如下&#xff1a; <div class"switch fl&…

Vuetify Carouse轮播图 图片切换导致页面总是自动跳转到轮播图位置

文章目录 begin!!!Solution1Solution2end begin vuetify carouse轮播图 的图片自动切换的时候, 会自动聚焦跳转到轮播图自身的位置. 这导致了一个问题, 当屏幕同时显示着轮播图和其他内容时, 轮播图一自动切换, 页面就会自动跳转到轮播图的位置! !!! 紧急补充! 经过十个测…

html图片的自动轮播js,js实现轮播图效果 纯js实现图片自动切换

本文实例为大家分享了纯js实现图片自动切换的具体代码,供大家参考,具体内容如下 1.鼠标经过的时候左右两个小按钮会自动弹出,自动播放停止,点击左右小按钮可以切换图片; 2. 鼠标离开,恢复自动播放; 3. 点击下方中间几个小圆圈,也会自动切换图片; 源代码:document * {…

使用CSS实现简单的图片切换(轮播图)

使用CSS实现简单的图片切换(轮播图) 预览图如下: 目录 使用CSS实现简单的图片切换(轮播图)一:首先创建基本布局1:创建一个div容器 ,里面的ul与ol标签分别对应轮播图片和下方圆点;二:添加CSS样式1:为图片与圆点添加相应样式,使其正常显示;标题2:为图片和圆点添加…

b站黑马的Vue快速入门案例代码——图片切换(类似手动播放的轮播图)

目录 目标效果&#xff1a; 重点原理&#xff1a; 1.用数组储存图片的数据 2.v-bind指令可以设置元素属性 e.g.src 语法 v-bind:属性名表达式 简写【实际开发常用】 :属性名表达式 3.v-show和v-if都可以切换元素的显示/隐藏状态 (1)频繁切换显示/隐藏的dom元素用 v…

前端必备技能——轮播图(原生代码+插件)

你是否在为页面平平无奇而烦恼&#xff1f; 你是否在为页面特效过于简单而苦恼&#xff1f; 你是否也在为同是前端小白而别人的页面却比自己的更加精美&#xff1f; 如果你看到这篇博客&#xff0c; 你就已经赢在起跑线啦~ 因为&#xff01;&#xff01;&#xff01; 这篇…

轮播图的多种实现及原理

【写在前面】 最近&#xff0c;在自己的项目中遇到了很多轮播图。 当然&#xff0c;这里的很多&#xff0c;并非数量多&#xff0c;指的是种类很多&#xff0c;即多种实现。 然后我觉得有不少小技巧&#xff0c;就决定写一篇文章讲解一下。 本篇主要内容&#xff1a; 1、轮播图…