IP jest najważniejszym protokołem usług bezpołączeniowych, określającym w pierwszym rzędzie podstawową jednostkę przesyłania danych w sieciach TCP/IP – datagram i schemat adresowania. Protokół ten określa również reguły przetwarzania i przenoszenia datagramów oraz metodykę generowania komunikatów o błędach. Inne funkcje wynikną z analizy pól nagłówka. Protokół IP nie zajmuje się kontrolą pakietów, ustawianiem kolejności czy potwierdzaniem odbioru. Błędy wynikające z transmisji mogą być korygowane przez warstwy wyższe. Datagram jest często nazywany pakietem, w tym np. przez grupy IETF.
IP jest w istocie powszechną nazwą protokołu IPv4 (IP wersja 4). Od stycznia 1996 jest on stopniowo zastępowany protokołem nowej generacji – IPv6.
Nagłówek IPv4 zawiera przynajmniej 12 pól i zajmuje ok. 20 bajtów, co w połączeniu z 20-bajtowym nagłówkiem TCP zwiększa ryzyko przeciążenia protokołów.
Znaczenia pól:
Słabością IP jest 32-bitowa architektura adresowa z niewygodną hierarchią dwupoziomową typu sieć-komputer i czterema klasami adresowymi. Zawęża ona możliwości adresowania urządzeń i poważnie utrudnia trasowanie. Ponadto IP ma już prawie ćwierć wieku, a Internet przeszedł w tym czasie wiele zmian.
W 1993 r. IETF utworzyła grupę roboczą Ipng (Internet Protocol next generation) i powierzyła jej rozwiązanie problemu adresowania IP. Po kilku latach powstał protokół znacznie przewyższający swojego poprzednika. Jego najsilniejszą stroną jest elastyczność i łatwość dostosowania się do zmian oprogramowania i sprzętu sieciowego. Upowszechnianie tego protokołu – pod nazwą IPv6 – miało początek w styczniu 1996.
Nowa wersja ma przede wszystkim poszerzone pola adresowe z 32 do 128 bitów – były one głównym powodem zmian systemu adresowania. Ponadto nagłówek IPv6 jest prostszy.
Zmiany w odniesieniu do IPv4 wyglądają następująco:
Nagłówek IPv6 ma stałą długość (40 bajtów) i stałą liczbę pól – 8. Ale dzięki polu Następny nagłówek w pakiecie może się znaleźć więcej nagłówków dodatkowych.
Są one sygnowane następującymi numerami:
Nagłówki występują w określonej kolejności. Na przykład: jeśli występuje nagłówek „0”, to musi być pierwszy spośród dodatkowych. Wtedy jest czytany przez wszystkie rutery czy przełączniki na trasie pakietu, a więc staje się szczególnie użyteczny w przenoszeniu informacji ważnych dla RSVP, w zarządzeniu ruchem itp. Z kolei nagłówek „60” może się pojawić przed lub za nagłówkiem „43” (nagłówek trasowania). W pierwszym ustawieniu wymusza przetwarzanie nagłówka „43” przez każdy wyszczególniony węzeł, a w drugim – przez węzeł docelowy.
W IPv6 nie maju już klas adresów dla różnych rozmiarów sieci – możliwości adresowania są teraz tak ogromne (teoretycznie 2128–1), że każdy z użytkowników Internetu mógłby mieć własną sieć globalną. Mają natomiast swoje odpowiedniki w IPv6 formaty adresowania Unicast i Multicast, a ponadto doszedł nowy – Anycast – umożliwiający komunikowanie się z urządzeniem najbliższym z grupy. Jednak Multicast w IPv6 ma o wiele większe znaczenie z uwagi na poszerzone pole adresowe i rezygnację z adresów rozgłaszania w stylu IPv4. Wprowadzono wiele opcji, w tym zapewniających bezpieczeństwo na całej długości trasy pakietu. Ponadto IPv6 nie jest kłopotliwy dla użytkowników komputerów przenośnych.
W IPv6 pola adresowe (nadawcy i odbiorcy) zawierają po 128 bitów i mają postać ośmiu bloków 16-bitowych, oddzielanych dwukropkiem: x : x : x : x : x : x : x : x, gdzie x = yyyy yyyy yyyy yyyy Każdy ciąg binarny yyyy jest przedstawiany w kodzie szesnastkowym. W efekcie przykładowy adres IPv6 może mieć postać: 0111: FACB : 1001 : AC16 : 0000 : 0000 : 0012 : EECD Grupę czterech zer zastępuje się jednym zerem, a ponadto pomija się zera z lewej strony pozostałych grup, dzięki czemu zapis staje się krótszy: 111 : FACB : 1001 : AC16 : 0 : 0 : 12 : EECD Zera rozdzielone pojedynczym dwukropkiem można zastąpić dwoma dwukropkami, wobec czego zapis skraca się jeszcze bardziej: 111 : FACB : 1001 : AC16 :: 12 : EECD Podwójny dwukropek może jednak wystąpić tylko jeden raz w jednym zapisie. Zwraca uwagę fakt, że nawet w tej uproszczonej formie adres jest nie tylko trudny do zapamiętania, ale także do bezbłędnego zanotowania. W tym kontekście DNS nabiera niezwykle ważnego znaczenia. W szesnastkowym systemie liczbowym jest 16 symboli: 10 cyfrowych (0–9) i 6 literowych (A, B, C, D, E, F). Każdemu z symboli 0–F zostały przyporządkowane kolejne kombinacje czterobitowe z naturalnego kodu binarnego: 0=0000,..., 6=0110,..., 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111.