首页 > 编程语言 >IP地址、地址分类、子网掩码、子网划分、使用Python计算子网划分

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

时间:2024-09-13 14:53:20浏览次数:10  
标签:子网 Python 主机 网络 192.168 255.255 划分 子网掩码

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

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

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:

  1. 将IP地址和子网掩码转换为二进制形式:
IP地址:        192.168.1.10  ->  11000000.10101000.00000001.00001010
 子网掩码:      255.255.255.0  ->  11111111.11111111.11111111.00000000
  1. 网络位是IP地址与子网掩码按位与的结果:
网络位: 11000000.10101000.00000001.00000000 -> 192.168.1.0
  1. 主机位是IP地址的剩余部分:
主机位: 00000000.00000000.00000000.00001010 -> 10


子网划分

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

  1. 计算每个子网需要的位数:
  • 需要划分4个子网,需要2位(2^2 = 4)。
  • 原来的网络位是24位,加上2位子网位,共26位。
  • 子网掩码变为255.255.255.192(前26位为1,其余为0)。
  1. 划分后的子网网络地址:
  • 192.168.1.0/26
  • 192.168.1.64/26
  • 192.168.1.128/26
  • 192.168.1.192/26
  1. 每个子网的主机范围(去掉网络地址和广播地址):
  • 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的子网,并输出每个子网的网络地址、广播地址和可用主机范围。


结语

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


标签:子网,Python,主机,网络,192.168,255.255,划分,子网掩码
From: https://blog.51cto.com/atomguo/12001031

相关文章

  • 【python】爬取网站数据
    编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了。问题要从文字的编码讲起。原本的英文编码只有0~255,刚好是8位1个字节。为了表示各种不同的语言,自然要进行扩充。中文的话有GB系列。可能还听说过Unicode和UTF-8,那么,它们之间是什么关系......
  • python 获取163 邮箱的邮件信息
    此案例是是获取的一个亚马逊的验证码importtimefromimaplibimportIMAP4_SSLimportimaplib,email,datetimefromlxmlimportetreefromdateutil.parserimportparsedefstr_to_unicode(s,encoding=None):returnstr(s,encoding)ifencodingelsestr(s)def......
  • Python第五章节——函数
    函数是组织好的,可重复使用的,用来实现特定功能的代码段一.自定义my_len函数实现对字符串中字符数量的统计二.函数的定义1.定义方式:def函数名(传入参数):    函数体    return返回值2.调用方式:函数名(参数)注意:1.如果不需要参数,那么可以对其进......
  • Python第四章节——循环语句
    学习循环语句的原因:循环在程序中和判断一样广泛存在,同样是非常多功能实现的基础一.while循环1.while循环的使用方法:while条件:    条件满足时完成的事件1    条件满足时完成的事件2    条件满足时完成的事件3    ...注意:1.只要条......
  • Python爬虫代理运行出错?解决办法在这里!
    在进行Python爬虫开发时,使用代理IP是常见的做法,特别是在需要大量请求目标网站时,代理IP可以有效地防止IP被封禁。然而,在实际操作中,使用代理IP往往会遇到各种问题和错误。本文将带你了解常见的Python爬虫代理运行出错的原因,并提供解决办法。常见的代理IP运行错误在使用代理IP进......
  • 1.1 Python基础
    1.1.1 推导式列表given_list=[0,1,2,3,4]given_list输出:[0,1,2,3,4]定义函数defmy_func(x):returnx**2new_list=[]foriinrange(5):new_list.append(my_func(i))new_list输出[0,1,4,9,16] 以上例子可以简化为......
  • 如何通过Python SDK 获取Collection
    本文介绍如何通过PythonSDK获取已创建的Collection对象。说明通过Collection对象,后续可进行Doc相关操作,如插入Doc、检索Doc、管理Partition等前提条件已创建Cluster:创建Cluster。已获得API-KEY:API-KEY管理。已安装最新版SDK:安装DashVectorSDK。接口定义Python......
  • 用Python实现时间序列模型实战——Day 19: 时间序列中的异常检测与处理
    一、学习内容1.时间序列中的异常检测方法在时间序列分析中,异常检测是识别时间序列中不同于正常行为的点。这些异常点可能是由于数据记录错误、极端事件或系统故障引起的,常见的异常检测方法包括:基于统计的方法:Z-score:计算每个数据点与其均值的标准差距离,判断其是否为异常......
  • Python 虚拟环境管理
    在另外一篇文章已经讲了Python版本管理。本文主要讲Python虚拟环境管理。有了这两个方面的工具,就可以实现在Python的不同版本不同虚拟环境间方便地切换。pyenv-virtualenv一般会随pyenv一起安装,也可以通过下文方式独立安装。什么是虚拟环境一种采用协作式隔离的运......
  • CTF/5/利用python自动请求网页
    最后编辑时间:2024-09-1309:23:09星期五利用python自动请求网页(面向CTF)前置知识:PythonHTMLBurp(或者任何一个你趁手的抓包软件)VSCode(或者任何一个你熟悉的编辑器)浏览器开发者模式(F12)POST请求和GET请求shell/cmd使用搭建web服务器基础为什么我们需要利用python来进......