Jak obliczyć numer prefiksu, sieci, podsieci i hosta?

97

Przykład:

IP: 128.42.5.4

Binarnie: 10000000 00101010 00000101 00000100

Podsieć: 255.255.248.0

Jak określić prefiks, numer sieci, podsieci i hosta?

użytkownik5032
źródło

Odpowiedzi:

164

Obliczanie długości maski sieci (zwanej także przedrostkiem):

Konwertuj reprezentację maski dziesiętnej z kropkami na binarną. Następnie policz liczbę sąsiadujących 1 bitów, zaczynając od najbardziej znaczącego bitu w pierwszym oktecie (tj. Po lewej stronie liczby binarnej).

255.255.248.0   in binary: 11111111 11111111 11111000 00000000
                           -----------------------------------
                           I counted twenty-one 1s             -------> /21

Prefiks 128.42.5.4 z maską sieciową 255.255.248.0 to / 21.

Obliczanie adresu sieciowego:

Adres sieciowy jest logicznym ORAZ odpowiednich bitów w binarnej reprezentacji adresu IP i maski sieci. Wyrównaj bity w obu adresach i wykonaj logiczne ORAZ na każdej parze odpowiednich bitów. Następnie przekonwertuj poszczególne oktety wyniku z powrotem na dziesiętny.

Tabela logiczna i prawda:

Logiczne AND

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
255.255.248.0   in binary: 11111111 11111111 11111000 00000000
                           ----------------------------------- [Logical AND]
                           10000000 00101010 00000000 00000000 ------> 128.42.0.0

Jak widać, adres sieciowy 128.42.5.4/21 to 128.42.0.0

Obliczanie adresu emisji:

Adres rozgłoszeniowy konwertuje wszystkie bity hosta na 1 s ...

Pamiętaj, że nasz adres IP w systemie dziesiętnym to:

128.42.5.4      in binary: 10000000 00101010 00000101 00000100

Maska sieci to:

255.255.248.0   in binary: 11111111 11111111 11111000 00000000

Oznacza to, że nasze bity hosta to ostatnie 11 bitów adresu IP, ponieważ odnajdujemy maskę hosta poprzez odwrócenie maski sieci:

Host bit mask            : 00000000 00000000 00000hhh hhhhhhhh

Aby obliczyć adres rozgłoszeniowy, zmuszamy wszystkie bity hosta do 1s:

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
Host bit mask            : 00000000 00000000 00000hhh hhhhhhhh
                           ----------------------------------- [Force host bits]
                           10000000 00101010 00000111 11111111 ----> 128.42.7.255

Obliczanie podsieci:

Nie podano wystarczających informacji do obliczenia podsieci dla tej sieci; zgodnie z ogólną zasadą budujesz podsieci, przenosząc niektóre bity hosta jako bity sieciowe dla każdej podsieci. Wiele razy nie ma jednego właściwego sposobu na podsieć bloku ... w zależności od twoich ograniczeń, może istnieć kilka ważnych sposobów na podsieci blok adresów.

Załóżmy, że podzielimy 128.42.0.0/21 na 4 podsieci, które muszą pomieścić co najmniej 100 hostów w każdym ...

podsieci

W tym przykładzie wiemy, że potrzebujesz co najmniej prefiksu / 25, aby pomieścić 100 hostów; Wybrałem / 24, ponieważ spada na granicę oktetu. Zauważ, że adres sieciowy dla każdej podsieci pożycza bity hosta z nadrzędnego bloku sieciowego.

Znajdowanie wymaganej maski podsieci lub maski sieci:

Skąd wiedziałem, że potrzebuję co najmniej 25 długości masowych na 100 hostów? Oblicz prefiks, wykonując kopię zapasową liczby bitów hosta wymaganych dla 100 hostów. Potrzebnych jest 7 bitów hosta, aby pomieścić 100 hostów. Oficjalnie oblicza się to z:

Bity hosta = log 2 (liczba hostów) = log 2 (100) = 6,643

Ponieważ adresy IPv4 mają szerokość 32 bitów, a my używamy bitów hosta (tj. Bitów najmniej znaczących), po prostu odejmij 7 od 32, aby obliczyć minimalny prefiks podsieci dla każdej podsieci ... 32 - 7 = 25.

Leniwy sposób na podzielenie 128.42.0.0/21 na cztery równe podsieci:

Ponieważ chcemy tylko czterech podsieci z całego bloku 128.42.0.0/21, moglibyśmy użyć / 23 podsieci. Wybrałem / 23, ponieważ potrzebujemy 4 podsieci ... tj. Dodatkowe dwa bity dodane do maski sieci.

Jest to równie poprawna odpowiedź na ograniczenie, przy użyciu / 23 podsieci 128.42.0.0/21 ...

podsieci, druga opcja

Obliczanie numeru hosta:

To, co już zrobiliśmy powyżej ... po prostu ponownie użyj maski hosta z pracy, którą wykonaliśmy, gdy obliczyliśmy adres emisji 128.42.5.4/21 ... Tym razem użyję 1s h, ponieważ potrzebujemy aby ponownie wykonać logiczne AND na adresie sieciowym.

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
Host bit mask            : 00000000 00000000 00000111 11111111
                           ----------------------------------- [Logical AND]
                           00000000 00000000 00000101 00000100 -----> 0.0.5.4

Obliczanie maksymalnej możliwej liczby hostów w podsieci:

Aby znaleźć maksymalną liczbę hostów, spójrz na liczbę bitów binarnych w powyższym numerze hosta. Najłatwiej to zrobić, odejmując długość maski sieci od 32 (liczba bitów w adresie IPv4). Daje to liczbę bitów hosta w adresie. W tym momencie...

Maksymalna liczba hostów = 2 ** (32 - długość maski sieci) - 2

Odejmujemy 2 powyżej dlatego, że numery hostów z zerami i zerami są zarezerwowane. Numer hosta z zerami to numer sieci; jedyny numer hosta to adres emisji.

Korzystając z przykładowej podsieci 128.42.0.0/21 powyżej, liczba hostów wynosi ...

Maksymalna liczba hostów = 2 ** (32 - 21) - 2 = 2048 - 2 = 2046

Znajdowanie maksymalnej maski sieci (minimalnej maski hosta), która zawiera dwa adresy IP:

Załóżmy, że ktoś podaje nam dwa adresy IP i oczekuje, że znajdziemy najdłuższą maskę sieci, która zawiera oba z nich; na przykład co gdybyśmy mieli:

  • 128.42.5.17
  • 128,42,5.67

Najłatwiej jest przekonwertować oba pliki na binarne i poszukać najdłuższego ciągu bitów sieciowych z lewej strony adresu.

128.42.5.17     in binary: 10000000 00101010 00000101 00010001
128.42.5.67     in binary: 10000000 00101010 00000101 01000011
                           ^                           ^     ^
                           |                           |     |
                           +--------- Network ---------+Host-+
                             (All bits are the same)    Bits

W takim przypadku maksymalna maska ​​sieci (minimalna maska ​​hosta) to / 25

UWAGA: Jeśli spróbujesz zacząć od prawej strony, nie daj się oszukać tylko dlatego, że znajdziesz jedną pasującą kolumnę bitów; mogą istnieć niepasujące bity poza tymi pasującymi bitami. Szczerze mówiąc, najbezpieczniej jest zacząć od lewej strony.

Mike Pennington
źródło
15

Powyższa odpowiedź idealnie uderza w gwóźdź na głowie. Jednak kiedy zaczynałem, wziąłem kilka różnych przykładów z kilku źródeł, aby naprawdę trafić do domu. Dlatego, jeśli interesują Cię inne przykłady, napisałem kilka postów na ten temat - http://www.oznetnerd.com/category/subnetting/

Administratorzy, jeśli ten post jest uważany za spam, możesz go usunąć.

Edycja: Zgodnie z sugestią YLearn, spróbuję pobrać odpowiednie części z części 1 mojej serii, nie wklejając tutaj całego wpisu.

