计算机网络:网络层 - IPv4地址

计算机网络:网络层 - IPv4地址

    • 分类编址
    • 划分子网
      • 子网掩码
    • 无分类编址 CIDR
      • CIDR 地址块
      • 构造超网


在酒店中,每个房间都有门牌号码,服务员送餐时,就可以根据门牌号码来判断一份餐要送到那个房间。

在网络中也是如此,一份数据发送到网络中,也要通过一个标识符来判断这个数据要发送到哪一台主机,而这个标识符就叫做IP地址

本博客讲解的IP地址IPv4版本的IPv4地址,其由32个比特构成。

比如地址:00001010 11110000 00001111 10101010,这样的地址太难记忆了,我们往往会把每八位分为一组,并写为十进制形式:

在这里插入图片描述

最后再用.把每个数字分开,地址就变成了10.240.15.170,这种记法称为点分十进制

IPv4地址的编址方法经历了如下三个历史阶段:分类编址划分子网无分类编址


分类编址

在互联网发展早期采用的是分类的、两级结构的 IP 地址,由两个字段组成:

  • 第一个字段是网络号,标志主机(或路由器)所连接到的网络
  • 第二个字段是主机号,标志该主机(或路由器)本身

在这里插入图片描述

拥有相同网络号的主机,视为处于同一个网络中。那么现在的问题就是,得到一个IP地址后,怎么判断哪一部分是主机号,那一部分是网络号呢?这是通过分类来实现的。

分类编址的IP地址分为A、B、C、D、 E 五类:

在这里插入图片描述
地址的分类规则如下:

  • 首先根据第一位比特位:第一位为0的地址,就是A类地址;第一位为1的地址包含BCDE类地址。
  • 再看第二位:当前两位为10,就是B类地址;前两位为11的地址包含CDE类地址。
  • 再看第三位:当前三位为110,就是C类地址;前三位为111的地址包含DE类地址。
  • 最后看第四位:如果前四位为1110,则为D类地址;如果前四位为1111,则为E类地址。

每一种类型地址的网络号与主机号的位数,都是固定的

表格如下:

分类网络号主机号最高位
A类8位24位0
B类16位16位10
C类24位8位110

D类和E类地址比较特殊:

  • D类地址是多播地址,最高4位固定为1110
  • E 类地址是保留地址,最高4位固定为1111

只有ABC类地址可以分配给网络中的主机和路由器

接下来我们来详谈ABC三类地址:

A类地址:

A类地址中,包含8位网络号与24位主机号,如下:

在这里插入图片描述

对于网络号部分,A类地址包含从0000000001111111的网络号,即[0, 127]

这些网络号被分为三部分:

  • 0:网络号为00000000的地址,被保留下来,不会给主机使用
  • [1, 126]:这一段网络号是可以指派个给主机正常使用的
  • 127:即网络号01111111,该网络号内部的所有地址,称为本地环回地址,不给主机使用

我简单说明一下本地环回地址,这是一个用于测试的地址,用于在同一台计算机上进行网络通信。比如说你写了一个程序,要通过网络在不同主机之间通信。如果你想要测试你的程序是否可以利用网络通信,此时就可以用本地环回地址

例如:当你开发一个网络应用程序,需要测试它是否能与服务器通信时,你可以使用本地环回地址来模拟这个过程。你可以在本地计算机上安装一个服务器,并使用本地环回地址 (127.0.0.1) 来连接到该服务器。这样,你就可以在不连接到实际网络的情况下测试你的应用程序。

现在聊完了网络号,再看看主机号:

对于可以指派的[1, 126]区间的网络号,以网络号为123为例,其主机号也分为三部分:

  • 123.0.0.0:即主机号为全0,这个主机号不会分配给主机使用,而是用于标识这整个网络
  • 123.255.255.255:即主机号为全1,这个主机号也不会分配给主机使用,而是用于在网络内部进行广播,称为广播地址
  • 其它:只要主机号不为全0全1,就可以给主机正常使用

对于A类地址而言,每个网络中可以分配的IP地址数为:

