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

2024-06-11 22:44

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


这篇关于计算机网络:网络层 - IPv4地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052463

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

webapp地址

F:\LSP\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控