脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:主页> 网络> 网络其他> IP与子网掩码

IP与子网掩码的关系图文详解

  发布时间:2023-06-12 17:03:36  作者:tulutulu  我要评论
这篇文章主要为大家介绍了了解IP地址扮演的角色有助于明白IP地址的含义乃至IP地址和子网掩码的关系,需要的朋友可以参考下

IP地址

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”。

IP地址分类

二进制表示

地址类型
二进制地址范围
A类地址
00000000 00000000 00000000 00000001 - 01111111 11111111 11111111 11111111
B类地址
10000000 00000000 00000000 00000000 - 10111111 11111111 11111111 11111111
C类地址
11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111
D类地址
11100000 00000000 00000000 00000000 - 11101111 11111111 11111111 11111111
E类地址
11110000 00000000 00000000 00000000 - 11110111 11111111 11111111 11111111

十进制表示

地址类型
十进制地址范围
特征
A类地址
1.0.0.0 - 127.255.255.255
第1个8位中的第1位始终为0
B类地址
128.0.0.0 - 191.255.255.255
第1个8位中的第1、2位始终为10
C类地址
192.0.0.0 - 223.255.255.255
第1个8位中的第1、2、3位始终为110
D类地址
224.0.0.0 - 239.255.255.255
第1个8位中的第1、2、3、4位始终为1110
E类地址
240.0.0.0 - 247.255.255.255
第1个8位中的第1、2、3、4、5位始终为11110

特殊:

D类地址:用于组播

E类地址:用于科研保留

注意:

A类地址 从1.0.0.0 到126.255.255.255 , 其中127.x.x.x段地址空间是被保留的回环地址

IP地址构成

IP地址 = 网络地址 + 主机地址

地址类型
网络地址
主机地址
A类地址
前8位
后24位
B类地址
前16位
后16位
C类地址
前24位
后8位

网络地址

网络地址(Network address)由ip和子网掩码按位与得出,只有网络地址相同的ip才在同一子网内

网络地址是子网中最小的地址

计算方式:网络地址 = IP& 子网掩码

主机地址

主机(IP)地址即该网段中 主机的地址编号

广播地址

广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址

广播地址是该子网主机地址全1的地址,即子网中最大的地址

计算方式:广播地址 = (~子网掩码) | 网络地址

子网掩码

子网掩码 (Subnet mask)是一个32位的2进制数 ,它必须结合IP地址一起使用。

子网掩码只有一个作用,就是将某个IP地址划分成“网络地址”和“主机地址”两部分。

缩写

有时候我们会看到192.168.1.123/24这样的表示方法,其中/24就是子网掩码255.255.255.0的缩写

计算方式:二进制子网掩码中1的个数

默认子网掩码

网络类型
默认子网掩码
缩写
A类地址
255.0.0.0
/8
B类地址
255.255.0.0
/16
C类地址
255.255.255.0
/24

子网容量计算

子网数

根据子网掩码可划分的最大子网数

计算方式:子网数 = 2^(实际子网掩码缩写 - 相应网络类型默认子网掩码缩写)

最大主机数

计算方式:最大主机数 = 2^(主机地址的位数)

可用主机数

计算方式:可用主机数 = 最大主机数 - 2

因为一个子网中主机号全为0的是网络地址,全为1的是广播地址,所以要 -2

代码计算示例

下面代码采用C语言编写(c11)

