子网掩码详解

news2024/11/27 20:24:09

1 子网掩码 

IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相同的主机称之为远程网络主机,本地网络中的主机可以直接相互通信;远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。

1.1 子网掩码的概念及作用

  • 子网掩码(Subnet Mask)又叫网络掩码、地址掩码,必须结合IP地址一起对应使用。
  • 只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
  • 子网掩码和IP地址做“与”运算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在本地网络上,还是在远程网络网上。
  • 子网掩码还用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费。

图片

图片

1.2 子网掩码的组成

  • 同IP地址一样,子网掩码是由长度为32位二进制数组成的一个地址。
  • 子网掩码32位与IP地址32位相对应,IP地址如果某位是网络地址,则子网掩码为1,否则为0。

例如11111111.11111111.11111111.00000000

注:左边连续的1的个数代表网络号的长度,(使用时必须是连续的,理论上也可以不连续),右边连续的0的个数代表主机号的长度。

1.3 子网掩码的表示方法

1.3.1 点分十进制表示法

二进制转换十进制,每8位用点号隔开。
例如:子网掩码二进制11111111.11111111.11111111.00000000,表示为255.255.255.0

1.3.2 CIDR斜线记法

格式:IP地址/n,n表示十进制。
1)192.168.1.100/24,其子网掩码表示为255.255.255.0,二进制表示为11111111.11111111.11111111.00000000
2)172.16.198.12/20,其子网掩码表示为255.255.240.0,二进制表示为11111111.11111111.11110000.00000000
不难发现,例1中共有24个1,例2中共有20个1,所以n是这么来的。运营商ISP常用这样的方法给客户分配IP地址。

注:n为1到32的数字,表示子网掩码中网络号的长度,通过n的个数确定子网的主机数=2^(32-n)-2(-2的原因:主机位全为0时表示本网络的网络地址,主机位全为1时表示本网络的广播地址,这是两个特殊地址)。

1.4 为什么要使用子网掩码?

前面说道,子网掩码可以分离出IP地址中的网络地址和主机地址,那为什么要分离呢?因为两台主机要通信,首先要判断是否处于同一网段,即网络地址是否相同。如果相同,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。

可以这么简单的理解:A主机要与B主机通信,A和B各自的IP地址与A主机的子网掩码进行And与运算,看得出的结果:

1)结果如果相同,则说明这两台主机是处于同一个网段,这样A可以通过ARP广播发现B的MAC地址,B也可以发现A的MAC地址来实现正常通信。

2)如果结果不同,ARP广播会在本地网关终结,这时候A会把发给B的数据包先发给本地网关,网关再根据B主机的IP地址来查询路由表,再将数据包继续传递转发,最终送达到目的地B。


计算机的网关(Gateway)就是到其他网段的出口,也就是路由器接口IP地址。路由器接口使用的IP地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用的地址或最后一个可用的地址,这是为了尽可能避免和本网段中的主机地址冲突。

在如下拓扑图示例中,A与B,C与D,都可以直接相互通信(都是属于各自同一网段,不用经过路由器),但是A与C,A与D,B与C,B与D它们之间不属于同一网段,所以它们通信是要经过本地网关,然后路由器根据对方IP地址,在路由表中查找恰好有匹配到对方IP地址的直连路由,于是从另一边网关接口转发出去实现互连。

图片

1.4 子网掩码的分类

1.4.1 缺省子网掩码

也叫默认子网掩码,即未划分子网,对应的网络号的位都置 1 ,主机号都置 0 。

未做子网划分的IP地址:网络号+主机号

A类网络缺省子网掩码:255.0.0.0,用CIDR表示为/8

B类网络缺省子网掩码:255.255.0.0,用CIDR表示为/16

C类网络缺省子网掩码:255.255.255.0,用CIDR表示为/24

1.4.2 自定义子网掩码

将一个网络划分子网后,把原本的主机号位置的一部分给了子网号,余下的才是给了子网的主机号。其形式如下:

