IP位址分類與識別錯誤

2021-06-22 14:02:14 字數 1464 閱讀 9476

//描述:  請解析ip位址和對應的掩碼,進行分類識別。要求按照a/b/c/d/e類位址歸類,不合法的位址和掩碼單獨歸類。

//所有的ip位址劃分為 a,b,c,d,e五類

//a類位址1.0.0.0~126.255.255.255; 

//b類位址128.0.0.0~191.255.255.255; 

//c類位址192.0.0.0~223.255.255.255;

//d類位址224.0.0.0~239.255.255.255;

//e類位址240.0.0.0~255.255.255.255

//私網ip範圍是:

//子網掩碼為前面是連續的1,然後全是0

//輸入:  

//19..0.~255.255.255.0 

//輸出:  

----a類

----c類,私有

----錯誤的掩碼

//19..0.~255.255.255.0-----錯誤的ip

//可以得到統計資料如下:

//1 0 1 0 0 2 1 

//樣例輸入: 

//19..0.~255.255.255.0                   

//樣例輸出: 

//1 0 1 0 0 2 1

#include #include #include int main(void)

else

}if(flag) continue;

for(k=0; k<4; k++)

}if(flag) continue;

temp = netmask[0]+(netmask[1]<<8)+(netmask[2]<<16)+(netmask[3]<<24);

one = 0; temp1 = temp;

while(temp1)

one1 = 0; temp1 = temp>>(32-one);

while(temp1)

if(one1!=one)

if(ip[3]>=1&&ip[3]<=126) a++;

if(ip[3]>=128&&ip[3]<=191) b++;

if(ip[3]>=192&&ip[3]<=223) c++;

if(ip[3]>=224&&ip[3]<=239) d++;

if(ip[3]>=240) e++;

if(ip[3]==10) private_ip++;

if(ip[3]==172&&ip[2]>=16&&ip[2]<=31) private_ip++;

if(ip[3]==192&&ip[2]==168) private_ip++;

} }printf("%d %d %d %d %d %d %d", a,b,c,d,e,err_ip_mask,private_ip);

system("pause");

return 0;

}

IP包頭格式與IP位址分類

version 版本,ihl ip頭資料長度,type ofservice 服務的形式,total length 資料總長度 identification 身份,flag 標籤,fragment offaet 偏移量,time of live 存活時間,protocol 協議形式,header ch...

IP位址分類

ip位址型別 最初設計網際網路絡時,為了便於定址以及層次化構造網路,每個ip位址包括兩個標識碼 id 即網路id和主機id。同乙個物理網路上的所有主機都使用同乙個網路id,網路上的乙個主機 包括網路上工作站,伺服器和路由器等 有乙個主機id與其對應。ip位址根據網路id的不同分為5種型別,a類位址 ...

IP位址分類

ip位址分類 a 首位為0 1.0.0.0 126.0.0.0 主機號24位 b 前兩位為10 128.1.0.0 191.255.0.0 主機號16位 c 前三位為110 192.0.1.0 223.255.255.0 主機號8位 d 前四位為1110 224.0.0.0 239.255.255....