Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

IP - jak to ugryźć.

Hej.

Ostatnio kilka osób zwracało się do mnie z prośbą o wytłumaczenie o co chodzi w tym całym IP. Głównie pytali po co się daje jakieś maski, bramy i inne badziewia i w jaki sposób można sprawdzić czy adresy są w tej samej sieci.
W zasadzie nie jest to skomplikowane, ponadto jest też trochę kalkulatorów, które sprawdzają czy dwa podane adresy są w tej samej sieci czy też nie. Ale to ani trochę nie pomaga zrozumieć zapaleńcom głodnym wiedzy o co chodzi, więc powielę to co jest już w sieci ale nie wiem czy w taki sam sposób ;)

Co jest potrzebne? Karta papieru, ołówek/długopis i ewentualnie kalkulator. Będzie klasycznie, jak w szkole ;)

Wybierzmy sobie jakąś przykładową parę adresów, powiedzmy 214.51.216.55/20 oraz 214.51.156.223/20.

Na pierwszy rzut oka są podobne, ale co to wszystko zawarte w nich oznacza?
Rozłóżmy pierwszy z adresów na normalny dziesiętny system, czyli zapiszemy go w bardziej przystępnej formie dla celów edukacyjnych. (powyższe zapisy są w notacji CIDR)

214.51.216.55/255.255.240.0

Mamy tutaj adres IP hosta/podsieci oraz maskę. Jak zabrać się za maskę i dlaczego raz jest napisane /20 a raz /255.255.240.0? Otóż jest to dokładnie to samo.
Rozpiszmy wszystko binarnie:

255.255.240.0 = 11111111.11111111.11110000.00000000

Explanation: Każdy adres IPv4 składa się od zawsze z 4 oktetów, czyli czterech sekcji, w których znajduje się 8 bitów. 4 sekcje po 8 bitów daje nam 32 bity. Notacja, która jest używana powszechnie w tej chwili została wprowadzona w celu ułatwienia życia.
Explanation2: Policzcie ile jest jedynek. 20? Bardzo dobrze. Więc: /20 po adresie IP w notacji CIDR oznacza, że pierwsze 20 bitów jest zarezerwowanych, a pozostałe 12 bitów jest adresem hosta/podsieci. Analogicznie jeśli maska jest /24 to pierwsze 24 bity są zarezerwowane a pozostałe 8 to adresy hostów.

Idźmy dalej. Tutaj przyda się umiejętność przeliczania systemu dziesiętnego na binarny. Pokrótce wytłumaczę jeden ze sposobów:adres IP: 214.51.216.55 - przeliczymy pierwszy oktet (pierwszy człon adresu IP) na system binarny 128|64|32|16|8|4|2|1 _1 |1 |0 |1 |0|1|1|0 Nie wiem na ile to jest czytelne ale: Jeden ze sposobów radzi aby zapisać sobie na kartce osiem liczb: 128 64 32 16 8 4 2 1 zabawa polega na sumowaniu kolejnych liczb tak, aby na koniec dały nam 214. Więc 128+64=192. Za mało, ale mieści się, więc pod 128 i 64 wpisujemy wartość 1 (prawda) 192+32=224. Ups, za dużo. Pod 32 wpisujemy 0 bo nie pasuje nam za bardzo (0 = fałsz) 192+16=208. Ok mieści się, więc pod 16 wpisujemy 1. 208+8=216. Za dużo, więc wpisujemy 0 pod 8 208+4=212. No już prawie, pod 4 wpisujemy 1 212+2=214. Jupi, trafiony zatopiony, wpisujemy 1 pod 2. Z tego wynika, że pod 1 wpisujemy 0 bo nie ma potrzeby dalszego liczenia ;) pierwszy oktet więc ma wartość 11010110 Wyglądać może nieciekawie ale jest to moim zdaniem najprostszy sposób. Kilka takich przeliczeń i następne już będziecie robić automatycznie w ciągu kilku sekund.

Wracając do naszego adresu, po przeliczeniu wszystkich oktetów, wiemy już, że binarnie wygląda on tak:

