Główna zawartość
Podstawy informatyki - program rozszerzony
Kurs: Podstawy informatyki - program rozszerzony > Rozdział 2
Lekcja 5: Transportowanie pakietówProtokół UDP (ang. User Datagram Protocol)
Protokół danych użytkownika (ang. User Datagram Protocol, UDP) jest lekkim protokołem transportu danych, który działa na wierzchu protokołu IP.
UDP dostarcza mechanizm wykrywania uszkodzonych danych w pakietach, ale nie próbuje rozwiązywać innych problemów, które pojawiają się z pakietami, takich jak zagubione lub nieuporządkowane pakiety. Z tego powodu UDP jest czasami znany jako Niewiarygodny Protokół Danych (ang. Unreliable Data Protocol).
UDP jest prosty, ale szybki, przynajmniej w porównaniu z innymi protokołami wykorzystującymi IP. Jest często używany w aplikacjach czułych na czas (takich jak strumieniowanie wideo w czasie rzeczywistym), gdzie szybkość jest ważniejsza niż dokładność.
Format pakietu
Podczas przesyłania pakietów za pomocą protokołu UDP poprzez IP, część danych w każdym pakiecie IP jest formatowana jako segment UDP.
Każdy segment UDP zawiera 8-bajtowy nagłówek i dane o zmiennej długości.
Numery portu
Pierwsze cztery bajty nagłówka UDP przechowują numery portów dla miejsca źródłowego i docelowego.
Urządzenie sieciowe może odbierać wiadomości na różnych wirtualnych portach, podobnie jak przystań na oceanie może przyjmować łodzie w różnych portach. Poszczególne porty pomagają rozróżnić różne rodzaje ruchu sieciowego.
Oto lista niektórych portów używanych przez UDP na moim laptopie:
Każdy wiersz zaczyna się od nazwy procesu, który używa portu, a kończy na protokole i numerze portu.
🔍 Jaki rodzaj ruchu sieciowego obsługują te procesy? Jeśli poszukasz w sieci nazwy procesu i numeru portu, prawdopodobnie uda Ci się to ustalić. Możesz nawet spróbować tego na komputerze, którego używasz teraz.
Długość segmentu
Następne dwa bajty nagłówka UDP przechowują długość segmentu (w bajtach) (łącznie z nagłówkiem).
Dwa bajty to bitów, więc długość może być tak duża jak ta liczba binarna:
W systemie dziesiętnym jest to lub . Zatem maksymalna długość segmentu UDP wynosi bajtów.
Suma kontrolna
Ostatnie dwa bajty nagłówka UDP to suma kontrolna, pole, które jest używane przez nadawcę i odbiorcę do sprawdzenia, czy dane nie są uszkodzone.
Przed wysłaniem segmentu, nadawca:
- Oblicza sumę kontrolną na podstawie danych zawartych w segmencie.
- Zapisuje wyliczoną sumę kontrolną w polu.
Po otrzymaniu segmentu, odbiorca:
- Oblicza sumę kontrolną na podstawie odebranego segmentu.
- Porównuje sumy kontrolne ze sobą. Jeśli sumy kontrolne nie są identyczne, wiadomo, że dane zostały uszkodzone.
Aby zrozumieć, w jaki sposób suma kontrolna może wykryć uszkodzone dane, prześledźmy proces obliczania sumy kontrolnej dla bardzo krótkiego ciągu danych: "Hola".
Po pierwsze, nadawca zakodowałby "Hola" w jakiś sposób binarnie. Poniższe kodowanie używa kodowania ASCII/UTF-8:
To kodowanie daje te bajty:
Następnie nadawca dzieli bajty na -bajtowe ( -bitowe) liczby binarne:
Aby obliczyć sumę kontrolną, nadawca sumuje -bitowe liczby binarne:
Komputer może teraz wysłać segment UDP z zakodowanym napisem "Hola" jako dane i 1011010011010000 jako sumę kontrolną.
Cały segment UDP może wyglądać tak:
Pole | Wartość |
---|---|
Numer portu źródłowego | |
Numer portu docelowego | |
Długość | |
Suma kontrolna | |
Dane |
Co by się stało, gdyby po drodze dane zostały uszkodzone z "Hola" na "Mola"?
Najpierw zobaczmy, jak uszkodzone dane wyglądałyby w postaci binarnej.
"Mola" zakodowana binarnie...
...a następnie podzielony na 16-bitowe liczby:
Zobaczmy teraz, jaką sumę kontrolną obliczyłby odbiorca:
Odbiorca może teraz programowo porównać sumę kontrolną, którą otrzymał w segmencie UDP z sumą kontrolną, którą właśnie obliczył:
Otrzymał
:Obliczył
:
Czy widzisz różnicę?
Gdy odbiorca odkryje, że obie sumy kontrolne są różne, wie, że dane zostały uszkodzone w jakiś sposób po drodze. Niestety, odbiorca nie może użyć wyliczonej sumy kontrolnej do odtworzenia oryginalnych danych, więc prawdopodobnie po prostu odrzuci pakiet.
Rzeczywisty proces obliczania sumy kontrolnej UDP obejmuje kilka kroków więcej niż przedstawiono tutaj, ale jest to ogólny proces, w jaki sposób możemy używać sum kontrolnych do wykrywania uszkodzonych danych.
🙋🏽🙋🏻♀️🙋🏿♂️Masz pytania związane z tym zagadnieniem? Możesz zadać swoje pytanie poniżej!
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji