网工头疼的IP子网划分,其实就这么简单

news2024/10/7 8:27:57

下午好,我的网工朋友。

最近网工群里还是一如既往的热闹啊,关于行业、技术、职场的话题热议不断。

前段时间有群友在里面聊子网划分,有几个不懂的网工朋友,悄悄来私聊老杨总,表示想再补充一下这方面的知识。

看了眼,关于这方面的内容,确实还可以再补充点。

子网划分技术其实是计算机网络基础中的重点难点了。今天就给你来一篇,IP子网划分VLSM详解。

今日文章阅读福利:《全国网工交流群进群名额(限时开放)》

老杨总的网工交流群即将破100+,想一起在群里聊技术、行业、职场又或是上班摸鱼唠唠嗑吗?

私信我,发送暗号“进群”,前30名私信的小友可获得进群资格。

01 什么是IP地址

老规矩啊,先给你讲一波理论基础。

IP地址在网络中用于标识一个节点(或者网络设备的接口)。

IP网络中数据包的寻址是基于IP地址来进行的,因此IP地址就像是现实生活中的地址。

IP协议定义了数据分组的格式,也定义了数据分组寻址的方式。目前我们在业务环境中常见的IP主要是两个版本:

IPv4及IPv6

而现阶段网络主体仍然是IPv4,但是在可预见的未来,会逐渐向IPv6过渡。今天只介绍IPv4哈。

一个IPv4地址有32比特位(二进制格式下)。

当然,我们不可能用二进制来书写IPv4地址,那是低效的,我们通常采用十进制格式来书写IP地址,但是计算机在进行IP地址的相关计算工作时,无疑是通过二进制的形式来进行。

因此掌握十进制到二进制的数制转换是必备的技能。

IPv4地址通常采用“点分十进制”表示,以适应人类的读写习惯,例如192.168.1.1。

02 十进制与二进制的转换

“点分十进制”IP地址表现形式能够帮助我们更好的使用网络,但网络设备在对IP进行计算时使用的是二进制的操作方式。

例如:

以下是192这个数字,对应的二进制算法,这里就不再赘述了哈,这是基本技能。

03 IP地址的分类

IPv4地址的空间从0.0.0.0 一直到 255.255.255.255,这么庞大的空间,如果不加以区分和规划,势必不便于统筹管理。

因此我们对IPv4地址空间进行类别上的划分,一共有五类:

地址的类别上的区分主要体现在第一个八位组(一个IP地址拥有4个八位组)上:

第一个八位组首位恒定为0,那么我们就得到一个区间:

1.0.0.0一直到127.255.255.255。

这是A类地址,其中127.0.0.0/8作为本地回环使用,例如你ping 127.0.0.1实际上ping的是本机。

所以如果看到一个IP,它的首个八位组掉落在1-126的区间内,那么这是一个A类地址。

第一个八位组的最高两位恒定为10,就得到一个区间:

128.0.0.0-191.255.255.255,这是B类地址。

第一个八位组的最高三位恒定为110,就得到一个区间:

192.0.0.0 – 223.255.255.255,这是C类地址。

第一个八位组的最高四位恒定为1110,就得到一个区间:

224.0.0.0 – 239.255.255.255,这是D类地址,这个类别的地址专门用于组播。

剩下的是E类地址,这类地址保留作为研究使用。

04 网络掩码Netmask

一个IP地址包含两部分:网络部分以及主机部分。

网络部分用于表示这个IP地址所处的“空间”,对于一台路由器而言,当它在为数据包寻址时,通常只关心IP地址的网络部分。

那么如何区分一个IP地址中的网络与主机部分?

自然是网络掩码(Network Mask,简称netmask),用于和IP地址进行对应,从而标识出IP地址中的网络与主机部分。

● 网络掩码为32bits,与IPv4地址的位数是一样的。

● 网络掩码在二进制的表示上是一堆连续的1、后面接连续的0。

● 网络掩码值为1的bit对应IP地址中的网络位;为0的bit对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络与主机位,如下图:

为了方便书写,我们往往使用掩码长度的方式来表示一个IP地址+掩码:

192.168.1.1 255.255.255.0 等同于 192.168.1.1/24。

因为255.255.255.0写成二进制的话,从左往右数就是24个1,所以我们也说,它的掩码长度为24。

