IPv4

IPv4 () – czwarta wersja protokołu komunikacyjnego IP przeznaczonego dla Internetu. Identyfikacja hostów w IPv4 opiera się na adresach IP. Dane przesyłane są w postaci standardowych datagramów. Wykorzystanie IPv4 jest możliwe niezależnie od technologii łączącej urządzenia sieciowe – sieć telefoniczna, kablowa, radiowa itp. IPv4 znajduje się obecnie w powszechnym użyciu. Dostępna jest również nowsza wersja – IPv6. Opis czwartej wersji protokołu IP znajduje się w . W modelu TCP/IP protokół IPv4 znajduje się w warstwie Internetu, której odpowiada warstwa sieci w modelu OSI.

Nagłówek IP 

 Wersja (4 bity) - (ang. Version) pole opisujące wersję protokołu, jednoznacznie definiujące format nagłówka.
 Długość nagłówka (4 bity) - (ang. Internet Header Length) długość nagłówka IP wyrażona w 32-bitowych słowach; minimalny, poprawny nagłówek ma długość co najmniej 5. 
 Usługi zróżnicowane i ECN, dawniej Typ usługi (8 bitów) - zgodnie z oryginalną specyfikacją RFC 0791, (ang. Type of Services) pole wskazujące jaka jest pożądana wartość QoS dla danych przesyłanych w pakiecie. Na podstawie tego pola, routery ustawiają odpowiednie wartości transmisji. Jak wprowadzają nowsze opracowania, m.in.  oraz , pole to zostało podzielone na Usługi zróżnicowane (ang. Differentiated Services, 6 bitów) oraz ECN (ang. Explicit Congestion Notification, 2 bity). Pierwsze trzy bity pola Usługi zróżnicowane informują o priorytecie (gdzie 111 to najwyższy, przeznaczony do sterowania siecią, a 000 - zwyczajny priorytet). Kolejne trzy bity, oznaczone: D - małe opóźnienie (ang. delay), T - duża przepustowość (ang. throughput) i R - wysoka niezawodność (ang. reliability), ustawione na wartość 1, oznaczają, że dla danego pakietu szczególnie ważny jest dany parametr. Bity pola ECN ustawione na wartość 1 informują o przeciążeniu bufora.

 Całkowita długość pakietu (16 bitów) - (ang. Total Length) długość całego datagramu IP (nagłówek oraz dane); maksymalna długość datagramu wynosi 216 - 1 = 65535. Minimalna wielkość datagramu jaką musi obsłużyć każdy host wynosi 576 bajtów, dłuższe pakiety mogą być dzielone na mniejsze (fragmentacja).
 Numer identyfikacyjny (16 bitów) - (ang. Identification) numer identyfikacyjny, wykorzystywany podczas fragmentacji do określenia przynależności pofragmentowanych datagramów
 Flagi (3 bity) - (ang. Flag) flagi wykorzystywane podczas fragmentacji datagramów. Zawierają dwa używane pola: DF, które wskazuje, czy pakiet może być fragmentowany oraz MF, które wskazuje, czy za danym datagramem znajdują się kolejne fragmenty.
 Przesunięcie (13 bitów) - (ang. Fragment Offset) w przypadku fragmentu większego datagramu pole to określa miejsce danych w oryginalnym datagramie; wyrażone w jednostkach ośmiooktetowych
 Czas życia (8 bitów) - (ang. Time to live) czas życia datagramu. Zgodnie ze standardem liczba przeskoków przez jaką datagram znajduje się w obiegu. Jest zmniejszana za każdym razem, gdy datagram jest przetwarzany w routerze - jeżeli czas przetwarzania jest równy 0, datagram jest usuwany z sieci (nie przekazywany dalej) o czym nadawca usuniętego pakietu jest informowany zwrotnie z wykorzystaniem protokołu ICMP. Istnienie tej wartości jest konieczne, zapobiega krążeniu pakietów (patrz Burza broadcastowa) w sieci.
 Protokół warstwy wyższej (8 bitów) - (ang. Protocol) informacja o protokole warstwy wyższej, który jest przenoszony w polu danych datagramu IP.
 Suma kontrolna nagłówka (16 bitów) - (ang. Header Checksum) suma kontrolna nagłówka pakietu, pozwalająca stwierdzić czy został on poprawnie przesłany, sprawdzana i aktualizowana przy każdym przetwarzaniu nagłówka.
 Adres źródłowy (32 bity) i adres docelowy (32 bity) - (ang. Source/Destination IP Address) pola adresów nadawcy i odbiorcy datagramu IP.
 Opcje (32 bity) - (ang. Options) niewymagane pole opcji, opisujące dodatkowe zachowanie pakietów IP
 Wypełnienie - (ang. Padding) - opcjonalne pole wypełniające nagłówek tak, aby jego wielkość była wielokrotnością 32, wypełnione zerami.

