Wskaż adres rozgłoszeniowy sieci, do której należy host o adresie 88.89.90.91/6?
A. 88.89.255.255
B. 91.255.255.255
C. 91.89.255.255
D. 88.255.255.255
Pytanie z egzaminu CKE, czerwiec 2018 (arkusz EE.08-X-18.06).
Adres 91.255.255.255 jest adresem rozgłoszeniowym tej sieci, ponieważ prefiks /6 oznacza maskę 252.0.0.0, czyli w zapisie binarnym 11111100.00000000.00000000.00000000. W adresie 88.89.90.91 najważniejsze jest więc tylko pierwszych 6 bitów pierwszego oktetu. Liczba 88 binarnie to 01011000. Część sieciowa to 010110, a pozostałe bity są częścią hosta. Adres sieci powstaje przez wyzerowanie bitów hosta: 01011000.00000000.00000000.00000000, czyli 88.0.0.0. Adres rozgłoszeniowy powstaje odwrotnie, przez ustawienie wszystkich bitów hosta na 1: 01011011.11111111.11111111.11111111, czyli 91.255.255.255. Moim zdaniem to dobry przykład, że przy CIDR nie można patrzeć tylko na granice oktetów typu /8, /16 czy /24. W praktyce taka wiedza przydaje się przy konfiguracji routerów, list ACL, zapór sieciowych i planowaniu podsieci. Dobra praktyka branżowa jest taka, żeby przy nietypowych prefiksach zawsze rozpisać przynajmniej oktet, w którym kończy się maska, bo wtedy łatwo uniknąć pomyłek.
W tym zadaniu łatwo pomylić się, jeśli potraktuje się prefiks /6 tak, jakby kończył się na pełnym oktecie. A on nie kończy się na granicy bajtu. Maska /6 to 252.0.0.0, więc tylko 6 pierwszych bitów adresu należy do części sieciowej, a wszystkie pozostałe 26 bitów to część hosta. Dla adresu 88.89.90.91 pierwszy oktet, czyli 88, ma postać binarną 01011000. Zachowujemy bity 010110, a resztę ustawiamy zależnie od tego, czy szukamy adresu sieci, czy broadcastu. Przy adresie rozgłoszeniowym wszystkie bity hosta muszą być ustawione na 1, także dwa ostatnie bity pierwszego oktetu. Dlatego pierwszy oktet broadcastu nie zostaje równy 88, tylko zmienia się na 91, bo 01011011 binarnie to właśnie 91. Wybór 88.255.255.255 wynika zwykle z myślenia, że skoro adres zaczyna się od 88, to broadcast też musi zaczynać się od 88. To działa czasem przy masce /8, ale nie tutaj. Adres 91.89.255.255 sugeruje z kolei zostawienie drugiego oktetu z adresu hosta, co jest błędem, bo przy /6 drugi, trzeci i czwarty oktet należą w całości do części hosta i w broadcastcie muszą mieć wartość 255. Podobnie 88.89.255.255 wygląda jak wynik pracy z dużo dłuższą maską, na przykład w okolicy /16, ale prefiks /6 obejmuje znacznie większy zakres adresów. Z mojego doświadczenia najbezpieczniej jest przy takich pytaniach rozpisać pierwszy oktet binarnie i dopiero potem liczyć zakres, zamiast zgadywać po kropkach w adresie IPv4.