Pierwszy adres IP 11010110.00110011.11011000.00110111 drugi adres IP 11010110.00110011.10011100.11011111

Teraz czas na sprawdzenie czy powyższe adresy z maską /20 należą do tej samej sieci. Jak to się robi? Otóż wykonujemy na adresie w wersji binarnej i masce w wersji binarnej działanie logiczne za pomocą operatora 'i' (czyli po ludzku AND).

Gwoli przypomnienia operator logiczny AND zwraca prawdę tylko w jednym przypadku:1 AND 1 = 1 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0

A oto działanie jakie należy wykonaćPierwszy adres IP 11010110.00110011.11011000.00110111 AND 11111111.11111111.11110000.00000000 = 11010110.00110011.11010000.00000000 Drugi adres IP 11010110.00110011.10011100.11011111 AND 11111111.11111111.11110000.00000000 = 11010110.00110011.10010000.00000000

Mamy dwa wyniki. Aby sprawdzić czy adresy IP są w tej samej sieci trzeba je porównać:
A) jeśli są identyczne, adresy należą do tej samej podsieci,
B) jeśli nie są identyczne, adresy nie należą do tej samej podsieci.

11010110.00110011.11010000.00000000 - 214.51.216.55/20 11010110.00110011.10010000.00000000 - 214.51.156.223/20

Odpowiedź: adresy nie należą do tej samej sieci.

Proste? Proste. W chwili obecnej nikt już chyba nie uczy takich działań ale jeśli chcemy zrozumieć i wiedzieć o czym mówimy warto to wszystko znać. Jest mnóstwo aplikacji do policzenia sobie tego wszystkiego ale teraz macie wyłożone jak to wszystko działa ;)

To jeszcze tylko parę słów o wyniku:
Adres sieci pierwszego IP to 214.51.208.0 a adres rozgłoszeniowy (broadcast) to 214.51.223.255
Adres sieci drugiego IP to 214.51.144.0 a adres rozgłoszeniowy to 214.51.159.255
W każdej z tych sieci może znaleźć się max 4096 hostów (w tym 2 zarezerwowane czyli możemy przypisać 4094 adresy)
Widać również, który IP mieści się w którym przedziale i poniekąd jest to potwierdzenie wyniku, że są w różnych podsieciach.

Przykład kalkulatorka odnalezionego w sieci: http://42.pl/ipcalc/

Pytania można zadawać poniżej.
Dziękuję za uwagę i pozdrawiam. 

Komentarze

0 nowych
  #1 14.07.2011 10:20

To teraz przydałaby się druga część tego wpisu, ale o IPv6.

997   5 #2 14.07.2011 10:27

@delusion, wszystko praktycznie to samo tylko zamiast systemu dziesiętnego masz szesnastkowy ;)
adres IPv6 jest 128 bitowy (IPv4 32bity) więc adres IPv6 wygląda np. tak:
1111101111011111.111000111011111.0011101101111111.111111111111111.1111111100011111.111110110111111.1111111111111111.111111101101001
o ile nie popierniczyłem kropek ;D
Potem maskę tak samo, porównujesz i wiesz :)

webnull   9 #3 14.07.2011 10:29

Bardzo fajnie się czytało, czytelny, zrozumiały i przejrzysty wpis :-)

  #4 14.07.2011 10:49

"pierwszy oktet więc ma wartość 110101101" oktet 9-cyfrowy? :D

997   5 #5 14.07.2011 10:59

Ups, wkradł się babol, już poprawiam. Thnx :)

  #6 14.07.2011 12:10

uuuuu admin zapomnial dodac w CSS: overflow:hidden;

Druedain   14 #7 14.07.2011 12:11

I o to chodzi! Bardzo dobry wpis, przystępnie napisany, a autor wie o czym pisać. Długość w sam raz. Gratuluję!

Mnie osobiści zaciekawił na tyle by spróbować pogłębić swoją wiedzę dotyczącą sieci, której to prawie w ogóle nie mam.

