IP地址、地址分类、子网掩码、子网划分、使用Python计算子网划分

devtools/2024/9/26 3:20:27/

IP 地址(Internet Protocol Address)乃是用于明确标识网络中各类设备的独一无二的地址。IP 地址主要存在两种重要类型,即 IPv4 和 IPv6 。在这里插入图片描述

IPv4地址

IPv4 地址实则是一个由 32 位二进制数字所构成的标识,通常会以四个十进制数字的形式呈现出来,每一个数字均处于 0 至 255 的区间范围内,且通过点来加以分隔,例如:192.168.1.1 。IPv4 地址能够被细分为不同的类别、子网掩码、网络位以及主机位。

IP地址分类

IPv4 地址依据其开头几位的数值被划分为不同的类别:

Class A:范围从 0.0.0.0 延伸至 127.255.255.255 。

网络位:占据 8 位。

主机位:达到 24 位。

子网掩码:为 255.0.0.0 。

网络数量:总计 128 个。

主机数量:在每个网络中可达 16777214 (即 2^24 - 2) 。

Class B:处于 128.0.0.0 至 191.255.255.255 之间。

网络位:为 16 位。

主机位:有 16 位。

子网掩码:是 255.255.0.0 。

网络数量:达 16384 个。

主机数量:在每个网络中为 65534 (即 2^16 - 2) 。

Class C:处于 192.0.0.0 至 223.255.255.255 。

网络位:占据 24 位。

主机位:为 8 位。

子网掩码:是 255.255.255.0 。

网络数量:总计 2097152 个。

主机数量:在每个网络中为 254 (即 2^8 - 2) 。

Class D:范围在 224.0.0.0 至 239.255.255.255

主要用于组播。

Class E:从 240.0.0.0 至 255.255.255.255

被保留下来用于实验用途。

子网掩码

子网掩码在网络通信中发挥着关键作用,其主要用途在于清晰地区分 IP 地址中的网络部分和主机部分。子网掩码同样是由 32 位构成的二进制数,这一点与 IP 地址别无二致。并且,如同 IP 地址那样,子网掩码通常也会以四个十进制数的形式来予以表示。

举例来说,像子网掩码 255.255.255.0 这种情况,就明确地表明了其前面的 24 位属于网络位,而后面的 8 位则属于主机位。

计算网络位和主机位

假设你有一个IP地址192.168.1.10和子网掩码255.255.255.0:

将IP地址和子网掩码转换为二进制形式:

 IP地址:        192.168.1.10  ->  11000000.10101000.00000001.00001010子网掩码:      255.255.255.0  ->  11111111.11111111.11111111.00000000

网络位是IP地址与子网掩码按位与的结果:

 网络位: 11000000.10101000.00000001.00000000 -> 192.168.1.0

主机位是IP地址的剩余部分:

 主机位: 00000000.00000000.00000000.00001010 -> 10

子网划分

子网划分是将一个大网络划分为多个小子网。假设你有一个Class C网络192.168.1.0/24,并希望将其划分为4个子网。

计算每个子网需要的位数:

需要划分4个子网,需要2位(2^2 = 4)。

原来的网络位是24位,加上2位子网位,共26位。

子网掩码变为255.255.255.192(前26位为1,其余为0)。

划分后的子网网络地址:

192.168.1.0/26

192.168.1.64/26

192.168.1.128/26

192.168.1.192/26

每个子网的主机范围(去掉网络地址和广播地址):

192.168.1.1 到 192.168.1.62

192.168.1.65 到 192.168.1.126

192.168.1.129 到 192.168.1.190

192.168.1.193 到 192.168.1.254

用Python计算子网划分

Python脚本来计算子网划分:

import ipaddressdef subnet_calculator(network, new_prefix):network = ipaddress.IPv4Network(network)subnets = list(network.subnets(new_prefix=new_prefix))return subnetsdef main():network = "192.168.1.0/24"new_prefix = 26subnets = subnet_calculator(network, new_prefix)for subnet in subnets:print(f"子网: {subnet}")print(f"网络地址: {subnet.network_address}")print(f"广播地址: {subnet.broadcast_address}")print(f"可用主机范围: {list(subnet.hosts())}\n")if __name__ == "__main__":main()

这个脚本将一个/24的网络划分为/26的子网,并输出每个子网的网络地址、广播地址和可用主机范围。

结语

如果你觉得文章很棒,可以转发,评论该文章;如果文章有问题,请留言或私信告诉我,我会在第一时间对内容进行调整,这将会帮助每一位想要学习网络基础的小伙伴,感谢!抱拳!


http://www.ppmy.cn/devtools/111356.html

相关文章

C++类型转换,特殊类设计,IO流

1.类型转换 什么是类型转换?我们知道有些数字类型可以相互转换,如double类型可以转换为int类型,这样的转换会发生切割将double类型的小数部分切割掉丢失精度;还有在前面的多态那块有一个虚函数指针表,这个虚函数指针表…

超分论文ESPCN解读

论文地址:Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network 相关知识点总结: 许多SR技术的一个关键假设是,大部分高频数据是冗余的,因此可以从低频分量中准确重建…

数据结构--双链表

目录 一、引言 二 、链表的分类 1.单向或双向 2.带头或不带头 3.循环或不循环 三、双链表的概念与基本结构 1.概念 2.基本结构 三、双链表的常见操作 1.创建节点 2.初始化 3.头插 4.尾插 5.头删 6.尾删 7.打印 8.查找 9.插入节点 10.删除节点 11.销毁链…

flink的大状态复用

在 Apache Flink 中,实现大状态复用主要涉及在不同任务、不同生命周期阶段,甚至不同作业之间共享或重用状态数据。复用大状态可以减少重新加载和重新计算的开销,从而提升作业的效率和业务连续性。下面是几种在 Flink 中复用大状态的常见方法&…

什么是顶级的思维?主要体现在这5个方面

顶级思维并非单一的某种思维方式,而是多种卓越思维模式的集合,这些思维模式能够帮助人们在不同领域取得非凡成就,高效解决问题,并且实现个人和社会价值的最大化。 顶级思维主要体现在战略思维、创新思维、利他思维、系统思维、批…

对接外卖霸王餐API接口,需要注意哪些事项?

在对接外卖霸王餐API接口的过程中,需要注意以下事项以确保顺利实施和提供优质的用户体验: 1.明确业务需求: 确定你的平台需要哪些功能,如展示霸王餐选项、下单、支付、订单跟踪等。 2.选择合适的API服务提供商: 选…

如何看待IBM中国研发部裁员?

如何看待IBM中国研发部裁员?近日,IBM中国宣布撤出在华两大研发中心,引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展,也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

如何使用YOLOv5进行物体检测,并通过GraspNet进行6D位姿估计,从而实现机械臂的抓取规划

在机械臂抓取任务中,物体的6D位姿估计(位置和姿态)是至关重要的,6D位姿估计涉及到从图像中准确地估计物体在三维空间中的位置和姿态。以下是几种常见的6D位姿估计方法,包括基于模型的方法和基于深度学习的方法&#xf…