2 24 − 2 = 16777214 {\color{Red} 2^{24} - 2 = 16777214} 2242=16777214

也就是一千六百七十多万个,其中-2是要减去全0全1的两个地址。


B,C类地址:
相比于A类地址,BC类地址的结构非常简单,因为BC类地址中不用考虑本地环回地址,也没有被保留的地址。

B类地址为例:

在这里插入图片描述

对于网络号:B类和C类地址的所有网络号都可以分配,没有特殊的网络号。

比如对于B类地址,其最小可分配的网络号为10000000 00000000,即128.0;而其最大可分配的网络号为10111111 11111111,即191.255

对于主机号:全0的主机号表示本网络,全1的主机号表示该网络的广播地址。

对于B类地址而言,每个网络中可以分配的IP地址数为:

2 16 − 2 = 65534 {\color{Red} 2^{16} - 2 = 65534} 2162=65534

对于C类地址而言,每个网络中可以分配的IP地址数为:

2 8 − 2 = 254 {\color{Red} 2^{8} - 2 = 254} 282=254

接下来我汇总一下所有特殊的IP地址:

网络号主机号是否可做源地址是否可做目的地址含义
00可以不可以代表本网络的本主机
0X可以不可以代表本网络的主机号为 X 的主机
全1全1不可以可以在本网络上广播
Y全1不可以可以在网络号为 Y 的网络上广播
Y全0不可以不可以表示网络号为 Y 的整个网络
127非全0,非全1的任何数可以可以本地环回地址

划分子网

接下来我们讲解IPv4地址的第二个发展阶段,划分子网

在分类网络中,我们会存在地址浪费的问题,假设某个单位有300个人,按照分类编址,请问要给这个单位划分哪一类的地址呢?

B类网络中,每个网络含有的IP地址数目为65534,而C类网络中,每个网络含有的IP地址数目为254。那么问题就来了:如果给这个单位C类网络,IP地址数目不够,如果给这个单位B类网络,就会浪费掉六万多个IP地址

为了解决这种资源浪费的问题,IP地址进行了划分子网

划分子网的思想就是:将一个大的网络,划分为更多个小的子网络。

此时IP地址被划分为了网络号子网号主机号三部分:

在这里插入图片描述

从上图的网络号可以看出,这是一个B类地址,注意:子网划分是建立在分类编址之上的,所以网络号部分依然可以标识ABC类地址,也遵循之前的分类编址规则。

那么这个子网号是如何凭空出现的呢?这个子网号,其实是从主机号中分出来的。

那么这个子网号有啥作用呢?对于网络号和子网号都相同的主机,视为处于同一个网络中!

那么我们再来看看一开始的问题:一个单位有300人,现在要如何给这个单位分配网络?

刚才我们分析过,要分配一个B类地址给这个网络,但是B类地址中有65534个地址,对这个单位来说又太多了,所以我们可以将这个B类地址划分为更多个子网!

假设我们要对166.16.0.0B类网络进行划分,我们可以分配 2 9 = 512 2^{9} = 512 29=512 个地址给这个单位,也就是说对于原先的16位主机号,只保留9位,剩下7位拿去做子网号:

在这里插入图片描述

此时整个166.16.0.0网络就被分为了 2 7 = 128 2^{7} = 128 27=128 个子网络,也就是子网号从00000001111111

在这里插入图片描述

现在把其中一个子网分配给该单位,剩下的127个子网给别的地方用,这样就可以大幅减少IP地址的浪费了!

假设这个单位分配到的子网号为1010101,并不是所有的IP地址都可以分配。

在这里插入图片描述

与之前相同的,主机号全0表示该网络,不可以分配,而主机号全1是广播地址,也不能分配,所以这个子网中可以分配的IP地址总数为: 2 9 − 2 = 510 2^{9} - 2= 510 292=510 个。

子网掩码

划分子网后,原来属于一个网络的IP地址有可能会被划分在不同的子网,那么如何判断一个IP地址的子网号是哪一部分呢?

这就需要用到子网掩码 (subnet mask),子网掩码也是32位,由一串连续的1和一串连续的0组成,比如11111111 11111111 11110000 00000000

