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

news2024/12/23 3:31:43

计算机网络:网络层 - 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,这就是两个边界值。并且这两个值中间的所有值都必须连续存在,即第一条规则。


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

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

相关文章

泵制造5G智能工厂工业物联数字孪生可视化,推进制造业数字化转型

泵制造5G智能工厂工业物联数字孪生可视化,推进制造业数字化转型。泵制造行业,作为工业领域的核心部分,更是急需通过技术创新实现生产流程的智能化和高效化。而5G智能工厂工业物联数字孪生可视化技术的出现,为泵制造业的数字化转型…

【全网最齐报错的解决方法!】运行mvn命令打包项目jar包报错?“Fatal error compiling: 无效的目标发行版: 19 ”, 让我来看看~

最近写实验,要打包项目,但是不管是在cmd运行“mvn clean package -Dmaven.test.skiptrue”命令,还是在idea上去操作,都出现了这样的一个错误: [EROR] Failed to exeoute goal org.apache.maven.plugins:maven-comnpile…

作业6.11

练习1&#xff1a;输入一个数&#xff0c;判断是否是完美数 完美数&#xff1a;正序和逆序的结果一致 练习2&#xff1a; * ** *** **** for(int i0;i<4;i){for(int y1;y<4-i;y){ printf(" ");}for(int j0;j<i;j){printf("*&quo…

zabbix-agent如何版本回退降低?

文章目录 1&#xff0c;查看zabbix-agent版本号2&#xff0c;查看zabbix-server的版本号3&#xff0c;卸载已有的zabbix-agent4&#xff0c;找到与zabbix-server匹配版本的zabbix-agent5&#xff0c;安装zabbix-agent 5.0.42版本6&#xff0c;查看已安装的zabbix-agent的版本号…

谁是最会写作文的AI“考生”?“阅卷老师”ChatGPT直呼惊艳!

文章推荐 粽叶飘香&#xff0c;端午安康&#xff01;AI视频送祝福啦~ AI日报&#xff5c;文生语音大模型国内外均有突破&#xff0c;Pika完成6亿新融资&#xff0c;视频大模型也不远了&#xff01; ⭐️搜索“可信AI进展“关注公众号&#xff0c;获取当日最新AI资讯 一年一…

Visual Studio 调试 Win32 出现 Task Manager / Explorer 无法打开,无法关机/重启

现象 Access is denied 无法关机 无法通过开始 -> 关机/重启 进行关机或者重启 无法打开新的应用 无法通过开始 -> 双击应用打开新的应用 已打开应用的使用不受影响 已经打开的应用可以正常操作 原因 杀毒软件&#xff1b;关掉杀毒软件就好了 问题查找过程 参考…

记一次华为2288H V5更换主板的辛酸

1、开机提示找不到设备&#xff0c;通过带外检查硬盘raid是否正常&#xff0c;如果正常就不是硬件问题&#xff0c;也不会是线没接好 2、网络不通&#xff0c;服务重启啥的都正常不会报错&#xff0c;就是ping不通网关&#xff0c;后来通过带外发现是网卡漂移了。 核对mac地址发…

项目:双人五子棋对战-对战模块(6)

