5.2.1 分类的IP地址

news/2024/11/14 23:29:22/

5.2.1 分类的IP地址

通过前面的学习我们知道IPv4协议中包含的内容非常的多,我们学习IPv4又分为几个方面

  1. 介绍分类的IP地址
  2. IP地址的分配与使用
  3. IP分组的格式
  4. 因特网地址到物理地址的映射(ARP协议),用以动态完成IP地址到物理地址映射
  5. 差错与控制报文协议(ICMP协议),报告传送过程中发生的异常情况
  6. 子网编址:介绍如何进行子网划分
  7. 无分类编址与CIDR
  8. IP分组的转发:详细介绍IP协议中分组是如何被转发的包括直接交付与间接交付的概念各种编址情况下转发IP数据报的算法等

一、编制方案

为了全球通信的需要,TCP/IP协议的设计者选择了一种类似于物理网络的编址方案,给因特网上每台主机分配了一个32位比特的唯一值来作为该主机的标识符,该地址可以用在与该主机的所有的通信中,他就是我们要介绍的IP地址。把整个因特网看成一个单一的、抽象的网络。IP地址就是给每个连接在因特网上的主机分配一个在全世界范围是惟一的32比特的标识符。

最初的IP编址方案将32比特分为两个部分即IP地址采用分层的地址结构:前缀+后缀

前缀(network-ID,网络号部分):前缀标识的是主机所属的物理网络称为网络号部分

后缀(host-ID,主机号部分):用于区分物理网络内的主机称为主机号部分

比如说我们将“南京市鼓楼区东方雅苑5号301室”看做一个IP地址那么“南京市鼓楼区东方雅苑”就是网络号部分(前缀),“5号301室”就被称为主机号部分(后缀)

因为前缀+后缀=32比特,如果前缀越长就说明支持的物理网络数量就越多,但是网络内的主机数量就越少也就是网络规模就越小。反之前缀越短,后缀就越长,意味着支持网络规模较大的物理网络,也就是说主机数量多,但是网络数量少。

最初的IP编制方案兼顾了这两种情形,没有采用统一的单一的界限去划分前缀和后缀因此就被成为分类的编址方案。最初的分类编址方案中包含着五种类型的地址。如图A类、B类、C类是三种主要类别,由于标识主机和路由器,D类地址为组播地址,E类地址为保留地址一直没有使用。

分类

1993年起为了更加充分利用IP地址空间,因特网采用了无分类IP编址方案,这个我们后面介绍。虽然分类的IP地址已经不再广泛使用,但是它是IP编址的基础,也是后续发展的根源,所以我们海狮应该有所掌握。

  • A类地址的网络号部分net-ID为8比特,1字节,图中我们可以看出,这里需要注意的是在网络号部分里最左边的一位固定位0,所以可变部分只有7个比特。也就是从理论上说有 2 7 2^7 27个A类网络,后面我们还会学习到还要将两个特殊的地址去掉,所以A类网络的个数只有126个。每个A类网络的主机号部分是24比特,也就意味着每个A类网络中可用的IP地址的个数是不能超过 2 24 2^{24} 224的,在实际当中也会去掉两个特殊的IP地址不能用。
  • B类地址包含16比特的网络号部分,网络号字段net-ID为2个字节,其中最左边两位固定为10,可变部分为14个比特,B类地址包含16个比特的主机号,可见对于B类网络相对于A类网络来说每个网络的规模变小了,也就是每个B类网络中可用的IP地址数量变少了。
  • C类地址包含了24比特的网络号部分,网络号字段net-ID为24比特,3字节,其中最左边的两位固定位110,可变部分为21位,C类地址中包含了8比特的主机号,每个网络的规模进一步缩小。
  • D类地址为组播地址,这里我们只是简单的了解一下组播的概念,所谓的组播又称为多播,表示一对多进行通信,改地址是用于给一个多播组成员进行通信时所用到的地址,这里我们仅做了解即可。
  • E类地址为保留地址,一直没有使用

对于32比特的IP地址来说,在应用程序或技术文档中为了便于阅读,一般习惯性的采用点分十进制记法,也就是把32比特的IP地址,每8比特分成一组,每组用一个十进制数字来表示,所以这里我们就要牢牢掌握二进制和十进制的转换,因为后面我们还会用到十进制转换成二进制。这里我们还要注意我们通常用到的都是八位二进制数和0到255之间的十进制数之间的转换。

二、点分十进制

把得到的四个十进制整数,用三个点来隔开,比如说某主机32比特的IP地址是10000011000010110010001100011010,先将其每8个比特分成一组并分别转换成十进制之后,再用三个点隔开,就可以写成其点分十进制的表示形式:131.11.35.26。由于改地址的最高两位是10,根据分类的规定,可以知道这个地址是一个B类的IP地址,而且网络号部分为131.11,主机号部分是后面的16位,35.26,该主机所在物理网络的网络地址也可以写成32位IP地址的形式,也就是131.11.0.0,这里我们需要注意,网络地址是一个特殊的IP地址,它的特点就是主机号部分用全零表示。这个实例中的IP地址是一个B类的地址,是根据其二进制的最高两个比特是10来判断的,既然我们平时习惯用点分十进制来表示IP地址,如何判断采用点分十进制表示的IP地址的类型呢?我们只需要把每种类型的IP地址用点分十进制表示的时候把第一个数字的范围记住就可以了。如表格所示

网络类别最大网络数第一个可用的网络号最后一个可用的网络号每个网络中最大的主机数
A126( 2 7 − 2 2^7-2 272)112616777214
B16384( 2 14 2^{14} 214)128.0191.2556534
C2097152( 2 21 2^{21} 221)192.0.0223.255.255254

