Jak działa podsieć IPv4?


439

To jest pytanie kanoniczne dotyczące podsieci IPv4.

Związane z:

Jak działa podsieci i jak to zrobić ręcznie lub w głowie? Czy ktoś może wyjaśnić zarówno koncepcyjnie, jak i kilkoma przykładami? Usterka serwera dostaje wiele pytań dotyczących pracy domowej z podsieci, więc możemy użyć odpowiedzi, aby wskazać je na samej usterce serwera.

  • Jeśli mam sieć, jak wymyślić, jak ją podzielić?
  • Jeśli dostanę maskę sieci, to skąd mam wiedzieć, jaki jest zasięg sieci?
  • Czasami występuje ukośnik, a po nim cyfra, co to za liczba?
  • Czasami jest maska ​​podsieci, ale także maska ​​z symbolami wieloznacznymi. Wyglądają tak samo, ale różnią się?
  • Ktoś wspomniał coś o znajomości binarnego?

Ta dwuczęściowa odpowiedź wyjaśnia wszystko, co chciałeś wiedzieć o obliczaniu adresu IPv4 i wiele więcej.
Ron Maupin,

Odpowiedzi:


648

Istnieją podsieci IP, które pozwalają routerom wybrać odpowiednie miejsca docelowe dla pakietów. Za pomocą podsieci IP można rozbijać większe sieci z przyczyn logicznych (zapora ogniowa itp.) Lub ze względów fizycznych (mniejsze domeny rozgłoszeniowe itp.).

Mówiąc najprościej, routery IP używają podsieci IP do podejmowania decyzji o routingu. Dowiedz się, jak działają te decyzje, i dowiedz się, jak planować podsieci IP.

Licząc do 1

Jeśli biegle posługujesz się notacją binarną (podstawa 2), możesz pominąć tę sekcję.

Dla tych z was, którzy zostali: wstydźcie się, że nie mówicie płynnie w notacji binarnej!

Tak, to może być trochę trudne. Naprawdę, bardzo łatwo jest nauczyć się liczyć w systemie binarnym i nauczyć się skrótów do konwersji binarnej na dziesiętną i wstecz. Naprawdę powinieneś wiedzieć, jak to zrobić.

Liczenie w systemie binarnym jest tak proste, ponieważ musisz tylko wiedzieć, jak liczyć do 1!

Pomyśl o „drogomierzu” samochodu, z tą różnicą, że w przeciwieństwie do tradycyjnego licznika kilometrów każda cyfra może liczyć tylko do 1 od zera. Gdy samochód jest fabrycznie świeży, licznik kilometrów pokazuje „00000000”.

Po przejechaniu pierwszej mili licznik kilometrów pokazuje „00000001”. Na razie w porządku.

Po przejechaniu drugiej mili pierwsza cyfra licznika zmienia się na „0” (ponieważ jego maksymalna wartość to „1”), a druga cyfra licznika zmienia się na „1”, co powoduje, że licznik kilometrów pokazuje „ 00000010 ”. Wygląda to jak liczba 10 w zapisie dziesiętnym, ale w rzeczywistości jest to 2 (liczba przejechanych przez ciebie samochodów do tej pory) w zapisie binarnym.

Po przejechaniu trzeciej mili licznik kilometrów pokazuje „00000011”, ponieważ pierwsza cyfra licznika zmienia się ponownie. Liczba „11” w zapisie binarnym jest taka sama jak liczba dziesiętna 3.

W końcu, kiedy przejechałeś czwartą milę, obie cyfry (które na końcu trzeciej mili czytały „1”) przechodzą z powrotem do pozycji zerowej, a trzecia cyfra zjeżdża do pozycji „1”, dając nam „ 00000100 ”. To binarna reprezentacja liczby dziesiętnej 4.

Możesz zapamiętać to wszystko, jeśli chcesz, ale naprawdę musisz tylko zrozumieć, jak mały licznik „przewraca się”, gdy liczba, którą liczy, staje się większa. Jest to dokładnie to samo, co tradycyjna operacja dziesiętnego licznika kilometrów, z tą różnicą, że każda cyfra może być tylko „0” lub „1” na naszym fikcyjnym „liczniku binarnym”.

Aby przekonwertować liczbę dziesiętną na dwójkową, możesz przesunąć licznik kilometrów do przodu, tykać po tyknięciu, licząc na głos, aż rzucisz liczbę razy równą liczbie dziesiętnej, którą chcesz przekonwertować na dwójkową. Cokolwiek zostanie wyświetlone na liczniku, po tym całym wykreśleniu i przewróceniu, będzie binarną reprezentacją liczby dziesiętnej, którą policzyłeś.

Ponieważ rozumiesz, w jaki sposób licznik potoczy się do przodu, zrozumiesz również, jak potoczy się on do tyłu. Aby przekonwertować liczbę binarną wyświetlaną na liczniku z powrotem na liczbę dziesiętną, można cofać licznik z powrotem o jeden tik na raz, odliczając głośno, aż licznik wyświetli „00000000”. Po zakończeniu liczenia i zwijania ostatnią wypowiedzianą na głos liczbą będzie dziesiętna reprezentacja liczby binarnej, od której licznik zaczyna się.

Konwersja wartości między binarną i dziesiętną w ten sposób byłaby bardzo uciążliwa. Możesz to zrobić, ale nie byłoby to zbyt wydajne. Łatwiej jest nauczyć się małego algorytmu, aby zrobić to szybciej.

Krótko na bok: każda cyfra w liczbie binarnej jest znana jako „bit”. To jest „b” z „binarnego” i „to” z „cyfry”. Bit jest cyfrą binarną.

Konwersja liczby binarnej, na przykład „1101011” na dziesiętną, jest prostym procesem z przydatnym małym algorytmem.

Zacznij od zliczenia liczby bitów w liczbie binarnej. W tym przypadku jest 7. Wykonaj 7 podziałów na kartce papieru (w twoim umyśle, w pliku tekstowym itp.) I zacznij wypełniać je od prawej do lewej. W prawym polu wpisz cyfrę „1”, ponieważ zawsze zaczynamy od „1”. W następnym polu po lewej stronie wprowadź podwójną wartość w polu po prawej stronie (więc „2” w następnym, „4” w następnym) i kontynuuj, aż wszystkie miejsca będą pełne. (W końcu będziesz zapamiętywał te liczby, które są potęgami 2, ponieważ robisz to coraz bardziej. W porządku do 131072 w mojej głowie, ale zwykle potrzebuję potem kalkulatora lub papieru).

Tak więc powinieneś mieć następujące dokumenty na papierze w swoich małych gniazdach.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

Transkrybuj bity z liczby binarnej pod gniazdami w następujący sposób:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

Teraz dodaj kilka symboli i oblicz odpowiedź na problem:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

Robiąc całą matematykę, powinieneś wymyślić:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

Mam to. „1101011” w systemie dziesiętnym to 107. To tylko proste kroki i prosta matematyka.

Konwersja dziesiętnej na binarną jest równie łatwa i jest tym samym podstawowym algorytmem, działającym w odwrotnej kolejności.

Powiedzmy, że chcemy przekonwertować liczbę 218 na binarną. Zaczynając po prawej stronie kartki papieru, napisz cyfrę „1”. Po lewej stronie podwoj tę wartość (czyli „2”) i kontynuuj przesuwanie w kierunku lewej strony papieru, podwajając ostatnią wartość. Jeśli liczba, którą zamierzasz zapisać, jest większa niż konwertowana liczba, przestań pisać. w przeciwnym razie nadal podwajaj poprzedni numer i pisz. (Konwersja dużej liczby, np. 34 157 216 092, na binarną przy użyciu tego algorytmu może być nieco uciążliwa, ale z pewnością jest możliwa).

Powinieneś więc mieć na papierze:

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

Przestałeś pisać liczby na 128, ponieważ podwojenie 128, co dałoby 256, byłoby większe niż liczba, która jest konwertowana (218).

Zaczynając od lewej cyfry, napisz „218” nad nią (128) i zadaj sobie pytanie: „Czy 218 jest większe lub równe 128?” Jeśli odpowiedź brzmi „tak”, podrap „1” poniżej „128”. Powyżej „64” wpisz wynik 218 minus 128 (90).

Patrząc na „64”, zadaj sobie pytanie: „Czy 90 jest większe lub równe 64?” Jest tak, więc zapisujesz „1” poniżej „64”, a następnie odejmujesz 64 od 90 i piszesz powyżej „32” (26).

Gdy dojdziesz do „32”, zauważysz, że 32 nie jest większe lub równe 26. W tym przypadku wpisz „0” poniżej „32”, skopiuj liczbę (26) z powyżej 32 „na powyżej” 16 ", a następnie zadaj sobie to samo pytanie z resztą liczb.

Kiedy skończysz, powinieneś mieć:

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

Liczby na górze to tylko nuty używane w obliczeniach i niewiele dla nas znaczą. Na dole natomiast widać liczbę binarną „11011010”. Z pewnością 218, przekonwertowany na binarny, to „11011010”.

