Protokoły sieciowe to zbiór zasad, które umożliwiają urządzeniom komunikację w sieci. Można je porównać do zasad konwersacji, których przestrzegamy, rozmawiając z innymi.
Definiują one strukturę pakietów danych, sposoby identyfikacji urządzeń oraz metody postępowania w przypadku błędów lub konfliktów. Protokoły sieciowe można zasadniczo podzielić na trzy kategorie: komunikacyjne, bezpieczeństwa i zarządzania.
1. Protokoły komunikacyjne
Protokoły te koncentrują się na ułatwieniu wymiany danych między urządzeniami w sieci. Określają format, sposób przesyłania i odbierania danych, zapewniając efektywną komunikację. Przykłady to HTTP/HTTPS, FTP, TCP i UDP.
2. Protokoły bezpieczeństwa
Ich celem jest ochrona poufności i autentyczności danych przesyłanych przez sieć. Tworzą bezpieczne kanały komunikacji i chronią wrażliwe informacje przed przechwyceniem lub manipulacją.
Przykłady obejmują SSL/TLS do szyfrowania, SSH do bezpiecznego dostępu zdalnego i bezpieczne warianty protokołów poczty elektronicznej, takie jak SMTPS i POP3S.
3. Protokoły zarządzania
Protokoły zarządzania służą do administrowania, monitorowania i kontrolowania urządzeń i zasobów sieciowych. Ułatwiają administratorom efektywne konfigurowanie i rozwiązywanie problemów w sieci.
Przykłady to DHCP do dynamicznego przydzielania adresów IP, SNMP do zarządzania urządzeniami, ICMP do diagnostyki oraz BGP do informacji o routingu i dostępności.
Przyjrzyjmy się bliżej kilku typowym protokołom z każdej z tych kategorii.
Protokoły komunikacyjne
HTTP
HTTP, czyli protokół przesyłania hipertekstu, jest podstawowym protokołem używanym do komunikacji pomiędzy przeglądarką internetową a serwerem. Działa w warstwie aplikacji, zgodnie z modelem OSI.
Po wprowadzeniu adresu URL w przeglądarce i naciśnięciu klawisza Enter, przeglądarka wysyła żądanie HTTP do serwera, który przetwarza to żądanie i odsyła odpowiedź HTTP zawierającą żądane informacje, np. stronę internetową, obraz, film lub inny zasób.
HTTP jest protokołem bezstanowym, co oznacza, że każde żądanie od klienta do serwera jest traktowane jako oddzielna transakcja. Serwer nie przechowuje danych o poprzednich żądaniach tego samego klienta. Ta prostota przyczynia się do powszechności HTTP.
HTTP definiuje metody żądania, takie jak GET (pobieranie danych), POST (przesyłanie danych do przetworzenia), PUT (aktualizacja zasobu) i DELETE (usuwanie zasobu). Określają one rodzaj operacji, jaką klient chce wykonać na serwerze.
Odpowiedzi HTTP zawierają kod stanu, który wskazuje wynik żądania. Na przykład kod 200 oznacza pomyślne żądanie, a 404 – nieznalezienie zasobu. Na przestrzeni lat protokół HTTP doczekał się kilku wersji. HTTP/1.1 był długo najpopularniejszą wersją, natomiast HTTP/2 i HTTP/3 (znany również jako QUIC) zostały opracowane w celu zwiększenia wydajności.
HTTPS
HTTPS, czyli bezpieczny protokół przesyłania hipertekstu, jest rozszerzeniem HTTP używanym do bezpiecznej komunikacji w sieciach komputerowych. Dodaje on warstwę bezpieczeństwa poprzez szyfrowanie danych wymienianych między przeglądarką a serwerem internetowym przy użyciu protokołów kryptograficznych, takich jak SSL/TLS. Dzięki temu nawet przechwycone dane nie mogą być łatwo odczytane.
HTTPS obejmuje uwierzytelnianie serwera. Gdy przeglądarka łączy się z witryną przez HTTPS, witryna przedstawia certyfikat cyfrowy wystawiony przez zaufany urząd certyfikacji (CA). Certyfikat ten weryfikuje tożsamość strony, co zapewnia, że klient łączy się z właściwym serwerem, a nie z fałszywym.
Witryny korzystające z HTTPS są identyfikowane przez „https://” na początku adresu URL, co wskazuje na bezpieczne połączenie. HTTPS zazwyczaj używa portu 443, podczas gdy HTTP korzysta z portu 80, co pozwala serwerom rozróżnić połączenia bezpieczne i niezabezpieczone.
Wyszukiwarki, takie jak Google, preferują witryny korzystające z HTTPS w rankingach wyszukiwania. Przeglądarki mogą też ostrzegać użytkowników, gdy bezpieczna witryna HTTPS zawiera elementy (np. obrazy) z niebezpiecznego połączenia HTTP. Jest to tzw. „treść mieszana”, która może zagrażać bezpieczeństwu.
Szczegółowe informacje o tym, jak uzyskać certyfikat SSL dla strony internetowej, można znaleźć w powiązanym artykule.
FTP
File Transfer Protocol (FTP) to standardowy protokół sieciowy służący do przesyłania plików między klientem a serwerem w sieci komputerowej. FTP działa w modelu klient-serwer, gdzie klient inicjuje połączenie z serwerem, aby zażądać lub przesłać pliki.
FTP używa dwóch portów do komunikacji i może działać w trybie aktywnym lub pasywnym. Port 21 służy do połączenia sterującego, gdzie przesyłane są polecenia i odpowiedzi. Tryb aktywny (tradycyjny) wykorzystuje dodatkowy port (zwykle z zakresu 1024-65535) do przesyłania danych.
Tryb pasywny jest często stosowany, gdy klient znajduje się za zaporą sieciową lub urządzeniem NAT. W takim przypadku serwer otwiera losowy port o wysokim numerze do przesyłania danych.
FTP zazwyczaj wymaga uwierzytelniania za pomocą nazwy użytkownika i hasła w celu uzyskania dostępu do plików na serwerze. Niektóre serwery FTP umożliwiają dostęp anonimowy przy użyciu ogólnej nazwy użytkownika, takiej jak „anonymous” lub „ftp”, i adresu e-mail jako hasła.
FTP obsługuje dwa tryby przesyłania danych: ASCII (dla plików tekstowych) i binarny (dla plików nietekstowych). Tryb jest ustawiany w zależności od typu przesyłanego pliku.
Tradycyjny FTP nie jest bezpieczny, ponieważ przesyła dane, w tym nazwy użytkowników i hasła, w postaci zwykłego tekstu. SFTP (bezpieczny FTP) i FTPS (FTP przez SSL/TLS) to bezpieczniejsze alternatywy, które szyfrują transfer danych.
Szczegółowy artykuł o protokołach SFTP i FTPS oraz o tym, który z nich wybrać, można znaleźć w powiązanej publikacji.
TCP
Protokół kontroli transmisji (TCP) jest jednym z podstawowych protokołów warstwy transportowej w pakiecie IP. Zapewnia niezawodną i uporządkowaną transmisję danych między urządzeniami w sieciach IP.
TCP ustanawia połączenie między nadawcą a odbiorcą przed rozpoczęciem przesyłania danych, co obejmuje trójstronne uzgadnianie (SYN, SYN-ACK, ACK). Po zakończeniu wymiany danych następuje proces zakończenia połączenia.
Protokół TCP obsługuje komunikację w trybie pełnego dupleksu, co umożliwia jednoczesne wysyłanie i odbieranie danych w obu kierunkach w ramach ustanowionego połączenia.
TCP monitoruje warunki sieciowe i dostosowuje szybkość transmisji, aby uniknąć przeciążenia. Posiada mechanizmy wykrywania i korygowania błędów w danych. Jeśli segment danych jest uszkodzony, odbiorca żąda retransmisji.
TCP używa numerów portów do identyfikacji określonych usług lub aplikacji na urządzeniu, co pomaga w kierowaniu danych do właściwej aplikacji. Odbiornik w połączeniu TCP wysyła potwierdzenia (ACK) w celu potwierdzenia odbioru segmentów danych, a jeśli nadawca nie otrzyma potwierdzenia w określonym czasie, retransmituje segment danych.
TCP przechowuje informacje o stanie połączenia zarówno po stronie nadawcy, jak i odbiorcy, co pomaga śledzić sekwencję segmentów danych i zarządzać połączeniem.
IP
IP, czyli protokół internetowy, jest podstawowym protokołem umożliwiającym komunikację i wymianę danych w sieciach komputerowych, w tym w Internecie. Protokół IP wykorzystuje system adresowania numerycznego do identyfikacji urządzeń w sieci. Adresy IP mogą być adresami IPv4 lub IPv6.
Adresy IPv4 są zazwyczaj przedstawiane jako cztery zestawy liczb dziesiętnych (np. 192.168.1.1), podczas gdy adresy IPv6 są dłuższe i wykorzystują zapis szesnastkowy. IP kieruje pakiety danych między urządzeniami w różnych sieciach. Routery i przełączniki odgrywają kluczową rolę w kierowaniu pakietów do miejsc docelowych na podstawie ich adresów IP.
Protokół IP wykorzystuje przełączanie pakietów, co oznacza, że dane są dzielone na mniejsze pakiety w celu transmisji w sieci. Każdy pakiet zawiera adres IP źródłowy i docelowy, umożliwiając routerom podejmowanie decyzji o przekazywaniu danych.
IP jest protokołem bezpołączeniowym, co oznacza, że nie tworzy dedykowanego połączenia między nadawcą a odbiorcą przed przesłaniem danych. Każdy pakiet jest traktowany niezależnie i może dotrzeć do miejsca przeznaczenia różnymi trasami.
UDP
UDP, czyli protokół datagramów użytkownika, jest bezpołączeniowym i lekkim protokołem, który umożliwia przesyłanie danych przez sieć bez formalnego ustanawiania połączenia. W przeciwieństwie do TCP, UDP nie nawiązuje połączenia przed wysłaniem danych. Pakuje dane w datagramy i wysyła je do miejsca docelowego.
Nie gwarantuje on dostarczenia danych i nie implementuje mechanizmów wykrywania i korygowania błędów. Jeśli pakiet zostanie utracony lub dotrze w nieodpowiedniej kolejności, warstwa aplikacji musi sobie z tym poradzić.
UDP ma mniejsze obciążenie niż TCP, ponieważ nie zawiera takich funkcji, jak kontrola przepływu, korekcja błędów czy potwierdzenia. Dzięki temu jest szybszy, ale mniej niezawodny. Nie ma też wbudowanej kontroli przeciążenia, co stwarza ryzyko zalania sieci ruchem UDP.
UDP jest często stosowany w sytuacjach, gdzie niskie opóźnienia i duża szybkość transmisji danych są ważniejsze niż gwarancja dostarczenia. Przykłady to streaming audio i wideo w czasie rzeczywistym, gry online, DNS i niektóre aplikacje IoT.
Zaletą UDP jest multipleksowanie, które umożliwia wielu aplikacjom na tym samym urządzeniu korzystanie z tego samego portu UDP, różnicując strumienie danych na podstawie numerów portów.
Aby lepiej zrozumieć UDP, wyobraźmy sobie, że chcesz wysłać wiadomość do znajomego na hałaśliwym placu zabaw, używając odbijającej się piłki. Decydujesz się użyć UDP, które przypomina rzucenie piłki bez formalnej rozmowy. Działa to w następujący sposób:
- Piszesz wiadomość na kartce i owijasz ją wokół piłki.
- Rzucasz piłkę w stronę swojego przyjaciela, nie czekając na potwierdzenie, że została złapana.
- Piłka odbija się i dociera do Twojego przyjaciela, który próbuje ją złapać. Czasem może upaść lub przybyć w nieprawidłowym stanie.
- Jeśli przyjaciel złapie piłkę, czyta wiadomość. Jeśli nie, wiadomość przepada.
W tym przykładzie:
- Piłka reprezentuje protokół UDP, który przesyła dane bez formalnego połączenia.
- Wysyłanie piłki bez czekania na odpowiedź to brak połączenia UDP i brak gwarancji dostarczenia.
- Możliwość odbicia lub zagubienia piłki to symbol braku niezawodności w UDP.
- Twój przyjaciel czytający wiadomość to warstwa aplikacji, która musi zarządzać danymi otrzymanymi przez UDP, radząc sobie z brakami.
Protokoły bezpieczeństwa
SSH
SSH, czyli Secure Shell, to protokół sieciowy używany do bezpiecznej komunikacji pomiędzy klientem a serwerem przez niezabezpieczoną sieć. Zapewnia sposób zdalnego dostępu i zarządzania urządzeniami za pomocą interfejsu wiersza poleceń przy zachowaniu wysokiego poziomu bezpieczeństwa.
SSH używa technik kryptograficznych do uwierzytelniania klienta i serwera, aby upewnić się, że łączysz się z właściwym serwerem, a serwer może zweryfikować twoją tożsamość przed udzieleniem dostępu. Wszystkie dane przesyłane przez połączenie SSH są szyfrowane, co utrudnia podsłuchiwanie.
Źródło obrazu: Stack Overflow
SSH używa pary kluczy do uwierzytelniania: klucza publicznego (współdzielonego z serwerem) i klucza prywatnego (utrzymywanego w tajemnicy). Gdy łączysz się z serwerem SSH, klient używa klucza prywatnego, aby potwierdzić tożsamość. Protokół SSH obsługuje również uwierzytelnianie za pomocą nazwy użytkownika i hasła, ale jest to mniej bezpieczne.
SSH domyślnie używa portu 22, ale ze względów bezpieczeństwa można go zmienić. Zmiana numeru portu może pomóc w ograniczeniu automatycznych ataków. SSH jest powszechnie używany do zdalnego administrowania serwerami, przesyłania plików (za pomocą narzędzi SCP i SFTP) oraz bezpiecznego dostępu do zdalnych interfejsów wiersza poleceń.
Jest szeroko stosowany w systemach Unix i jest też dostępny w systemie Windows dzięki odpowiednim rozwiązaniom programowym.
SMTP
SMTP, czyli prosty protokół przesyłania poczty, to standardowy protokół odpowiedzialny za wysyłanie wychodzących wiadomości e-mail od klienta lub serwera poczty e-mail do serwera poczty e-mail po stronie odbiorcy. SMTP jest podstawowym elementem komunikacji e-mail, współpracującym z innymi protokołami, takimi jak IMAP/POP3, w pełnym cyklu życia wiadomości e-mail.
Kiedy tworzysz wiadomość i klikasz „wyślij”, klient poczty używa protokołu SMTP do przekazania wiadomości na serwer dostawcy poczty e-mail.
Do komunikacji nieszyfrowanej używa portu 25, a portu 587 do komunikacji szyfrowanej (przy użyciu STARTTLS). Port 465 był również używany do szyfrowanego SMTP, ale jest mniej popularny. Wiele serwerów SMTP wymaga uwierzytelniania podczas wysyłania e-maili, co zapobiega nieautoryzowanemu użyciu. Używane są metody uwierzytelniania, takie jak nazwa użytkownika i hasło, lub bezpieczniejsze metody, takie jak OAuth.
Te serwery SMTP często działają jako przekaźniki, akceptując wychodzące wiadomości od klientów i przekazując je na serwer poczty odbiorcy. Komunikację można zabezpieczyć szyfrowaniem TLS lub SSL, szczególnie w przypadku poufnych danych.
Protokoły zarządzania
POP3
POP3, czyli protokół pocztowy w wersji 3, jest jednym z popularnych protokołów pobierania wiadomości e-mail z serwera do aplikacji klienta. POP3 został zaprojektowany do pracy w trybie „przechowaj i przekaż”, pobierając wiadomości z serwera, a następnie zazwyczaj usuwając je z serwera po zapisaniu kopii na urządzeniu klienta. Niektóre aplikacje pozwalają pozostawić kopię wiadomości na serwerze, ale nie jest to domyślne zachowanie.
Do komunikacji nieszyfrowanej wykorzystuje port 110, a port 995 do bezpiecznej komunikacji POP3 przy użyciu protokołu TLS/SSL. POP3 jest protokołem bezstanowym, co oznacza, że nie śledzi wiadomości, które już zostały pobrane. Za każdym razem, gdy łączy się z serwerem, pobiera wszystkie nieprzeczytane wiadomości. Może to powodować problemy z synchronizacją, jeśli dostęp do poczty uzyskuje się z wielu urządzeń.
POP3 jest przeznaczony do pobierania wiadomości e-mail ze skrzynki odbiorczej. Może nie obsługiwać pobierania wiadomości z innych folderów na serwerze, takich jak elementy wysłane czy wersje robocze. Ponieważ POP3 nie synchronizuje folderów między serwerem a klientem, działania wykonane na jednym urządzeniu (np. usunięcie wiadomości) nie zostaną odzwierciedlone na innych urządzeniach.
Zaleca się używanie bezpiecznej wersji POP3 (POP3S lub POP3 over SSL/TLS), która szyfruje komunikację między klientem a serwerem w celu zwiększenia bezpieczeństwa. POP3 jest obecnie rzadziej używany w porównaniu z protokołem IMAP, który zapewnia bardziej zaawansowane funkcje, takie jak synchronizacja folderów i efektywniejsze zarządzanie tą samą skrzynką pocztową z wielu urządzeń.
BGP
BGP, czyli Border Gateway Protocol, jest standardowym protokołem bramy zewnętrznej używanym w sieciach do wymiany informacji o routingu i osiągalności między systemami autonomicznymi (AS). System autonomiczny to zbiór sieci IP i routerów kontrolowanych przez jedną organizację, która stosuje spójną politykę routingu do Internetu.
BGP jest protokołem wektora ścieżki. Śledzi on ścieżkę (listę systemów autonomicznych), jaką pokonują pakiety danych, aby dotrzeć do miejsca docelowego. Informacje te pomagają routerom BGP podejmować decyzje o routingu w oparciu o zasady i atrybuty ścieżki.
BGP służy do określania najlepszej ścieżki przesyłania danych przez wiele sieci obsługiwanych przez różne organizacje lub dostawców usług internetowych. Obsługuje także agregację tras, co pomaga zmniejszyć rozmiar globalnej tabeli routingu poprzez podsumowanie wielu prefiksów IP w jednym ogłoszeniu trasy.
Protokół BGP wykorzystuje różne mechanizmy zapobiegające pętlom routingu, w tym atrybut ścieżki AS i regułę podziału horyzontu. Jest wykorzystywany zarówno w publicznym Internecie, jak i w sieciach prywatnych. W Internecie służy do wymiany informacji o routingu między dostawcami usług internetowych, a w sieciach prywatnych służy do routingu wewnętrznego i łączenia z Internetem.
DHCP
DHCP, czyli protokół dynamicznej konfiguracji hosta, służy do automatycznego przypisywania adresów IP i innych ustawień konfiguracji sieci do urządzeń w sieci TCP/IP. Proces DHCP obejmuje cztery główne etapy:
- Wykrywanie DHCP: Urządzenie dołączające do sieci wysyła komunikat rozgłoszeniowy DHCP Discover, aby znaleźć serwery DHCP.
- Oferta DHCP: Serwery DHCP odpowiadają na komunikat DHCP Discover, wysyłając ofertę DHCP zawierającą adres IP i powiązane opcje konfiguracji.
- Żądanie DHCP: Urządzenie wybiera jedną z ofert i wysyła komunikat żądania DHCP do wybranego serwera, prosząc o oferowany adres IP.
- Potwierdzenie DHCP: Serwer DHCP potwierdza żądanie, wysyłając komunikat DHCP Acknowledgement, który potwierdza przypisanie adresu IP.
Aby lepiej zrozumieć, jak działa DHCP, wyobraź sobie, że masz sieć domową Wi-Fi i chcesz, aby Twoje urządzenia (telefony, laptopy) łączyły się z nią automatycznie, bez ręcznego konfigurowania. W takim przypadku DHCP:
- Smartfon dołączający do sieci wysyła zapytanie: „Hej, jestem tu nowy. Czy ktoś może dać mi adres IP i inne ustawienia?”.
- Router Wi-Fi, działający jako serwer DHCP, odpowiada: „Jasne, mam adres IP i inne potrzebne ustawienia sieci, takie jak maska podsieci, brama domyślna i serwer DNS.”
- Smartfon otrzymuje te informacje i automatycznie konfiguruje się, korzystając z podanego adresu IP i ustawień.
Smartfon jest teraz gotowy do korzystania z Internetu i komunikowania się z innymi urządzeniami w sieci domowej.
ICMP
Internet Control Message Protocol (ICMP) to protokół warstwy sieciowej używany w pakiecie IP do komunikowania i przekazywania informacji o stanie operacji sieciowych. ICMP służy głównie do zgłaszania błędów i dostarczania informacji diagnostycznych związanych z przetwarzaniem pakietów IP. Na przykład, jeśli router napotka problem podczas przekazywania pakietu, generuje komunikat o błędzie ICMP i odsyła go do źródła pakietu.
Typowe komunikaty o błędach ICMP to „Miejsce docelowe nieosiągalne”, „Przekroczono czas” i „Problem z parametrami”. Jednym z najbardziej znanych zastosowań ICMP jest polecenie „ping” (używane do sprawdzania dostępności hosta). Polecenie ping wysyła komunikaty żądania echa ICMP do hosta docelowego, a host powinien odpowiedzieć komunikatem odpowiedzi echa ICMP, jeśli jest osiągalny.
ICMP jest także używany do wykrywania maksymalnej jednostki transmisji ścieżki (PMTU). PMTU to maksymalny rozmiar pakietu IP, który może zostać przesłany bez fragmentacji. Komunikaty ICMP, takie jak „Wymagana fragmentacja” i „Pakiet za duży”, służą do określenia odpowiedniego MTU dla danej ścieżki, co pomaga uniknąć fragmentacji i zoptymalizować transfer danych. Komunikatów tych można także używać do śledzenia czasu, jaki pakiet potrzebuje, aby dotrzeć od źródła do miejsca przeznaczenia i z powrotem, wykorzystując do tego komunikat „Przekroczono czas”.
SNMP
SNMP, czyli Simple Network Management Protocol, to protokół warstwy aplikacji służący do zarządzania i monitorowania urządzeń i systemów sieciowych. SNMP działa na podstawie modelu menedżer-agent, gdzie menedżer SNMP składa żądania i zbiera informacje od agentów SNMP. Menedżer może też ustawiać parametry konfiguracyjne agentów. Agent to moduł oprogramowania lub proces działający na urządzeniach sieciowych. Przechowuje on informacje o konfiguracji i wydajności urządzenia i odpowiada na żądania menedżerów SNMP.
MIB (Management Information Base) to hierarchiczna baza danych definiująca strukturę i organizację zarządzanych obiektów na urządzeniu sieciowym. Służy jako punkt odniesienia dla menedżerów i agentów SNMP, zapewniając wzajemne zrozumienie danych.
Istnieją trzy wersje protokołu SNMP: SNMPv1 (oryginalna wersja z ciągami znaków społeczności do uwierzytelniania, uważana za mniej bezpieczną), SNMPv2c (ulepszona wersja z dodatkowymi typami danych i lepszą obsługą błędów) i SNMPv3 (najbezpieczniejsza wersja oferująca szyfrowanie, uwierzytelnianie i kontrolę dostępu).
SNMP jest używany do różnych zadań zarządzania siecią, takich jak monitorowanie wykorzystania przepustowości, śledzenie czasu pracy urządzeń, zdalna konfiguracja urządzeń i odbieranie alertów w przypadku określonych zdarzeń.
Podsumowanie
Mam nadzieję, że ten artykuł pomógł Ci zrozumieć różne protokoły sieciowe. Zachęcam również do zapoznania się z wiedzą na temat segmentacji sieci i sposobów jej wdrażania.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.