Jako przykład weźmy 195.70.16.159/30.

Ponieważ jest to / 30, wiemy, że część hosta będzie w czwartym oktecie. Przekształćmy to w binarne:

128 64 32 16  8  4 2 1
SN  SN SN SN SN SN H H
 1   0  0  1  1  1 1 1

Teraz, aby dowiedzieć się, jaki jest adres sieciowy, dodajemy razem bity SN, które mają 1 pod nimi. (128 + 16 + 8 + 4 = 156).

Po dodaniu 156 do pierwszych trzech oktetów adresu pozostaje nam adres sieciowy 195.70.16.156.

Ponieważ wiemy, że pierwszym użytecznym adresem jest zawsze adres sieciowy plus jeden, wystarczy wykonać następujące obliczenia: (156 + 1 = 157).

To daje nam pierwszy użyteczny adres 195.70.16.157.

Teraz pomińmy na chwilę ostatni użyteczny adres i znajdź adres rozgłoszeniowy. Aby dowiedzieć się, co to jest, wystarczy dodać wszystkie bity H razem (niezależnie od tego, czy są to 1 czy 0), a następnie dodać ten numer do adresu sieciowego. (2 + 1 + 156 = 159).

To daje nam adres rozgłoszeniowy 195.70.16.159.

Na koniec ustalmy ostatni użyteczny adres. Ten proces jest podobny do znalezienia pierwszego użytecznego adresu, jednak zamiast dodawać jeden do adresu sieciowego, w rzeczywistości odejmujemy jeden od adresu rozgłoszeniowego. (159-1 = 158).

To daje nam ostatni użyteczny adres 195.70.16.158.

Mamy to! Nasza temaplte jest kompletna. Dla ułatwienia, oto znowu:

  • Adres sieciowy: 195.70.16.156
  • Pierwszy użyteczny adres: 195.70.16.157
  • Ostatni użyteczny adres: 195.70.16.158
  • Adres rozgłoszeniowy: 195.70.16.159

Jako skrót możesz także użyć tej formuły. Działa w podsieciach o dowolnym rozmiarze:

  • Pierwszy użyteczny adres = adres sieciowy + 1
  • Adres rozgłoszeniowy = następny adres sieciowy - 1
  • Ostatni użyteczny adres = adres rozgłoszeniowy - 1
OzNetNerd
źródło
4
Małe (prawie nieistotne) zastrzeżenie: formuła Last Usable Address na dole działa dla wszystkich podsieci oprócz / 31 ... patrz RFC 3021 . To mały, ale istotny wyjątek, jeśli ktoś próbował użyć twojego algorytmu w kodzie.
Mike Pennington,
11

Nie chcę niczego odbierać od doskonałej odpowiedzi Mike'a Penningtona , którą nieustannie promowałem, ale wciąż widzę pytania, na które odpowiedź nie odnosi się bezpośrednio, i stworzyłem coś, co pierwotnie opierało się na odpowiedzi Mike'a, ale mam więcej informacji, aby odpowiedzieć na pytania, które pojawiły się z czasem. Niestety jest za duży i musiałem podzielić go na dwie odpowiedzi.


Część 1 z 2


Matematyka IPv4

Biorąc pod uwagę adres IPv4 i maskę sieci IPv4 (maskę sieci można również uzyskać na podstawie długości maski sieci lub maski hosta), możesz określić wiele informacji na temat sieci IPv4: Adres sieci, Adres rozgłoszeniowy sieci, Całkowita liczba adresów hosta, Całkowita użyteczna Adresy hosta, pierwszy użyteczny adres hosta i ostatni użyteczny adres hosta.

Nie mogę wystarczająco podkreślić, że musisz wykonać matematykę IPv4 w systemie binarnym. Myślę, że każdy inżynier sieci (lub potencjalny inżynier sieci) próbował znaleźć sposób na zrobienie tego wszystkiego w systemie dziesiętnym, ponieważ jestem pewien, że to zrobisz *. Problem polega na tym, że 10 (dziesiętna) nie jest potęgą 2 (binarna), więc dziesiętna i binarna nie przekształcają się naturalnie między sobą w sposób, w jaki szesnastkowa (podstawa 16) naturalnie konwertuje na i z binarnej, ponieważ 16 jest potęgą 2 .

Wydaje się, że stosowanie notacji dziesiętnej z kropkami w IPv4 było wczesnym błędem, którego nie można teraz naprawić, ale IPv6 od samego początku stosował szesnastkę i łatwo jest konwertować między szesnastkową a binarną.

Jeśli nie masz kalkulatora IP (prawdopodobnie niedozwolonego w egzaminach z edukacji sieciowej lub testach certyfikacyjnych), warto sporządzić wykres wartości bitów w oktecie. Ponieważ jest to wartość binarna, każda wartość bitu jest 2 razy taka sama jak wartość cyfry w następnej mniej znaczącej cyfrze. Każda cyfra jest liczbą podstawową razy tę samą wartość cyfry w następnej mniej znaczącej cyfrze. Dotyczy to również każdej innej podstawy liczbowej, w tym dziesiętnej (podstawa 10), gdzie każda cyfra jest 10-krotnością wartości tej samej cyfry w następnej mniej znaczącej pozycji liczbowej. W przypadku cyfr binarnych (bitów):

---------------------------------------------------------
| Bit # |   7 |   6 |   5 |   4 |   3 |   2 |   1 |   0 |
---------------------------------------------------------
| Value | 128 |  64 |  32 |  16 |   8 |   4 |   2 |   1 |
---------------------------------------------------------

Tam, gdzie dziesiętny dotyczy potęg 10, binarny dotyczy potęg 2. Zwróć uwagę, że dla każdej liczby bitów w powyższej tabeli odpowiadająca jej wartość wynosi 2 do potęgi liczby bitowej.

For our example IPv4 dotted-decimal address of 198.51.100.223:
1st octet: 198 = 128 + 64 +  0 +  0 + 0 + 4 + 2 + 0 = 11000110
2nd octet:  51 =   0 +  0 + 32 + 16 + 0 + 0 + 2 + 1 = 00110011
3rd octet: 100 =   0 + 64 + 32 +  0 + 0 + 4 + 0 + 0 = 01100100
4th octet: 223 = 128 + 64 +  0 + 16 + 8 + 4 + 2 + 1 = 11011111

For our example IPv4 binary address of 11000110001100110110010011011111:
1st octet: 11000110 = 128 + 64 +  0 +  0 + 0 + 4 + 2 + 0 = 198
2nd octet: 00110011 =   0 +  0 + 32 + 16 + 0 + 0 + 2 + 1 =  51
3rd octet: 01100100 =   0 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 100
4th octet: 11011111 = 128 + 64 +  0 + 16 + 8 + 4 + 2 + 1 = 223

Będziesz także musiał pamiętać swoje tablice prawdy ze szkoły (w matematyce binarnej 0 to False, a 1 to True):

-----------------------------------------
| False AND False = False | 0 AND 0 = 0 |
-----------------------------------------
| False AND True  = False | 0 AND 1 = 0 |
-----------------------------------------
| True  AND False = False | 1 AND 0 = 0 |
-----------------------------------------
| True  AND True  = True  | 1 AND 1 = 1 |
-----------------------------------------

-----------------------------------------
| False OR False = False  | 0 OR 0 = 0  |
-----------------------------------------
| False OR True  = True   | 0 OR 1 = 1  |
-----------------------------------------
| True  OR False = True   | 1 OR 0 = 1  |
-----------------------------------------
| True  OR True  = True   | 1 OR 1 = 1  |
-----------------------------------------

* Jeśli wykonujesz matematykę IPv4 przez wiele lat, możesz dojść do punktu, w którym możesz wykonywać binarne / dziesiętne konwersje w swojej głowie, a wtedy możesz sprawiać wrażenie, że możesz wykonywać matematykę IPv4 w systemie dziesiętnym. Mimo że mogę to zrobić w mojej głowie, zawsze sprawdzę dwukrotnie za pomocą kalkulatora IP lub przekonwertuję na binarny, wykonam obliczenia matematyczne i przeliczę z powrotem na dziesiętne, zanim dokonam zmiany w sieci produkcyjnej.