Postępując zgodnie z tymi bardzo prostymi procedurami, możesz przekonwertować dane binarne na dziesiętne i ponownie bez kalkulatora. Matematyka jest bardzo prosta, a zasady można zapamiętać przy odrobinie praktyki.

Rozdzielanie adresów

Pomyśl o routingu IP jak o dostarczaniu pizzy.

Kiedy zostaniesz poproszony o dostarczenie pizzy na „Main Street 123”, dla ciebie, jako człowieka, jest bardzo jasne, że chcesz iść do budynku o numerze „123” na ulicy o nazwie „Main Street”. Łatwo jest wiedzieć, że musisz przejść do 100-bloku Main Street, ponieważ liczba budynków wynosi od 100 do 199, a większość bloków miejskich jest liczona w setkach. „Po prostu wiesz”, jak podzielić adres.

Routery dostarczają paczki, a nie pizzę. Ich praca jest taka sama jak kierowcy pizzy: aby ładunek (paczki) był jak najbliżej miejsca docelowego. Router jest podłączony do dwóch lub więcej podsieci IP (aby były w ogóle przydatne). Router musi zbadać docelowe adresy IP pakietów i podzielić te adresy docelowe na składniki „nazwy ulicy” i „numeru budynku”, podobnie jak sterownik pizzy, aby podjąć decyzję o dostawie.

Każdy komputer (lub „host”) w sieci IP jest skonfigurowany z unikalnym adresem IP i maską podsieci. Ten adres IP można podzielić na „numer budynku” (np. „123” w powyższym przykładzie) o nazwie „identyfikator hosta” i „nazwę ulicy” (np. „Main Street” w powyższym przykładzie) o nazwie "adres identyfikacyjny sieci". Dla naszych ludzkich oczu łatwiej jest zobaczyć numer budynku i nazwę ulicy w „123 Main Street”, ale trudniej jest zobaczyć ten podział w „10.13.216.41 z maską podsieci 255.255.192.0”.

Routery IP „po prostu wiedzą”, jak podzielić adresy IP na te części składowe, aby podjąć decyzję o routingu. Ponieważ zrozumienie, w jaki sposób pakiety IP są kierowane, zależy od zrozumienia tego procesu, musimy również wiedzieć, jak rozbić adresy IP. Na szczęście wyodrębnienie identyfikatora hosta i identyfikatora sieci z adresu IP i maski podsieci jest w rzeczywistości dość łatwe.

Zacznij od zapisania adresu IP w formacie binarnym (użyj kalkulatora, jeśli jeszcze nie nauczyłeś się tego robić w głowie, ale zanotuj, jak to zrobić - to naprawdę, bardzo łatwe i robi wrażenie na płci przeciwnej w imprezy):

      10.      13.     216.      41
00001010.00001101.11011000.00101001

Wypisz również maskę podsieci binarnie:

     255.     255.     192.       0
11111111.11111111.11000000.00000000

Napisane obok siebie, widać, że punkt w masce podsieci, w którym „stop” „1” wyrównuje się do punktu w adresie IP. To jest punkt, w którym ID sieci i ID hosta dzielą się. Więc w tym przypadku:

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

Routery używają maski podsieci, aby „zamaskować” bity objęte 1 w adresie IP (zamieniając bity, które nie są „zamaskowane” na 0), aby wyodrębnić identyfikator sieci:

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

Podobnie, używając maski podsieci do „maskowania” bitów pokrytych zerami w adresie IP (zastępując bity, które nie są „maskowane” na 0), router może wyodrębnić identyfikator hosta:

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

Dla naszych ludzkich oczu nie jest tak łatwo dostrzec „przerwę” między identyfikatorem sieci a identyfikatorem hosta, jak między „numerem budynku” a „nazwą ulicy” w adresach fizycznych podczas dostawy pizzy, ale ostatecznym efektem jest podobnie.

Teraz, gdy możesz podzielić adresy IP i maski podsieci na identyfikatory hosta i identyfikatory sieci, możesz trasować adresy IP tak jak router.

Więcej terminologii

Zobaczysz maski podsieci napisane w całym Internecie i w pozostałej części tej odpowiedzi jako (adres IP / numer). Notacja ta znana jest jako notacja „Classless Inter-Domain Routing” (CIDR). „255.255.255.0” składa się z 24 bitów 1 na początku i szybsze jest zapisywanie go jako „/ 24” niż jako „255.255.255.0”. Aby przekonwertować liczbę CIDR (np. „/ 16”) na maskę podsieci z kropkami dziesiętnymi, po prostu wypisz tę liczbę 1, podziel ją na grupy 8 bitów i przekonwertuj na dziesiętne. (Na przykład „A / 16” to „255.255.0.0”).

W „dawnych czasach” maski podsieci nie były określane, ale zostały wyprowadzone na podstawie określonych bitów adresu IP. Na przykład adres IP zaczynający się od 0 do 127 miał domyślną maskę podsieci 255.0.0.0 (zwaną adresem IP „klasy A”).

Te domniemane maski podsieci nie są dziś używane i nie polecam ich więcej, chyba że masz nieszczęście z bardzo starym sprzętem lub starymi protokołami (jak RIPv1), które nie obsługują bezklasowego adresowania IP. Nie będę więcej wspominał o tych „klasach” adresów, ponieważ dzisiaj nie ma to zastosowania i może być mylące.

Niektóre urządzenia używają notacji zwanej „maskami wieloznacznymi”. „Maska ze znakiem wieloznacznym” jest niczym więcej niż maską podsieci ze wszystkimi zerami, w których byłyby 1, i 1, w których byłyby 0. „Maska wieloznaczna” w a / 26 to:

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

Zazwyczaj widać „maski wieloznaczne” używane do dopasowania identyfikatorów hostów na listach kontroli dostępu lub regułach zapory. Nie będziemy ich tutaj więcej omawiać.

Jak działa router

Jak powiedziałem wcześniej, routery IP mają podobną pracę jak kierowca pizzy, ponieważ muszą dostarczyć swój ładunek (paczki) do miejsca przeznaczenia. Po przedstawieniu pakietu związanego z adresem 192.168.10.2 router IP musi określić, który z interfejsów sieciowych najlepiej zbliży ten pakiet do miejsca docelowego.

Powiedzmy, że jesteś routerem IP i masz podłączone interfejsy ponumerowane:

  • Ethernet0 - 192.168.20.1, maska ​​podsieci / 24
  • Ethernet1 - 192.168.10.1, maska ​​podsieci / 24

Jeśli otrzymasz pakiet do dostarczenia z adresem docelowym „192.168.10.2”, dość łatwo jest powiedzieć (ludzkimi oczami), że pakiet powinien zostać wysłany przez interfejs Ethernet1, ponieważ adres interfejsu Ethernet1 odpowiada adresowi docelowemu pakietu adres. Wszystkie komputery podłączone do interfejsu Ethernet1 będą miały adresy IP zaczynające się od „192.168.10.”, Ponieważ identyfikator sieciowy adresu IP przypisanego do interfejsu Ethernet1 to „192.168.10.0”.

W przypadku routera proces wyboru trasy odbywa się przez zbudowanie tablicy routingu i sprawdzenie tabeli za każdym razem, gdy pakiet ma być dostarczony. Tabela routingu zawiera identyfikator sieci i nazwy interfejsów docelowych. Wiesz już, jak uzyskać identyfikator sieci z adresu IP i maski podsieci, więc jesteś na najlepszej drodze do zbudowania tablicy routingu. Oto nasza tabela routingu dla tego routera:

  • Identyfikator sieci: 192.168.20.0 (11000000.10101000.00010100.00000000) - 24-bitowa maska ​​podsieci - Interfejs Ethernet0
  • Identyfikator sieci: 192.168.10.0 (11000000.10101000.00001010.00000000) - 24-bitowa maska ​​podsieci - Interfejs Ethernet1

W przypadku naszego pakietu przychodzącego powiązanego z „192.168.10.2” potrzebujemy tylko przekonwertować adres tego pakietu na binarny (jako ludzie - router na początku pobiera go jako plik binarny) i spróbować dopasować go do każdego adresu w naszym routingu tabela (do liczby bitów w masce podsieci), dopóki nie dopasujemy wpisu.

  • Miejsce docelowe pakietu przychodzącego: 11000000.10101000.00001010.00000010

Porównując to do wpisów w naszej tabeli routingu:

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

Wpis dla Ethernet0 pasuje do pierwszych 19 bitów w porządku, ale potem przestaje pasować. Oznacza to, że nie jest to właściwy interfejs docelowy. Widać, że interfejs Ethernet1 odpowiada 24 bitom adresu docelowego. Ach, ha! Pakiet jest powiązany z interfejsem Ethernet1.