那么子网掩码有什么用呢?子网掩码的1部分,对应IP地址中的网络号子网号,而子网掩码的0部分,对应IP地址主机号,如下:

在这里插入图片描述

比如以上示例中,主机号145.13子网号3,它们对应的子网掩码都是1,而主机号为10,对应的子网掩码为0

将一个IP地址与它的子网掩码进行按位与运算,就可以得到该IP地址所处的网络

例如:已知 IP 地址是 128.14.35.7,子网掩码是 255.255.240.0,求网络地址

在这里插入图片描述

将地址128.14.35.7转为二进制:

1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1

再把子网掩码255.255.240.0转为二进制:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

将两者按位与:

1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
----------------------------------------------------------------
1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

再把10000000000011100010转为点分十进制128.14.32.0,此时就得到了网络地址。

由于A类,B类,C类地址都有固定的主机号,所以它们的子网掩码都是有默认值的,比如A类地址的主机号有8位,那么子网掩码前面至少有81,那么子网掩码的默认值就是11111111 00000000 00000000 00000000,点分十进制位255.0.0.0,这种子网掩码称为默认子网掩码

各分类地址的默认子网掩码如下:

在这里插入图片描述


无分类编址 CIDR

IPv4地址 编址方法的第三个历史阶段,是无分类编址IPv4地址

尽管之前介绍的划分子网的 IPv4地址在一定程度上缓解了因特网在发展中遇到的困难,但是因特网的 IP 地址仍在加速消耗整个 IPV4 地址空间,面临全部耗尽的威胁。为此,因特网工程任务组又提出了采用无分类编址的方法来解决 IPv4地址 紧张的问题。

1993 年英特网工程任务组发布了无分类域间路由选择的相关 RFC 文档。无分类域间路由选择的英文缩写词为CIDR消除了传统 A 类、 B 类和 C 类地址以及划分子网的概念,因此可以更加有效的分配 IPV4 的地址空间。

这里有一个很重要的信息,那就是无分类编址 CIDR已经推翻了之前的分类编址划分子网,是一套全新的IP地址体系,接下来的学习不要带入之前的概念,要看做是一个新的体系去学习。当然,CIDR也有很多和之前相似的地方,它继承了先前的IP地址设计的优点,并优化了部分缺点。

CIDR编址中,IP地址的格式如下:

在这里插入图片描述

其与分类编址中的网络号 + 主机号的模式很像,但是CIDR中,网络前缀的长度是任意的,不受限制,而分类编址网络号的长度是固定的。

那么对于一个IP地址,要如何知道其有多少位网络前缀呢?

CIDR使用斜线记法或称为CIDR记法,即IP地址的末尾加上一个斜线'/',写上网络前缀所占的位数。例如128.14.35.7/20这个地址,就是指前20位为网络前缀,剩下的12位是主机号

如果想要求出CIDR编址下,IP地址所处的网络,其实就是把主机号的所有比特位变为0,保留网络前缀即可,当然你也可以用通过与子网掩码进行按位与的方法求网络地址,通过反斜线记法可以很轻松求出子网掩码

CIDR 地址块

CIDR把网络前缀都相同的连续IP地址组成一个CIDR地址块

比如128.14.32.0/20,这就是一个CIDR地址块,其表示前20网络前缀128.14.32的所有地址聚合成的一个地址块,也可以表示一个网络。

如下图:

在这里插入图片描述

要注意,CIDR地址块中包含的地址数,一定是 2 n 2^{n} 2n 个。

接下来我带大家辨析一些网络地址:

  1. 128.14.35.7

该地址是一个IP地址,但是没有通过反斜线记法表示其网络前缀的位数,所以不知道其网络。

  1. 128.14.35.7/20

该地址是一个IP地址,并通过/20表示该地址的网络前缀20位。

  1. 128.14.32.0/20

其有两种可能,如果其表示IP地址,那么这就是一个主机号为全0IP地址

因为其主机号0,所以其也有可能表示CIDR地址块