Adres IP 
Aby możliwa była komunikacja w protokole IP, konieczne jest nadanie każdemu hostowi adresu IP czyli unikalnego identyfikatora, który pozwoli na wzajemne rozpoznawanie się poszczególnych uczestników komunikacji. Użytkownicy Internetu nie muszą znać adresów IP. Nazwa www.wikipedia.org jest tłumaczona na adres IP dzięki wykorzystaniu protokołu DNS. Adres IP jest dostarczany każdemu użytkownikowi przez dostawcę internetu (ISP). Może być przydzielany statycznie lub dynamicznie. Zapotrzebowanie na adresy IP jest tak duże, że pula nieprzydzielonych adresów zaczyna się wyczerpywać.

Adresy i maski 
W IPv4, czyli obecnym standardzie adresowania internetu, adres IP to liczba 32-bitowa (od 0 do 4294967295), zapisywana w porządku big endian. Liczba ta jest zazwyczaj zapisywana jako 4 oddzielne jej bajty, zwane oktetami, ponieważ w postaci binarnej mają one osiem bitów. Te osiem bitów daje 256 kombinacji, więc każdy oktet przedstawia liczbę od 0 do 255. 

Najpopularniejszy sposób zapisu adresów IP, to przedstawianie ich jako 4 dziesiętnych liczb od 0 do 255 oddzielonych kropkami. W rzeczywistości komputery traktują adres Wikipedii jako liczbę 32-bitową: 3482223596. Taki zapis jest mało czytelny, wobec czego stosuje się podział adresu IP na cztery oktety. Adres Wikipedii zapisujemy binarnie:
 11001111  10001110  10000011  11101100 
po czym każdą grupę 8-bitów przekształcamy do postaci dziesiętnej:
 207       142       131       236

Z adresowaniem IP wiąże się pojęcie maski sieciowej. Wyobraźmy sobie sieć złożoną z 3 komputerów o adresach:
 Komputer 1: 192.168.1.1 
 Komputer 2: 192.168.1.2
 Komputer 3: 192.168.1.3 
Początek adresu dla wszystkich z nich jest ten sam, a końcówka się zmienia. Aby ściśle zdefiniować adresy przynależne do danej sieci wymyślono pojęcie maski podsieci. Umówiono się, że określona liczba pierwszych bitów adresu IP ma być taka sama, a pozostałe bity w sieci mogą się różnić. W ten sposób powstaje proste kryterium, pozwalające komputerom na określenie swojego położenia na podstawie adresu. Maskę sieci zapisuje się podobnie jak adres IP. Dla przykładu
 255.255.255.0
co binarnie daje:
 11111111  11111111  11111111  00000000
   255        255       255        0
Jeżeli komputery oprócz komunikacji w swojej sieci lokalnej mają łączyć się z internetem, to maska sieciowa staje się bardzo ważna. Gdy urządzenie sieciowe stwierdzi, że adres docelowy, z którym chce wymieniać dane nie pasuje do maski, to próbuje się z nim łączyć przez bramę sieciową. Porównywanie opiera się na zerowaniu w adresie bitów równych zeru w masce (logiczny AND bitów maski i adresu IP). Jeżeli komputer 3 łączy się komputerem 2, to wykonuje następujące operacje:
 Maska             11111111  11111111  11111111  00000000
                      255       255       255       0
 Mój   IP          11000000  10101000  00000001  00000011
                      192       168        1        3
 Wynik a           11000000  10101000  00000001  00000000
                      192       168        1        0
 Maska             11111111  11111111  11111111  00000000
                      255       255       255       0
 Docelowy IP       11000000  10101000  00000001  00000010
                      192       168        1        2
 Wynik b           11000000  10101000  00000001  00000000
                      192       168        1        0