Adres IPv4

Np. Kropkowo-dziesiętny zapis IPv4 198.51.100.223ma na celu po prostu ułatwić ludziom odczytanie adresu IPv4. Cztery oddzielne sekcje, zwane oktetami, naprawdę nie mają znaczenia dla IPv4. Nie popełniajcie powszechnego błędu myślenia, że ​​oktety mają specjalne znaczenie. Adres IPv4 jest tak naprawdę 32-bitową liczbą binarną i tak właśnie urządzenia sieciowe widzą i używają adresu IPv4.

Nasz przykładowy adres IPv4 198.51.100.223jest w rzeczywistości 11000110001100110110010011011111urządzeniem w sieci, więc możesz zobaczyć, że reprezentacja kropkowo-dziesiętna naprawdę ułatwia ludziom. Każdy oktet to osiem bitów adresu 32-bitowego (stąd powszechnie używany termin „oktet”), więc są cztery oktety ( 32 address bits / 8 bits per octet = 4 octets). Nasz przykładowy 32-bitowy adres binarny jest podzielony na cztery oktety, a następnie każdy oktet binarny jest konwertowany na liczbę dziesiętną *:

Binary address: 11000110001100110110010011011111
                ---------------------------------------------
Binary octets:  | 11000110 | 00110011 | 01100100 | 11011111 |
Decimal octets: |      198 |       51 |      100 |      223 |
                ---------------------------------------------
Dotted-decimal: 198.51.100.223

Ponieważ każdy oktet ma osiem bitów długości, każdy oktet będzie miał wartość pomiędzy 0i 255(wszelkie wartości większe niż 255są nieprawidłowe). Powodem jest to, że 2^8 = 256: 2(baza liczb binarnych) do potęgi 8(osiem bitów na oktet) jest równa 256liczbie różnych wartości, które mogą być wyrażone przez ośmiobitowy oktet. Pamiętaj, że pierwsza wartość to 0, więc 256ta wartość będzie o jeden mniejsza od całkowitej liczby wartości, które można wyrazić ( 256 – 1 = 255).

Aby poprawnie wykonać matematykę IPv4, musisz to zrobić binarnie, w przeciwnym razie popełnisz błędy, które spowodują problemy i frustrację. Oznacza to, że musisz przekonwertować kropkowany zapis dziesiętny na binarny przed próbą manipulacji:

Dotted-decimal: 198.51.100.223
                ---------------------------------------------
Decimal octets: |      198 |       51 |      100 |      223 |
Binary octets:  | 11000110 | 00110011 | 01100100 | 11011111 |
                ---------------------------------------------
Binary address: 11000110001100110110010011011111

* Zera wiodące w adresie IPv4 z kropkami dziesiętnymi mogą być interpretowane przez niektóre aplikacje i języki programowania jako ósemkowe (podstawa 8) zamiast dziesiętnych (podstawa 10), powodując błędy, i należy unikać zer wiodących w reprezentacji kropkowanej dziesiętnej IPv4, ale zera wiodące są niezbędne dla binarnych oktetów adresu IPv4, ponieważ reprezentują pozycje bitów w pełnym adresie, a pominięcie pozycji bitu skróci adres i zmieni wartość binarną.


Maska sieci IPv4

Maska sieci IPv4 służy do podziału adresu IPv4 na dwie części: część sieci i część hosta. Podział może mieć dowolną liczbę bitów, więc może mieścić się w oktecie, a nie na granicy oktetu, jak wiele osób błędnie zakłada, że ​​zawsze. Maska sieci IPv4 ma ten sam rozmiar co adres IPv4 (32 bity) i jest wyrażana w notacji dziesiętnej z kropkami w taki sam sposób, jak w przypadku wyrażenia adresu IPv4 w notacji dziesiętnej z kropkami (cztery ośmiobitowe oktety, oddzielone znakiem Kropka). Na przykład 255.255.248.0.

Maska sieci IPv4 składa się z kilku kolejnych 1bitów (reprezentujących część sieciową adresu), a następnie z pewnej liczby 0bitów (reprezentujących część hosta adresu). Całkowita liczba 1bitów i całkowita liczba 0bitów sumuje się do 32liczby bitów w adresie IPv4 lub masce sieci. W naszym przykładzie maska ​​sieciowa:

Dotted-decimal: 255.255.248.0
                ------------------------------------------------
Decimal octets: |      255 |      255 |         248 |        0 |
Binary octets:  | 11111111 | 11111111 | 11111 | 000 | 00000000 |
                ------------------------------------------------
                | 21 Network bits             | 11 Host bits   |
                ------------------------------------------------

Jak widać, podział między częścią sieciową a hostową adresu IPv4 przy użyciu tej konkretnej maski mieści się w oktecie, a nie na granicy oktetu.

Maska sieci IPv4 jest często reprezentowana przez liczbę kolejnych 1bitów w masce. Nazywa się to inaczej długością maski sieci lub długością prefiksu, a następnie jest reprezentowana /przez liczbę kolejnych 1bitów w masce sieci. W naszym przykładzie liczenie kolejnych 1bitów jest pobierane 21, co można przedstawić jako /21.

Biorąc pod uwagę długość maski, można obliczyć maskę w postaci kropkowo-dziesiętnej. Wystarczy zapisać liczbę 1bitów dla długości maski i dodać wystarczającą liczbę 0bitów na końcu do całkowitej liczby 32bitów. Konwertuj wynikową liczbę binarną na reprezentację dziesiętną z kropkami:

Mask length:    /21
                ------------------------------------------------
                | 21 Network bits             | 11 Host bits   |
                ------------------------------------------------
Binary octets:  | 11111111 | 11111111 | 11111 | 000 | 00000000 |
Decimal octets: |      255 |      255 |         248 |        0 |
                ------------------------------------------------
Dotted-decimal: 255.255.248.0

Przykład może być tradycyjnie przedstawiony za 198.51.100.223pomocą maski sieci 255.255.248.0lub może być reprezentowany jako bardziej nowoczesny CIDR (Classless Inter-Domain Routing) 198.51.100.223/21.


Adres sieciowy IPv4

Adres sieciowy IPv4 to adres IPv4 z ustawionymi wszystkimi bitami hosta 0. Adres sieciowy IPv4 można obliczyć bitowo ANDz odpowiednich bitów w binarnej reprezentacji adresu IPv4 i maski sieci IPv4. Wyrównaj bity w obu adresach i wykonaj bitowe operacje ANDna każdej parze odpowiednich bitów, a następnie przekonwertuj poszczególne oktety wyniku z powrotem na dziesiętne.

W naszym przykładzie adres IPv4 198.51.100.223i maska ​​sieci 255.255.248.0:

Decimal address:        198.51.100.223/21
Binary address octets:  11000110 00110011 01100100 11011111
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  11000110 00110011 01100000 00000000
Decimal network octets:      198       51       96        0
Dotted-decimal network: 198.51.96.0

Jak widać adres sieciowy 198.51.100.223/21to 198.51.96.0. Zauważ, że nie możesz polegać na oktetach, które powiedzą, która część adresu to sieć, a która część adresu jest przeznaczona dla hostów.

Możesz użyć tej metody, aby ustalić, czy dwa adresy znajdują się w tej samej, czy w różnych sieciach *. Jeśli na przykład chcesz sprawdzić, czy Twój 198.51.100.223/21adres znajduje się w tej samej sieci IPv4, do której przypisany jest host 198.51.102.57, określ adres sieciowy IPv4 (jak wyżej). Następnie określ adres sieciowy IPv4 danego hosta za pomocą maski sieci IPv4 (hosty w tej samej sieci używają tej samej maski sieci i możesz nie mieć maski, tylko adres hosta docelowego):

