Program do obliczania ilości hostów

0

Dostałem questa z informatyki o treści:
Stwórz program w języku Pascal albo c albo c++, który podaje ilość hostów
możliwych do zaadresowania w sieci jeżeli poda mu się adres dowolnego hosta
z tej sieci i maskę.

Kombinuje wiec i nie mam zielonego pojęcia o co c`mon...
Może tak: Użytkownik podaje mi adres ip, ale on chyba nie jest ważny w tym zadaniu no nie? Robie wiec na sztywno tablice:

CIDR Maska Liczba dostępnych adresów hostów
/1 128.0.0.0 2147483646
/2 192.0.0.0 1073741822
/3 224.0.0.0 536870910
/4 240.0.0.0 268435454
/5 248.0.0.0 134217726
/6 252.0.0.0 67108862
/7 254.0.0.0 33554430
/8 255.0.0.0 16777214
/9 255.128.0.0 8388606
/10 255.192.0.0 4194302
/11 255.224.0.0 2097150
/12 255.240.0.0 1048574
/13 255.248.0.0 524286
/14 255.252.0.0 262142
/15 255.254.0.0 131070
/16 255.255.0.0 65534
/17 255.255.128.0 32766
/18 255.255.192.0 16382
/19 255.255.224.0 8190
/20 255.255.240.0 4094
/21 255.255.248.0 2046
/22 255.255.252.0 1022
/23 255.255.254.0 510
/24 255.255.255.0 254
/25 255.255.255.128 126
/26 255.255.255.192 62
/27 255.255.255.224 30
/28 255.255.255.240 14
/29 255.255.255.248 6
/30 255.255.255.252 2

Użytkownik podaje ip i maskę, wyjmuje maskę - porównuje ja z maską z tablicy i wywalam liczbe dostępnych adresów hostów? Jest tez na to jakiś wzór ale nie mam zielonego pojecia o co z tym chodzi: user image W ogóle teacher mnie załamał...
Pomózcie;(

0

Adres hosta faktycznie nie ma znaczenia, wystarczy sama maska.
1 - Adres IPv4 ma 32 bity, więc ilość adresów możliwych do uzyskania to 2^32.
2 - Maska zajmuje Ci pewną ilość bitów, to twoje CIDR.
3 - 2^(32-CIDR) to możliwa ilość wartości na bitach nie zajętych przez maskę, czyli teoretycznie ilość dostępnych adresów hostów. Ale tu jest pewien szkopół, bo dwa adresy z tej puli są zarezerwowane. Najniższy oznacza samą sieć, i nie jest wykorzystywany jako adres, służy w zasadzie do routingu. Najwyższy z drugiej strony to broadcast, czyli domyślne wysyłanie do wszystkich. Stąd masz we wzorze -2.

Jedyny Problem tutaj to uzyskanie CIDR z maski, ale szczerze to nie problem. Wystarczy zliczyć jedynki i ew sprawdzić czy maska jest poprawna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1