广告位联系
返回顶部
分享到

IP与子网掩码的关系的图文介绍

相关技巧 来源:互联网 作者:佚名 发布时间:2023-06-15 21:56:43 人浏览
摘要

IP地址是一个32位的二进制数,通常被分割为4个8位二进制数。 IP地址分类 二进制表示 地址类型 二进制地址范围 A类地址 00000000 00000000 00000000 00000001 - 01111111 11111111 11111111 11111111 B类地址

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)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

#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;

}


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 在QQ群中接入ChatGPT机器人的操作方法

    在QQ群中接入ChatGPT机器人的操作方法
    今天我们的分享主要围绕着大部分用户Windows电脑。基于nodejs。 所需工具 nodejs(版本18) pnpm yunzai-bot(q群机器人) git openai的apikey redis(本地环境建
  • IP与子网掩码的关系的图文介绍
    IP地址是一个32位的二进制数,通常被分割为4个8位二进制数。 IP地址分类 二进制表示 地址类型 二进制地址范围 A类地址 00000000 00000000 0000
  • 位运算的全方位介绍
    不知道大家是不是像我之前一样一看到二进制丶十六进制就头大,更别说位运算了,也不知道位运算的作用是啥,索性花了一些时间整理出
  • 计算机网络之IP地址和子网掩码的关系介绍
    了解IP地址扮演的角色有助于明白IP地址的含义乃至IP地址和子网掩码的关系 IP(Internet Protocol网际互连协议),是TCP/IP体系中的网络层协议,
  • XML基本概念XPath、XSLT与XQuery函数的介绍
    一、XPath查询 XSL指扩展样式表语言(EXtensible Stylesheet Language)。 官方网站:https://www.w3.org/TR/xpath/ XSL - 不仅仅是样式表语言,包括三部分:
  • 开发中避免延时操作的方法
    开发中我们或多或少会涉及到一些场景需要使用延时操作,而延时操作其实并不是一个很好的选择,并不是一个很好的方案,因为它不可控
  • webp格式图片显示异常分析及解决方案

    webp格式图片显示异常分析及解决方案
    webp 格式的图片显示异常 webp介绍 WebP,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。提供了有损压缩与无损压缩(可逆压缩
  • Wireshark TS系统吞吐慢问题解决方案

    Wireshark TS系统吞吐慢问题解决方案
    用户反馈一个场景,说是两个系统之间的吞吐很慢。吞吐量是系统性能分析中一个很重要的衡量指标,相关影响的因素也会有很多,因此反
  • Base64编码中为什么会有等号(=)问题
    Base64编码中为什么会有等号(=) 如果对字符串ab进行Base64编码,得到的结果将是:YWI=,结果中为什么会出现=呢,这就需要了解一下base64编码背
  • 5个ChatGPT功能帮助你提升日常编码效率

    5个ChatGPT功能帮助你提升日常编码效率
    ChatGPT 的出现,彻底改变了开发代码的方式。但是目前为止,大多数软件开发人员和数据专业人员仍然没有习惯使用 ChatGPT 来改进和简化自己
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计