Decimal address:        198.51.102.57/21
Binary address octets:  11000110 00110011 01100110 00111001
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  11000110 00110011 01100000 00000000
Decimal network octets:      198       51       96        0
Dotted-decimal network: 198.51.96.0

Porównaj wynikowy adres sieciowy IPv4 z oryginalnym adresem sieciowym IPv4 i zauważ, że adresy sieciowe są równe, więc adresy hostów znajdują się w tej samej sieci.

Zobaczmy teraz, czy jesteś w tej samej sieci co 74.125.69.100adres Google:

Decimal address:        74.125.69.100/21
Binary address octets:  01001010 01111101 01000101 01100100
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  01001010 01111101 01000000 00000000
Decimal network octets:       74      125       64        0
Dotted-decimal network: 74.125.64.0

Porównaj wynikowy adres sieciowy IPv4 z oryginalnym adresem sieciowym IPv4 i zauważ, że adresy sieciowe są różne, więc adresy hostów znajdują się w różnych sieciach.


* Jest to metoda stosowana przez host źródłowy w celu ustalenia, czy jest to host docelowy w tej samej sieci co host źródłowy.


Maska hosta IPv4

Jedną przydatną, często pomijaną wartością, która jest użyteczna w adresowaniu IPv4, jest maska ​​hosta IPv4. Maska hosta IPv4 jest po prostu odwrotnością maski sieci IPv4. Możesz utworzyć binarną maskę hosta z binarnej maski sieci lub binarną maskę sieci z binarnej maski hosta, po prostu odwracając 1s i 0s maski początkowej:

Dotted-decimal network mask: 255.255.248.0
Decimal network mask octets:      255      255      248        0
Binary network mask octets:  11111111 11111111 11111000 00000000 invert
                             -----------------------------------
Binary host mask octets:     00000000 00000000 00000111 11111111
Decimal host mask octets:           0        0        7      255
Dotted-decimal host mask:    0.0.7.255

Możliwe jest matematyczne utworzenie maski hosta z maski sieci lub maski sieci z maski hosta poprzez odjęcie maski początkowej od najdłuższej maski ( /32lub maski wszystkich).

Można to zrobić binarnie:

Binary all-ones mask octets: 11111111 11111111 11111111 11111111
Binary network mask octets:  11111111 11111111 11111000 00000000 -
                             -----------------------------------
Binary host mask octets:     00000000 00000000 00000111 11111111
Decimal host mask octets:           0        0        7      255
Dotted-decimal host mask:    0.0.7.255

Można to również zrobić w systemie dziesiętnym (oktet „jedynki” 255), ale pamiętaj, aby przekonwertować go na binarny, zanim spróbujesz go użyć do manipulacji adresem:

Decimal all-ones mask octets: 255 255 255 255
Decimal network mask octets:  255 255 248   0 -
                              ---------------
Decimal host mask octets:       0   0   7 255
Dotted-decimal host mask:     0.0.7.255

Adres rozgłoszeniowy sieci IPv4

Adres emisji sieci IPv4 to adres sieci IPv4 z ustawionymi wszystkimi bitami hosta 1. Istnieje kilka sposobów obliczania adresu emisji w sieci IPv4.

W naszym przykładzie adres IPv4 198.51.100.223i maska ​​sieci 255.255.248.0.

Możesz wykonać bitowe ORz adresem IPv4 lub adresem sieciowym z maską hosta:

Decimal address octets:        198       51      100      223
Binary address octets:    11000110 00110011 01100100 11011111
Binary host mask octets:  00000000 00000000 00000111 11111111 OR
                          -----------------------------------
Binary broadcast octets:  11000110 00110011 01100111 11111111
Decimal broadcast octets:      198       51      103      255
Dotted-decimal broadcast: 198.51.103.255

Możesz po prostu dodać wartość maski hosta IPv4 do wartości adresu sieciowego IPv4:

Binary network octets:    11000110 00110011 01100000 00000000
Binary host mask octets:  00000000 00000000 00000111 11111111 +
                          -----------------------------------
Binary broadcast octets:  11000110 00110011 01100111 11111111
Decimal broadcast octets:      198       51      103      255
Dotted-decimal broadcast: 198.51.103.255

Jest to również coś, co można zrobić w systemie dziesiętnym:

Decimal network octets:   198  51  96   0
Decimal host mask octets:   0   0   7 255 +
                          ---------------
Decimal broadcast octets: 198  51 103 255
Dotted-decimal broadcast: 198.51.103.255

Łączne adresy hostów sieciowych IPv4

Całkowita liczba adresów hostów IPv4 dla sieci zależy 2od liczby bitów hosta, która jest 32minus liczba bitów sieci. W naszym przykładzie /21sieci (maski 255.255.248.0sieci) są 11bity hosta ( 32 address bits – 21 network bits = 11 host bits). Oznacza to, że 2048w /21sieci IPv4 znajduje się całkowita liczba adresów hostów ( 2^11 = 2048).


Łącznie użyteczne adresy hosta sieciowego IPv4

Z wyjątkiem /31sieci (maska ​​sieci 255.255.255.254) i /32(maska 255.255.255.255sieci) liczba użytecznych adresów hostów w sieci IPv4 to całkowita liczba adresów hostów sieciowych minus 2(ponieważ adresy IPv4 sieci i adresy rozgłoszeniowe są bezużyteczne dla adresów hostów w sieci, użytkownik należy je odjąć od liczby użytecznych adresów hostów). W naszym przykładzie sieci /21( 255.255.248.0) istnieją 2046użyteczne adresy hostów ( 2^11 - 2 = 2046).


Pierwszy przydatny adres hosta sieciowego IPv4

Z wyjątkiem /31sieci (maska ​​sieci 255.255.255.254) i /32(maska 255.255.255.255sieci), pierwszym użytecznym adresem hosta sieciowego IPv4 jest adres sieciowy IPv4 plus 1(adres sieciowy IPv4 nie jest użyteczny dla adresu hosta sieciowego). W naszej przykładowej sieci 198.51.96.0/21pierwszym użytecznym adresem hosta sieciowego jest 198.51.96.1( 198.51.96.0 + 1 = 198.51.96.1). Po prostu ustaw bit niskiego rzędu binarnego adresu sieciowego IPv4 na 1:

Decimal network octets:      198       51       96        0
Binary network octets:  11000110 00110011 01100000 00000000
                        -----------------------------------
Binary address octets:  11000110 00110011 01100000 00000001
Decimal address octets:      198       51       96        1
Dotted-decimal address: 198.51.96.1

Ostatni użyteczny adres hosta sieciowego IPv4

Z wyjątkiem /31sieci (maska ​​sieci 255.255.255.254) i /32(maska 255.255.255.255sieci), ostatnim użytecznym adresem hosta sieci IPv4 jest adres emisji sieci IPv4 minus 1(adres emisji sieci IPv4 nie jest użyteczny dla adresu hosta sieci). W naszej przykładowej sieci 198.61.96.0/21ostatni użyteczny adres hosta sieciowego to 198.51.103.254( 198.51.103.255 - 1 = 198.51.103.254). Wystarczy ustawić bit niskiego rzędu binarnego adresu rozgłoszeniowego sieci IPv4 na 0:

Decimal broadcast octets:      198       51      103      255
Binary broadcast octets:  11000110 00110011 01100111 11111111
                          -----------------------------------
Binary address octets:    11000110 00110011 01100111 11111110
Decimal address octets:        198       51      103      254
Dotted-decimal address:   198.51.103.254

Łączenie wszystkich adresów sieciowych IPv4

W naszym przykładowym adresie IPv4 198.51.100.223i masce 255.255.248.0(lub 198.51.100.223/21) możemy obliczyć wiele informacji o sieci:

Host address:                       198.51.100.223
Network mask:                       255.255.248.0
Network mask length:                21
Host mask:                          0.0.7.255
Host mask length:                   11
*Network address:                   198.51.96.0
*First usable network host address: 198.51.100.1
*Last usable network host address:  198.51.103.254
*Network Broadcast address:         198.51.103.255
Total network host addresses:       2048
Usable network host addresses:      2046