A类地址第一个数字是在1到126之间,B类地址第一个数字是在128到191之间,C类地址第一个数字是在192到223之间。这里我们要掌握判断IP地址类型的方法,如对于B类地址的范围是如何得到的,因为对于B类地址来说,第一组8位最小为10000000,最大为10111111,把它们分别转换为十进制,就得到了128和191,其他的以此类推。

从表格中我们也可以看出,一共有126个A类网络,这里我们要强调,因为点分十进制,0开始的地址是特殊的IP地址,全1开始的127也是一个特殊的环回地址,所以A类网络只有126个,对于B类和C类网络来说分别有 2 14 2^{14} 214个和 2 21 2^{21} 221个。表格右侧是指每种类型网络中可用的IP地址个数,这里我们要注意在任何一种类型的网络中主机号部分全零和全1的地址是不分配的。因为主机号部分全零的地址就是我们刚所说的网络地址。主机号部分全1的地址是网络内的广播地址,关于广播地址的用途我们后面介绍。在这里我们只需要知道网络中有两个地址不能分配就可以了,所以在A类网络中可用的IP地址个数是 2 24 − 2 2^{24}-2 2242个,一个B类网络中可用的IP地址个数是 2 16 − 2 2^{16}-2 2162个即65534个IP地址,C类网络中有 2 8 − 2 2^8-2 282个,即254个。

在明白了如何判断IP地址的类型以后,我们来看一个简单的例子

例:IP地址是202.119.230.8的主机所在网络的网络地址是多少?

我们知道网络号部分保留,主机号部分全零的地址是该网络的网络地址。那么我们只用找到该IP地址的主机号部分即可,因此关键之处就在于要判断出它是什么类型的IP地址,根据它的第一个数字是202可知,192<202<223,该IP地址为C类地址,对于C类地址来说,网络号部分是24为,主机号部分是8位,所以对于其所在网络的网络地址来说是前24位保留,主机号部分则全0,因此该主机所在网络的网络地址是202.119.230.0。

如果将该主机的IP地址修改为190.119.230.8,则该主机所在网络的网络地址就变成了190.119.0.0

三、小结

我们学习了三种分类的IP地址,这里我们要理解IP地址的组成,掌握如何判断IP地址的类型,可以根据IP地址能够计算其所在网络的网络地址,后面我们一起学习IP地址的分配和使用。


http://www.ppmy.cn/news/107019.html

相关文章

Spring Security 6.x 系列【46】漏洞防护篇之安全相关的HTTP响应头

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. HeaderWriterFilter3. 默认响应头3.1 XContentTypeOptionsHeader…

【Linux】iptables防火墙

文章目录 一、Linux防火墙基础1.Linux防火墙概术2.netfilter/iptables3.四表五链4.规则链之间的匹配顺序 二、iptables 安装1.常用的控制类型2.常用的管理选项 三、示例演示1.添加新的规则2.查看规则列表3.删除规则4.清空规则 四、规则的匹配1.通用匹配2.隐含匹配3.显式匹配 一…

系统栈的工作原理-0day漏洞利用原理(3)

讲清楚代码如何在系统栈工作的基本认知,一字一句的弄清楚 ,本篇内容:内存不同用途,栈与系统栈,寄存器与函数栈帧(上半部分) 要懂点C和汇编语言会好点, 恶补下《IBM X86 汇编》或者《Win32 汇编》,容易区分明白。 系统栈的工作原理 内存的不同用途 缓冲区溢出就是在大缓…

C语言---数组

1、一维数组的创建和初始化 1.1、数组的创建 数组是一组相类型元素的集合。 数组的创建方式&#xff1a; type_t arr_name [const_n];//type_t 是指数组的元素类型 //const_n 是一个常量表达式&#xff0c;用来指定数组的大小。1.2、数组的初始化 数组的初始化是指&#x…

分片架构,Redis Cluster 分析

分片架构解决的问题 通过堆机器&#xff0c;提升读写性能&#xff0c;与存储性能 分片架构设计要点 分片规则 选择Cardinality大的作为分片键&#xff0c;尽可能保证数据分布均匀 常见分片键&#xff1a; 基于主键&#xff08;业务型数据&#xff09;&#xff0c;基于时间…

Android平台OpenCV入门

一、导入OpenCV 别忘记把libopencv_java3.so添加进来。 二、初始化 OpenCVLoader.initDebug();三、常用方法 1. CvType 数据类型 以CV_64FC2为例&#xff0c;64指64位&#xff0c;F指浮点数&#xff0c;C指通道&#xff0c;2为2通道。 数值具体类型取值范围CV_8U8 位无符…

DERT(DEtection TRansformer) ONNX直接推理!!

目录 1.前言 2. ONNX模型 (1) backbone使用的是resnet50 (2) Transformer结构 (3)模型输出 3.代码展示(不收费&#xff01;&#xff01;&#xff01;) 4.结果展示 5.源代码地址 1.前言 DETR DETR的全称是DEtection TRansformer&#xff0c;是Facebook提出的基于…

Redis(二)

Redis进阶 1. Redis为什么这么快&#xff1f;2. 缓存穿透2.1 概念2.2 解决方案 3. 缓存击穿3.1 概念3.2 解决方案 4. 缓存雪崩4.1 概念4.2 解决方案 5. redis集群5.1 主从同步5.2 哨兵模式&#xff08;集群模式&#xff09;1. 哨兵主要有两个重要作用2. 哨兵模式应用3. sentine…