W prawdziwym routerze tabela routingu jest sortowana w taki sposób, że najdłuższe maski podsieci są najpierw sprawdzane pod kątem zgodności (tj. Najbardziej specyficznych tras) i numerycznie, aby po znalezieniu dopasowania pakiet mógł zostać trasowany i żadne dalsze próby dopasowania nie są konieczne (co oznacza, że ​​192.168.10.0 byłby wymieniony jako pierwszy, a 192.168.20.0 nigdy nie zostałby sprawdzony). Tutaj trochę to upraszczamy. Fantazyjne struktury danych i algorytmy tworzą szybsze routery IP, ale proste algorytmy przyniosą takie same wyniki.

Trasy statyczne

Do tego momentu mówiliśmy o naszym hipotetycznym routerze jako o bezpośrednio połączonych sieciach. Oczywiście tak nie działa świat. W analogii do pizzy czasami kierowca nie wpuszcza się dalej do budynku niż w recepcji i musi przekazać pizzę komuś innemu w celu dostarczenia jej do ostatecznego odbiorcy (zawiesić swoje niedowierzanie i znieść ze mną, póki Rozciągam moją analogię, proszę).

Zacznijmy od wywołania naszego routera z wcześniejszych przykładów „Router A”. Znasz już tabelę routingu RouterA jako:

  • Identyfikator sieci: 192.168.20.0 (11000000.10101000.00010100.00000000) - maska ​​podsieci / 24 - Interfejs routera A-Ethernet0
  • Identyfikator sieci: 192.168.10.0 (11000000.10101000.00001010.00000000) - maska ​​podsieci / 24 - Interfejs routera A-Ethernet1

Załóżmy, że istnieje inny router, „Router B”, z adresami IP 192.168.10.254/24 i 192.168.30.1/24 przypisanymi do interfejsów Ethernet0 i Ethernet1. Ma następującą tabelę routingu:

  • Identyfikator sieci: 192.168.10.0 (11000000.10101000.00001010.00000000) - maska ​​podsieci / 24 - Interfejs Router B-Ethernet0
  • Identyfikator sieci: 192.168.30.0 (11000000.10101000.00011110.00000000) - maska ​​podsieci / 24 - Interfejs Router B-Ethernet1

W ładnej sztuce ASCII sieć wygląda następująco:

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

Widać, że router B wie, jak „dostać się” do sieci 192.168.30.0/24, o której router A nic nie wie.

Załóżmy, że komputer z adresem IP 192.168.20.13 podłączony do sieci podłączonej do interfejsu Ethernet0 routera A wysyła pakiet do routera A w celu dostarczenia. Nasz hipotetyczny pakiet jest przeznaczony na adres IP 192.168.30.46, który jest urządzeniem podłączonym do sieci podłączonej do interfejsu Ethernet1 routera B.

W powyższej tabeli routingu żaden wpis w tabeli routingu A routera nie jest zgodny z miejscem docelowym 192.168.30.46, więc router A zwróci pakiet do wysyłającego komputera z komunikatem „Sieć docelowa nieosiągalna”.

Aby router był „świadomy” istnienia sieci 192.168.30.0/24, dodajemy następujący wpis do tabeli routingu na routerze A:

  • Identyfikator sieci: 192.168.30.0 (11000000.10101000.00011110.00000000) - maska ​​podsieci / 24 - Dostępne przez 192.168.10.254

W ten sposób router A ma pozycję tablicy routingu pasującą do adresu 192.168.30.46 naszego przykładowego pakietu. Ten wpis w tablicy routingu skutecznie mówi: „Jeśli otrzymujesz pakiet związany z 192.168.30.0/24, wyślij go na adres 192.168.10.254, ponieważ on wie, jak sobie z tym poradzić”. Jest to analogiczna akcja „przekazanie pizzy w recepcji”, o której wspominałem wcześniej - przekazanie pakietu komuś innemu, kto wie, jak zbliżyć go do celu.

Ręczne dodanie pozycji do tabeli routingu jest znane jako dodanie „trasy statycznej”.

Jeśli router B chce dostarczać pakiety do sieci podsieci 192.168.20.0 255.255.255.0, będzie również potrzebował wpisu w swojej tabeli routingu:

  • Identyfikator sieci: 192.168.20.0 (11000000.10101000.00010100.00000000) - maska ​​podsieci / 24 - Dostępne przez: 192.168.10.1 (adres IP routera A w sieci 192.168.10.0)

Stworzyłoby to ścieżkę dostarczania między siecią 192.168.30.0/24 a siecią 192.168.20.0/24 w sieci 192.168.10.0/24 między tymi routerami.

Zawsze chcesz mieć pewność, że routery po obu stronach takiej „sieci śródmiąższowej” mają pozycję tablicy routingu dla sieci „odległej”. Jeśli ruter B w naszym przykładzie nie ma wpisu w tabeli routingu dla „far end” sieci 192.168.20.0/24 dołączonej do routera A nasz hipotetyczny pakiet z komputera na 192.168.20.13 by dostać się do urządzenia docelowego na 192.168.30.46, ale każda odpowiedź, którą 192.168.30.46 próbowała odesłać, zostanie zwrócona przez router B jako „Sieć docelowa nieosiągalna”. Komunikacja jednokierunkowa jest na ogół niepożądana. Zawsze myśl o ruchu płynącym w obu kierunkach, gdy myślisz o komunikacji w sieciach komputerowych.

Możesz uzyskać duży przebieg ze statycznych tras. Dynamiczne protokoły routingu, takie jak EIGRP, RIP itp., Są tak naprawdę niczym więcej niż sposobem dla routerów na wymianę informacji o routingu między sobą, które w rzeczywistości można skonfigurować za pomocą tras statycznych. Jedną dużą zaletą korzystania z dynamicznych protokołów routingu zamiast tras statycznych jest to, że dynamiczne protokoły routingu mogą dynamicznie zmieniać tabelę routingu w zależności od warunków sieciowych (wykorzystanie przepustowości, „zejście” interfejsu itp.) I, jako takie, za pomocą dynamicznego protokół routingu może spowodować konfigurację, która „trasuje” awarie lub wąskie gardła w infrastrukturze sieci. (Protokoły routingu dynamicznego są jednak DROGĄ poza zakresem tej odpowiedzi.)

Nie możesz się stąd dostać

W przypadku naszego przykładowego routera A, co się stanie, gdy pojawi się pakiet powiązany z „172.16.31.92”?

Patrząc na tablicę routingu routera A, ani docelowy interfejs, ani statyczna trasa nie pasują do pierwszych 24 bitów 172.18.31.92 (czyli 10101100.00010000.00011111.01011100, BTW).

Jak już wiemy, router A zwróci pakiet do nadawcy za pomocą komunikatu „Sieć docelowa nieosiągalna”.

Powiedz, że pod adresem „192.168.20.254” jest inny router (Router C). Router C ma połączenie z Internetem!

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

Byłoby miło, gdyby Router A mógł kierować pakiety, które nie pasują do żadnego lokalnego interfejsu do Routera C, tak aby Router C mógł wysłać je do Internetu. Wprowadź trasę „domyślnej bramy”.

Dodaj wpis na końcu naszej tabeli routingu w następujący sposób:

  • Identyfikator sieci: 0.0.0.0 (00000000.00000000.00000000.00000000) - maska ​​podsieci / 0 - Router docelowy: 192.168.20.254

Kiedy próbujemy dopasować „172.16.31.92” do każdego wpisu w tabeli routingu, w końcu trafiamy na ten nowy wpis. Na początku to trochę kłopotliwe. Chcemy dopasować zero bitów adresu docelowego do ... poczekaj ... co? Dopasowujesz zero bitów? Więc w ogóle nie szukamy dopasowania. Ten wpis w tablicy routingu mówi w zasadzie: „Jeśli się tu dostaniesz, zamiast rezygnować z dostawy, wyślij pakiet do routera o numerze 192.168.20.254 i pozwól mu się tym zająć”.

192.168.20.254 jest miejscem my NIE wie jak dostarczyć paczkę do. Po skonfrontowaniu z pakietem powiązanym z miejscem docelowym, dla którego nie mamy określonego wpisu w tablicy routingu, ten wpis „domyślnej bramy” zawsze będzie pasował (ponieważ dopasowuje zero bitów adresu docelowego) i daje nam miejsce „w ostateczności”, które możemy wysłać paczki do dostarczenia. Czasami usłyszysz domyślną bramę zwaną „bramą ostateczności”.

Aby domyślna trasa bramy była skuteczna, musi odnosić się do routera, który jest osiągalny przy użyciu innych wpisów w tabeli routingu. Jeśli na przykład próbujesz określić domyślną bramę 192.168.50.254 w routerze A, dostarczenie do takiej domyślnej bramy nie powiedzie się. 192.168.50.254 nie jest adresem, który Router A wie, jak dostarczyć pakiety do korzystania z innych tras w swojej tabeli routingu, więc taki adres byłby nieskuteczny jako brama domyślna. Można to stwierdzić zwięźle: Domyślna brama musi być ustawiona na adres, który jest już osiągalny przy użyciu innej trasy w tabeli routingu.

Prawdziwe routery zazwyczaj przechowują domyślną bramę jako ostatnią trasę w tabeli routingu, tak aby pasowała ona do pakietów po tym, jak nie dopasowały wszystkich innych pozycji w tabeli.

