【计算机网络】子网划分

 🔥博客主页: 我要成为C++领域大神

🎥系列专栏【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】

❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于分享知识,欢迎大家共同学习和交流。

IP地址分类

IP被分为5类,A、B、C、D、E五类,这五类是按照一定的范围划分的。
A类IP地址的范围是1.0.0.0~127.255.255.22(0000 0001),通常由大量的主机和公网所使用。
B类IP地址范围是128.0.0.0~191.255.255.255(1000 0000),通常由国际大公司,政府使用。
C类IP地址范围是192.0.0.0~223.255.255.255(1100 0000),通常由小公司,校园网,科研单位使用。
D类IP地址范围是224.0.0.0~239.255.255.255(1110 0000),用于组播。
E类IP地址范围是240.0.0.0~255.255.255.255(1111 0000),这部分IP地址保留不使用。

如何区分IP地址类类别?

A类地址本应从0.0.0.0开始的,但是由于0.0.0.0~0.255.255.255的IP地址比较特殊,所以就被保留起来了。所以A类地址从1.0.0.0开始。
B类地址从128.0.0.0开始的,128用二进制表示为1000 0000;
C类地址从192.0.0.0开始的,192用二进制表示为1100 0000;
224:1110 0000 240:1111 0000
我们可以发现每一类地址的起始地址都是上一类起始地址二进制表示向下一位加1,因此我们只需要记住B类地址起始地址,就可以记住了其它类地址的范围。

子网掩码

子网掩码又叫做网络掩码,地址掩码,子网络遮罩,顾名思义就是将子网络遮起来,不让外界窥探到。子网掩码不能单独存在,它必须结合IP地址一起使用。只有一个作用,就是将IP地址分为主机部分和网络部分。即用来分割子网和区分哪些ip是同一个网段的,哪些不是同一网段的
子网掩码是一个32位的二进制数,子网掩码中的1表示网络部分,0表示主机部分。

例如,一个常见的子网掩码是255.255.255.0,它对应的二进制形式是:11111111.11111111.11111111.00000000。这意味着前24位用于表示网络号,而后8位用于表示主机号。
某主机的网络地址=某主机IP地址 & 该类IP地址子网掩码 (按位与)

计算网络号和主机号

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

首先,我们需要将IP地址和子网掩码都转换为二进制形式。例如,如果IP地址是192.168.1.100,子网掩码是255.255.255.0,那么它们的二进制形式分别是:

IP地址: 11000000.10101000.00000001.01100100

子网掩码:11111111.11111111.11111111.00000000

执行按位与操作

接下来,我们对IP地址和子网掩码执行按位与(AND)操作。这意味着,对于每一对相应的位,如果两个相应的二进制位都为1,则结果为1,否则为0。在上述例子中,执行按位与操作后得到:

网络号:11000000.10101000.00000001.00000000(转换为十进制为192.168.1.0)

确定主机号

主机号是IP地址中不属于网络号的部分。在上述例子中,由于子网掩码的后8位都是0,所以IP地址的后8位就是主机号。因此,主机号是:01100100(转换为十进制为100)。

默认子网掩码

每个类别的IP地址对应的默认子网掩码不同。按照ABC类IP地址,分为了三类子网掩码。
A类:255.0.0.0,A类子网掩码默认1段全为1
B类:255.255.0.0,B类子网掩码默认2段全为1
C类:255.255.255.0,C类子网掩码默认3段全为1


通过子网掩码,我们就可以知道这个IP是属于哪个网段的。
ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.255.0

我们可以直接的判断,他们是同属于一个网段的ip地址。

那么对于下面这样的呢?

ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.0.0

这两个ip地址虽然在不看掩码的情况下,比较像,但他们并不是同一个网段内的。

这个可以从子网掩码来判断,

192.168.1.1 255.255.255.0是属于192.168.1.0网段的。

而192.168.1.2 255.255.0.0是属于192.168.0.0网段。

网关


网关又称网间连接器,协议转换器。网间连接器,就是连接两个子网之间的设备或软件。
网络A的网段是192.168.1.0,网络B的网段是192.168.2.0,这两个网段之间不可以直接进行通信。想要实现通信,就必须依靠网关。因此网关也叫做网间连接器,通过网关可以连通这两个网络。

网关实现的原理:网络A里的主机若想和网络B里的主机进行通信,需要先设置好网关。设置好网关后,A主机先将数据发送给网络A的网关,然后网络A的网关将数据转发给网络B的网关,网络B的网关再将数据转发给目的IP。

网关都是具有路由功能的IP地址,就是说网关必须要有路由功能,默认的主机号都是0,这样的才是网关。比如网络A的网关IP地址应该是192.18.1.0,网络B的网关地址应该是192.18.2.0。

