IPv4 and IPv6 addresses

4 may 2023
Jakub Rojek Jakub Rojek
Photo by NASA on Unsplash (https://unsplash.com/photos/1lfI7wkGWZ4)
Categories: Administration, IT fundamentals

Myśląc obecnie o komputerze praktycznie nierozerwalnie wiążemy go z dostępem do Internetu. Coś, co kiedyś było luksusem lub ekstremalnie wolne, dzisiaj jest codziennością, na wyciągnięcie ręki, a światłowód nie jest już czymś futurystycznym, tylko fizycznie obecnym w wielu domach. Technologie sieciowe są tak popularne i powszechne, że korzystają z nich praktycznie wszyscy, a w takich sytuacjach okazuje się, że większość nie wie, jak to tak naprawdę działa. Oczywiście, nie wymagajmy od nikogo szczegółowej znajomości budowy kabla sieciowego czy standardu Wi-Fi, bo to nawet mało który informatyk zna i potrzebuje na co dzień. Ale jest takie pojęcie, które często pojawia się czy to w poradnikach, czy przy ustawianiu czegoś w domu, czy podczas korzystania z pomocy technicznej.

Dzisiaj przypomnimy sobie lub dowiemy się, czym jest adres IP oraz jak jest zbudowany. I dlaczego właściwie innym adresem posługujemy się w sieci domowej lub biurowej, a inny jest widoczny na zewnątrz. A także dlaczego IPv4 już powoli przestaje być wystarczające i warto cokolwiek wiedzieć o IPv6.

Czym jest adres IP?

Krótko mówiąc - jest to adres każdego urządzenia podpiętego do sieci, przy czym trzeba zdać sobie sprawę z kilku rzeczy:

  • urządzenie może mieć więcej niż jeden adres IP naraz,
  • adres IP może się zmieniać,
  • urządzenie zwykle nie ma unikalnego adresu IP w kontekście świata,
  • nie zawsze urządzenie jest widoczne w Internecie pod posiadanym adresem IP,
  • "sieć" niekoniecznie musi oznaczać Internet.

To teraz wytłumaczmy to na spokojnie.

Gdy podpinacie urządzenie do sieci przez kabel ethernetowy lub Wi-Fi, to zazwyczaj przyłączacie je do routera lub innej maszynki rozdzielającej sygnał. Dopiero ta jest podpinana do Internetu, a więc sieci globalnej. To oznacza, że nasz komputer czy smartfon (podpięty przez Wi-Fi) zazwyczaj nie funkcjonuje bezpośrednio w eterze - ma do niego dostęp, ale skrywa się właśnie za routerem, który stanowi jedyny kontakt ze światem. Łączy on zwykle wiele urządzeń, które w ten sposób znajdują się w jednej sieci lokalnej. Zobaczmy następujący diagram:

Diagram pokazujący dwie sieci lokalne (obie mają po trzy komputery z adresami 192.168.1.2, 192.168.1.3, 192.168.1.4), z których każda podpięta jest do routera o adresie lokalnym 192.168.1.1 oraz unikalnym adresie globalnym. Dopiero routery są podpięte do Internetu.

Widzimy tutaj dwie sieci lokalne, z których każda składa się z trzech komputerów. Maszyny w tym obszarze nie mają bezpośredniego dostępu do Internetu - muszą polegać na routerze, który zazwyczaj jest podpięty jeszcze dodatkowo do tzw. ISP (ang. Interner Service Provider, dostawcy usług internetowych), a dopiero ten pozwala komunikować się z globalną wioską. Każde widoczne urządzenie posiada swój adres IP, przy czym obserwujemy, że w sieciach lokalnych te adresy się powtarzają, a niektóre urządzenia mają wręcz dwa. O co tutaj chodzi?

Adresy IP mogą być publiczne lub prywatne. Te pierwsze, jaka sama nazwa wskazuje, są lokalizacjami, które są publicznie dostępne i pod tym adresem dany komputer czy urządzenie jest widoczny w Internecie (o ile, oczywiście, nie ma innych zabezpieczeń). Jednocześnie, ten adres może się zmieniać - wiedzą o tym doskonale użytkownicy domowi, którzy mogli zauważyć, że po każdym restarcie routera zyskują nowy globalny adres sieciowy (można to sprawdzić np. na tej stronie). O tym, dlaczego tak się dzieje, jeszcze dzisiaj napiszemy. Natomiast adresy prywatne są używane tylko i wyłącznie w obrębie sieci lokalnej. Dlatego te same liczby mogą powtarzać się w różnych sieciach lokalnych, ale w obrębie jednej muszą już być unikalne. Z kolei adresy publiczne muszą być niepowtarzalne globalnie. I tutaj zaczyna się zabawa.

Ponieważ adresy IP mogą być z zakresu 0.0.0.0 do 255.255.255.255 (przynajmniej czysto teoretycznie, bo w praktyce ten przedział jest mniejszy), to możliwych kombinacji jest 4 228 250 625, a to już od dawna o wiele za mało, aby każde urządzenie na świecie podpięte do Internetu miało swój specyficzny identyfikator (tę rolę przejął poniekąd adres MAC, a więc numer karty sieciowej, choć poleganie na nim też nie jest pozbawione wad). W związku z tym należało coś zrobić i w ten sposób wymyślono, aby w jednej serii numeracji mogły powstawać podserie, czyli właśnie sieci lokalne. Tym niemniej, oznaczało to wyznaczenie zakresów, w obrębie których mogą powstawać adresy prywatne. Są to:

  • 10.0.0.0 - 10.255.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

Najczęściej mamy do czynienia z trzecim rodzajem adresów, który pozwala na tworzenie sieci do 65 025 urządzeń, choć w praktyce w większości zastosowań już sieć dla 256 urządzeń jest zdecydowanie za duża. O tym, dlaczego stworzone zostały aż trzy pule adresów prywatnych, można poczytać w kontekście tzw. klas adresów IP.

Warto wiedzieć, że to też nie jest tak, że jeśli np. w zakresie od 192.168.1.0 do 192.168.1.255 (najczęściej spotykanym w domach) mamy 256 możliwości, to faktycznie tyle urządzeń można podłączyć. Niektóre adresy są bowiem zarezerwowane. I tak:

  • 192.168.1.0, a więc pierwszy adres podsieci to właśnie adres podsieci, a więc tak jakby grupowy adres, który nie jest przydzielany żadnemu urządzeniu.
  • 192.168.1.1 zwyczajowo jest adresem routera.
  • 192.168.1.255, czyli ostatni z puli, to tzw. adres rozgłoszeniowy do wiadomości broadcastowych, czyli obejmujących całą sieć.

A zatem w takiej typowej sieci lokalnej, poza routerem może zostać podpiętych do 253 konkretnych urządzeń. W mniejszych firmach jest to całkowicie wystarczające, ale w większych może być już problematyczne.

Router jest specyficznym przypadkiem - z jednej strony posiada adres lokalny, gdyż należy do sieci lokalnej. Z drugiej - musi być dostępny z poziomu sieci globalnej (a przynajmniej w teorii), stąd ma także adres publiczny. Nawiasem mówiąc, komputery w sieci lokalnej też mają adres publiczny - identyczny, jak ten, który ma router. Zresztą, można ten identyfikator wykorzystać także do tego, aby uzyskiwać dostęp do usług uruchomionych w sieci lokalnej - czyni się to poprzez funkcję przekierowania portów, czego jednak tutaj nie będziemy omawiać.

Budowa adresu IPv4 i podział na podsieci

Na pewno już zauważyliście, że adres IP (a właściwie IPv4, do czego jeszcze wrócimy) jest zbudowany w specyficzny sposób. To cztery bajty lub - jak często się mówi - cztery oktety, które są tak nazywane, ponieważ każdy z nich składa się z ośmiu bitów. Dzięki temu, że każda część jest jednym bajtem, nie ma mowy o tym, aby pojedynczy fragment adresu IP miał liczbę większą niż 255 (zakres to 0-255).

Z binarną budową adresu IP związane jest też zagadnienie podziału sieci na podsieci. W ten sposób w ramach jednej sieci można tworzyć inne, osobne "dzieci". To z kolei łączy się z pojęciem maski podsieci lub tzw. notacją CIDR, która określa, jak wiele bitów zostanie przeznaczonych na samą sieć, a ile będzie do rozdysponowania dla urządzeń w środku.

Pokażmy przykład z adresem 192.168.1.96, który w notacji binarnej zapiszemy następująco:

11000000.10101000.00000001.01100000

Co ważne, widzimy, że na końcu mamy pewną liczbę zer. Dzięki temu możliwy będzie łatwy podział sieci. Następnie potrzebujemy maskę, a więc adres lub liczbę bitów, które będą stanowiły podstawę sieci. Zazwyczaj maskami są wielokrotności ósemki, a więc 8, 16 lub 24 (w zapisie standardowym: 255.0.0.0, 255.255.0.0 lub 255.255.255.0). Weźmy dla przykładu jednak coś niestandardowego, a więc maskę 255.255.255.240 lub w zapisie CIDR /28. Zapis binarny jest następujący:

11111111.11111111.11111111.11110000

Widzimy sporo jedynek na początku oraz zera na końcu. To właśnie te zera pokazują nam bity w dzielonym adresie, które będą przeznaczone na podsieć. A zatem działanie wygląda następująco:

Bazowy adres IP: 11000000.10101000.00000001.01100000
Wydzielenie zer: 11000000.10101000.00000001.0110 0000
Maska podsieci: 11111111.11111111.11111111.1111 0000

Zakres dla podsieci: od 11000000.10101000.00000001.0110 0000
do 11000000.10101000.00000001.0110 1111
Sieć ma zakres od 192.168.1.96 do 192.168.111, a więc pomieści 16 - 2 urządzeń wraz z routerem.

Na końcu mała prywata - jeśli jesteście studentami Politechniki Poznańskiej i tamtejszego kierunku informatycznego, to uwierzcie mi - wiedza o dzieleniu na podsieci będzie Wam niezmiernie przydatna na odpowiednim przedmiocie w czasie studiów inżynierskich. Zawsze możecie też podeprzeć się takimi kalkulatorami.

DHCP oraz stały adres

Wspomniałem wcześniej o tym, że jeśli ponownie uruchamiamy nasz router, to bardzo często za każdym razem dostaniemy inny publiczny adres IP. Jeszcze łatwiej zaobserwować to w sieci lokalnej - te same podłączone urządzenia mogą mieć inne adresy w różnych dniach lub godzinach (dokładniej po restarcie sieci). Odpowiada za to tzw. protokół DHCP (ang. Dynamic Host Configuration Protocol), który zdejmuje konieczność ręcznego przyznawania adresów IP i czyni to automatycznie, korzystając z puli wolnych miejsc w danym momencie. Nawiasem mówiąc, ta sama zasada działa na poziomie routera - przypomnijmy bowiem, że jeśli podłączamy router do Internetu, to tak naprawdę łączy się on najpierw z ISP (a więc naszym dostawcą Internetu), czyli można powiedzieć, że ma przyznawany adres IP w lokalnej sieci danego dostawcy. To tak w dużym skrócie, gdyż mechanizm jest bardziej skomplikowany i wychodzi poza zakres nie tylko tego tekstu, ale też obszaru, z którym zwykle mają do czynienia programiści.

Tym niemniej, dynamicznie przydzielany adres IP jest wygodny, ale bywają sytuacje, w których jest niewystarczający i potrzebne (lub nawet wymagane) jest przydzielenie stałego adresu. W przypadku sieci lokalnej nie jest to problemem - na routerze można wymusić przypisanie konkretnego miejsca urządzeniu o danym adresie MAC (identyfikującym kartę sieciową, a więc w skrócie - komputer lub smartfona). Schody zaczynają się w przypadku, kiedy to nasz router ma przedstawiać się w Internecie niezmiennym adresem - jest to usługa, którą oferują dostawcy internetowi za dodatkową opłatą. W przypadku, kiedy chcemy mieć dostęp do sieci lokalnej z zewnątrz, stały adres jest wręcz niezbędny, gdyż za pomocą przekierowania portów umożliwia korzystanie z pewnych usług lub np. udostępnienie ich klientowi. Do pewnego stopnia jest to możliwe również bez stałego adresu (np. poprzez DDNS), ale zdecydowanie bardziej utrudnione.

IPv6

Adresy, o których do tej pory rozmawialiśmy, należą do tzw. protokołu IPv4. Tak, jak pisałem, jest to pula ponad 4 miliardów adresów, która... już dawno się wyczerpała. Ba - już na początku lat dziewięćdziesiątych było wiadomo, że nie zaspokoi globalnego zapotrzebowania na urządzenia podpięte do sieci. Dlatego dawno rwmu zaczęto opracowywanie nowego standardu i on powstał. Problem w tym, że nie jest używany.

IPv6, bo o nim mowa, posiada adresy zapisane nie w postaci 4 bajtów (a więc 32 bitów), tylko 16 bajtów (128 bitów). Ponieważ zapisywanie takich konstruktów byłoby dość problematyczne w dziesiętnej formie, wyglądają one bardzo podobnie jak adresy MAC. Mianowicie, jest tutaj wykorzystywany system heksadecymalny i dwukropki, oddzielające dwubajtowe fragmenty. Przykładowo może to wyglądać tak:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

Co więcej, w przypadku fragmentów posiadających same zera można je omijać, znacząco skracając zapis. No dobrze, ale w takim razie dlaczego ciągle rządzi IPv4? Okazuje się, że to wina infrastruktury i dostawców Internetu - ponieważ przez lata wszystko było dostosowywane do IPv4, to w momencie nadejścia IPv6 świat był na to gotowy niczym polscy drogowcy na zimę. Czyli nie był. W związku z tym zbyt mały procent ISP obsługuje "szóstki", przez co trudno z nich realnie korzystać. Co prawda, istnieje możliwość tłumaczenia wpisów z jednego protokołu na drugi, ale zwyczajnie w większości prawdopodobnie macie wyłączoną obsługę tych dłuższych adresów. Możecie to sprawdzić np. tutaj. Z kolei dłuższy wywód dotyczący tej adresacji znajdziecie w Wikipedii lub w dokumentacji usług serwerowych Mikrus, które z tej formy korzystają i wyjaśniają dlaczego.

Jak sprawdzić swój lokalny adres IP?

Jest to dość proste, jeśli korzystacie z terminala i spokojnie - nie trzeba do tego być programistą. Interesować będą Was trzy polecenia. Najpierw podam wersje dla Windowsa, natomiast przede wszystkim trzeba wspomnieć o tym, jak w tym systemie można otworzyć konsolę - robi się to poprzez "Uruchom" (WIN + R -> cmd -> ENTER).

Trzy popularne polecenia, które mogą nas interesować, to:

  • ipconfig - sprawdzenie ustawień naszych kart sieciowych (osobno interfejsów przewodowych i bezprzewodowych), w tym adresu IP. Jeśli do tego dodamy /all, to uzyskamy więcej informacji, w tym adresy MAC (physical address).
  • ping [adres domenowy lub adres IP] - polecenie odpytujące inne urządzenie w sieci, pozwalające sprawdzić połączenie. Często przydatne, jeśli podejrzewamy utratę dostępu do sieci. Istnieją urządzenia, które blokują pingi (odpowiada za nie protokół ICMP), mimo że sam bez problemu są widoczne w sieci.
  • tracert [adres internetowy] - ciekawsza wersja poprzedniego polecenia, które pozwala prześledzić drogę od naszego komputera do np. serwera Google'a. Niektórym otwiera oczy na to, ile przystanków komunikat zalicza po drodze.

W przypadku Linuxa te polecenia to odpowiednio ifconfig (lub ip a), ping oraz traceroute.

Czy IP zawsze jest związany z siecią?

Na końcu warto wspomnieć, że "IP", o którym tutaj rozprawialiśmy, rozwija się jako Internet Protocol. Jest dla wielu oczywiste wyjaśnienie tego skrótu i nawet nie zdają sobie sprawy, że w siostrzanej branży pod tymi dwoma literkami kryje się zupełnie coś innego. A mowa o branży gier wideo lub filmów oraz terminie Intellectual Property, oznaczającym własność intelektualną. Często mówi się bowiem, że "dane IP należy do firmy X", co należy odczytywać jako bycie właścicielem danej marki. Warto o tym wiedzieć, przeglądając materiały w Internecie.

Podsumowanie

Ten tekst miał na celu spokojne wprowadzenie początkujących w świat adresów IP i uświadomienie im, że takie coś w ogóle istnieje i może być przydatne np. przy kontakcie z obsługą techniczną lub podczas rozbudowy własnej sieci domowej lub firmowej. Często taka wiedza jest bezcenna i umożliwia np. lepsze zrozumienie tego, co można ustawić w routerze.

Pozdrawiam i dziękuję - Jakub Rojek.

We can do quite a bit and what is more, our skills and resources are at your disposal. Take a peek at what we can offer you.

About author

Jakub Rojek

Lead programmer and co-owner of Wilda Software, with many years of experience in software creation and development, but also in writing texts for various blogs. A trained analyst and IT systems architect. At the same time he is a graduate of Poznan University of Technology and occasionally teaches at this university. In his free time, he enjoys playing video games (mainly card games), reading books, watching american football and e-sport, discovering heavier music, and pointing out other people's language mistakes.

Jakub Rojek