Urbanistyka i routing IP

Podział podsieci IP na mniejsze podsieci IP jest podobny do planowania urbanistycznego. W planowaniu urbanistycznym podział na strefy stosuje się w celu dostosowania do naturalnych cech krajobrazu (rzek, jezior itp.), Aby wpłynąć na przepływy ruchu między różnymi częściami miasta i segregować różne rodzaje użytkowania gruntów (przemysłowe, mieszkaniowe itp.) . Podsieci IP są w zasadzie takie same.

Istnieją trzy główne powody, dla których chcesz podsieć sieć:

  • Możesz komunikować się za pośrednictwem różnych środków komunikacji. Jeśli masz połączenie WAN T1 między dwoma budynkami, routery IP można umieścić na końcach tych połączeń, aby ułatwić komunikację przez T1. Sieci na każdym końcu (i być może „sieć śródmiąższowa” na samym T1) byłyby przypisane do unikalnych podsieci IP, aby routery mogły podejmować decyzje o tym, który ruch powinien być przesyłany przez linię T1.

  • W sieci Ethernet możesz użyć podsieci, aby ograniczyć ilość ruchu rozgłoszeniowego w danej części sieci. Protokoły warstwy aplikacji wykorzystują możliwości rozgłaszania Ethernet do bardzo użytecznych celów. Ponieważ coraz więcej hostów jest pakowanych w tę samą sieć Ethernet, procent ruchu rozgłoszeniowego w sieci przewodowej (lub lotniczej w bezprzewodowej sieci Ethernet) może wzrosnąć do takiego poziomu, że może powodować problemy z dostarczaniem ruchu nierozgłoszeniowego. (W dawnych czasach ruch rozgłoszeniowy mógł przytłoczyć procesor hostów, zmuszając ich do zbadania każdego pakietu rozgłoszeniowego. Jest to dziś mniej prawdopodobne.) Nadmierny ruch w przełączanym Ethernecie może również przybrać formę „zalewania ramek do nieznanych miejsc docelowych”. Jest to spowodowane tym, że przełącznik Ethernet nie jest w stanie śledzić każdego miejsca docelowego w sieci i jest przyczyną, dla której przełączane sieci Ethernet nie mogą skalować się do nieskończonej liczby hostów. Skutek zalania ramek do nieznanych miejsc docelowych jest podobny do efektu nadmiernego ruchu rozgłoszeniowego do celów podsieci.

  • Możesz „nadzorować” rodzaje ruchu przepływającego między różnymi grupami hostów. Być może masz urządzenia serwera druku i chcesz, aby tylko autoryzowane komputery serwera kolejkowania wydruku wysyłały do ​​nich zadania. Ograniczając ruch, który może przepływać do podsieci urządzenia serwera druku, użytkownicy nie mogą skonfigurować swoich komputerów PC, aby komunikowały się bezpośrednio z urządzeniami serwera druku w celu ominięcia rozliczania drukowania. Możesz umieścić urządzenia serwera druku w podsieci i stworzyć regułę w routerze lub zaporze sieciowej podłączonej do tej podsieci, aby kontrolować listę hostów, które mogą wysyłać ruch do urządzeń serwera druku. (Zarówno routery, jak i zapory ogniowe zazwyczaj mogą podejmować decyzje o tym, w jaki sposób lub czy dostarczyć pakiet na podstawie adresu źródłowego i docelowego pakietu. Zapory ogniowe są zazwyczaj podgatunkiem routera o obsesyjnej osobowości. Mogą być bardzo, bardzo zaniepokojeni ładunkiem pakietów, podczas gdy routery zwykle ignorują ładunki i po prostu dostarczają pakiety.)

Planując miasto, możesz zaplanować, w jaki sposób ulice się przecinają, i użyć ulic tylko zakrętowych, jednokierunkowych i ślepych ulic, aby wpłynąć na ruch uliczny. Możesz chcieć, aby Main Street miała 30 bloków, z których każdy zawiera do 99 budynków. Bardzo łatwo jest zaplanować numerację ulic, tak aby każdy blok na Main Street miał zakres numerów ulic rosnących o 100 dla każdego bloku. Bardzo łatwo jest ustalić, jaka powinna być „liczba początkowa” w każdym kolejnym bloku.

Planując podsieci IP, zależy ci na zbudowaniu odpowiedniej liczby podsieci (ulic) z odpowiednią liczbą dostępnych identyfikatorów hosta (numerów budynków) i użyciu routerów do łączenia ze sobą podsieci (skrzyżowania). Reguły dotyczące dozwolonych adresów źródłowych i docelowych określonych w routerach mogą dodatkowo kontrolować przepływ ruchu. Zapory ogniowe mogą działać jak obsesyjni policjanci.

Na potrzeby tej odpowiedzi głównym problemem jest budowanie naszych podsieci. Zamiast pracy dziesiętnej, podobnie jak w przypadku planowania urbanistycznego, pracujesz w trybie binarnym, aby opisać granice każdej podsieci.

Ciąg dalszy: Jak działa podsieć IPv4?

(Tak ... osiągnęliśmy maksymalny rozmiar odpowiedzi (30000 znaków).)


13
@Joseph: To wykład, który wygłaszałem zbyt wiele razy dla własnego dobra. > uśmiech <Spojrzę na twoją sekcję binarną. Nie lubię uczyć matematyki (tak naprawdę rozumienie binarne - liczenie w bazie 2), ponieważ nie jestem w tym zbyt dobry.
Evan Anderson,

2
Moim jedynym problemem związanym z przełamaniem odpowiedzi jest to, że trzeba zrozumieć, dlaczego istnieje podsieć (routing IP), zanim będzie można zrozumieć, jak skutecznie rozbić sieć IP na podsieci. Nigdy nie znalazłem dobrego sposobu na omówienie jednego tematu w oderwaniu od drugiego. (Naprawdę, projektowanie sieci IP za pomocą VLSM przychodzi naturalnie i „ma sens” po zrozumieniu routingu IP ...)
Evan Anderson

28
Nie rozbij tego.
Joseph Kern

3
+1 za najbardziej kompleksowy post, jaki kiedykolwiek widziałem na
Scott Lundberg,

3
Pozytywne, jeśli tylko metafora licznika przebiegu. Teraz wiem, jak wyjaśnić ludziom działanie binarne.
fuzion

142

Ciąg dalszy od: Jak działa podsieć IPv4?

Twój dostawca internetu podaje zakres ID sieci 192.168.40.0/24 (11000000.10101000.00101000.00000000). Wiesz, że chcesz użyć zapory / routera, aby ograniczyć komunikację między różnymi częściami sieci (serwery, komputery klienckie, sprzęt sieciowy) i jako taki, chcesz rozbić te różne części sieci do podsieci IP (między którymi zapora / router może następnie kierować).

Ty masz:

  • 12 serwerów, ale możesz uzyskać nawet o 50% więcej
  • 9 przełączników
  • 97 komputerów klienckich, ale możesz uzyskać więcej

Jaki jest dobry sposób na rozbicie 192.168.40.0/24 na te kawałki?

Myśląc w parzystych potęgach dwóch i pracując z większą liczbą możliwych urządzeń, możesz wymyślić:

  • 18 serwerów - Kolejna największa potęga dwóch to 32
  • 9 przełączników - Następna największa moc dwóch to 16
  • 97 komputerów klienckich - Następna największa potęga dwóch to 128

W danej podsieci IP są zarezerwowane dwa adresy, których nie można użyć jako prawidłowych adresów IP urządzenia - adres ze wszystkimi zerami w części identyfikatora hosta i adres ze wszystkimi zerami w części identyfikatora hosta. W związku z tym dla dowolnej podsieci IP liczba dostępnych adresów hosta wynosi dwa do potęgi liczby 32 minus liczba bitów w masce podsieci, minus 2. Tak więc, w przypadku 192.168.40.0/24 widać, że maska ​​podsieci ma 24 bity. To pozostawia 8 bitów dostępnych dla identyfikatorów hosta. Wiemy, że 2 do 8 potęgi to 256 - co oznacza, że ​​256 możliwych kombinacji bitów pasuje do szczeliny o szerokości 8 bitów. Ponieważ kombinacje „11111111” i „00000000” tych 8 bitów nie są dozwolone dla identyfikatorów hostów, pozostawia nam to 254 możliwych hostów, które można przypisać w sieci 192.168.40.0/24.

Z tych 254 hostów wygląda na to, że możemy zmieścić komputery klienckie, przełączniki i komputery serwerów w tej przestrzeni, prawda? Spróbujmy.

Masz 8 bitów maski podsieci do „zabawy” (pozostałe 8 bitów adresu IP 192.168.40.0/24 nie jest objętych maską podsieci podaną przez twojego dostawcę usług internetowych). Musimy znaleźć sposób na wykorzystanie tych 8 bitów do stworzenia szeregu unikalnych identyfikatorów sieciowych, które mogą pomieścić powyższe urządzenia.