PS Przy okazji udało Ci się „haknąć” miejsce na komentarze tworząc zbyt długi „wyraz”, bo się okazało, że nie ma zawijania wierszy, rozmiar pola na komentarz jest stały, a żeby zirytować kogoś można mu zacząć wrzucać komentarze znacznie dłuższe :P

997   5 #8 14.07.2011 14:16

Te komentarze to zmora portalu. Blog z resztą też nie jest super jakościowy ;) Nie rozumiem co stoi na przeszkodzie zintegrowania edytora z jakimś tinyMCE i dodaniu np. update do komentarzy?

A tak to cieszę się, że się podoba ;)

Kpc21   10 #9 14.07.2011 16:51

Jeszcze prościej jest, jeśli we wszystkich oktetach maski mamy same jedynki lub zera, a więc w zapisie dziesiętnym mamy tylko 255 i 0, a zapis CIDR-owy jest podzielny przez 8 - wtedy tego wszystkiego nie trzeba przeliczać na system binarny. Zamiast bitów porównujemy oktety - te gdzie w masce jest 255.

"misi0misi0 (niezalogowany) | 14.07.2011 12:10#6
uuuuu admin zapomnial dodac w CSS: overflow:hidden; "
Wydaje mi się, że to celowe, przy overflow: hidden; część wpisu byłaby niewidoczna.

Jeśli chodzi o IPv6, to tych różnic tam trochę jest (może akurat nie w zakresie opisanym w tym wpisie, tutaj jest tak samo z tym, że zamiast zapisu dziesiętnego z kropkami stosuje się szesnastkowy z dwukropkami, część adresu z samymi zerami można pomijać, a maskę zapisuje się tylko w notacji CIDR-owej) - i nie do końca je rozumiem. Naprawdę ktoś mógłby to wyłożyć.

manieKMP   7 #10 14.07.2011 19:30

@misi0misi0, zamiast "overflow:hidden;", które ucięłoby treść, lepiej byłoby zastosować "word-wrap: break-word;" (podobno działa na każdej przeglądarce, wliczając to nawet IE5 ;)).

A co do wpisu, dobrze jest odświeżyć sobie czasem wiedzę na pewne tematy ;).
Jest tylko "chyba" drobny lub celowy "błąd" w przykładzie (albo się u mnie wrodzona głupota odzywa, na równi ze ślepotą i czepialstwem ;)), ale na pierwszy rzut oka widzę, że adresy nie są w tej samej sieci. Jeśliby przyjąć "hipotetycznie", że oba adresy są z klasy C (a tak chyba jest, jeśli mnie pamięć nie myli, dla kl.C pierwszy oktet jest z przedziału 192-223), więc trzeci oktet przykładu (216 i 156) wskazuje na różne sieci (dla kl. C trzy pierwsze oktety określają sieć, czwarty jest dla hosta).
Więc jeśli się nie mylę w powyższym, to najprostszą/najszybszą metodą rozpoznania dla zwykłego "zjadacza sieci", byłoby wiedzieć:
1. że adresy IPv4 składają się z czterech oktetów
2. jaki jest przedział/zakres adresowy pierwszego oktetu dla klasy A i C (dla A jest to od 1 do 127, dla C od 192 do 223, a B to już logicznie 128-191)
3. że dla klasy A pierwszy oktet określa sieć (reszta hosta), dla kl. B sieć i host ma tyle samo oktetów, a dla C trzy pierwsze oktety są dla sieci (ostatni/czwarty dla hosta, który w ogóle "nas" nie interesuje ;))
4. różnice w masce podsieci, wespół z pkt. 3 (z tym że oktety hosta są zerowe, a sieci nie), wskazują na inną sieć/podsieć.

A może się mylę i jest gdzieś haczyk, wyjątek od reguły, jak to w j.polskim lub matematyce bywa :)

997   5 #11 14.07.2011 21:09