默认情况下,A类IP地址,首个八位组为网络位,其他位为主机位,因此A类地址的默认掩码就是255.0.0.0,或者长度为/8。

B类IP地址前两个八位组为网络位,后两个八位组为主机位,因此B类地址的默认掩码就是255.255.0.0或者/16。

C类地址的前三个八位组为网络位,后面一个八位组是主机位,因此C类地址的默认掩码就是255.255.255.0,或者/24。

从这里我们可以看出来,如果你申请到一个A类地址空间:

123.0.0.0/8,那么这是一个相当庞大的地址空间,因为这个空间有2的24次方个IP地址。

相对的,一个B类的IP网络地址空间默认有2的16次方个IP地址,而C类地址则更少。

05 IP地址类型

这里给你说说下面这三种类型。

● 网络地址:

标识一个网络,相当于一个“面”的概念。是一个IP地址中主机位全0的地址。例如192.168.10.0/24。

● 广播地址:

用于向网络中的所有主机发送数据的特殊地址。广播地址即主机部分的各比特位全部为1的地址。例如192.168.10.255/24。

● 主机地址:

可分配给网络中终端设备的地址。例如192.168.10.1/24至192.168.10.254/24。

例:192.168.1.0 这个C类网络的网络号、广播号及可分配IP分别是?

06 为什么要划分子网

假设你有一个B类地址:172.16.0.0,由于B类地址的默认掩码是255.255.0.0,这就意味着这个网络内有2的16次方个地址。

而可分配给PC使用的IP地址就有2的16次方-2这么多个IP,为什么要减去2?

因为广播地址及网络号是不能分配给PC使用的。

设想一下,如果你真有这么多台PC,这么多个IP地址处于同一个网络中、同一个网段中、同一个广播域中,如上图所示。

那么一旦网络中发生广播,影响可就大了。

再者,实际的业务环境中,我们往往给一个业务单元,划分一个网段,不同的业务单元不同的网段。

那么如果你有10个业务单元,每个业务单元才百来号设备,一个业务单元就耗费一个B类地址,这就造成地址空间的浪费。

因此,我们提出子网划分的概念,子网划分的术语叫做VLSM(Variable Length Subnet Mask,可变长子网掩码),事实上是拿子网掩码变戏法。

在上图中,我们有五个网段,需要五个IP地址段。

而如果你只有一个B类地址(172.16.0.0/16)可用,通过子网划分,可以将这个B类地址划分成一个个小一点的子网。

这样一来,一个庞大的广播域可以被分割成小的单元,另外IP地址的使用也更为科学更为合理。

07 如何划分子网

现在假设我们有一个B类地址:172.16.0.0/16。

默认情况下,这个B类地址的掩码为255.255.0.0,前两个八位组是网络位,后两个八位组是主机位。

那么这个单一的网络中,有2的16次方个IP地址,如上图所示,非常庞大。

现在,将原有的16个位的网络位向主机位去“借”一位,这样一来网络位就扩充到了17位,相对的主机位就变成了15位。

那么借过来的这一位,就是子网位了,如上图所示。

由于我们借了这一位,因此掩码就从默认的255.255.0.0变成了255.255.128.0或者说从/16变成了/17。

于是从原来的只有172.16.0.0/16的一个大网段,变成现在拥有172.16.0.0/17及172.16..128.0/17这两个小一点的网段。

这就是子网划分。

务必要关注网络掩码在这个过程中发挥的作用。

接下来给你说两个子网划分的案例。

08 子网划分—案例1

现在有一个IP地址:192.168.1.0,这是一个C类地址,默认的掩码是/24。

我要对它做子网划分,向主机位借一位作为子网位,也就是掩码变成/25,那么我能拿到几个子网?

每个子网网络号是多少?每个子网广播号是多少?每个子网的可用IP是多少?

步骤如下:

01 判断类别,找默认掩码

首先这是一个C类地址,因此默认的掩码长度为/24,你可以划一条竖线帮助计算。线的左边为网络位,右边为主机位,如上图所示。

02 变更掩码,找子网

在原有的/24掩码基础上,向主机位借一位,掩码变成/25。

借出来的这一位就是子网位,如上图所示,我们只要将虚线往右移动一格就行。