接下来我们看一些特殊的CIDR地址块

网络前缀长度子网掩码含义
/32255.255.255.255一个IP地址,这个地址一般在路由器中来指定一台主机
/31255.255.255.254这种地址块中,只有两个地址,也就是最后一位主机号分别为10,这种地址用于进行点对点链路通信,此时主机号全1不再表示广播,因为点对点链路没有广播的概念
/00.0.0.0这是全球所有IP地址构成的一个地址块,如果主机号也为全0,即0.0.0.0/0,则表示路由器中的默认路由

构造超网

当多个网络有相同的前缀时,可以把这些网络构造为一个更大的网络,该过程叫做构造超网

比如以下案例:

在这里插入图片描述

以上的16个网络中,它们都是/24的网络,也就是它们的网络前缀都是20位,但这些网络的前20位都相同,只有第[21, 24]位不同,所以我们可以把它变为一个统一的网络,前缀为:128.14.0000,也就是128.14.0.0/20这个网络。这就是构造超网

有人可以会认为,这个过程不就是把地址统一为CIDR地址块吗?不,两者有很大区别,CIDR地址块是把众多IP地址统一到一个地址块中;而构造超网是把众多网络统一到一个更大的网络中。

即:CIDR地址块统一的是IP地址,而构造超网统一的是网络

构造超网有以下要求:

  1. 所有网络的IP地址必须连续
  2. 网络的总数必须是 2 n 2^{n} 2n
  3. 所有网络中的最小地址和最大地址,必须构成超网的边界

所谓构成边界,就是说比如说上例中,我们把很多/24的网络构造成了一个/20的网络。那么第[21, 24]位中,最小值必须是0000,最大值必须是1111,这就是两个边界值。并且这两个值中间的所有值都必须连续存在,即第一条规则。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

万万没想到,一个不起眼的小功能,差点把我们项目搞崩溃!

大家好,我是程序员鱼皮。今天分享一个真实项目开发的小故事。 故事 最近我们团队一直在持续更新编程导航网站,优化了界面,也新增了不少功能。现在网站长下面这样,是不是看着比以前舒服多了? 编程导航:htt…

2024泰迪智能科技大数据实训室方案

大数据实训室的主要目的是培养大数据平台运维项目的实践能力,以数据计算、分析、挖掘和可视化的案例训练为辅助。实训室旨在培养德智体全面发展、遵纪守法、掌握大数据平台运维基本技能、具备大数据应用、分析和系统管理与运维能力的高素质大数据技术人才。 大数据实训室建设的…

理解科研中的空间域和时域和频域

文章目录 空间域时域频域频域中的高低概念 读了很多的论文后,才感知到论文中常说的什么空间域怎么怎么样,时域怎么怎么样,频域怎么怎么样。 本文其实主要写的是频域。 空间域 spatial domain ; 时域 temporal domain &#xff1b…

【Modelground】个人AI产品MVP迭代平台(4)——Mediapipe视频处理网站介绍

文章目录 介绍模型配置输入输出核心实现(源码)总结 介绍 这篇文章我将硬核介绍Modelground的第一个产品——Mediapipe视频处理!网站入口为https://tryiscool.space/ml-video/,如图所示,欢迎体验。 tip: 由于服务器带宽…

Query传递的参数需不需要加注解?加什么?为什么有的时候要加有的时候不加?

Query传递过来的参数可以加,也可以不加注解。如果要加,是在传递的参数名和后端的变量名不一致的情况下,要加RequestParam如果传递过来的参数名和后端的变量名一致,则可以不加RequestParam。 传递过来的数据如果是通过 Query 方式…

Java操作数据库 —— JDBC ① 基础篇

我走我的路,有人拦也走,没人陪也走 —— 24.6.7 JDBC JDBC就是使用Java语言操作关系型数据库的一套API 一、JDBC简介 JDBC 概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:(Java DataBase Connectivity)意为Java 数据库连接 JDBC 本质: ①…

7种常用数据分析方法,建议收藏学习(下)