@manieKMP,
Ja akurat przedziałów klasowych nie pamiętam, bo nie chce mi się ich pamiętać ;) Poza tym jak ktoś kiedyś zauważył jest to marnotrawstwo miejsca i stąd też posługujemy się dzisiaj CIDR (Classless Inter Domain Routing - kluczowe słowo: classless ;) ).
Poza tym można zrobić przykład z takimi adresami i taką maską, że nie będzie to widoczne na pierwszy rzut oka :)
Ale jeśli nauczysz się przedziałów i wszystkich interwałów to jak najbardziej można pewne rzeczy zobaczyć od razu :)

Karach   3 #12 15.07.2011 09:07

Hehe, to mi przypomniało wspomnienia z macierzystej uczelni (WAT). :D Na pewnej laborce z wejściówki dostałem lachę właśnie za nieznajomość tego wszystkiego, co tak zgrabnie opisałeś. Oczywiście na poprawce już miałem to w małym palcu. ;)

NRN   9 #13 15.07.2011 11:27

Byle nie tinyMCE, zamula to badziewstwo i strasznie nieporęczne, przynajmniej dla mnie. Prosty zwykły edytorek, taki jak w podstawowych forach phpBB 2/3 wystarczyłby w zupełności.

Odnośnie wpisu, trochę się zdziwiłem jego popularnością :P Sądziłem, że na zajęciach Informatyki w liceach o profilu mat-fiz-inf, oraz na studiach technicznych (ba, nawet na Budowlance jest "Informatyka" z sieciami :D) tłumaczą co i jak... Jak widać, z systemem edukacji jest coraz to gorzej u nas w Polsce...

Tak czy siak, wpis bardzo ładny i przejrzysty, świetny na małe, niezapowiedziane przypomnienie bez latania po wikipediach i innych "źródłach wiedzy" :)

997   5 #14 15.07.2011 12:49

@NRN, ja to akurat miałem dopiero na studiach i to już na etapie kiedy zostało nas niewielu na roku ;) Fakt jest taki, że to jest proste dla kogoś kto miał do czynienia z programowaniem lub logiką lub matematyką oraz kiedyś raz coś sprawdzał w ifconfigu lub w Windowsie w TCP/IP ;)

Właściwie to można to bardziej potraktować jako ciekawostkę lub pomoc naukową jeśli ktoś będzie miał przedmiot w stylu "sieci komputerowe", bo tak na prawdę tekst traktuje tylko o wyjaśnieniu składni adresu IP. Jest jeszcze multum rzeczy, które można o tym powiedzieć. Jak znajdę chwilę albo wymyślę co można jeszcze ciekawego napisać to napiszę ;)
Myślałem żeby napisać coś przystępnego o routerach, bo też się ludzie do mnie zgłaszają, że potrzebują kupić router żeby rozdzielić sygnał, albo żeby mieć dostęp do internetu bezprzewodowego... Pytają o to często ludzie związani z IT więc może jakieś ludzkie wyjaśnienie i rozróżnienie pewnych kwestii by się przydało ;)

W_tym_temaciE   5 #15 18.07.2011 08:12

@997
Wordpress od tych błędów też nie jest wolny !!!!!

  #16 18.07.2011 12:03

A w masce te jedynki zawsze są koło siebie, tak? i tylko od lewej? Jak tak to wszystko jasne.

The_Game   4 #17 08.08.2011 00:11

997 jeśli chodzi o naukę tego typu działań to się zdziwisz bo uczą! :D. Chodzę do technikum elektronicznego jestem na teleinformatyku i idę do 3. klasy. Dzięki wielkie za proste wytłumaczenie podstaw. Przynajmniej cokolwiek będę już wiedział. Jeszcze raz wielkie dzięki!

cybe   2 #18 09.08.2011 08:52

Dzięki za wpis, fajnie napisany. To nie jest trudna sprawa podzielić sieci na podsieci. Tylko ja właśnie nie rozumiem po co to robic. Mógłby ktoś wyjaśnic na praktyczbnym przykładzie jaki jest sens dzielenia np. publicznego adresu IP na podsieci ?

  #19 07.11.2012 21:21

dalej tego uczą. w technikach informatycznych.

  #20 08.06.2013 18:04

Uczą tego w gimnazjum

  #21 11.06.2014 18:27

alert("ELO");