Zacznij od największej sieci - komputerów klienckich. Wiesz, że następna większa moc dwóch z liczby możliwych urządzeń to 128. Liczba 128, w systemie dwójkowym, to „10000000”. Na szczęście dla nas, że mieści się w 8-bitowym gnieździe, które mamy za darmo (jeśli nie, oznaczałoby to, że nasza początkowa podsieć jest zbyt mała, aby pomieścić wszystkie nasze urządzenia).

Weźmy nasz identyfikator sieci, podany przez naszego dostawcę usług internetowych, i dodajmy do niego jeden bit maski podsieci, dzieląc go na dwie sieci:

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

Spójrz na to, aż będzie to miało sens. Zwiększyliśmy maskę podsieci o jeden bit, powodując, że identyfikator sieci pokrywa jeden bit, który byłby użyty jako identyfikator hosta. Ponieważ ten bit może mieć wartość zero lub jeden, skutecznie podzieliliśmy naszą sieć 192.168.40.0 na dwie sieci. Pierwszy prawidłowy adres IP w sieci 192.168.40.0/25 będzie pierwszym identyfikatorem hosta z „1” w najbardziej prawym bicie:

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid host in the 192.168.40.0/25 network

Pierwszy prawidłowy host w sieci 192.168.40.128 będzie również pierwszym identyfikatorem hosta z „1” w najbardziej prawym bicie:

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/25 network

Ostatnim prawidłowym hostem w każdej sieci będzie identyfikator hosta z każdym bitem, z wyjątkiem najbardziej prawego bitu ustawionego na „1”:

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.128/25 network

W ten sposób stworzyliśmy sieć wystarczająco dużą, aby pomieścić nasze komputery klienckie, i drugą sieć, dzięki której możemy zastosować tę samą zasadę do podziału na jeszcze mniejsze sieci. Zróbmy notatkę:

  • Komputery klienckie - 192.168.40.0/25 - Prawidłowe adresy IP: 192.168.40.1 - 192.168.40.126

Teraz, aby rozbić drugą sieć dla naszych serwerów i przełączników, robimy to samo.

Mamy 12 komputerów z serwerami, ale możemy kupić jeszcze 6. Zaplanujmy na 18, co daje nam następną najwyższą potęgę 2 jako 32. W systemie dwójkowym 32 oznacza „100000”, czyli 6 bitów. W 192.168.40.128/25 pozostało 7 bitów maski podsieci, więc mamy wystarczającą liczbę bitów, aby kontynuować „grę”. Dodanie jeszcze jednego fragmentu maski podsieci daje nam dwie dodatkowe sieci:

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.192/26 network

Więc teraz podzieliliśmy 192.168.40.128/25 na dwie kolejne sieci, z których każda ma 26 bitów maski podsieci lub łącznie 62 możliwe identyfikatory hosta - 2 ^ (32 - 26) - 2.

Oznacza to, że obie te sieci mają wystarczającą liczbę adresów dla naszych serwerów i przełączników! Zróbmy notatki:

  • Serwery - 192.168.40.128/26 - ważne adresy IP: 192.168.40.129 - 192.168.40.190
  • Przełączniki - 192.168.40.192/26 - ważne adresy IP: 192.168.40.193 - 192.168.40.254

Ta technika nazywa się maskowaniem podsieci o zmiennej długości (VLSM) i, jeśli jest właściwie zastosowana, powoduje, że „routery podstawowe” mają mniejsze tabele routingu (w procesie zwanym „podsumowaniem trasy”). W przypadku naszego dostawcy usług internetowych w tym przykładzie mogą oni być całkowicie nieświadomi tego, w jaki sposób podsieci 192.168.40.0/24. Jeśli ich router ma przypisany pakiet dla 192.168.40.206 (jeden z naszych przełączników), muszą tylko wiedzieć, aby przekazać go do naszego routera (ponieważ 192.168.40.206 pasuje do identyfikatora sieci i maski podsieci 192.168.40.0/24 w tabeli routingu routera ), a nasz router dostanie go do miejsca docelowego. To utrzymuje nasze trasy podsieci z dala od ich tablic routingu. (Upraszczam tutaj, ale masz pomysł.)

W ten sam sposób możesz planować bardzo duże geograficznie sieci. Dopóki wykonasz właściwe „planowanie urbanistyczne” z góry (przewidując liczbę hostów w każdej podsieci z pewną dokładnością i spoglądając w przyszłość), możesz stworzyć dużą hierarchię routingu, która w podstawowych routerach „podsumowuje” „na bardzo małą liczbę tras. Jak widzieliśmy powyżej, im więcej tras znajduje się w tablicy routingu routera, tym wolniej wykonuje swoje zadanie. Projektowanie sieci IP za pomocą VLSM i utrzymywanie małych tabel routingu to dobra rzecz (tm).

Unrealizm przykładów

Fikcyjny świat w tej odpowiedzi jest oczywiście fikcyjny. Zazwyczaj można tworzyć podsieci na nowoczesnym przełączanym Ethernecie z większą liczbą hostów niż 254 (zależnie od profilu ruchu). Jak zauważono w komentarzach, używanie sieci / 24 między routerami nie jest zgodne z Real Life (tm). To urocze przykłady, ale marnuje miejsce na adresy. Zazwyczaj a / 30 lub a / 31 (zobacz http://www.faqs.org/rfcs/rfc3021.html, aby uzyskać szczegółowe informacje o tym, jak działa / 31 - na pewno są poza zakresem tej odpowiedzi) sieć jest używana na łącza, które są ściśle punkt-punkt między dwoma routerami.


Mały błąd: kod zaraz po „Ostatni prawidłowy host ...” powraca do nazwania go „pierwszym prawidłowym hostem”. Zakładam, że nadal powinno to brzmieć „ostatni”.
JoeCool1986

@ JoeCool1986 - Dobry połów.
Evan Anderson

2
Zagłosuję za odpowiedzią, aby upewnić się, że dwie odpowiedzi są uporządkowane.
l46kok

W części, w której tworzysz dwie podsieci z 192.168.40.128 i tworzysz identyfikator sieci 192.168.40.192, skąd 192?
user6607

@ user6607 Podsieci są liczone wstecz (bez przerw). Na przykład pierwsza podsieć 0jest reprezentowana jako 00000000. Druga podsieć jest 128taka, 10000000a trzecia podsieć 192jest reprezentowana jako 11000000itd. Po prostu odliczaj wstecz, aby znaleźć nowe podsieci.
Joseph Kern

76

Podsieci

Podsieci nie jest trudne, ale może być zastraszające. Zacznijmy więc od najprostszego możliwego kroku. Nauka liczenia w systemie binarnym.

Dwójkowy

Binary to podstawowy system liczenia 2. Składa się tylko z dwóch cyfr (1 i 0). Liczenie przebiega w ten sposób.

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

Więc jeśli tylko wyobrażasz sobie, że każdy 1 jest miejscem dla wartości (wszystkie wartości binarne są potęgami dwóch)

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

Więc ... 100000 = 32. I 10000000 = 128. ORAZ 11111111 = 255.

Kiedy mówię: „Mam maskę podsieci 255.255.255.0”, naprawdę mam na myśli: „Mam maskę podsieci 11111111.11111111.11111111.00000000”. Używamy podsieci jako krótkiej ręki.

Kropki w adresie oddzielane są co 8 cyfr binarnych (oktet). Dlatego IPv4 jest znany jako 32-bitowa (8 * 4) przestrzeń adresowa.

Dlaczego podsieć?

Brakuje adresów IPv4 (192.168.1.1). Podsieci daje nam sposób na zwiększenie ilości dostępnych sieci (lub hostów). Wynika to z przyczyn administracyjnych i technicznych.

Każdy adres IP jest podzielony na dwie osobne części, sieć i host. Domyślnie adres klasy C (192.168.1.1) używa pierwszych 3 oktetów (192.168.1) dla części sieciowej adresu. i czwarty oktet (.1) jako część hosta.

Domyślnie wygląda tak adres IP i maska ​​podsieci dla adresu klasy C.

IP     192.168.1.1 
Subnet 255.255.255.0

Binarnie jak to

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Spójrz jeszcze raz na binarny przykład. Zauważ, jak powiedziałem, że pierwsze trzy oktety są używane w sieci? Zauważ, jak wszystkie są częścią sieci? To wszystko jest podsieciami. Rozwińmy się.

Biorąc pod uwagę, że mam jeden oktet dla mojej części hosta (w powyższym przykładzie). Mogę TYLKO mieć 256 hostów (256 to maksymalna wartość oktetu, licząc od 0). Ale jest jeszcze jedna mała sztuczka: musisz odjąć 2 adresy hostów od dostępnych (obecnie 256). Pierwszy adres w zakresie będzie dla sieci (192.168.1.0), a ostatni adres w zakresie będzie rozgłoszeniem (192.168.1.255). Tak naprawdę masz 254 dostępne adresy dla hostów w jednej sieci.

Studium przypadku

Powiedzmy, że dałem ci następujący kawałek papieru.

Create 4 networks with 192.168.1.0/24.

Spójrzmy na to. / 24 nazywa się notacją CIDR. Zamiast odwoływać się do 255.255.255.0, po prostu odwołujemy się do bitów potrzebnych dla sieci. W takim przypadku potrzebujemy 24 bity (3 * 8) z adresu 32-bitowego. Zapisywanie tego w formie binarnej

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

Następnie wiemy, że musimy dowiedzieć się, ile podsieci potrzebujemy. Wygląda na 4. Ponieważ musimy stworzyć więcej sieci (obecnie mamy tylko jedną), przerzućmy trochę bitów

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

Teraz, gdy zdecydowaliśmy się na a / 26, zacznijmy przydzielać hosty. Trochę prosta matematyka:

32(bits) - 26(bits) = 6(bits) for host addresses.

Mamy 6 bitów do przydzielenia w każdej sieci dla hostów. Pamiętając, że musimy odjąć 2 dla każdej sieci.

h = host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

Teraz musimy dowiedzieć się, dokąd zmierzają gospodarze. Wróć do pliku binarnego!

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

W ten sposób możesz obliczyć całą podsieć.

Symbole wieloznaczne Maska wieloznaczna to odwrócona maska ​​podsieci.

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

Dalej

Google dla terminów „super-netting” i „VLSM (maska ​​podsieci o zmiennej długości)” dla bardziej zaawansowanych tematów.

Widzę teraz, że odpowiedziałem zbyt długo ... westchnienie


1
„Biorąc pod uwagę, że mam jeden oktet dla mojej części hosta (w powyższym przykładzie). Mogę TYLKO mieć 255 hostów (255 to maksymalna wartość oktetu). Ale jest jeszcze jedna mała sztuczka: musisz odjąć 2 adresy hostów z dostępnych (obecnie 255). Pierwszy adres w zakresie będzie dla sieci (192.168.1.0), a ostatnim adresem w zasięgu będzie transmisja (192.168.1.255). Tak więc naprawdę masz 253 dostępnych adresów dla hosty w jednej sieci. ”... To jest niepoprawne.
joeqwerty

1
Istnieje 256 możliwych wartości dla oktetu: od 0 do 255, w sumie 256. 256 -2 (adresy sieciowe i rozgłoszeniowe) = 254 możliwe adresy hostów.
joeqwerty

Ups Dzięki! :-) Po jednym, nie mam pojęcia, jak poradziłem sobie z tym szczególnym wyczynem.
Joseph Kern