#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar bin1num(uchar num);
void main() {
uchar IP[] = {192,168,1,53}; //IP地址
uchar SubnetMask[] = {255,255,255,224}; //子网掩码
//网络类型和默认子网掩码缩写
uchar DefaultSubnetMaskAbbr;
if(IP[0]<224) DefaultSubnetMaskAbbr = 24; //C类地址
if(IP[0]<192) DefaultSubnetMaskAbbr = 16; //B类地址
if(IP[0]<128) DefaultSubnetMaskAbbr = 8; //A类地址
//实际子网掩码缩写:二进制中1的个数
uchar SubnetMaskAbbr = bin1num(SubnetMask[0])+bin1num(SubnetMask[1])+bin1num(SubnetMask[2])+bin1num(SubnetMask[3]);
//网络地址:IP & 子网掩码
uchar Network[] = {IP[0] & SubnetMask[0], IP[1] & SubnetMask[1], IP[2] & SubnetMask[2], IP[3] & SubnetMask[3]};
//广播地址:(~子网掩码)|网络地址
uchar Broadcast[] = {(~SubnetMask[0])|Network[0], (~SubnetMask[1])|Network[1], (~SubnetMask[2])|Network[2], (~SubnetMask[3])|Network[3]};
//子网数:2^(实际子网掩码缩写-默认子网掩码缩写)
uint SubnetNum = 1;
for(int i=0; i<SubnetMaskAbbr-DefaultSubnetMaskAbbr; i++) {
SubnetNum *=2;
}
//最大主机数:2^(32-子网掩码缩写)
uint HostNum = 1;
for(int i=0; i<32-SubnetMaskAbbr; i++) {
HostNum *=2;
}
/*打印结果*/
printf("ip地址:%d.%d.%d.%d\n", IP[0], IP[1], IP[2], IP[3]);
printf("子网掩码:%d.%d.%d.%d\n", SubnetMask[0], SubnetMask[1], SubnetMask[2], SubnetMask[3]);
if(DefaultSubnetMaskAbbr==8) printf("网络类型:A类\n");
if(DefaultSubnetMaskAbbr==16) printf("网络类型:B类\n");
if(DefaultSubnetMaskAbbr==24) printf("网络类型:C类\n");
printf("子网掩码缩写:%d\n", SubnetMaskAbbr);
printf("网络地址:%d.%d.%d.%d\n", Network[0], Network[1], Network[2], Network[3]);
printf("广播地址:%d.%d.%d.%d\n", Broadcast[0], Broadcast[1], Broadcast[2], Broadcast[3]);
printf("子网数:%d\n", SubnetNum);
printf("最大主机数:%d\n", HostNum);
printf("可用主机数:%d\n", HostNum-2);
}
//计算8位二进制数1的个数(1必须从第一位开始,每个1必须相邻)
uchar bin1num(uchar num) {
uchar Divisor[] = {128,64,32,16,8,4,2,1}; //除数(8位)
uchar Remainder = num; //余数
uchar ret; //结果
for(ret=0; ret<10; ret++) {
if(Remainder>0) Remainder = Remainder%Divisor[ret];
else break;
}
return ret;
}

到此这篇关于IP与子网掩码的关系图文详解的文章就介绍到这了,更多相关IP与子网掩码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

相关文章

  • 位运算 看这篇就够了

    不知道大家是不是像我之前一样一看到二进制丶十六进制就头大,更别说位运算了,也不知道位运算的作用是啥,索性花了一些时间整理出这些知识点,需要的朋友可以参考下
    2023-06-12
  • 计算机网络之IP地址和子网掩码的关系

    这篇文章主要为大家介绍了了解IP地址扮演的角色有助于明白IP地址的含义乃至IP地址和子网掩码的关系,需要的朋友可以参考下
    2023-06-12
  • IP与子网掩码的关系图文详解

    这篇文章主要为大家介绍了了解IP地址扮演的角色有助于明白IP地址的含义乃至IP地址和子网掩码的关系,需要的朋友可以参考下
    2023-06-12
  • 宽带300兆和500兆你们选? 宽带300兆和500兆区别介绍

    宽带300兆和500兆你们选?很多朋友搞不清楚什么是宽带带宽,也不知道300M和500M宽带的区别,本期文章结合网络运营商设定的规则,来说说两者的区别
    2023-03-29
  • TP-LINK 发布两款 Wi-Fi 7 无线网卡: 第三季度开始上市

    TP-LINK 发布两款 Wi-Fi 7 无线网卡,该系列 Wi-Fi 7 无线网卡可选 PCIe 和 USB 两款接口型号,均支持 2.4G +5G 或 5G + 5G MLO 技术,详细请看下文介绍
    2023-03-27
  • 静态路由和动态路由有什么区别? 一个例子说明白

    路由器之间的路由信息在不同路由协议中交换的过程和原则是不同的。交换路由信息的最终目的在于通过路由表找到一条转发IP报文的最佳路径,详细请看下文介绍
    2023-03-15
  • 最新评论