* Egzaminy klasy edukacyjnej i testy certyfikacyjne sieci będą wymagać szybkiego obliczenia ich dla sieci IPv4, podając adres hosta i maskę (lub długość maski). Możesz skorzystać z poniższych wskazówek, aby szybko sprawdzić swoje odpowiedzi:

  • Adres sieciowy (wskazówka: liczba parzysta)
  • Pierwszy użyteczny adres hosta (wskazówka: adres sieciowy plus 1, liczba nieparzysta)
  • Ostatni użyteczny adres hosta (wskazówka: adres rozgłoszeniowy minus 1, liczba parzysta)
  • Adres rozgłoszeniowy (wskazówka: adres sieciowy i maska ​​hosta, liczba nieparzysta)

Powyższe wskazówki nie dotyczą /31sieci (maska ​​sieci 255.255.255.254) lub /32(maska 255.255.255.255sieci).

Biorąc pod uwagę wystarczająco dużo czasu na egzamin i problem z wieloma metodami na znalezienie odpowiedzi, należy użyć wielu metod, aby dokładnie sprawdzić odpowiedź.


Ciąg dalszy w następnej odpowiedzi ...

Ron Maupin
źródło
9

Ciąg dalszy od poprzedniej odpowiedzi ...


Część 2 z 2


Wybór adresu bramy sieci (routera) IPv4

Brama to host w sieci, który wie, jak przekazywać pakiety do innych sieci, i można mu przypisać dowolny użyteczny adres hosta sieciowego. Niektóre osoby po prostu losowo przypisują adresy bram do dowolnego użytecznego adresu hosta sieciowego, niektóre osoby zawsze przypisują pierwszy użyteczny adres hosta sieciowego bramie, a niektóre osoby zawsze przypisują ostatni użyteczny adres hosta sieciowego bramie. Właściwie nie ma znaczenia, jaki adres sieci hosta można przypisać do bramy, ale należy starać się zachować spójność.


IPv4 /31(maska ​​sieci 255.255.255.254) Sieci

Pierwotnie /31sieci (maska 255.255.255.254sieci) były bezużyteczne, ponieważ istnieje tylko jeden bit hosta, co daje dwa całkowite adresy hosta sieci, ale liczba użytecznych adresów hosta sieci to całkowita liczba adresów hosta sieci minus 2( 2 total host addresses - 2 = 0 usable host addresses).

Łącza typu punkt-punkt wymagają tylko dwóch adresów hosta (jednego dla każdego końca łącza). Tradycyjny sposób przypisywania sieci IPv4 wymagał użycia /30sieci (maski 255.255.255.252sieci) do połączeń punkt-punkt, ale marnuje połowę adresów hosta sieci, ponieważ /30sieć ma cztery adresy hostów ogółem, ale tylko dwa są adresami hosta użytecznego ( 2^2 – 2 = 2).

Przy krytycznym braku adresu IPv4 stworzono standard umożliwiający korzystanie z /31sieci do połączeń punkt-punkt. Ma to sens, ponieważ nie ma potrzeby emisji w takich sieciach: wszelkie pakiety wysyłane przez hosta w sieci są przeznaczone dla jedynego innego hosta w sieci, skutecznie nadając. W /31sieci adres sieciowy jest pierwszym użytecznym adresem hosta, a adres rozgłoszeniowy jest ostatnim użytecznym adresem hosta.

Niestety, nie wszyscy dostawcy (w szczególności Microsoft) obsługują standard korzystania z /31sieci na łączach punkt-punkt, a połączenia typu punkt-punkt najczęściej są wyświetlane za pomocą /30sieci.


IPv4 /32(maska ​​sieci 255.255.255.255) Sieci

Sieć /32(maska ​​sieci 255.255.255.255) to zarówno sieć bez adresów hosta, jak i sam adres hosta. W sieci jest tylko jeden adres i jest to adres sieciowy. Ponieważ w sieci nie ma innych hostów, ruch musi być kierowany do iz adresu sieciowego.

Adresy te są często używane w interfejsach sieci wirtualnej zdefiniowanych w urządzeniu, które może kierować pakiety między jego interfejsami wirtualnymi i fizycznymi. Przykładem tego jest stworzenie wirtualnego interfejsu w urządzeniu sieciowym, który będzie używany jako źródło lub miejsce docelowe samego urządzenia. Interfejs wirtualny nie może upaść z powodu problemu fizycznego, np. Odłączony kabel, a jeśli urządzenie ma wiele ścieżek, inne urządzenia mogą nadal komunikować się z urządzeniem przy użyciu adresu interfejsu wirtualnego, gdy z jakiegoś powodu fizyczny interfejs urządzenia nie działa .


Podsieci Sieci IPv4

Podsieć sieci tworzy wiele dłuższych sieci z adresu i maski sieci. Podstawową ideą jest to, że pożyczasz bity wysokiego rzędu od części hosta oryginalnej sieci. Załóżmy, że chcesz utworzyć 14 podsieci o równej wielkości z naszej oryginalnej 198.51.96.0/21sieci. Ponieważ pożyczasz bity wysokiego rzędu z części hosta oryginalnej sieci, otrzymasz liczbę, która jest potęgą 2, ale 14nie potęgą 2, więc musisz uzyskać następną wyższą moc 2, która przypadkowo 16( 16 = 2^4). Mocą 2w tym przypadku 4jest liczba bitów hosta wyższego rzędu potrzebnych do pożyczenia w celu utworzenia liczby podsieci. Możesz także użyć wzoru matematycznego, aby określić liczbę wymaganych bitów:Log2(X subnets) = Y borrowed bits, w zaokrągleniu do następnej liczby całkowitej:

Log2(14 subnets) = 3.807354922, rounded up = 4 borrowed bits

W naszym przykładzie potrzeby 14 równych rozmiarów podsieci oryginalnej 198.51.96.0/21sieci, zaczynając od wszystkich 0s * dla pierwszej podsieci, dodaj 1do części podsieci, aby uzyskać następną podsieć:

           ----------------------------------------------
Original:  | 21 network bits       | 11 host bits       |
           ----------------------------------------------
Network:   | 110001100011001101100 | 0000 |  0000000    | = 198.51.96.0/21
Subnet 1:  | 110001100011001101100 | 0000 |  0000000    | = 198.51.96.0/25
Subnet 2:  | 110001100011001101100 | 0001 |  0000000    | = 198.51.96.128/25
Subnet 3:  | 110001100011001101100 | 0010 |  0000000    | = 198.51.97.0/25
Subnet 4:  | 110001100011001101100 | 0011 |  0000000    | = 198.51.97.128/25
Subnet 5:  | 110001100011001101100 | 0100 |  0000000    | = 198.51.97.128/25
Subnet 6:  | 110001100011001101100 | 0101 |  0000000    | = 198.51.98.128/25
Subnet 7:  | 110001100011001101100 | 0110 |  0000000    | = 198.51.99.0/25
Subnet 8:  | 110001100011001101100 | 0111 |  0000000    | = 198.51.99.128/25
Subnet 9:  | 110001100011001101100 | 1000 |  0000000    | = 198.51.100.0/25
Subnet 10: | 110001100011001101100 | 1001 |  0000000    | = 198.51.100.128/25
Subnet 11: | 110001100011001101100 | 1010 |  0000000    | = 198.51.101.0/25
Subnet 12: | 110001100011001101100 | 1011 |  0000000    | = 198.51.101.128/25
Subnet 13: | 110001100011001101100 | 1100 |  0000000    | = 198.51.102.0/25
Subnet 14: | 110001100011001101100 | 1101 |  0000000    | = 198.51.102.128/25
           ----------------------------------------------
Subnetted: | 25 network bits              | 7 host bits |
           ----------------------------------------------

           ----------------------------------------------
Unused:    | 110001100011001101100 | 111  | 00000000    | = 198.51.103.0/24
           ----------------------------------------------