1
-1 Przepraszam, ale nie było „klas” od RFC 1519 w 1993 roku, nikt nie powinien o nich mówić poza kontekstem historycznym. Są mylące i powodują wiele nieporozumień.
Chris S

Chris, prawdopodobnie masz rację, ale lekcje były prowadzone do wczesnych lat 2000 w CCNA i na większości kursów na poziomie licencjackim.
Joseph Kern

34

Krótka lekcja historii: pierwotnie adresy IPv4 emisji pojedynczej były podzielone na 3 klasy, każda z przypisaną „domyślną” długością maski (zwaną klasową maską podsieci)

  • Klasa A: Wszystko w zakresie 1.0.0.0 -> 127.255.255.255. Klasowa maska ​​podsieci 255.0.0.0 (/ 8 w notacji CIDR)
  • Klasa B: Wszystko w zakresie 128.0.0.0 -> 191.255.255.255. Klasowa maska ​​podsieci 255.255.0.0 (/ 16 w notacji CIDR)
  • Klasa C: Wszystko w zakresie 192.0.0.0 -> 223.255.255.255. Klasowa maska ​​podsieci 255.255.255.0 (/ 24 w notacji CIDR)

Pomysł polegał na tym, że różnej wielkości organizacjom można było przypisać inną klasę adresu IP, aby efektywnie wykorzystać przestrzeń adresów IP.

Jednak wraz z rozwojem sieci IP stało się jasne, że takie podejście ma swoje problemy. Aby wymienić tylko trzy:

W klasowym świecie wszystkie podsieci musiały mieć maskę / 8, / 16 lub / 24. Oznaczało to, że najmniejszą podsiecią, którą można skonfigurować, był / 24, co pozwoliło na 254 adresów hostów (0,0 i 0,255 zarezerwowane odpowiednio jako adresy sieciowe i rozgłoszeniowe). Było to ogromnie marnotrawstwem, szczególnie w przypadku połączeń punkt-punkt z dołączonymi tylko dwoma routerami.

Nawet po złagodzeniu tego ograniczenia wcześniejsze protokoły routingu (np. RIPv1 ) nie reklamowały długości maski związanej z prefiksem IP. W przypadku braku konkretnej maski użyłby albo maski bezpośrednio podłączonego interfejsu w tej samej sieci klasowej, albo wróciłby do korzystania z maski klasowej. Na przykład, jeśli chcesz używać sieci 172.16.0.0 do połączeń między routerami z maskami / 30, wszystkie podsieci od 172.16.0.0 - 172.16.255.255 musiałyby mieć maskę / 30 (16384 podsieci, każda z 2 użytecznymi adresami IP ).

Tabele routingu routerów internetowych zaczęły zajmować coraz więcej pamięci; to było / jest znane jako „eksplozja tabeli routingu”. Jeśli dostawca miałby na przykład 16 ciągłych / 24 sieci, musiałby reklamować wszystkie 16 prefiksów, zamiast jednego podsumowania obejmującego cały zakres.

Dwa powiązane udoskonalenia pozwoliły nam wyjść poza powyższe ograniczenia.

  1. Maski podsieci o zmiennej długości (VLSM)
  2. CIDR (bezklasowy routing między domenami)

VLSM odnosi się do zdolności protokołu routingu do obsługi różnych masek podsieci w tej samej klasowej sieci. Na przykład:

192.168.1.0/24

Można podzielić na:

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

Co pozwoliło na znacznie bardziej efektywne wykorzystanie przestrzeni adresowej; podsieci mogą być odpowiednio dopasowane do liczby hostów / routerów, które zostaną do nich podłączone.

CIDR bierze VLSM i rozszerza go w drugą stronę; oprócz podziału pojedynczej sieci klasowej na mniejsze podsieci, CIDR pozwala na agregację wielu klasowych sieci w jedno podsumowanie. Na przykład następujące sieci klasy B (/ 16):

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

Można agregować / podsumowywać za pomocą jednego przedrostka:

172.16.0.0/14

Pod względem podsieci: maska ​​podsieci ma długość 32 bitów. Długość maski wskazuje, ile bitów identyfikuje część adresu w sieci. Na przykład:

10.1.1.0/24
  • Klasowa maska ​​podsieci to / 8
  • Rzeczywista maska ​​podsieci to / 24
  • 16 bitów (24–8) zostało „pożyczonych” na potrzeby korzystania z podsieci.

Oznacza to, że zakładając, że cała sieć 10.0.0.0/8 jest podsieciowa w / 24s, w tym zakresie będzie 65536 (2 ^ 16) podsieci. (Zakłada się, że używana platforma obsługuje numery podsieci 0 i 255. Zobacz podsieć ip Cisco-zero).

W „części hosta” adresu pozostało 8 bitów. Oznacza to, że dostępnych jest 256 adresów IP (2 ^ 8), z których 2 są zarezerwowane (10.1.1.0 to adres sieciowy, 10.1.1.255 to adres rozgłoszeniowy kierowany do podsieci). Pozostawia to 254 użytecznych adresów IP w tej podsieci. ((2 ^ 8) - 2)


4
W rzeczywistości było 5 klas.
dbasnett

5
To prawda, ale czy naprawdę musimy przejść do multiemisji i zarezerwowanego adresowania klasy E, aby uzyskać pytanie „wprowadzenie do podsieci”? :)
Murali Suriar

2
Wprowadziłeś historię do pytania wstępnego ... Potem pozostawiłeś ją niekompletną. Nie jestem pewien, co jest gorsze.
Chris S

7

Zakresy sieci: do sieci zawsze odnoszą się 2 liczby: jedna określa sieć, a druga określa, który komputer (lub host) znajduje się w tej sieci. Ponieważ każdy adres sieci nie ma 32 bitów, obie liczby muszą się zmieścić w tych 32 bitach.

Numeracja sieci jest ważna, ponieważ ICANN rozdaje ją, gdy pytasz o zasięg IP sieci. Gdybyśmy tego nie mieli, nikt nie byłby w stanie odróżnić mojej sieci od AT & Ts. Więc chociaż liczby te muszą być unikalne, nikt inny nie chce przypisywać numerów hostom znajdującym się w mojej sieci. Stąd podział - pierwsza część jest zarządzana przez ludzi z sieci, druga część jest moja, aby dać dowolne maszyny, które chcę.

Numer sieci nie jest ustalony na pewną liczbę bitów - na przykład, gdybym miał tylko 200 maszyn do zarządzania sobą, byłbym całkowicie zadowolony z numeru sieci, który używałby 24 bitów, pozostawiając mi tylko 8 bitów dla siebie - co wystarcza dla maksymalnie 255 hostów. Ponieważ numer sieci wykorzystuje 24 bity, możemy mieć ich wiele, co oznacza, że ​​wiele osób może mieć własne sieci.