Wynik a oraz Wynik b są równe wobec czego komputer 3 wie, że komputer 2 jest w tej samej podsieci. Jeżeli komputer 3 będzie chciał pobrać stronę z serwera Wikipedii to operacja porównania będzie następująca:
 Maska             11111111  11111111  11111111  00000000
                      255       255       255       0			
 Mój   IP          11000000  10101000  00000001  00000011
                      192       168        1        3 
 Wynik a           11000000  10101000  00000001  00000000
                      192       168        1        0 
 Maska             11111111  11111111  11111111  00000000
                      255       255       255       0			
 IP Wikipedii      11001111  10001110  10000011  11101100
                      207       142       131      236
 Wynik b           11001111  10001110  10000011  00000000
                      207       142       131       0
Wynik a, oraz wynik b są różne. W takiej sytuacji komputer 3 będzie się próbował połączyć z Wikipedią przez skonfigurowaną w nim bramę sieciową.

Rozdzielanie adresów (historyczne) 
UWAGA: Poniższa tabela uwzględnia adres sieci oraz adres rozgłoszeniowy jako adresy hostów. Poniższa tabelka nie uwzględnia adresów specjalnych, wykluczonych z dowolnego użycia.

Od roku 1997 podział na klasy sieci jest nieaktualny i nieużywany. Obecnie adresy IPv4 są przydzielane bez zwracania uwagi na klasy sieci - według założeń CSDIR Classless Routing -  (CIDR Classless Inter-Domain Routing) i .
Podział nie jest już też używany przez urządzenia, role klas przejęły maski. Obecnie cały internet funkcjonuje na routingu bezklasowym (CSDIR).
Poniższy podział na klasy (A,B,C,D) jest historyczny:

W adresach klasy A, tylko pierwszy oktet wskazuje adres sieci; pozostałe trzy oktety opisują unikatowy adres węzła w sieci. Choć jest tylko 126 adresów sieci klasy A, każdy taki adres może obejmować w przybliżeniu 17 milionów węzłów. Adresy klasy A zostały przyznane organizacjom rządowym i wielkim instytucjom.

Adresy klasy B używają pierwszych dwóch oktetów do wskazania adresu sieci i ostatnich dwóch jako unikatowego węzła sieci. Z uwagi na większą długość, adresów klasy B jest więcej, ale w ramach każdego można unikatowo opisać tylko około 65 000 węzłów.

W adresach klasy C używa się pierwszych trzech oktetów jako adresu sieciowego i tylko ostatniego oktetu jako adresu węzła. Stąd istnieje wiele dostępnych adresów klasy C, ale każdy z nich może być użyty tylko do 254 węzłów.