广播地址

广播地址用于向网络中的所有设备进行广播。具有正常的网络号部分,而主机号部分全为1的IP地址称之为广播地址。
有限广播地址:指的是32位全为1即(255.255.255.255)的IP地址,用于本网广播。
理解广播地址可以类比为广播电台或电视广播。当电台或电视台发出广播信号时,所有收听或收看该频道的设备都能收到这个信号,而不需要知道接收者的具体地址。类似地,在计算机网络中,广播地址允许发送者将数据包发送给同一网络中的所有设备,而无需知道每个设备的具体IP地址。

网络地址、广播地址和主机地址的区分

网络地址: 网络地址是指仅包含网络号而不包含主机号的IP地址。它用于唯一标识一个网络。在网络通信中,网络地址用于路由和寻址。例如,一个IP地址为192.168.0.0,IP掩码为255.255.255.0,那么它的网络地址就是192.168.0.0。

广播地址: 广播地址是指在特定网络上发送广播消息的地址。它用于向网络上的所有设备发送信息。广播地址通常是某个网络的最大可能地址,将主机号部分全部设置为1。例如,在 IP 地址为192.168.0.0,IP掩码为255.255.255.0 的情况下,广播地址就是192.168.0.255。

主机地址: 主机地址是指除网络地址和广播地址之外的IP地址部分。它用于标识一个特定的主机或设备。主机地址可以是网络中的任意一个有效地址。例如,在 IP 地址为192.168.0.0,IP掩码为255.255.255.0 的情况下,可以有从192.168.0.1到192.168.0.254的主机地址。
 

### 计算机网络中的子网划分概念 在网络通信领域,IP地址用于唯一标识互联网上的每一台设备。为了提高网络管理效率以及优化资源利用,通常会将较大的网络划分为多个较小的逻辑部分,即子网。这样做不仅能够简化路由配置,还能有效控制广播流量范围。 #### 子网掩码的作用 子网掩码是一种32位二进制数,它帮助区分IP地址中的哪一部分代表网络ID而另一部分则表示主机ID。通过IP地址按位相运算可以得到该地址所属的具体子网信息[^1]。 对于IPv4来说,默认情况下有三不同的分方式: - A:前8位作为网络号; - B:前16位作为网络号; - C:前24位作为网络号; 然而,在实际应用中更多采用的是无别域间路由(CIDR),这使得我们可以更加灵活地定义子网大小而不受限于传统的ABC分法。 #### 划分子网的方法 当给定一个初始网络时,可以通过调整子网掩码长度来创建所需数量的小型子网。具体步骤如下所示: 假设有一个C网络`192.168.0.0/24`(默认子网掩码为`255.255.255.0`)想要从中分离出若干个具有相同规模的新子网,则可通过增加额外的有效比特位实现这一目的。每多加一位就可以使可容纳的最大子网数目翻倍,同时也减少了每个子网内的可用主机数量。 例如,如果希望获得四个独立运作但又相互关联紧密的小型局域网(LANs),可以选择扩展至`/26`级别(`255.255.255.192`),此时总共能产生\(2^{(26-24)}=4\)个新子网,并且每一个都拥有\(2^{(32-26)-2}=62\)个有效的主机地址空间(减去全零和全一的情况)。这里给出具体的分割方案: | 新子网 | 起始IP | 结束IP | |--------|--------------|---------------| | 1 | `192.168.0.0` | `192.168.0.63` | | 2 | `192.168.0.64`| `192.168.0.127`| | 3 | `192.168.0.128`| `192.168.0.191`| | 4 | `192.168.0.192`| `192.168.0.255`| 上述过程展示了如何基于原有较大规模的基础网络合理规划并构建起一系列更为精细粒度化的内部结构单元—子网。这种方法极大地增强了整个系统的灵活性可控性,有助于提升整体性能表现的同时也便于日常运维管理工作开展。 ```python def calculate_subnet(ip_address, subnet_mask_length): """ Calculate the network address based on given IP and its subnet mask length. :param ip_address: String representation of an IPv4 address (e.g., '192.168.0.1') :param subnet_mask_length: Integer representing CIDR notation (e.g., 24 for /24) :return: Tuple containing network address as string and number of available hosts """ import ipaddress net = ipaddress.IPv4Network(f"{ip_address}/{subnet_mask_length}", strict=False) return str(net.network_address), len(list(net.hosts())) # Example usage: network_addr, num_hosts = calculate_subnet('192.168.0.0', 26) print(f"Network Address: {network_addr}, Available Hosts: {num_hosts}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值