W przeszłości było to nazywane siecią klasy C. (klasa B wykorzystała 16 bitów na numer sieci, a klasa A wykorzystała 8 bitów, więc istnieje tylko kilka sieci klasy A).

Obecnie ta konwencja nazewnictwa wyszła z mody. Został zastąpiony koncepcją o nazwie CIDR. CIDR wyraźnie określa liczbę bitów dla twoich hostów po ukośniku. Tak więc mój przykład powyżej (klasa C) jest teraz nazywany CIDR / 24.

Daje nam to trochę większą elastyczność, wcześniej, gdybym miał 300 hostów do zarządzania, potrzebowałbym sieci klasy B. Teraz mogę po prostu uzyskać CIDR / 23, więc mam dla mnie 9 bitów i 23 bity dla numeru sieci. ICANN może nie mieć tego rodzaju sieci, ale jeśli mam sieć wewnętrzną lub wynajmuję częściową sieć od dostawcy usług internetowych, ułatwia to zarządzanie - zwłaszcza, że ​​wszyscy ich klienci mogą otrzymać / 29 (pozostawiając mnie. . 3 bity lub maksymalnie 8 komputerów), co pozwala większej liczbie osób na posiadanie własnego małego kawałka dostępnych adresów IP. Dopóki nie uzyskamy IPv6, jest to dość ważne.


Jednak ... chociaż wiem, że AID / 24 to odpowiednik starej sieci klasy C, a a / 16 to klasa B, a a / 8 to klasa A ... wciąż mam problemy z obliczeniem / 22 w moja głowa. Na szczęście są narzędzia, które to dla mnie robią :)

Jednak - jeśli wiesz, że / 24 to 8 bitów dla hostów (i 24 bity dla sieci), to wiem, że / 23 daje mi dodatkowy bit, który podwaja liczbę hostów.


-1 Niestety, ale wspominanie o zajęciach poza odniesieniem „historycznym” jest obecnie niewłaściwe. Nie „wypadły z mody”, zostały oficjalnie uznane za wycofane przez RFC 1519 w 1993 roku. Są mylące jak wszyscy i powodują wiele nieporozumień.
Chris S

Niektóre implementacje dynamicznych protokołów routingu podsumowują wzdłuż klasowych granic, więc nadal warto je znać.
Ben

5

Po drodze przedstawię i odpowiem na kilka powiązanych pytań:

  • Dlaczego 255.255.255.0tak często widujesz?
  • Dlaczego 192.168.0.1?
  • Dlaczego 127.0.0.1?

Dlaczego tak dziwne liczby - 255, 192, 168, 127?


8 + 8 + 8 + 8-bitowa kropka dziesiętna

Adresy internetowe, takie jak 194.60.38.10, używają notacji kropkowo-dziesiętnej, aby podzielić 32 bity na 8 + 8 + 8 + 8 bitów. Kropkowany dziesiętny oznacza konwersję każdej liczby na binarną, a następnie wstawianie jej do lewej za pomocą 0s.

Na przykład .60.→ 60 = 32 + 16 + 8 + 4 → 111100.00111100..

Zatem 194.60.38.10 jest kropkowo-dziesiętny dla adresu 4 × 8 = 32-bitowego 11000010.00111100.00100110.00001010, ponieważ 38 → 100110, 10 → 1010i tak dalej. 194 wymaga wszystkich 8 bitów; reszta jest wyściełana.

watowany

Gdy pomyślisz o 255, 192 i 127 w 8-bitowym pliku binarnym, łatwiej zrozumiesz, dlaczego niektóre liczby dziesiętne są tak powszechne:

  • 255 = 11111111
  • 192 = 11000000
  • 127 = _1111111
  • 128 = 10000000

Te liczby dziesiętne reprezentują wygodne wizualnie 8-bitowe bloki, takie jak ■■■■■■■■, ■ □□□□□□□ i □ ■■■■■■■. Więc nigdy nie widziałeś 256 = 2⁹ z powodu 8-bitowego limitu, a 127 = 128-1 = 2⁸ − 1 to bit-flip potęgi dwóch - a potęgi dwóch są 10………00000w dwójkowy.

  • 168 = 10101000

Maski podsieci: To, co moje, jest moje + To, co twoje, jest twoje

Następnie maski podsieci dzielą każdy 32-bitowy adres internetowy na identyfikator sieci i identyfikator hosta. Podczas gdy adresy internetowe mogą mieć dowolną kombinację 1 i 0, maski podsieci zaczynają się od 1 i kończą tylko 0.

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□ subnet

Zaciemnienie pierwszych 8 + 8 + 8 = 24 bitów i wybielenie ostatnich 8 bitów jest sposobem na podzielenie adresu IP ■■ □□□□ ■ □ | □□ ■■■■ □□ | □□ ■ □□ ■ ■ □ | □□□□ ■ □ ■ □ na dwie części:

■■□□□□■□|□□■■■■□□|□□■□□■■□          network
                             □□□□■□■□ host

Jeśli właściciel podsieci (powiedzmy OmniCorp ) chciał więcej wewnętrznych adresów IP, mógłby wykupić więcej (powiedzmy 8 + 8 = 16 bitów) prawej strony sieci, tak jak to:

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□ subnet
■■□□□□■□ □□■■■■□□                    network
                   □□■□□■■□ □□□□■□■□ host

Najwyraźniej istnieje kompromis w 32-bitowej = 2³² = 4 294 967 296-opcjonalnej przestrzeni adresowej: jeśli kupisz więcej identyfikatorów sieci (po lewej stronie), twoja sieć wewnętrzna ma więcej identyfikatorów hostów (po prawej stronie) do przypisania.

Tani ludzie mają zatem maskę podsieci

255.255.255.0 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□.

Nawet tańsi ludzie mają

255.255.255.128 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■ □□□□□□□

lub 255.255.255.192 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■■ □□□□□□.

Według folkloru nie był to właściwie Roger Miller, ale skromny sysadmin z maską 255.255.255.254, który pierwotnie napisał King of the Road , zastępując „Nie mam dużej podsieci” zamiast „Nie mam papierosów ”.

Palę papierosy aż do tyłka

(Dlaczego maski słabo wypełnionych tak wysokimi liczbami? Ponieważ, podobnie jak narrator Millera, maski podsieci liczą wszystkie rzeczy, których nie masz.)


Co oznacza końcowy ukośnik po IP? (np. 194.60.38.10/24)

Ponieważ maski podsieci (które dzielą „ich” od „naszych”) zawsze zaczynają się od 1„i”, ponieważ nienawidzimy sumowania potęg dwóch, nawet bardziej niż nienawidzimy obliczania potęg dwóch, to ktoś wynalazł CIDR (ukośnik po adresie IP).

194.60.38.10/24 oznacza „submask ma 24, a reszta to zero”, więc

■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□ z 8 + 8 + 8 bitów należącymi do „nich” i 8 bitów należące do „nas”.

Odwracając hymn hobo powyżej,

  • /31 jest autorem piosenek
  • /24należy do klasy średniej ( 255.255.255.0= ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□
  • /16 jest bogaty ■■■■■■■■■ | ■■■■■■■■ | □□□□□□□□ | □□□□□□□□
  • /8 jest bardzo bogaty ■■■■■■■■ | □□□□□□□□ | □□□□□□□□ | □□□□□□□□
  • /1albo /0będzie IANA czy coś takiego.





† Użyj bc -l; obase=10; 60na przykład.


Jaki związek z odpowiedzią zawierają zawarte w nim zdjęcia? Czy to tylko skupienie się na odpowiedzi? :)
simhumileco

4

Chociaż powyższe informacje są poprawne (przepraszam, TL; DR), obliczanie podsieci nadal powoduje wiele problemów administratorów sieci. Jest tak naprawdę bardzo łatwy sposób na obliczenie podsieci, większość możesz zrobić w swojej głowie, a na pamięć jest bardzo mało. W przypadku większości aplikacji nie jest nawet konieczne zrozumienie reprezentacji binarnej, chociaż jest to pomocne dla pełnego zrozumienia podsieci. Tutaj omówię tylko IPv4; IPv6 jest poza zakresem tej dyskusji.

Pamiętaj to:

Należy pamiętać o trzech kluczowych kwestiach: wszystkie podsieci są oparte na potęgach dwóch, a są dwie kluczowe liczby: 256 i 32. Więcej na ten temat później.

Najpierw spójrzmy na tabelę zawierającą potęgi 2:

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

Obliczenie mocy 2 jest łatwe: każda liczba całkowita wzrostu mocy podwaja wynik. 1 + 1 = 2, 2 + 2 = 4, 4 + 4 = 8, 8 + 8 = 16 itd. Całkowita liczba adresów w podsieci musi zawsze wynosić 2 .

Ponieważ każdy oktet podsieci IPv4 rośnie do 256, 256 jest bardzo ważną liczbą i stanowi podstawę dla reszty matematyki.