* Istnieje niezmienny mit, że w przypadku podsieci, podobnie jak w przypadku adresów hostów, podsieci „zero” i „jedynki” nie mogą być używane, ale mit ten został wyraźnie obalony wiele lat temu przez standard. Niestety, mit ten dotyczy niektórych klas edukacji sieciowej, a poprawną odpowiedzią na te (niepoprawne) klasy byłoby użycie podsieci od 2 do 15.


Możliwe jest podsieć sieci do podsieci różnej wielkości (każda sieć IPv4 jest podsiecią 0.0.0.0/0adresu sieciowego), jak w naszym przykładzie powyżej, w którym nieużywana podsieć jest /24podsiecią, ale wymaga to starannego planowania, aby powstałe podsieci zaczęły się dalej właściwy bit.

Na przykład, powiedzmy, że potrzebujemy zarówno a, jak /26i /27podsieci z naszej 198.51.96.0/21sieci. Można to zrobić na dwa sposoby: zacznij od /26podsieci lub zacznij od /27podsieci.

Począwszy od /26podsieci:

Original: | 110001100011001101100 | 00000000000    | /21
Subnet 1: | 110001100011001101100 | 00000 | 000000 | /26

Dodaj 1do części podsieci, aby uzyskać pozycję początkową następnej podsieci:

Subnet 2: | 110001100011001101100 | 00001 | 000000 | /26

Następnie rozszerz drugą podsieć do /27:

Subnet 2: | 110001100011001101100 | 000010 | 00000 | /27

Zauważ, że tak naprawdę /26podsieć drugą podsieć do /27podsieci, i to działa dobrze, ponieważ 27jest większa niż 26.

Począwszy od /27podsieci:

Original: | 110001100011001101100 | 00000000000    | /21
Subnet 1: | 110001100011001101100 | 000000 | 00000 | /27

Dodaj 1do części podsieci, aby uzyskać pozycję początkową następnej podsieci:

Subnet 2: | 110001100011001101100 | 000001 | 00000 | /27

Zauważ, że w części hosta nie ma wystarczającej liczby bitów (pięć bitów hosta) do obsługi /26sieci, która wymaga sześciu bitów hosta ( 32 address bits – 26 network bits = 6 host bits). Jeśli użyjemy tego jako pozycji początkowej dla /26podsieci, faktycznie nakładamy się na poprzednią i następną /26sieć. Musimy pozostawić lukę wielkości /27sieci dla początkowej pozycji /26sieci:

Original: | 110001100011001101100 | 00000000000     | /21
Subnet 1: | 110001100011001101100 | 000000 |  00000 | /27
Unused:   | 110001100011001101100 | 000001 |  00000 | /27
Subnet 2: | 110001100011001101100 | 00001  | 000000 | /26

/26Podsieci musi zawsze zaczynają się na /26granicy: co 2 /27granica podsieci, co 4 /28granica, każdy 8-cia /29granica itd Zasada ta jest dla dowolnej wielkości podsieci: podsieci musi zaczynać się na granicy dłuższy podsieci, która jest równa 2do potęgi dłuższego rozmiaru podsieci minus rozmiar podsieci. Na przykład /23podsieć musi się uruchamiać w co czwartej /25sieci ( 2^(25 - 23) = 2^2 = 4).

Próba skonfigurowania urządzenia z adresem sieci, który zaczyna się na niewłaściwej granicy bitów, spowoduje albo dziwne, trudne do rozwiązania problemy, albo urządzenie wyświetli błąd dotyczący nakładania się sieci. Niektóre osoby starają się to robić z kropkami dziesiętnymi, co może prowadzić do błędów. Na przykład 198.51.96.0/27adresy hosta sieciowego są 198.51.96.0przez 198.51.96.31. Jeśli wiesz o tym i próbujesz korzystać z 198.51.96.32/26sieci, napotkasz problemy, ponieważ sieć zaczyna się na niewłaściwej granicy bitów i nakłada się na /27sieć (sprawdź, używając ANDadresów bitowych z adresami i maskami sieci). Jest to oczywiste w systemie binarnym, ale nie jest tak oczywiste w przypadku kropek dziesiętnych. Możesz dowiedzieć się, że /26sieci muszą zaczynać się od wielokrotności dziesiętnej64 granica, ale widzenie jej w postaci binarnej może z całą pewnością powiedzieć, czy popełniłeś błąd.


Rozmiary podsieci na podstawie liczby hostów

Częste pytania egzaminacyjne dają ci sieć i proszą cię o wymyślenie kilku różnej wielkości podsieci w oparciu o liczbę hostów dla każdej podsieci. Jeśli możesz, musisz wyjaśnić, czy liczba hostów zależy od całkowitej liczby adresów hostów w sieci, czy też od liczby hostów możliwych do wykorzystania w sieci. (Na przykład, jeśli pytanie dotyczy podsieci z 256lub 255hostami, /24sieć da ci 256całkowitą liczbę adresów hosta, ale tylko adresy hostów, które można 254wykorzystać. Takie pytanie może być podchwytliwym pytaniem, a poprawna odpowiedź zależy od tego, czy pytanie oznacza całkowitą liczbę hostów lub użyteczne adresy hostów).

Przykładowe pytanie:

Given the 198.51.96.0/21 network, subnet it for the following departments:
    Department 1:  500 hosts
    Department 2:  100 hosts
    Department 3:  200 hosts
    Department 4: 1000 hosts

Jak widzieliśmy w sekcji Sieci podsieci IPv4, najłatwiejszym sposobem jest posortowanie działów według największej do najmniejszej liczby hostów, ponieważ nie będziemy musieli radzić sobie z lukami w sieci:

Department 4: 1000 hosts
Department 1:  500 hosts
Department 3:  200 hosts
Department 2:  100 hosts

Możesz zaokrąglić każdy z nich do następnej wysokiej potęgi 2, aby uzyskać liczbę wymaganych całkowitych adresów hosta dla każdej podsieci, a następnie wyprowadzić liczbę wymaganych bitów hosta z wykładnika potęgi 2:

Department 4: 1024 total host addresses = 2^10 = 10 host bits
Department 1:  512 total host addresses = 2^9  =  9 host bits
Department 3:  256 total host addresses = 2^8  =  8 host bits
Department 2:  128 total host addresses = 2^7  =  7 host bits

Możesz również zmodyfikować poprzednią formułę w celu znalezienia liczby bitów wymaganych dla określonej liczby podsieci o jednakowych rozmiarach, aby określić liczbę bitów hosta wymaganych dla każdej podsieci: Log2(X hosts) = Y host bitszaokrągloną w górę do następnej liczby całkowitej:

Department 4: Log2(1000 hosts) = 9.96578428466209, rounded up = 10 host bits
Department 1: Log2( 500 hosts) = 8.96578428466209, rounded up =  9 host bits
Department 3: Log2( 200 hosts) = 7.64385618977472, rounded up =  8 host bits
Department 2: Log2( 100 hosts) = 6.64385618977473, rounded up =  7 host bits

Po określeniu liczby bitów hosta wymaganych dla każdej podsieci, wykonaj matematykę binarną, aby uzyskać określoną podsieć dla każdego działu. Pamiętaj, aby dodać 1do podsieci, aby uzyskać adres początkowy następnej podsieci:

Original:     | 110001100011001101100 |    00000000000 | = 198.51.96.0/21
Department 4: | 110001100011001101100 | 0 | 0000000000 | = 198.51.96.0/22
Department 1: | 110001100011001101100 | 10 | 000000000 | = 198.51.100.0/23
Department 3: | 110001100011001101100 | 110 | 00000000 | = 198.51.102.0/24
Department 2: | 110001100011001101100 | 1110 | 0000000 | = 198.51.103.0/25
Unused:       | 110001100011001101100 | 1111 | 0000000 | = 198.51.103.128/25

Znajdowanie konkretnej podsieci