Rozdzielanie adresów (współczesne) 
Ze względu na skończoną ilość adresów oraz konieczność ich agregacji dla celów uproszczenia trasowania powstały Regionalne Rejestry Internetowe (ang. RIR) – organizacje zajmujące się przydzielaniem puli adresów dla poszczególnych dostawców Internetu (ang. ISP). Organizacją nadrzędną jest Agencja Zarządzania Numeracją Internetową (ang. IANA), która zajmuje się dystrybucją poszczególnych pól adresowych. Do organizacji regionalnych należą:
 APNIC (ang. Asia Pacific Network Information Centre) – dla rejonu Azji i Pacyfiku,
 ARIN (ang. American Registry for Internet Numbers) – dla rejonu Ameryki Północnej,
 LACNIC (ang. Regional Latin-American and Caribbean IP Address Registry) – dla rejonu Ameryki Łacińskiej i wysp Karaibskich,
 RIPE (fr. Réseaux IP Européens) – dla rejonu Europy, Bliskiego Wschodu i centralnej Azji,
 AfriNIC – dla rejonu Afryki (Rozpoczęła działanie 22 lutego 2005, wcześniej dystrybucją zajmowały się RIPE NCC, APNIC i ARIN.

Jeżeli ISP potrzebuje więcej adresów zwraca się do właściwej organizacji regionalnej i otrzymuje kolejny zakres numerów IP. Dla przykładu ARIN przydzielił adresy od 64.78.200.0 do 64.78.207.255 firmie Verado, Inc, która przekazała pulę od 64.78.205.0 do 64.78.205.15 firmie Bomis. Bomis adres 64.78.205.6 udostępnił Wikipedii.

Powszechnie panuje pogląd, że pula dostępnych adresów jest na wyczerpaniu, jednak w oficjalnym zestawieniu zajętości adresacji IP jest jeszcze wiele bloków zarezerwowanych przez IANA ().

Adresy należące do puli 127.0.0.0/8 (127.x.x.x) są przypisane do urządzenia loopback i zawsze odnoszą się do komputera lokalnego, tak zwany localhost. Adres 0.0.0.0 to adres domyślny (ang. default).

Prywatne adresy IPv4 
Istnieje pula prywatnych adresów IP. Mogą być one wykorzystane tylko w sieciach lokalnych. Infrastruktura Internetu ignoruje te adresy IP. IANA (Internet Assigned Numbers Authority) zarezerwował następujące trzy bloki przestrzeni adresów IP dla prywatnych sieci:
 10.0.0.0 - 10.255.255.255 – dla sieci prywatnych dawniej z klasy A (maska zakresu: 255.0.0.0)
 172.16.0.0 - 172.31.255.255 – dla sieci prywatnych dawniej z klasy B (maska zakresu: 255.240.0.0)
 192.168.0.0 - 192.168.255.255 – dla sieci prywatnych dawniej z klasy C (maska zakresu: 255.255.0.0)

Adresy prywatne można wykorzystywać w routerach w sieciach lokalnych, ale nie działają one w publicznej części internetu. Jeżeli administrator sieci lokalnej przydzieli swoim komputerom adresy IP z puli prywatnej, to routery mogą rozpoznać kiedy komputery chcą się łączyć z internetem. W takiej sytuacji brama internetowa wykorzystuje translację adresów sieciowych, która pozwala na łączenie się z internetem komputerom nie posiadającym własnych publicznych adresów IP. Komputery z adresami prywatnymi nie mogą pełnić roli serwerów sieciowych w Internecie chyba, że posłużymy się techniką maskowania adresów docelowych (DNAT).

Automatyczne przydzielanie adresów IPv4 może być realizowane poprzez zastosowanie protokołów DHCP, RARP, BOOTP, PPP.

W przypadku braku serwera DHCP w sieci, adres IP przydzielany jest z puli 169.254.0.1 – 169.254.255.254 z domyślną maską 255.255.0.0 przez mechanizm APIPA.

Wykorzystanie adresów IPv4 
Początkowo wszystkie adresy IPv4 były zarządzane bezpośrednio przez IANA, która w zależności od wnioskowanych potrzeb przydzielała określoną pulę adresów klasy A, B lub C. Wielkie firmy, jak Xerox, Ford czy IBM automatycznie otrzymywały po ponad 16 mln adresów internetowych, nawet jeżeli tak duża liczba nie była im potrzebna. Jeżeli mała firma z kilkunastoma węzłami chciała podłączyć się do Internetu przyznawano jej adresy z klasy C. To z kolei dawało jej kontrolę nad ponad dwustoma adresami węzłów, z których nikt inny nie mógłby skorzystać. Ze względu na marnotrawstwo oraz niespodziewanie duże zapotrzebowanie na adresację internetową z całego świata zmieniono zasady i powołano do życia organizacje regionalne, których zadaniem stało się nadzorowanie wykorzystania dostępnych adresów. Jednym ze sposobów oszczędzania adresów stało się także ponowne wykorzystanie adresów, które z jakichś powodów zostały zwolnione. To już codzienna praktyka dostawców Internetu. W początkowym okresie (2004) powodowało to problemy. Aktualnie cały internet oparty jest na routing-u bezklasowym CIDR, a klasy adresowe zastąpiono pulami adresowymi przyznawanymi dowolnie na podstawie adresu sieci i maski.

Obecnie pule adresowe przydzielane są organizacjom regionalnym, te dalej rozdzielają je do ISP, a następnie ISP przydzielają adresy swoim klientom. Duży nacisk kładzie się na wykorzystywanie mechanizmów NAT, umożliwiających korzystanie z jednego adresu zewnętrznego przez wiele urządzeń posiadających adresy lokalne. W ten sposób ogranicza się przydzielanie adresów urządzeniom (tj. drukarki, punkty dostępowe itp.) działającym jedynie w obrębie zamkniętych sieci.

Istnieją koncepcje, według których każde urządzenie elektroniczne ma zostać podłączone do Internetu. W takiej sytuacji pula adresów IPv4 będzie stanowczo za mała. Z tego powodu następuje powolna migracja z protokołu IPv4 na IPv6, który zwiększy pulę dostępnych adresów 1029 razy.

W ramach puli adresów istnieje podział na podsieci (subnets). Rozmiar podsieci wyznaczany jest przez jej maskę. Najmniejszą podsiecią jest sieć składająca się z 4 adresów, . Dla sieci 4 komputerowej maska wynosi: 256 - 4 = 252 (NETMASK = 255.255.255.252). 
Dla tak wyznaczonej podsieci w przykładowej podsieci przydzielone jej adresy mają przeznaczanie:
 NETWORK = 195.205.36.32 (Adres IP – przykładowa podsieć sieci klasy C przyznana przez dostawcę),
 NETMASK = 255.255.255.252 (maska podsieci)
 adresy komputerów = 195.205.36.33 i 195.205.36.34,
 BROADCAST = 195.205.36.35 (adres rozgłoszeniowy) 

W praktyce maska 255.255.255.252 oznacza, że do sieci tej można podłączyć 2 komputery i używana jest przez administratorów sieci komputerowych do spinania poszczególnych segmentów sieci.

Aby znaleźć adres rozgłoszeniowy, należy przekształcić Adres IP oraz maskę podsieci na system binarny:

 Adres IP:        11000011   11001101   00100100   00100000
                    195         205        36         32
 Maska podsieci:  11111111   11111111   11111111   11111100
                    255         255       255        252 

Patrzymy na maskę i wpisujemy jedynki na tych pozycjach adresu IP, na których w masce są zera. To jest nasz adres rozgłoszeniowy (broadcast):

 Broadcast        11000011   11001101   00100100   00100011
                    195         205        36         35 

Mimo optymalizacji systemu przydzielania adresów pula wolnych adresów topnieje w tempie szybszym niż przypuszczano. W styczniu 2011 roku japoński instytut INTEC Systems Institute, Inc. ogłosił, że pula adresowa wyczerpie się 12 lutego 2011 roku. Na stronie instytutu znajduje się licznik wolnych zasobów puli adresowej IPv4.

W dniu 3 lutego 2011 organizacja IANA przydzieliła regionalnym rejestratorom 5 ostatnich wolnych bloków adresowych z dawnej klasy A. Oznacza to, że pula adresów IPv4, zarządzana przez IANA, została w całości wyczerpana. Operatorzy i przedsiębiorstwa w dalszym ciągu mogą otrzymywać adresy IP od regionalnych rejestratorów, aż do wyczerpania puli przez nich zarządzanej. Dalszy rozwój internetu zależy od przejścia na protokół IPv6.

25 listopada 2019 r. organizacja RIPE NCC poinformowała, że o godzinie 15.35 przyznała ostatnie adresy IPv4 z europejskiej puli.

Zobacz też 
 adres IP
 IPv6

Przypisy

Linki zewnętrzne 
 
 
 
 
 

Protokół internetowy