Rozmiar podsieci

Zaczniemy od łatwego pytania: „ile adresów w podsieci, jeśli maska ​​to 255.255.255.248?” Na razie zignorujemy pierwsze trzy oktety i spojrzymy na ostatnie. Oto jakie to proste: odejmij 248 od 256. 256 minus 248 równa się 8. Dostępnych jest 8 adresów (w tym adresy sieciowe i rozgłoszeniowe). Rewers działa również: „jeśli chcę mieć podsieć z 16 adresami, jaka będzie maska ​​podsieci?” 256 minus 16 to 240. Maska podsieci to 255.255.255.248.

Teraz, jeśli chcemy rozszerzyć zakres poza 256 adresów (historycznie „klasa C”), staje się to tylko trochę bardziej skomplikowane: jeśli nasz ostatni oktet ma wartość 0, a nasz trzeci oktet, powiedzmy 240, (255.255.240.0), to robimy matematykę trzeciego oktetu i stwierdzamy, że będzie 16 adresów. Mnożymy więc 16 przez 256 (liczbę adresów w ostatnim oktecie), aby uzyskać 4096. Jeśli oba ostatnie dwa oktety są równe 0, (np. 255.240.0.0), wówczas odejmujemy wynik odejmowania z drugiego oktetu (powiemy, że to znowu 16), mnożymy, ale 256 (adresy w trzecim oktecie), mnożymy ponownie przez 256 (adresy w ostatnim oktecie), aby uzyskać 1 048 576 adresów. To takie proste! (OK, więc sytuacja odwrotna jest nieco trudniejsza. Jeśli chcemy podsieci z 1 048 576 adresami, będziemy musieli kilka razy podzielić tę liczbę przez 256, aby uzyskać liczbę, którą możemy odjąć od 256).

Adres sieciowy

Teraz, gdy wiemy, jak obliczyć maskę podsieci, jak dowiedzieć się, jaki jest adres sieciowy? To proste: zawsze jest to wielokrotność liczby adresów w naszej podsieci. Jeśli więc mamy 16 adresów w naszej podsieci, możliwe adresy sieciowe będą wynosić 0, 16, 32, 48, 64 itd. Aż do 240. (Zauważ, że 0 jest poprawną wielokrotnością dowolnej liczby, jako dowolnej liczby pomnożonej przez 0 równa się 0.)

I oczywiście adres emisji będzie ostatnim adresem w zakresie. Jeśli więc mamy 16 adresów w naszej podsieci i wybraliśmy adres sieciowy 10.3.54.64, adresem emisji będzie (64 + 16-1 = 79) 10.3.54.79.

Notacja CIDR

A co powiesz na notację CIDR? Jak przetłumaczyć to na i z maski podsieci w stylu IPv4?

Pamiętasz nasze moce dwojga? Cóż, teraz mamy jeszcze inny klucz do zapamiętania oprócz 256: 32. Pamiętaj, że notacja CIDR opisuje liczbę znaczących bitów w adresie IPv4, a adres IPv4 zawiera 32 bity, po 8 dla każdego oktetu. Jeśli więc mamy maskę podsieci 255.255.255.240, to 16 adresów. Jeśli spojrzymy na naszą tabelę „potęg 2” powyżej, zobaczymy, że 16 to dwa do czwartej potęgi (2 ^ 4). Odejmujemy więc tę liczbę mocy - 4 - od 32 i otrzymujemy 28. Nasza notacja CIDR dla maski podsieci 255.255.255.240, nasza notacja CIDR to / 28.

A jeśli otrzymamy CIDR / 28, odejmujemy to (28) od 32, aby uzyskać 4; podnieś 2 do tej (4.) mocy (2 ^ 4), aby uzyskać 16; następnie odejmij to (16) od 256, aby uzyskać 240; lub 255.255.255.240.


dziękuję. Ale wciąż jestem niejasny, jak komputer używa maski podsieci. Gdy aplikacja na komputerze chce wysłać dane, hermetyzuje je w pakiecie. Czy maska ​​podsieci określa sposób kapsułkowania pakietu? Na przykład, jeśli komputer chciałby wysłać pakiet w sieci lokalnej, użyłby ramki ethernetowej en.wikipedia.org/wiki/Ethernet_frame, a gdyby chciał poza siecią, użyłby pakietu tcp en.wikipedia.org/wiki /… ?
aquagremlin

Zasadniczo nie wiem JAK komputer określa, gdzie wysłać swoje dane. Sieć Ethernet jest jak autobus - jeździ wszędzie. Wydawanie pakietu przez gniazdo Ethernet komputera jest zdarzeniem ogólnym, dlatego sam pakiet musi określić, kto na niego odpowie. Pakiet przeznaczony do pobrania przez urządzenie lokalne (przełącznik lub inny komputer w sieci LAN) musi wyglądać inaczej niż pakiet, który ma zostać odebrany przez router.
aquagremlin

Dzieje się tak na warstwie poniżej TCP. Każde urządzenie ma adres sprzętowy (MAC) powiązany z adresem IP w tabeli ARP każdego urządzenia. Jest to zbudowane przez odkrycie. Kiedy pakiet jest przeznaczony dla hosta w sieci lokalnej, jest oznaczony MAC dla urządzenia docelowego. Kiedy pakiet jest przeznaczony dla zdalnego hosta, jest oznaczony MAC dla routera w sieci lokalnej. Gdy przechodzi przez router, MAC jest usuwany, a następnie oznaczany MAC routera następnego przeskoku. Podsieć określa jedynie zasięg sieci lokalnej. (To jest prosta wersja <500 znaków.)
Jonathan J

2

Uważam również, że powinna istnieć przynajmniej wzmianka o NAT, ponieważ są one tak często używane w nowoczesnych sieciach zamiast podsieci, między innymi z powodu wyczerpania adresu IPv4. (Ponadto, kiedy po raz pierwszy uczyłem się o podsieciach, byłem bardzo zdezorientowany, w jaki sposób podsieci odnoszą się do sieci tworzonych przez routery WiFi).

NAT (translacja adresów sieciowych) to technika (powszechnie) stosowana do tworzenia sieci prywatnych poprzez mapowanie jednej przestrzeni adresowej (IP: Port) na inną. Zasadniczo służy to do stworzenia prywatnej sieci wielu prywatnych adresów IP za jednym adresem publicznym, na przykład w routerach Wi-Fi, przez organizacje (takie jak uniwersytet lub korporacja), a czasem przez dostawców usług internetowych.

Rzeczywiste tłumaczenie adresu odbywa się w przejrzysty sposób w węzłach obsługujących NAT, zwykle w routerach. Może mieć wiele postaci, pełny stożek, adres ograniczony, port ograniczony itp. Lub ich kombinacja, co decyduje o sposobie inicjowania połączeń w węźle.

Pełne informacje można znaleźć na Wikipedii , ale na przykład rozważ router Wifi z podłączonymi do niego 2 urządzeniami. Publiczny adres IP routera to 10.9.20.21/24adres IP urządzeń (prywatne adresy IP) A: 192.168.0.2, B: 192.168.0.3a adres routera to R: 192.168.0.1. Dlatego jeśli Achcesz połączyć się z serwerem S: 10.9.24.5/24(który jest w rzeczywistości w innej podsieci, wpisz router tutaj):

  1. A wysyła pakiet IP do R(który byłby bramą domyślną) ze źródłowym adresem IP 192.168.0.2, portem src (powiedzmy) 14567i docelowym adresem IP: 10.9.24.5(Chociaż port jest tak naprawdę częścią nagłówka TCP).
  2. Router (który obsługuje NAT) odwzorowuje port 14567na urządzenie Ai zmienia źródło pakietu IP na 10.9.20.21(który jest publicznym adresem IP routera). Jest to sprzeczne z opisanymi powyżej podsieciami, w których pakiety IP w rzeczywistości nigdy nie są zmieniane .
  3. Sodbiera serię pakietów TCP (z src IP 10.9.20.21:, src Port:) 14567i wysyła pakiety odpowiedzi z tymi wartościami w polach docelowych.
  4. Rsprawdza port docelowy, który jest 14567i przekazuje pakiet do A.
  5. A odbiera pakiet odpowiedzi.

W powyższej sytuacji Bpróba otwarcia połączenia na tym samym porcie źródłowym ( 14567) byłaby odwzorowana na inny port przez R(a port w pakiecie wychodzącym zmienił się) przed wysłaniem do S. Oznacza to, że byłoby również tłumaczenie portów zamiast samego adresu IP.

Dwie rzeczy do zapamiętania tutaj:

  1. Ze względu na to tłumaczenie adresu często nie jest możliwe zainicjowanie połączenia z urządzeniami w sieci prywatnej bez zastosowania specjalnych technik.
  2. Ograniczenie łącznej liczby połączeń TCP z tego samego urządzenia do serwera (65536 = 2 ^ 16) ma teraz zbiorowe zastosowanie do wszystkich urządzeń za NAT, w powyższej formie NAT.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.