前端学习计算机网络——IP地址的划分及其分类

简介: 本文是该系列文章的第二篇,将了解Internet中使用的网络层地址,又称IP地址。每个设备都至少需要一个IP地址,其可以作为我们设备的标识,就跟我们的电话号码一样,知道了电话号码就能找到我们,所以每个IP地址都是唯一的,所以在给每台设备分配IP时,会根据一套编号方案进行,本篇文章我们就来详细地了解一下它。

一、IP地址的表示


IP作用于OSI参考模型中的网络层,在终端通信中作为唯一标识,便于确定数据的传递目标。


IP地址分为:IPv4IPv6


大多数用户熟悉并且流行的IP地址是IPv4,其是用点分四组十进制的表示方法展示的,例如 165.195.130.107197.101.0.0 等,每一组的数字都是非负的整数,范围在 [0, 255] 之间。


IPv4还有种写法是用二进制表示的,例如:


十进制表示 二进制表示
0.0.0.0 00000000 00000000 00000000 00000000
1.2.3.4 00000001 00000010 00000011 00000100
10.0.0.255 00001010 00000000 00000000 11111111
165.195.130.107 10100101 11000011 10000010 01101011
255.255.255.255 11111111 11111111 11111111 11111111


因此称IPv4是32位的。而IPv6的位数就比较大了,是128位的,长度是IPv4的4倍,并且其表示方式是分块的八组四个十六进制数,例如:

5f05:2000:80ad:5800:0058:0800:2023:1d71,每个块儿之间都是用 : 隔开的。


IPv6看着特别得长,所以它的简化表示法已经有一套标准,规则如下:


  1. 每个块儿中前导的零可省略。例如5f05:2000:80ad:5800:0058:0800:2023:1d71 按照此规则简化后为 5f05:2000:80ad:5800:58:800:2023:1d71


  1. 整个块儿都为零的可以省略不写,并用 :: 代替其位置,但整个IPv6地址中只能出现一次 :: 符号。例如 0:0:0:0:0:0:0:1 按照此规则简化后为 ::1


当然IPv6也是可以用二进制表示的,表示结果如下:


十六进制表示 二进制表示
5f05:2000:80ad:5800:0058:0800:2023:1d71 0101111100000101 0010000000000000 1000000010101101 0101100000000000 0000000001011000 0000100000000000 0010000000100011 0001110101110001
::1 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000001


如果把IPv6和端口号一起使用的话,可能会出现这样的情况:http://2001:0db8:85a3:08d3:1319:8a2e:0370:7344:443/,该URL中,最后一个 :443 其实表示的是端口号,但与IPv6一起使用时看起来好像也成为了一个块儿部分,因此我们需要用 [] 符号将IPv6部分包裹起来,结果如下:http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/


二、IP地址结构


上面提到,IP是作为终端的唯一表示,因此只有当保证每个IP都不同时,才能保证IP的唯一性。其中,IPv4地址的长度为32位,因此就有  种可能的地址,那么同理,IPv6地址的长度为128位,因此就有  种可能的地址。


这些地址就是作为数据包发送的目的地址,当然每个地址都会有它们各自的含义,例如单播组播广播等,当然还有一些地址是会被保留用于实验的


  • 单播可以理解为一台主机发送单一的数据包给另一台主机;


  • 组播可以理解为一台主机发送单一的数据包给多台主机;


  • 广播可以理解为一个节点向其它所有的节点发送数据包;


IPv4中大多数的的地址都为单播


(1)分类寻址


那么IP地址既然是作为识别特定主机的唯一标识,那么到底是如何被识别的呢?其实在长度为32位的IPv4地址中,有一段连续位称为网络号,还有一段连续位称为主机号


因为有时在同一个网络中,可能会有多台主机,就例如一个电子计算机教室看成一个网络,教室中有60台电脑,那么这60台电脑都属于这一个教室所处的网络,而每台电脑又需要在该网络下单独分配一个唯一的标识


因此,在识别IP地址时,就是先通过识别IP地址中的网络号来确认目的地址处于哪个网络区域,然后再识别主机号,来确认这个网络中特定的主机。


我们将IPv4地址用二进制表示,一段地址的网络号和主机号分类可以分为5类:A类B类C类D类E类,区别如下图:


a4f82f2506251af9b0c8de210c8c689b.png


IPv4地址分类


  • A类: 网络号共8位,首位固定为 0,接下来连续的7位可以自由设定;主机号为24位


  • B类: 网络号共16位,前两位固定为 1 0,接下来连续的14位可以自由设定;主机号为16位


  • C类: 网络号共24位,前三位固定为 1 1 0,接下来连续的21位可以自由设定;主机号为8位


  • D类: 为组播地址,共32位,前四位固定为 1 1 1 0


  • E类: 为保留地址,共32位,前四位固定为 1 1 1 1


其中A 、B 、C类地址大多都是单播地址,因此它们可用于接口分配。举个例子,A类地址网络号共8位,其中首位固定为 0,那么还有7位可以自由设定,那么就共有  个网络数;主机号共24位,那么就共有  个主机数。(同样的,我们可以推出其它类别的地址的网络数和主机数)因此我们可以理解为,用A类地址一共可以为  个电子计算机教室分配使用,每个教室可以容纳  台主机