做子网划分后的IP地址:网络号+子网号+子网主机号

举个栗子:

如:192.168.1.100/25,其子网掩码表示:255.255.255.128

意思就是将192.168.1.0这个网段的主机位的最高1位划分为了子网。

1.5 子网掩码和IP地址的关系

子网掩码是用来判断任意两台主机的IP地址是否属于同一网络的依据,就是拿双方主机的IP地址和自己主机的子网掩码做与运算,如结果为同一网络,就可以直接通信。

And按位与运算:
与运算是计算机中一种基本的逻辑运算方式,符号表示为&,也可以表示为 and。
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0;0&1=0;1&0=0;1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0

如何根据IP地址和子网掩码,计算网络地址?

1)将IP地址与子网掩码转换成二进制数。
2)将二进制形式的 IP 地址与子网掩码做“与”运算。
3)将得出的结果转化为十进制,便得到网络地址。
如下图:

图片

网络地址计算小技巧:IP地址和子网掩码做与运算,把IP地址的主机位直接归0,就快速得到网络地址。所以只要一看到IP地址和子网掩码,就能马上确认网络地址。

2 CIDR与VLSM

2.1 有类和无类网络,超网和子网

先了解这几个概念,对于CIDR和VLSM以及子网划分都是很有用的。

◆ 有类网络:也叫主类网络或标准网络,就是指把IP地址能归结到的A类、B类、C类IP,使用的是标准的默认子网掩码。

◆ 无类网络:相对于有类网络,无类网络IP地址的掩码是变长的。在有类网络的基础上,拿出一部分主机ID作为子网ID。

◆ 超网:把多个小网络组合成一个大网络,称为超网(SuperNetting),也可以说子网掩码长度小于相对应的有类网络的叫超网。

◆ 子网:有类网络划分成更小后的网络,称为子网(Subnet),也可以说子网掩码长度大于相对应的有类网络的叫子网。

2.2 CIDR无类别域间路由

CIDR(Classless Inter-Domain Routing,无类别域间路由)本质是消除了传统的A类、B类和C类地址以及划分子网的概念,将多个地址块聚合在一起生成一个更大的网络,从而包含更多的主机。

CIDR采用8-30位可变网络ID(最大可用的只能为30位,即保留2位给主机位),而不是A、B、C类网络ID所用的固定的8、16和24位。
CIDR表示方法:IP地址/n,n表示IP地址中的前n位代表网络部分(n个二进制数1),其余(32-n)位代表主机部分。这种方法称为“斜线记法”,它又称为CIDR记法。

举个栗子:子网掩码255.255.255.192,用CIDR表示是多少呢?

①、首先确认的是这是个C类网络地址(C类的默认子网掩码为255.255.255.0)

②、前面三个字节都是255,转换成二进制都为1,即11111111.11111111.11111111,即24位1。

③、后面一个字节是192,转换成二进制为11000000,即1占用了2位。

④、子网掩码共占用了26位1,所以用CIDR表示为/26。

⑤、如果网络地址为192.168.10.0,再加上CIDR,最后表示为192.168.10.0/26。

CIDR支持路由聚合,能够将路由表中的许多路由条目合并为成更少的数目,因此可以限制路由器中路由表的增大,减少路由通告,减轻路由器的负担。

2.3 VLSM可变长子网掩码

VLSM(Variable Length Subnet Mask,可变长子网掩码)规定了在一个有类(A、B、C类)网络内包含多个子网掩码的能力,以及对一个子网的再进行子网划分的能力。

每一个IP地址都包含了2部分:网络号和主机号。在有类网络中,32bit的IP地址被分为4段,每段8bit来表示。这使得作为网络号的前缀必须是8位,16位或者24位。当网络号是24位的时候,主机号只有8位,也就是说,可分配的最小的地址块是256个(2^8=256,而实际可分配的主机地址还要减去两个,一个是网络地址,一个是广播地址,最后为254个),这个数量对于大多数企业来说是不够的。

