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

news2024/9/29 19:19:30

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 ipaddress

def subnet_calculator(network, new_prefix):
    network = ipaddress.IPv4Network(network)
    subnets = list(network.subnets(new_prefix=new_prefix))
    return subnets

def main():
    network = "192.168.1.0/24"
    new_prefix = 26
    subnets = 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.coloradmin.cn/o/2136868.html

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

相关文章

如何精细优化网站关键词排名:实战经验分享

在数字营销日益激烈的今天,我深知每一个关键词的排名都关乎着网站的流量与转化。凭借多年的实战经验,我深刻体会到,要想在浩如烟海的网络世界中脱颖而出,精细化的关键词优化策略至关重要。今天,我将从实战角度出发&…

WPF利用Path自定义画头部导航条(TOP)样式

1;新建两个多值转换器,都有用处,用来动态确定PATH的X,Y州坐标的。 EndPointConverter 该转换器主要用来动态确定X轴,和Y轴。用于画线条的。 internal class EndPointConverter : IMultiValueConverter {public object Convert(object[] val…

PD虚拟机占用多少内存?使用电脑的虚拟内存会损害电脑吗

当我们讨论虚拟机及其对电脑性能的影响时,常常会出现两个关键问题:“PD虚拟机需要占用多少内存?”以及“启用电脑的虚拟内存是否会损害硬件?”对于依赖虚拟机进行日常工作的用户而言,这些问题尤为重要。 在本文中&…

Docker上安装mysql

获取 MySQL 镜像 获取镜像。使用以下命令来拉取镜像: 1docker pull mysql:latest 这里拉取的是最新版本的 MySQL 镜像。你也可以指定特定版本,例如: 1docker pull mysql:8.0 运行 MySQL 容器 运行 MySQL 容器时,你需要指定一些…

Linux与Ubuntu:内核与发行版的关系

在计算机科学的领域内,Linux和Ubuntu这两个术语频繁出现,但它们之间的确切联系往往不为大众所熟知。本文旨在深入探讨Linux内核与Ubuntu操作系统发行版之间的技术关系,并阐明它们各自的独特性质。 Linux内核:操作系统的基石 Lin…

R语言统计分析——功效分析(选择效应值)

参考资料:R语言实战【第2版】 功效分析中,预期效应值时最难决定的参数。它通常要求我们对研究主题有一定的了解,并由相应的测量经验。例如,过去研究中的数据可以用来计算效应值,这能为后来深层次的研究提供一些参考。 …

虚拟机Linux+Ubuntu操作系统 如何在虚拟机上安装docker VMPro 2024在线激活资源

一般情况下 不建议在windows系统上安装docker Windows本身就自带一个虚拟机叫WSL 但是不推荐在日常使用的电脑上安装 我们要下一个虚拟机 我们在window上安装docker会被告知WSL内核太老 我们要一个专业的 隔离的虚拟机软件 推荐使用虚拟机 这是我们的虚拟机软件 我们这边…

爬虫代理API的全面解析:让数据抓取更高效

在大数据时代,网络爬虫已经成为收集和分析数据的重要工具。然而,频繁的请求会导致IP被封禁,这时候爬虫代理API就显得尤为重要。本文将详细介绍爬虫代理API的作用、优势及如何使用,帮助你更高效地进行数据抓取。 什么是爬虫代理AP…

Python | Leetcode Python题解之第403题青蛙过河

题目: 题解: def canCross(stones: List[int]) -> bool:lru_cache(None)def dfs(pos,step):if posstones[-1]: return Truefor d in [-1,0,1]:if stepd>0 and posstepd in set(stones):if dfs(posstepd, stepd):return Truereturn Falsepos, step…

移动UI:看看筛选页面的作用和示例啦。

在移动UI中,筛选页面通常用于允许用户根据特定条件或标准来过滤和查找数据。筛选页面在移动UI中起到了提供数据过滤、排序和个性化展示的功能,帮助用户快速找到所需信息,并提供更好的用户体验。 1. 数据过滤: 允许用户根据各种条…

服务器数据增量迁移方案-—SAAS本地化及未来之窗行业应用跨平台架构

一、数据迁移增量同步具有以下几个优点: 1. 减少数据传输量:只传输自上次同步以来更改的数据,而不是整个数据集,这显著降低了网络带宽的使用和传输时间。 2. 提高同步效率:由于处理的数据量较小,同步过程…

Java应用压测工具JMeter

目录 1、下载JMeter 2、配置环境变量 3、配置语音 4、使用 1、下载JMeter Apache JMeter - Apache JMeter™ 千万别下载这个,会报错、 千万别下载这个,会报错、 千万别下载这个,会报错 下载这个,失败多下载几次 2、配置环…

京东广告投放平台整洁架构演进之路

前言 从去年开始京东广告投放系统做了一次以领域驱动设计为思想内核的架构升级,在深入理解DDD思想的同时,我们基于广告投放业务的本质特征大胆地融入了自己的理解和改造。新架构是从设计思想到落地框架都进行了彻底的革新,涉及内容比较多&am…

lvs-dr模式实验详解

华子目录 lvs-dr(企业当中最常用)dr模式数据逻辑dr模式数据传输过程dr模式的特点实验拓扑实验主机准备实验步骤1.client的ip设定2.router上的ip设定3.router开启路由转发功能4.lvs主机中的ip设定5.webserver1主机中的ip设定6.webserver2主机中的ip设定7.…

6.6高斯噪声

在OpenCV联合C中给一张图片添加高斯噪声(Gaussian Noise),可以通过生成随机数并在图像的每个像素上加上这些随机数来实现。高斯噪声是一种统计分布服从正态分布的噪声,通常用于模拟自然界的许多物理现象。 示例代码 以下是一个使…

设计师私藏的 PDF 转 JPG 利器

你平常会通过扫描来发送文件吗?为了保证图片的清晰度一般都会采用PDF格式来转发,但是要插入到一些文件里的时候PDF格式不是那么好用。这时候就很需要PDF转jpg工具了。今天我就分享几款我用过的PDF转jpg的工具,有兴趣就接着往下看吧。 1.福昕…

Win10下64位Python连接32位Oracle数据库

之前看了15分钟解决此问题,DPI-1047: Cannot locate a 64-bit Oracle Client library: “The specified module could not be-CSDN博客的办法,确实能用。但是打开PL/SQL Developer就会出现错误。 上面是我的version。原文章里面用了instantclient_11_2&a…

工业互联网网络集成与实训系统解决方案

随着工业4.0时代的到来和信息技术的高速发展,工业互联网已成为推动产业升级的重要力量。本方案旨在通过构建高度仿真的实训环境,帮助学生全面掌握工业互联网技术,为未来的职业生涯奠定坚实基础。 一、设计理念 在设计理念上,本方…

信息安全数学基础(13)简化剩余系

一、定义 设 m 是一个正整数,且 m>1。模 m 的简化剩余系是一个由模 m 的剩余类中的元素组成的集合,这些元素与 m 互素(即它们的最大公约数为1)。换句话说,模 m 的简化剩余系是模 m 的所有与 m 互质的数的集合。 二、…

o1模型:引领AI技术在STEM领域的突破与应用

o1模型是OpenAI最新推出的大型语言模型,它在多个领域展现出了卓越的能力,被认为是AI技术发展的一个重要里程碑。以下是对o1模型的详细介绍和分析: o1模型的简介和性能评估 o1模型在物理、化学、生物学等领域的基准任务上达到了博士生水平&…