这个子网位要么为0,要么为1,两种可能性。

这就创造了两个子网(2的1次方),子网位为0时,得到的网络号是192.168.1.0/25,子网位为1时,得到另一个子网的网络号192.168.1.128/25。

如下图所示:

03 得出广播号

上面分别列出了子网1及子网2的广播号,其实很简单,就是把各个子网的主机位全部置1即可。

因此子网192.168.1.0/25的广播号为192.168.1.127;子网192.168.1.128/25的广播号为192.168.1.255;

04 得出每个子网的可用IP地址数量

经过上面的计算,得出了子网1及子网2的网络号和广播号,那么每个子网可用的IP地址也就出来了,因为可用IP实际上就是该子网的网络号与广播号之间夹着的那些个IP。

所以实际上我们对192.168.1.0这个C类地址,用了一个变长子网:/25,也就是向主机位借1位后产生出了2个子网,每个子网有126个可用IP地址。

这里有个公式:

09 子网划分—案例2

假设现在你有一个IP地址:192.168.1.64/27,想把这个地址配置在一台PC上,是否可行?

默认掩码/24,新掩码/27因此网络位向主机位借了3位,产生了8个子网,每个子网可用IP地址为30;

而相应的每个子网块的大小就为32,也就是2的5次方(5是剩余的主机位数)。

现在开始把每个子网罗列一下,结果发现192.168.1.64/27这个IP地址,其实是一个子网的网络号。

既然是网络号,当然是不能分配给PC用的了。

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

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

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

相关文章

IDEA强大的VisualGC插件

前言 开发阶段实时监测,自己的JVM信息,实时可视化 Hotspot JVM 垃圾回收监控工具, 支持查看本地和远程JVM进程, 支持G1 and ZGC算法。 插件安装 在线安装 IntelliJ IDEA 可通过在线安装的方式,安装插件 JDK VisualGC,安装步骤: …

Selenium Chrome Webdriver 如何获取 Youtube 悬停文本

导语 Youtube 是一个非常流行的视频分享平台,有时候我们可能想要爬取一些视频的信息,比如标题、播放量、点赞数等。但是有些信息并不是直接显示在网页上的,而是需要我们将鼠标悬停在某个元素上才能看到,比如视频的时长、上传时间…

华为云CTS 使用场景

云审计服务 CTS 云审计服务(Cloud Trace Service),帮助您监控并记录华为云账号的活动,包括通过控制台、API、开发者工具对云上产品和服务的访问和使用行为,提供对各种云资源操作记录的收集、存储和查询功能&#xff0…

解密Redis:应对面试中的缓存相关问题2

面试官:Redis集群有哪些方案,知道嘛? 候选人:嗯~~,在Redis中提供的集群方案总共有三种:主从复制、哨兵模式、Redis分片集群。 面试官:那你来介绍一下主从同步。 候选人:嗯&#xff…

IDEA基础使用

IDEA基础使用 1、IDEA中显示用法和用户截图展示有调用显示无调用显示 对应方法 2、如何找出项目中所有不被调用方法截图展示对应方法 3、常用代码(Code)说明及快捷键:4、未完待续待日后更新。。。总结:欢迎指导,也祝码友们代码越来越棒,技术越…

python版puppeteer——pyppeteerselenium的加强版——seleniumwire

目录 前言seleniumwire安装创建web driver设置代理反屏蔽修改window.navigator.webdriver关键字返回结果options追加参数 pyppeteerpuppeteer安装快速入门参数配置隐藏浏览器特征拦截请求更多文档&博客 Playwright安装快速入门新概念:Context页面基本操作选择器…

wolfSSL5.6.3移植至ZYNQ(XC7Z010)记录

上篇文章主要描述了如何从源工程中将configure.ac转变为configure,并成功使其在Ubuntu上运行,此篇主要描述将其移植到嵌入式arm开发板上(在官方手册中有列举支持的硬件平台架构)。 交叉编译 1. 解压源工程代码; 2.进…