Możesz zostać poproszony o podanie informacji o sieci dla określonej podsieci danej sieci. Na przykład możesz zostać poproszony o podanie informacji o sieci dla 23. /26podsieci 198.51.96.0/21sieci. Ponieważ potrzebujesz 23. podsieci, możesz przekonwertować 22(pamiętaj, że 0jest to pierwsza podsieć, więc 23. podsieć byłaby 22*) na binarną: dziesiętna 22= binarna 10110. Użyj przekonwertowanej liczby binarnej w podsieci adresu:

Original:  | 110001100011001101100 |    00000000000 | = 198.51.96.0/21
Subnet 23: | 110001100011001101100 | 10110 | 000000 | = 198.51.101.128/26

Po zidentyfikowaniu 23. adresu sieciowego 198.51.101.128/26możesz obliczyć inne informacje o sieci (jak opisano w poprzednich sekcjach):

Network address:                   198.51.101.128
Network mask length:               26
Network mask:                      255.255.255.192
Host mask length:                  6
Host mask:                         0.0.0.63
First usable network host address: 198.51.101.1
Last usable network host address:  198.51.101.62
Broadcast address:                 198.51.101.63
Total network host addresses:      64
Usable network host addresses:     62

* Istnieje niezmienny mit, że w przypadku podsieci, podobnie jak w przypadku adresów hostów, podsieci „zero” i „jedynki” nie mogą być używane, ale mit ten został wyraźnie obalony wiele lat temu przez standard. Niestety, mit ten obejmuje niektóre klasy edukacji sieciowej, a poprawną odpowiedzią dla tych (niepoprawnych) klas byłoby użycie 24-tej ( 23dziesiętnej, 10111binarnej) podsieci w naszym przykładzie podsieci o równej wielkości, a nie faktycznej 23-tej ( 22dziesiętnej, 10110binarna) podsieć.


Znajdowanie konkretnego hosta sieciowego

Możesz zostać poproszony o znalezienie adresu hosta dla konkretnego hosta w danej sieci. Na przykład możesz zostać poproszony o podanie adresu hosta dla 923 hosta 198.51.96.0/21sieci. Ponieważ potrzebujesz hosta 923, możesz przekonwertować go 923na binarny: dziesiętny 923= binarny 1110011011. Dodaj przekonwertowany numer binarny do adresu sieciowego:

Binary network: | 110001100011001101100 | 00000000000 |
Binary 923:     | 000000000000000000000 | 01110011011 | +
                  -----------------------------------
Host address:   | 110001100011001101100 | 01110011011 | = 198.51.99.155

Największa wspólna sieć dla dwóch hostów *

Możesz otrzymać dwa (lub więcej) różne adresy hostów i poprosić o wymyślenie największej sieci (najmniejszej liczby hostów), która zawiera oba adresy hostów. Na przykład znajdź największą wspólną sieć 198.51.100.223i 198.51.101.76.

Najpierw przekonwertuj kropkowane adresy dziesiętne na binarne:

198.51.100.223 = 11000110001100110110010011011111
198.51.101.76  = 11000110001100110110010101001100

Następnie, zaczynając od bitu najwyższego rzędu (skrajnie lewy), porównaj adresy binarne w każdej pozycji bitu, aż bity w tej samej pozycji nie pasują:

198.51.100.223 = | 11000110001100110110010 | 011011111 |
198.51.101.76  = | 11000110001100110110010 | 101001100 |

Policz liczbę pasujących bitów, 23w tym przypadku, aby uzyskać długość maski. Następnie możesz wziąć dowolny adres i wykonać bitowe użycie ANDmaski sieci, aby uzyskać wspólną sieć. Wykonanie tego na obu adresach powinno skutkować powstaniem tej samej sieci, a jeśli nie, oznacza to, że albo przeliczyłeś, albo przegapiłeś niedopasowaną pozycję bitu.

198.51.100.223  = 11000110001100110110010011011111
/23 mask length = 11111111111111111111111000000000 AND
                  --------------------------------
Binary network:   11000110001100110110010000000000 = 198.51.100.0/23

198.51.101.76   = 11000110001100110110010111011111
/23 mask length = 11111111111111111111111000000000 AND
                  --------------------------------
Binary network:   11000110001100110110010000000000 = 198.51.100.0/23

Zauważ, że dwa adresy sieciowe są zgodne. Oznacza to, że największą wspólną siecią dla dwóch adresów hostów jest 198.51.100.0/23(notacja CIDR) lub (tradycyjna) 198.51.100.0z maską 255.255.254.0.


* Może się to nazywać najmniejszą wspólną siecią (lub jakimś wariantem, np. Siecią minimalną lub maską). Najmniejsza sieć to tak naprawdę 0.0.0.0/0( 0bity sieciowe) i jest to wspólna sieć dla wszystkich adresów IPv4, więc jest to najmniejsza wspólna sieć między dowolnymi adresami IPv4. Zamieszanie powstaje, ponieważ wiele osób patrzy na część hosta adresu i widzi jego rozmiar jako rozmiar sieci, a nie rozmiar części adresu w sieci.


Adresowanie publiczne a prywatne

Sam IPv4 nie ma pojęcia ani rozróżnienia między adresowaniem publicznym i prywatnym. Prywatne adresowanie IPv4 zostało wybrane arbitralnie, a dostawcy usług internetowych w drodze umowy nie będą przekazywać pakietów w publicznym Internecie za pomocą adresów w prywatnej przestrzeni adresowej, ale urządzenia sieciowe i hosty nie mają pojęcia, czy adres jest publiczny czy prywatny.

Istnieją trzy zakresy adresów zdefiniowane jako prywatne adresowanie IPv4:

  1. 10.0.0.0/8
  2. 172.16.0.0/12
  3. 192.168.0.0/16

Klasowe adresowanie sieciowe

Pierwotnie adresy IPv4 były podzielone na klasy sieciowe. Adresowanie klasowe było przestarzałe dekady temu, a nowoczesne sieci oparte są na CIDR (Classless Inter-Domain Routing), ale niestety wiele klas edukacji sieciowej i egzaminów certyfikacyjnych nalega na sprawdzenie twojej wiedzy na temat adresowania klasowego. Dowiedz się i zachowaj wygodę z całą poprzednią matematyką IPv4 w tym dokumencie, zanim dowiesz się o adresowaniu klasowym.

Klasy adresów IPv4 są oparte na pierwszych bitach adresu:

Class   Address Starts With      Address Range                 Default Size*
  A     First one bit    = 0       0.0.0.0 to 127.255.255.255        /8
  B     First two bits   = 10    128.0.0.0 to 191.255.255.255       /16
  C     First three bits = 110   192.0.0.0 to 223.255.255.255       /24
  D     First four bits  = 1110  224.0.0.0 to 239.255.255.255       N/A
  E     First four bits  = 1111  240.0.0.0 to 255.255.255.255       N/A
  • Sieci klasy A mają domyślną maskę sieci 255.0.0.0( /8) i domyślną maskę hosta 0.255.255.255, co daje 16,777,216całkowitą liczbę adresów hosta na sieć.
  • Sieci klasy B mają domyślną maskę sieci 255.255.0.0( /16) i domyślną maskę hosta wynoszącą 0.0.255.255, co daje 65,536całkowitą liczbę adresów hosta na sieć.
  • Sieci klasy C mają domyślną maskę sieci 255.255.255.0( /24) i domyślną maskę hosta 0.0.0.255, co daje 256całkowitą liczbę adresów hosta na sieć.
  • Adresy klasy D są używane do multiemisji, przy czym każdy adres jest używany indywidualnie do reprezentowania grupy hostów, które subskrybują adres multiemisji. Oznacza to, że adresy klasy D zwykle nie mają pojęcia maski sieci.
  • Adresy klasy E są zastrzeżone i nie można ich używać do niczego. Jest jeden wyjątek od tego, a mianowicie adres Limited Broadcast 255.255.255.255, który jest indywidualnym adresem, który każdy host w sieci będzie traktował jako swój własny. Oznacza to, że wszystko, co 255.255.255.255zostanie wysłane, zostanie odebrane i przetworzone przez każdy host w sieci.