而比这个大一点的IP地址块是网络号为16位的时候,这个时候可分配的地址块是65536(2^16=65536),这个数量对于大多数公司又太多了。这导致无论公司选择哪种类型的网络,都可能对IP地址造成大量的浪费。

IP地址如果只使用有类(A、B、C类)来划分,会造成大量的浪费或者不够用。VLSM的诞生有效的解决了这个问题,可以在有类网络的基础上,通过对IP地址的主机号进行再划分,把一部分划入网络号,就能划分各种类型大小的网络了。网络号也不再仅局限在8、16和24位这几个数,而是灵活变化的大小了。

2.4 CIDR与VLSM的区别

  • 在使用CIDR聚合地址时,将原来有类IP地址中的网络位划出一部分作为主机位使用。

  • 在使用VLSM划分子网时,将原来有类IP地址中的主机位按照需要划出一部分作为网络位使用。

  • CIDR:子网掩码往左边移,掩码netmask缩短了。

  • VLSM:子网掩码往右边移,掩码netmask增长了。

  • CIDR是把几个有类网络合成一个大的网络(超网),用于路由地址聚合。

  • VLSM是把一个有类网络分成几个小型网络(子网),用于更高效划分子网。

CIDR与VLSM总结:
在某种程度上来说,CIDR和VLSM它们之间可以看做是逆过程。
CIDR是把几个小网络聚合成一个大网络来做表示,而VLSM则是把一个大网络继续细分为几个小网络进行IP地址分配。
CIDR能让路由器的路由条目得到有效的减少,从而减少路由通告,降低路由器负担,而VLSM则是充分利用IP进行地址分配来解决IP地址不被浪费的问题,节约IP地址空间,更为有效的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

酸蚀刻对钛医药材料纳米形态表面特性及活化能的影响

引言 由于商业纯钛(CP Ti)具有抗腐蚀性,并且具有哦合适的机械性能以及生物相容性,因此,目前一直被用作牙科植入材料。为了在临床手术中获得高水平的成功,CP Ti的表面质量和形貌是影响植入手术结果的最关键因素之一,近…

GPT使用技巧

五大原则 想要让ChatGPT产出有效的回答,需要遵循以下五个原则: 提问清晰: 请尽可能清晰地描述您的问题 简明扼要: 请尽量使用简单的语言和简洁的句子来表达您的问题 确认问题: 请确认您的问题是清晰、明确和完整…

python接口自动化--token登录(详解)

简介 为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。有些登录不是用 cookie 来验证的,是用 token 参数来判断是否登录。token 传参有两种一种是放在请求头里,本质上是跟 cookie 是一样的&…

攻不下dfs不参加比赛(十一)

标题 为什么练dfs题目为什么练dfs 相信学过数据结构的朋友都知道dfs(深度优先搜索)是里面相当重要的一种搜索算法,可能直接说大家感受不到有条件的大家可以去看看一些算法比赛。这些比赛中每一届或多或少都会牵扯到dfs,可能提到dfs大家都知道但是我们为了避免眼高手低有的东…

手把手教会你使用Markdown

目录 一、Markdown是什么 二、Markdown优点 三、Markdown的基本语法 一、Markdown是什么 Markdown 是一种轻量级标记语言,创始人为约翰格鲁伯(John Gruber)。 Markdown 允许人们使用易读易写的纯文本格式编写文档,然后转换成…

四川大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 四川大学(B)考研难度(☆☆☆☆) 四川大学计算机考研招生学院是计算机学院、网络空间安全学院和视觉合成图形图像技术国防重点学科实验室。目前均已出拟录取名单。 四川…

【Linux】多线程(三)

文章目录 线程池线程安全的单例模式什么是单例模式什么是设计模式单例模式的特点饿汉实现方式和懒汉实现方式饿汉方式实现单例模式懒汉方式实现单例模式懒汉方式实现单例模式(线程安全版本) STL,智能指针和线程安全STL中的容器是否是线程安全的?智能指针是否是线程安全的? 其…