XUbuntu22.04之统计屏幕使用时间activitywatch(一百八十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Node.js-http模块服务端请求与响应操作,请求报文与响应报文

简单案例创建HTTP服务端: // 导入 http 模块 const http require("http"); // 创建服务对象 const server http.createServer((request, response) > {// 设置编码格式,解决中文乱码问题response.setHeader("content-type", &…

WAF独木难支 RASP与ADR将成应用安全防护2.0时代新宠

曾几何时,黑客攻击大多通过网络层进行,但随着基于网络层的基础安全防护措施趋于严密,防火墙、入侵防御、防病毒等安全软硬件构建起了相对完善的防护体系,想再从网络层钻空子的难度增大。如今,黑客攻击从网络层转入Web为…

学无止境·运维高阶③(Mysqldump脚本)

Mysqldump脚本 1、详细脚本2、执行 1、详细脚本 #!/bin/bash mysql_cmd‘-uroot -pRedHat123’ exclude_db‘information_schema|performance_schema|sys’ bak_path/backup/db mysql m y s q l c m d − e ′ s h o w d a t a b a s e s ′ − N ∣ e g r e p − v " {m…

网络电视盒子哪个品牌好?2023最新性价比电视盒子排行榜

电视盒子是电视机成本最低的更新方案,但面对众多品牌和机型时往往不知道网络电视盒子哪个品牌好,踩雷的消费者非常多,想要小编分享电视盒子推荐,今天带新手们了解一下业内最新的性价比电视盒子排行榜,看看哪些电视盒子…

Docker 安装 Tomcat

目录 一、查看 tomcat 版本 二、拉取 Tomcat Docker 镜像 三、创建 Tomcat 容器 四、访问 Tomcat 五、停止和启动容器 一、查看 tomcat 版本 访问 tomcat 镜像库地址:https://hub.docker.com/_/tomcat,可以通过 Tags 查看其他版本的 tomcat; 二、拉…

聊聊我的故事-悲惨的童年

目录 前言一、介绍二、17年回顾1.出生2.上幼儿园3.上小学4.上初中 高中总结 前言 本人是06年生的,快18了, 提示:以下是本篇文章正文内容,下面案例可供参考 一、介绍 本人已经17了,在这17年过的很悲惨,也…

【Linux多线程】设计一个线程池(代码+讲解)

线程池 Lock.hpp说明 Task.hpp代码代码说明 Threadpool.hpp代码说明 Threadpool.cc代码说明 Log.hpp代码说明 Makefile运行结果 Lock.hpp #pragma once#include <iostream> #include <pthread.h>class Mutex { public:Mutex(){pthread_mutex_init(&lock_, nul…

百度离线地图(包含轨迹回放)

先来个效果图&#xff08;demo没那么仔细&#xff09; 现在下载资源包文件放至static文件内 如果需要新的瓦片则添加至static/tiles(我用的是png也可以是jpg) 在此处修改即可 但是&#xff0c;最好还是放在服务器内&#xff0c;因为瓦片很多&#xff0c;项目是无法运行的&…

FTP Cadence中心库的创建与配置 (中)

在上节介绍的ftp服务器根目录下 一、创建一个文件夹 Cadence_lib&#xff0c;并把其设置为 共享。 共享给用户hw 和用户layout&#xff0c;并设置对应权限。 点击“共享”按钮。 二、在Cadence_lib文件夹下&#xff0c;添加如下文件夹&#xff0c;及文件。 其中 “00DataShee…

Vue-函数式组件

最近在开发项目的时候&#xff0c;定制了一个公司内部样式的Modal模态框组件。 Modal组件伪代码 <!-- Modal/index.vue--> <template><div class"modal-container" id"modalContainer"><!-- Modal Content --><div class&quo…

MySQL的索引使用的数据结构,事务知识

一、索引的数据结构&#x1f338; 索引的数据结构&#xff08;非常重要&#xff09; mysql的索引的数据结构&#xff0c;并非定式&#xff01;&#xff01;&#xff01;取决于MySQL使用哪个存储引擎 数据库这块组织数据使用的数据结构是在硬盘上的。我们平时写的代码是存在内存…

编译原理陈火旺第三版第九章课后题答案

下面的答案仅供参考&#xff01; 1. 有哪些存储分配策略&#xff1f;并叙述何时用何种存储分配策略&#xff1f; 答&#xff1a;存储分配策略分为静态分配策略和动态分配策略两大类,而动态分配策略又可分为栈式动态分配策略和堆式动态分配策略两类。 在一个的具体的编译…