IPv4地址的范围在 0.0.0.0 ~ 255.255.255.255 之间,那么我们来看看这五类地址各自的地址范围是如何的吧~


A类地址首位固定为 0,因此A类地址用二进制表示为 0XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX,因此A类地址用十进制表示时,第一组最小为0,其余三组最小也为0,即 0.0.0.0


B类地址前两位固定为 1 0,因此B类地址用二进制表示为 10XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX,因此B类地址为十进制表示时,第一组最小为128,其余三组最小为0,即 128.0.0.0,那么A类地址的范围就可以确定为 0.0.0.0 ~ 127.255.255.255


C类地址前两位固定为 1 1 0,因此B类地址用二进制表示为 110XXXXXX XXXXXXXX XXXXXXXX XXXXXXXX,因此C类地址为十进制表示时,第一组最小为192,其余三组最小为0,即 192.0.0.0,那么B类地址的范围就可以确定为 128.0.0.0 ~ 191.255.255.255


以此类推,即可推出D 、E类的地址范围


我们将IPv4地址的空间划分情况总结在了下表中:


地址范围 网络数 主机数
A 0.0.0.0 ~  127.255.255.255 27 224
B 128.0.0.0 ~ 191.255.255.255 214 216
C 192.0.0.0 ~ 223.255.255.255 221 28
D 224.0.0.0 ~ 239.255.255.255 / /
E 240.0.0.0 ~ 255.255.255 / /


上面有提到,A、B、C类地址中大多都是单播,那么也有几个地址不作为单播地址使用,一般都是地址块儿中的第一个地址和最后一个地址不使用,所以假设分配得到的地址块儿为 127.0.0.0,那么实际能分配的单播地址数就为


(2)子网寻址


查看上述的A类地址,它可使用的主机数有  个,那么当分配了A类IP地址后,却发现并没有那么多的主机,这样就造成了剩余可用主机数的浪费;或者说被分配了C类地址后,却发现有上万台主机,而C类地址可用的主机数只有  个,因此只能给其多分配几个C类地址,那么C类地址就很容易被消耗完


为了解决上述办法,又采用了一种叫做子网寻址的方法,即假设当一个站点被分配了B类地址,那么该站点的管理员可以将B类地址的主机号部分继续分成两部分,分别为 子网号主机号,这两者所占的位数可以根据实际需求自由分配,例如分配给子网号8位,分配给主机号8位,即平分,结果如下图:


2b32c4ec1d66c60d21203f9ce7cc50c8.png


此时的站点可以支持  个子网,每个子网中最多可支持  台主机(每个子网的第一个地址和最后一个地址不会被使用)


这样在站点内,路由器就可以根据子网号和主机号监测到不同子网的流量了,如下图所示:


a885d71b87d800b13b9101e3e158245e.png


上图中,该站点被分配了一个B类地址 128.32.x.x,而管理员此时选择将其继续划分为多个子网,如图中的子网1和子网2,它们分别是开始于 128.32.1128.32.2,并且左右两台主机都分别属于各自的子网。


那么路由器是如何在地址中寻找子网号的呢?这就要设置一个名为子网掩码的参数了


(3)子网掩码


子网掩码是由一台主机或路由器使用的分配位,用以确定如何从一台主机对应的IP地址中获得网络和子网信息,更通俗点说,通过它可以确定一个IP地址的网络/子网部分的结束和主机部分的开始。


子网掩码跟IP地址的长度相等(IPv4为32位,IPv6为128位),对于IPv4来说,子网掩码也是用点分四组十进制来表示的。当子网掩码用二进制表示时,结构非常简单且容易记忆,从左边开始由一段连续的1组成,紧接着又一段连续的0组成直到最后。其中连续的1的长度称为前缀长度,用 /长度 来表示


举例各种类型的子网掩码:


十进制表示 前缀长度 二进制表示
128.0.0.0 /1 10000000 00000000 00000000 00000000
255.0.0.0 /8 11111111  00000000 00000000 00000000
255.192.0.0 /10 11111111  11000000 00000000 00000000
255.255.0.0 /16 11111111  11111111  00000000 00000000
255.255.254.0 /23 11111111  11111111  11111110  00000000
255.255.255.224 /27 11111111  11111111  11111111  11100000
255.255.255.255 /32 11111111  11111111  11111111  11111111


接下来说说子网掩码是如何使用的,其二进制位1对应IP地址的网络/子网部分;相反,0对应IP地址的主机号部分。换个说法就是子网掩码第一个0所对应IP地址的位为主机号的第一位;也可以借用前缀长度来判断,即前缀长度后一位对应的也是IP地址主机号的第一位。


例如刚才举的例子,站点管理员将B类地址 128.32.x.x 的主机位划分为8位的子网号和8位的主机号,那么他就会提前设置好一个长度为  的子网掩码,即 255.255.255.0,表示前24位是网络/子网部分,那么路由器在处理图中的IPv4地址 128.32.1.14时,会先查看一下子网掩码,此时将IP地址和子网掩码对应的位进行与运算即可获得该IP所处的是哪个子网,运算过程如下图:


954505cb94b1d5d03bc4e576073234d3.png


结果中的 128.32.1.0 就是IP地址 128.32.1.14 所属的子网


但此时有没有发现一个问题?虽然给地址划分了子网号和主机号,但是每个子网号所对应子网的主机数就固定死了,而且每个子网所支持的主机数都是一样的,这一定是不合理的,因为实际应用中,可能这个区域只需要支持10台主机,而另一个区域需要支持100台主机,那么我们此时在划分子网号和主机号的时候,至少要让每个子网支持的主机数大于100台,那只需要支持10台主机的区域分配到了一个子网,岂不是至少浪费了其中的90个空间么?面对这样的问题,我们又该如何解决呢?


(4)可变长度的子网掩码


上个部分刚说过,路由器在寻找子网号时,是通过我们设置的子网掩码来查找的,那么我们不妨根据不同的需求设置多个子网掩码,来达到子网号和主机号分配比例不唯一的需求,这就是VLSM(Variable Length Subnet Mask,可变长度的子网掩码)的实现


比如,我们上面举得例子,当前站点被分配到了一个B类地址,该站点的某个区域需要支持100台主机,那么我们可以给这个区域分配一个子网号,同时设置其子网掩码为 255.255.255.128,其前缀长度为 25,因此留给主机位的位数还有  位,则该子网支持主机数为  台,可以满足该区域的需求;再来看另一个区域,它们需要支持的主机台数为10,那么我们可以给该区域分配另一个子网号,同时设置子网掩码为 255.255.255.240,其前缀长度为 28,因此留给主机的位数还有 位,则该子网支持的主机数为  台,同样可以满足该区域的需求。


(5)广播地址


在每个IPv4的子网中,都会有一个特殊的地址被保留作为子网的广播地址,那如何获取它呢?我们只需要将子网掩码的所有位都取反,即0变1,1变0,然后将取反后的子网掩码与子网内的IP地址进行或运算即可得到广播地址


仍然延用上面的例子,子网内的IP地址为 128.32.1.14,子网掩码为 255.255.255.0,则比较过程如下图:


2ea1edb94d75255d9baa1bb73c35073d.png


图中获得的结果 128.32.1.255 即为子网 128.32.1.0 中的广播地址,前面说过,每个子网中的头尾两个地址一般是不被使用的,所以该子网中可用的单播地址范围就是 128.32.1.1 ~ 128.32.1.254


(6)总结


简单总结一下子网掩码的作用:


  1. 面对不同需求设置不同的子网掩码可以做到不同子网支持不同数量的主机


  1. 通过子网掩码可以获取子网IP


  1. 通过子网掩码可以获取广播地址


  1. 通过子网掩码可以获取该子网内的可用单播地址


  1. 通过子网掩码可以获取子网内支持的主机数


相关文章
|
3月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
259 0
|
3月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
210 1
|
4月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
439 0
|
3月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
388 0
|
5月前
|
机器学习/深度学习 数据采集 运维
匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
匹配网络是一种基于度量的元学习方法,通过计算查询样本与支持集样本的相似性实现分类。其核心依赖距离度量函数(如余弦相似度),并引入注意力机制对特征维度加权,提升对关键特征的关注能力,尤其在处理复杂或噪声数据时表现出更强的泛化性。
298 6
匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
|
4月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
1197 0
|
8月前
|
存储 数据管理 网络虚拟化
特殊网络类型分类
本文介绍了网络技术中的关键概念,包括虚拟局域网(VLAN)、存储区域网络(SAN)、网络桥接、接入网以及按拓扑结构和交换方式分类的网络类型。VLAN通过逻辑分隔提高性能与安全性;SAN提供高性能的数据存储解决方案;网络桥接实现不同网络间的互联互通;接入网解决“最后一千米”的连接问题。此外,文章详细对比了总线型、星型、树型、环型和网状型等网络拓扑结构的特点,并分析了电路交换、报文交换和分组交换的优缺点,为网络设计与应用提供了全面参考。
314 8
|
11月前
|
计算机视觉
RT-DETR改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)
RT-DETR改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)
261 5
RT-DETR改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
588 26
|
11月前
|
人工智能 安全 算法
IP地址、SSL与DeepSeek:现代网络安全的三角防线
在数字化浪潮中,IP地址、SSL协议与AI大模型DeepSeek分别作为网络通信的标识、加密护盾和智能防御核心,共同重塑网络安全范式。本文从技术原理、实践挑战与防御策略三个维度解析其融合价值与未来趋势。IP地址是设备的唯一标识,但易被攻击者利用;SSL通过加密确保数据安全;DeepSeek则通过AI实现智能威胁检测。三者的协同作用,为网络安全提供了全新的解决方案。未来将面临量子计算、AI对抗升级等挑战,需加速技术创新与安全意识提升,构建“协议可信+地址可控+AI赋能”的三维防线,以应对日益复杂的网络安全环境。

热门文章

最新文章