完整代码见: 邹锦辉个人所有代码: 测试仓库 - Gitee.com 当玩家进入到游戏房间后, 就要开始一局紧张而又刺激的五子棋对战了, 本文将就前端后端的落子与判断胜负的部分作详细讲解. 模块详细讲解 约定前后端交互的接口 首先是建立连接后, 服务器需要生成一些游戏的初始信息(可…

一五零、MAC 安装mysql可视化工具连接

mysql安装&#xff0c;按照网上教程一步步安装&#xff08;官网下载安装包->解压->完成安装&#xff09;&#xff0c;最后在「系统偏好设置」无法启动mysql。 原因&#xff1a;下载的版本是8.0最新版本&#xff0c;MAC上这种方法无法启动成功。 解决方法 换低版本的mys…

JDBC开发之四大核心API:DriverManager Connection Statement ResultSet

DriverManager 方法都是静态的 注册驱动 在Mysql5之后我们就不用注册驱动了 在jar包里已经写好了 读取文件 第二个方法 如果连接的是主机mysql并且端口是默认的3306 则可以简化书写 代码书写 import java.sql.Connection; import java.sql.DriverManager; import java.sql.S…

微软的这个按钮又双叒叕变了位置?有时候还不见了……

前言 小白最近打开Windows11系统的时间比较少&#xff0c;大部分时间都还是喜欢用MacBookPro码字。 之前小白写过一篇关于微软系统左下角的这个神奇按钮 Windows11更新之后&#xff0c;电脑左下角多出了一个奇怪的按钮&#xff08;点我跳转查看&#xff09; 没错&#xff0…

vivado HW_SIO_GT

描述 Xilinx的可定制LogiCORE™IP集成误码率测试仪&#xff08;IBERT&#xff09;核心 FPGA是为评估和监控千兆收发器&#xff08;GTs&#xff09;而设计的。IBERT core支持系统内串行I/O验证和调试&#xff0c;使您能够进行测量和优化 您的设计中的高速串行I/O链路。参考综合误…

webpack--压缩,代码的拆分,tree shinking

Terser 对代码进行压缩、丑化 const TerserPlugin require("terser-webpack-plugin");optimization: { minimize: true, //在开发环境下启用 CSS 优化minimizer: [new TerserPlugin({extractComments: false,terserOptions: {compress: {arguments: true,// 将函数…

CAPL如何发送一条SYN报文

在TCP协议中,发起连接的Client端首先会发送一条SYN报文,用来发起TCP连接请求。这条SYN报文的本质是TCP报文,只不过flags字段中SYN位置为1。 且SYN的序列号是随机的,所以可以用一个随机函数来生成随机数。而ack确认号是0。 TCP报文和UDP报文一样,需要设置源和目标端口号,…

最新小红薯引流无限曝光机,轻松高效精准曝光引流【引流软件+使用教程】

在现代数字营销的海洋中&#xff0c;精准引流已成为商家及创业者追求的圣杯。一种无需采集ID的新策略突破了传统营销的局限&#xff0c;提供了一条高效且安全的道路。这种方法旨在通过有针对性的关键词触达潜在的兴趣群体&#xff0c;实现品牌与用户之间的高效对接。 以关键词…

【CW32F030CxTx StartKit开发板】构建开发环境,测试LED和UART例程

目录 1、开发环境的构建 2、硬件连线 3. 例程测试 3.1 LED示例 3.2 UART printf示例 本文首发于21ic&#xff1a;https://bbs.21ic.com/forum.php?modviewthread&tid3382698&page1#pid14103102 感谢21ic和武汉芯源提供的测试机会。 此次测试的是CW32F030CxTx S…

新手grub 配置介绍

最近因为工作需要接触了grub&#xff0c;学到了一些相关知识&#xff0c;所以在这里写篇博客记录一下&#xff0c;有不对的部分欢迎指正。 目录 grub是什么&#xff1f; grub有哪些配置文件&#xff1f; 各配置文件区别 配置文件生成流程 配置文件有哪些内容&#xff1f;…

【Nature子刊】最争气国人友好“灌水刊”,中科院3区升2区,录用仅1个月,2天见刊!

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

Android Studio | 小白如何运行别人的安卓项目

目录 Step1&#xff1a;正确地打开项目 Step2&#xff1a;AS 同步时报错 Step3&#xff1a;同步完成后启动 Step4&#xff1a;启动成功 说明&#xff1a;本文简称 Android Studio 为 AS Step1&#xff1a;正确地打开项目 重点&#xff1a;确认好项目的根目录是哪个目录&am…

TCL电视销量蝉联全球第二,打出美洲杯欧洲杯营销王牌

四年一度的欧洲杯即将于6月14日至7月14日在德国举办。作为全球顶级的足球赛事&#xff0c;欧洲杯不仅受到全世界球迷的瞩目&#xff0c;同样赢得了中国品牌的青睐。 近日&#xff0c;TCL宣布成为德国、西班牙、意大利、波兰、斯洛伐克5支国家队的官方合作伙伴&#xff0c;携手…