Video of the week

This is a must-watch video about one of us trying to reach the stars :-)

Well done #HRejterzy

Switch - basics

 

Pytania: Mam 4 komputery podpięte pod jeden switch. Maszyny adresowanę są kolejno:

192.168.1.100/24
192.168.1.101/24
192.168.2.100/24
192.168.2.101/24

Czy komputery tworzą jedną sieć? Czy komputery widzą się wzajemnie? Czy switch może spiąć więcej niż jedną sieć logiczną? Na jakim etapie ?sieci? decyduje się czy pakiet np z hosta 0 dotrze lub nie do np hosta 3? Co o tym decyduje?

1

 

Na obrazku mamy opisywaną sytuację. Czy hosty tworzą jedną sieć?

Oczywiście nie trzeba być expertem sieciowym, żeby stwierdzić, że NIE(całkiem). Dwa hosty po lewej stronie tworzą jedną podsieć, dwa po prawej kolejną. Decyduje o tym maska podsieci, która w tym przypadku 255.255.255.0 (aka ad.r.e.s/24) mówi nam, że adres sieci to 24 bity (3 oktety) czyli adres pierwszej sieci po lewej to [192.168.1.]0 i analogicznie sieć po prawej to [192.168.2.]0.

Dlaczego 0 a nie np 999? Adres sieci (taka zasada) ma w części hosta SAME ZERA. Adres składa się na SIEĆ.HOST czyli 192.168.1(sieć).100(host). Binarnie ostatni oktet będzie wyglądać tak: 192.168.1.01100100 (--> 192.168.1.100). Natomiast zgodnie z zasadą, że adres sieci musi mieć w częsci hosta same zera mamy: 192.168.1.00000000(bin) czyli 192.168.1.0(dec).

 

Czy w ogóle możliwy jest adres 999? Ostatni oktet to 8 bitów czyli mamy osiem miejsc aby wstawić tam jedną z dwóch wartości : 0 lub 1. Ile jest takich różnych opcji? W pierwsze pole można wstawić 2 wartości 0 lub 1. Dla 0 można wstawić w drugie pole 0 lub 1 i podobnie dla 1 itd. Nazywa się to zawodowo wariancją z powtórzeniami a rozwiązaniem jest 256 (2^8). Czyli z 8 bitów zbudujemy maxymalnie liczbę 255 (0-255 to razem 256 wartości).

192.168.1.0/24 i 192.168.2.0/24 to dwie różne sieci.

Czy komputery widzą się wzajemnie? Spróbujmy zapingować hosta 1 z hosta 0.

2

Mamy sukces! Sprawdzmy dalej.

3

 

Mamy porażkę! Częściowo odpowiedź na tę zagadkę została udzielona. Hosty znajdują się w dwóch różnych sieciach. Switch to sprytne urządzenie ale nie na tyle, żeby umożliwić komunikację hostom z różnych sieci.

Czy swicth potrafi spiąć różne sieci? Fizycznie tak, logicznie nie. Switchowi nie robi różnicy czy hosty podpięte do jego portów pochodzą z 9, 15 jednej czy 180 sieci. Switch przekaże pakiety do hostów z tej samej sieci i tyle. Switch natomiast nie ma funkcji routera, czyli nie dokonuje rozbioru pakietu i nie sprawdza docelowego adresu IP z warstwy sieciowej. Switch rozumuje na warstwie drugiej, czyli on umie tylko adresy sprzętowe MAC - nie zna natomiast pojęcia adresu IP.

Na jakim etapie ?sieci? decyduje się czy pakiet np z hosta 0 dotrze lub nie do np hosta 3? Co o tym decyduje?

To jest ważna kwestia i warto o tym wiedzieć. Jeśli chcę przesłać cokolwiek gdziekolwiek to najpierw sprawdzana jest w systemie informacja czy adres docelowy jest adresem lokalnym czy zewnętrznym. Dla hosta 3 adresem lokalnym będzie adres jego ziomka z góry 192.168.2.100. Adresem zewnętrznym będzie zarówno 192.168.1.100 i 192.168.1.101.

Jeśli adres docelowy jest lokalny to pakiet idzie po adresie sprzętowym(MAC) a nie IP. Jeśli adres jest zewnętrzny to pakiet idzie po adresie IP a nie sprzętowym(MAC).

Czyli jeśli host zero wysyła echo request to hosta 1:

4

 

Mamy w warstwie 3 sieciowej (IP) informacje o adresie zródłowym i docelowym IP a w warstwie niższej(2) informację analogiczną tym razem adresy MAC. Pakiet zostaje dalej przekazany przez switch?a do hosta1 i następuje odpowiedz: echo reply. Działa. Screen pochodzi z programu Packet Tracer i jest to screen z opcji, która umożliwia podejrzenie pakietu na pewnym etapie jego wędrówki przez sieć. Poniżej opisu warstw jest opis tego co się z pakietem dzieje w międzyczasie.

Jeśli adres okazuje się być zewnętrznym - co wtedy? Wtedy w systemie musi zostać skonfigurowana brama domyślna, czyli taka którą puszcza się pakiety, które zaadresowano na zewnątrz. Popatrzmy co się stanie jeśli spróbuje zapingować hosta0 z host3:

5

 

Jak widać pakiet nie opuszcza nawet systemu. Mamy informację o pakiecie, że adres docelowy znajduję się w innej sieci(punkt 4) i niżej że, nie wiemy nic o bramie domyślnej(punkt 5) więc nie wiemy, którędy wypchnąć takiego nygusa z systemu.

Jak system właściwie stwierdza czy adres jest lokalny czy zewnętrzny? A robi to tak:

1. Host0 192.168.1.100 patrzy na adres docelowy np 192.168.1.101
2. Spogląda na swoją maskę podsieci 255.255.255.0
3. Wykonuje iloczyn logiczny bitów adresu docelowego i maski

192.168.1. 01100101
255.255.255.00000000

dokładniej:

192.168.00000001.01100101
255.255.11111111.00000000
--------------------------------------
192.168.1.0

i zgodnie z zasadą iloczynu (0 x 1 = 0, 1 x 1 = 1, 0 x 0 = 0) otrzymuje adres 192.168.1.0 i stwierdza, że adres docelowy znajduje się właśnie w sieci 192.168.1.0 a to jest dokładnie ta sieć w której znajduje się host0. Tylko uwaga - host nie stwierdza adresu sieci dla hosta z adresem zewnętrznym! Host lokalny sprawdza tylko na podstawie własnej maski podsieci czy adres docelowy jest zgodny z lokalnym adresem sieci - jeśli nie to kieruje do bramy domyslnej i tyle.