一维数组、二维数组与指针的关系以及理解

一维数组、二维数组与指针的关系以及理解 C语言中,关于数组与指针,我们一般理解为:数组名即为该数组首元素地址,也是数组的首地址,但是关于数组名与指针的联系远不止于此。 文章目录 一维数组、二维数组与指针的关系以…

指针作为输入参数和输出参数

指针作为输入参数 指针作为输出参数 可以知道,改变的是地址里面的值。

Jmeter性能测试 —— 性能测试的流程和术语

性能测试的流程 一、准备工作 1、系统基础功能验证 一般情况下,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行性能测试,否则性能测试是无意义的。2、测试团队组建 根据该项目的具体情况,组建一个几人的性能测试…

3DE重客户端安装

3DE重客户端安装 一、百度网盘下载路径二、详细安装步骤 一、百度网盘下载路径 https://pan.baidu.com/s/16TltMRbrWuSe7p-Vn1x4Dw?pwdfku7 提取码:fku7 二、详细安装步骤 1、将\3deinstall\2022x_install_GA目录下的所有.tar文件全选解压 2.点击\3deinstall\…

❤️创意网页:创建一个浪漫的樱花飘落动画效果

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

web自动化测试

Web自动化测试全套实战教程:PythonSelenium4环境搭建 1.首先,对于想学自动化测试的朋友,那么你得懂一种语言,常用的比如Java或者Python。因为没有语言基础,你是写不出自动化脚本的。 我个人选择python 2.有了开发语言…

数据结构---手撕图解二叉树(含大量递归图解)

文章目录 写在前面二叉树的创建二叉树的遍历前序遍历中序遍历后序遍历层序遍历 二叉树的销毁二叉树节点个数二叉树叶子节点的个数二叉树查找值为x的节点二叉树是否为完全二叉树 写在前面 二叉树的几乎所有实现都是依靠递归实现,递归的核心思路是把任何一个二叉树看…

什么是 CAS(自旋锁)? 它的优缺点? 如何使用CAS实现一把锁?

什么是自旋锁? CAS 没有获取到锁的线程是不会阻塞的,通过循环控制一直不断的获取锁。 CAS: Compare and Swap,翻译成比较并交换。 执行函数 CAS(V,E,N) CAS 有 3 个操作数,内存值 V&#xff…

【天梯赛集训】7.17习题集

AC&#xff1a; 12 / 12 用时&#xff1a;2 h 21 min 没卡思路&#xff0c;卡了几个测试点。 7-1 输入输出整数 #include <iostream>using namespace std;int main() {int a;cin >> a;cout << a;return 0; } 7-2 调整数组使奇数全部都位于偶数前面其他数字顺…

Anaconda的python虚拟环境中安装cudatoolkit和cudnn加速tensorflow

1. 背景 由于本地安装了cuda 10.0, 但是现在需要在Anaconda中安装不同的python虚拟环境来安装tensorflow-gpu、对应的cudatoolkit、对应的cudnn来加速&#xff0c;下面是具体的演示流程 2. 安装 我这里以安装tensorflow-gpu1.9.0为例&#xff0c;首先进入python的虚拟环境&a…

多元函数的混合偏导数

定理&#xff1a;多元函数的混合导数相等。 直接看图&#xff1a; 引自知乎&#xff1a;点击跳转知乎链接

IIS部署WCF的文件夹要加上IIS_USERS的权限

弯路1&#xff0c;文件夹没加权限报错&#xff1a; 报错如图&#xff1a; 弯路2&#xff1a;多网卡多IP&#xff0c;要设置固定IP。样式&#xff1a; http://192.168.1.4:8080/Service1.svc

RabbitMQ实现六类工作模式

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; RabbitMQ实现六类工作模式 ⏱️ 创作时间&#xff1a; 2023年07月20日…