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段地址空間是被保留的回環(huán)地址
IP地址構成
IP地址 = 網絡地址 + 主機地址
| 地址類型 | 網絡地址 | 主機地址 |
|---|---|---|
| A類地址 | 前8位 | 后24位 |
| B類地址 | 前16位 | 后16位 |
| C類地址 | 前24位 | 后8位 |
網絡地址
網絡地址(Network address)由ip和子網掩碼按位與得出,只有網絡地址相同的ip才在同一子網內
網絡地址是子網中最小的地址
計算方式:網絡地址 = IP & 子網掩碼
主機地址
主機(IP)地址即該網段中 主機的地址編號
廣播地址
廣播地址(Broadcast Address)是專門用于同時向網絡中所有工作站進行發(fā)送的一個地址
廣播地址是該子網主機地址全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與子網掩碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!
相關文章

如何解決 DNS 解析錯誤(訪問網站出現DNS_PROBE_FINISHED_NXDOMAIN錯誤
網站出現“DNS_PROBE_FINISHED_NXDOMAIN” 錯誤是指瀏覽器顯示無法解析域名導致的網站無法訪問,下面將主要分享解決此錯誤的五種常見方法2026-03-06
思科設備常用命令都很長,有時候會拼寫錯誤,有沒有縮寫命令呢?當然有,今天給大家介紹思科設備的命令縮寫2025-12-16
再也不用敲全命令了! 華為網絡設備600+條最常用命令縮寫速查寶典
華為設備幾乎所有常用命令都支持“唯一縮寫”,本文共收集 600+ 條最常用命令縮寫,按功能模塊分類,直接復制粘貼就能用,建議收藏+轉發(fā)給你的小伙伴2025-12-16
你家用的是WIFI幾? 從WiFi1到WiFi7這7個版本區(qū)別介紹
本文將全面解析從WiFi1到WiFi7每一代技術的核心差異、性能提升和應用場景,幫助您理解無線網絡技術的演進歷程2025-08-12
FTTC/FTTH和FTTR有什么區(qū)別? 光纖接入方式詳細介紹
國內主流 ISP 普遍都采用了光纖連接,常見術語包括 FTTC(光纖到路邊)、FTTB(光纖到樓宇)、FTTH(光纖到戶)和 FTTR(光纖到房間),他們之間有什么區(qū)別?詳細如下2025-03-05
TP-Link PDDNS服將于務6月30日正式停運:用戶需轉向第三方DDNS服務
近期,路由器制造巨頭普聯(TP-Link)在用戶群體中引發(fā)了一系列重要變動,上個月,公司發(fā)出了一則通知,明確要求所有用戶必須通過實名認證流程,方能繼續(xù)使用其提供的DDNS服2025-02-15
之前我們介紹過ssid的概念,那么自己的設備怎么顯示ssid和隱藏ssid呢?下面我們就來看看詳細的教程2025-01-14
SID可以看作是無線網絡的名稱,類似于有線網絡中的網絡名稱或者路由器的名稱,在無線網絡中,設備通過SSID來識別和連接到特定的無線網絡2025-01-14
向日葵Q2Pro怎么樣? 貝銳向日葵Q2Pro工業(yè)級遠控設備測評
今天帶來的這款向日葵 Q2Pro ,就是一款專門用于工業(yè)設備、醫(yī)療設備等遠程控制的硬件產品,憑借其即插即用、斷網可遠控、無需被控主機安裝軟件等特性,為設備維護帶來了全2024-11-23
雙頻BE5100面板AP! TP-LINK TL-7AP5100HI-PoE拆機測評
TP-LINK一款為TL-7AP5100HI-PoE 易展版的 Wi-Fi 7 AP 面板怎么樣?該面板隸屬 BE5100 規(guī)格家族,詳細請看下文拆機測評2024-06-28











