Poprawna jest warstwa sieciowa, bo to właśnie ona w modelu ISO/OSI odpowiada za adresowanie logiczne, wybór trasy (routing) i przekazywanie pakietów między różnymi sieciami. IP (Internet Protocol) jest typowym protokołem warstwy sieciowej – definiuje strukturę pakietu (nagłówek IP, adres źródłowy i docelowy, TTL, fragmentację), sposób adresowania hostów (adresy IPv4/IPv6) oraz przekazywania danych pomiędzy routerami. ICMP (Internet Control Message Protocol) też należy do warstwy sieciowej, bo służy do wymiany komunikatów kontrolnych i diagnostycznych między urządzeniami sieciowymi, np. przy poleceniach ping czy traceroute. To nie jest protokół „użytkowy”, tylko pomocniczy dla IP, opisany razem z nim w standardach IETF (RFC dla IP i ICMP). W praktyce, gdy konfigurujesz router, trasę statyczną, VLAN-y routowane, czy diagnozujesz sieć komendą ping albo traceroute, cały czas operujesz na mechanizmach warstwy sieciowej. Moim zdaniem warto zapamiętać prostą rzecz: wszystko, co dotyczy adresów IP, maski, bramy domyślnej, routingu, to warstwa sieciowa. Warstwa transportowa (np. TCP, UDP) nie zajmuje się już trasą w sieci, tylko dostarczeniem danych między procesami w końcowych hostach. Warstwa łącza danych to MAC, ramki, przełączniki, a sesji – zarządzanie dialogiem między aplikacjami. Dobra praktyka w sieciach mówi, żeby zawsze myśleć „od dołu do góry”: najpierw sprawdzamy fizykę i łącze, potem warstwę sieciową (IP/ICMP), dopiero dalej transport i aplikację.
Pomylenie warstwy, w której działa IP i ICMP, jest bardzo częstym błędem, bo wiele osób kojarzy adres IP po prostu z „połączeniem internetowym” i nie zastanawia się, co dokładnie robi która warstwa. Warstwa sesji nie zajmuje się w ogóle adresowaniem czy trasą pakietów w sieci. Jej rolą, w klasycznym modelu ISO/OSI, jest zarządzanie dialogiem między aplikacjami: ustanawianie, utrzymywanie i kończenie sesji, kontrola punktów wznowienia itp. W praktyce współczesnego Internetu wiele funkcji sesji jest tak naprawdę realizowanych przez protokoły wyższych warstw (np. HTTP, TLS), ale na pewno nie przez IP ani ICMP. Warstwa transportowa, z kolei, odpowiada za dostarczenie danych pomiędzy procesami w hostach końcowych, a nie za przenoszenie pakietów przez kolejne routery. To tutaj działają TCP i UDP: numeracja portów, kontrola błędów, retransmisje, podział danych na segmenty. Typowy błąd myślowy polega na tym, że skoro „IP jest związane z portami”, to ludzie wrzucają je do transportu. Tymczasem porty są elementem warstwy transportowej, a IP tylko przenosi pakiety z adresu IP źródłowego na docelowy. Wreszcie warstwa łącza danych odpowiada za ramki, adresy MAC, działanie przełączników, dostęp do medium (Ethernet, Wi-Fi, PPP). To jest poziom lokalnego segmentu sieci, bez routingu między sieciami. IP i ICMP działają ponad tym poziomem – korzystają z warstwy łącza, ale nie są jej częścią. Typowe skojarzenie: MAC = łącze danych, IP/ICMP = sieć, TCP/UDP = transport. Jeśli więc ktoś umieszcza IP w warstwie sesji, łącza danych albo transportowej, to tak naprawdę miesza funkcje: kontrolę dialogu, obsługę fizycznego medium albo logikę portów z samym mechanizmem adresowania i routingu, który należy jednoznacznie do warstwy sieciowej według standardowego podejścia i dobrych praktyk w sieciach komputerowych.