Ponieważ każda klasa ma domyślny rozmiar sieci, niektóre pytania zakładają domyślną maskę dla danego adresu, więc wszelkie obliczenia muszą być wykonane na podstawie domyślnej maski sieci. Dla naszego przykładowego adresu 198.51.100.223:

Binary: 11000110 00110011 01100100 11011111

Zauważ, że pierwsze trzy bity adresu to 110, co oznacza, że ​​jest to adres klasy C i przy braku jakiejkolwiek maski lub długości maski przyjmuje się, że maska ​​sieci to 255.255.255.0( /24), co tworzy adres sieciowy 198.51.100.0.


* Nie popełniaj powszechnego błędu, sądząc, że maska ​​sieci dyktuje klasę sieci, jest na odwrót. Na przykład wiele osób uważa każdą /24sieć za sieć klasy C, ale nie jest to nawet zdalne. Biorąc pod uwagę na przykład 10.11.12.0/24sieć, wiele osób błędnie nazywa to siecią klasy C z powodu maski sieci, mimo że pierwszy bit adresu to 0, co czyni ją siecią klasy A, chociaż z dłuższą maską sieci niż domyślna Maska sieci klasy A, co oznacza, że ​​jest to podsieć sieci klasy A, a nie sieci klasy C.

Ron Maupin
źródło
6

(Próbując zachować wszystkie odpowiedzi maski sieciowej w jednym miejscu, po innych doskonałych odpowiedziach, dodałem tę o metodzie wizualnej).

Rozmiary podsieci na podstawie liczby hostów

To jest częste pytanie „Jak pociąć podany rozmiar sieci na n kawałków, uwzględniając x 1 hostów w sieci 1, x 2 hostów w sieci 2 itd.?” można całkowicie rozwiązać, stosując metody opisane w innych doskonałych odpowiedziach.

Niektóre osoby mogą jednak chcieć bardziej wizualnej metody i ogólnych wskazówek.

Metoda wizualna „Glasscutter”

Sposób, w jaki często uczę tego wizualnego zrozumienia, polega na zastosowaniu następującej metody:

Najpierw wyobraź sobie gilotynę papierową taką:

Gilotyna do papieru przesuwnego

( Zdjęcie z Wikipedii: Nathan CC BY-SA 3.0)

Właściwości tego rodzaju noża polegają na tym, że tnie on tylko linie proste, zawsze tnie na całej długości papieru i tnie prostopadle do boku. Nasza szczególna gilotyna jest wybredna: tnie papier tylko na pół i nie możemy wykonać cięcia bliżej niż 1 cm od krawędzi.

  • Ile adresów jest dostępnych dla twojego bloku początkowego?
  • Załóżmy, że dzielenie a / 22 ma 1024 adresy
  • Zdobądź kawałek papieru o takiej liczbie centymetrów kwadratowych (i proporcji kwadratowej lub 2x1)
  • Dlatego otrzymuję kawałek o wymiarach 32 cm na 32 cm, który ma 1024 cm kwadratowych
  • Wielokrotnie
    1. Wybierz kawałek (jeśli jest więcej niż jeden)
    2. Przetnij go na pół (w ramach ograniczeń: tylko prostokątne cięcia, na pół, nic poniżej 1 cm)
  • Często istnieją różne cięcia, które możesz wykonać i musisz dokonać wyboru
  • Aby uzyskać n sieci, musisz wykonać cięcia n-1
  • Czasami dostajesz dodatkowe elementy (w zależności od tego, jak chcesz rozdzielić „odpady”)

Oto ilustracja tego procesu. Widzisz, że istnieje tylko jeden rodzaj cięcia przy cięciu 1 i cięciu 2, ale przy cięciu 3 dokonujemy wyboru: wytnij mały kawałek (czerwony) lub duży kawałek (niebieski), dając dwie różne możliwości.

mój własny rysunek

To, co często nazywa się problemem gilotyny , którego nauczyłem się jako problem „szklanego noża”, ponieważ szkło tekturowe naprawdę musi być przecinane na całej długości, a ten konkretny można nazwać „podwójnym nożem szklanym”, ponieważ zawsze tnie się na połówki.

Kiedy faktycznie robię to w prawdziwym życiu, mentalnie robię przekroje, patrząc na taką siatkę. Pamiętam, że / 26 musi zaczynać się od 0, .64, 128 lub .192; Mogę wiedzieć, że siódma linia dzierżawiona potrzebuje siódmej / 30 w najwyższym kwartale, ale nie będę pamiętać, że to .216.

Siatka może oczywiście służyć również do przedstawienia trzeciego oktetu, a każdy kwadrat reprezentuje a / 24. Teraz mówi, że a / 18 zaczyna się od .0, .64, .128 lub .192.

wprowadź opis zdjęcia tutaj

Ogólne wskazówki dotyczące techniki

Ogólna procedura to:

  • zaokrąglić w górę każdy wymagany rozmiar do najmniejszego bloku, który jest wystarczająco duży
  • upewnij się, że przestrzegasz globalnych zasad (często „maksymalizuj dostępne adresowanie”, czasem „pozwala podwójnie zwiększyć” lub „ułatwia routing”)
  • przydziel podsieci do adresów ZACZYNAJĄC NAJWIĘKSZYM i przechodząc do najmniejszych ( jest to część, o której zwykle zapominają powiedzieć )
  • przestrzegaj wszelkich szczegółowych zasad (pytania testowe często zawierają dodatkowe reguły, czasem tak aberracyjne jak „Żaden adres sieciowy nie może zawierać 7”)
  • sprawdź, czy jest miejsce na dorozumiane adresy (transmisje, routery)
  • jeśli jakakolwiek sieć jest mała (/ 30, / 31 lub / 32), zwróć szczególną uwagę, ponieważ istnieją przypadki brzegowe dla sieci z 4, 2 i 1 hostami, a szczegóły zależą od tego, jaki dokładnie problem rozwiązujesz
jonathanjo
źródło
5

Przykład:

IP: 128.42.5.4

Binarnie: 10000000 00101010 00000101 00000100

Podsieć: 255.255.248.0

Jak określić prefiks, numer sieci, podsieci i hosta?

      32768     16384  8192  4096  2048  1024   512   256  ----> Binary
        128       192   224   240   248   252   254   255  ----> Sunet Mask
        /17       /18   /19   /20   /21   /22   /23   /24  ----> CIDR  
      32766     16382  8190  3094  2046  1022   510   254  ----> Host


      128     64    32     16     8     4    2     1   ----> Binary
      128    192   224    240   248   252   254   255  ----> Sunet Mask
      /25    /26   /27    /28   /29   /30   /31   /32  ----> CIDR  
      126     62    30     14     6     2    *     -   ----> Host 

     128        64        32       16        8         4         2        1
  10000000   01000000  00100000 00010000  00001000  00000100  00000010   00000001

   Example 
   Network=192.168.1.0 /24;  
   Network Address with Subnet mask =  192.168.1.0 subnet 255.255.255.0 
   Ip address range 192.168.1.0----192.168.1.255
   Fist available ip address  192.168.1.1; 
   Last available ip address  192.168.1.254; 
   Broadcast address = 192.168.1.255;
   254 Host

   Network=192.168.1.0 /25;
   Network Address with Subnet mask =  192.168.1.0 subnet 255.255.255.128
   Ip address range 192.168.1.0----192.168.1.128
   Fist available ip address  192.168.1.1; 
   Last available ip address  192.168.1.126;
   Broadcast address = 192.168.1.127;  
   126 Hosts

   When the CIDR increased ex. /24. /25.  the network will divided by the 
   binary number.
   /25  increase network   0-128| 128- 256 |                   you will have 2 Networks 
   /26  increase network   0-64 | 64 - 128 | 128-192 | 192-256 you will have 4 Networks 
    .
    .
    .
   /32......
bkpxfdifo
źródło