在上一篇内容里,我们提到了常用的数据分析放法,比如:漏斗分析法、留存分析法、分组分析法、矩阵分析法。没有看到的上篇推送的小伙伴可以回过头去查看我们之前的推送。 今天,我们继续讲后面的内容:关联分析法、指标分…

图钉AI导航

1、图钉AI导航 https://www.tudingai.com/

MySQL复习题(期末考试)

MySQL复习题(期末考试) 1.MySQL支持的日期类型? DATE,DATETIME,TIMESTAMP,TIME,TEAR 2.为表添加列的语法? alter table 表名 add column 列名 数据类型; 3.修改表数据类型的语法是? alter table 表名 modify 列名 新…

【机器学习】让计算机变得更加智能

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 目录 机器学习:让计算机…

springmvc 全局异常处理器配置的三种方式深入底层源码分析原理

文章目录 springmvc 全局异常处理器配置的三种方式&深入底层源码分析原理配置全局异常处理器的三种方式实现接口HandlerExceptionResolver并配置到WebMvcConfigurer注解式配置ExceptionHandlercontroller里方法上定义ExceptionHandler 深入源码分析进入DispatcherServlet执…

Jmeter07:函数

1 Jmeter组件:函数 1.1 是什么? 是程序中的封装单元(最小的),封装一些功能实现 1.2 为什么? 优点1:易读 易维护 优点2:实现功能复用 1.3 怎么用? 流程: 1&…

HCIE认证,这些误区要避开

追求HCIE认证是许多网络工程师提升职业水平的选择之一。 然而,在这条备考之路上,存在不少误解可能会误导你的学习方向或影响你的备考效率。 了解并避开这些常见误区,将帮助你更有效地准备HCIE认证考试。 01 误区一:过分依赖题库 …

【Three.js】知识梳理二:Three.js引用和环境搭建

1.文件包下载和目录简介 1.1 文件包下载 a. 官方网站下载: 访问 Three.js 的官方网站(threejs.org/)并点击 "Download" 按钮,下载最新版本的文件包。 b. GitHub仓库下载: 访问 Three.js 的 GitHub 仓库&a…

面向对象设计原则概述

面向对象设计原则概述 面向对象设计原则概述 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 内容来自《设计模式与艺术》一文。后续会陆续分享书中值得深思观点。 面向对象设计的目标之一在于支持可维护性复用&#xf…

Django UpdateView视图

UpdateView是Django中的一个通用视图,用于处理对象的更新操作。它允许用户更新一个已经存在的对象。UpdateView通常与一个模型表单一起使用,这样用户就可以看到当前对象的值,并可以修改它们。 1,添加视图 Test/app3/views.py fr…

第十九节:暴力递归到动态规划

一 动画规划的概念 优化出现重复解的递归 一旦写出递归来,改动态规划就很快 尝试策略和状态转移方程是一码事 学会尝试是攻克动态规划最本质的能力 如果你发现你有重复调用的过程,动态规划在算过一次之后把答案记下来,下回在越到重复调用过程…

2-1基于matlab的拉普拉斯金字塔图像融合算法

基于matlab的拉普拉斯金字塔图像融合算法,可以使部分图像模糊的图片清楚,也可以使图像增强。程序已调通,可直接运行。 2-1 图像融合 拉普拉斯金字塔图像融合 - 小红书 (xiaohongshu.com)

Camtasia Studio2024破解神器下载,轻松上手视频剪辑

嘿!今天我要和大家分享一个神奇的软件——Camtasia Studio2024最新版的破解安装包!🎬 作为一个视频制作爱好者,我一直在寻找一款功能强大、易于操作的视频编辑软件。而Camtasia Studio2024就是我心目中的完美选择!它不…

数值计算精度问题(浮点型和双整型累加精度测试)

这篇博客介绍双整型和浮点数累加精度问题,运动控制轨迹规划公式有大量对时间轴的周期累加过程,如果我们采用浮点数进行累加,势必会影响计算精度。速度的不同 进一步影响位置积分运算。轨迹规划相关问题请参考下面系列文章,这里不再赘述: 1、博途PLC 1200/1500PLC S型速度曲…