TCP vs. UDP

Istnieją dwa rodzaje ruchu protokołu internetowego (IP). Oni są TCP lub Protokół kontroli transmisji i UDP lub Protokół datagramu użytkownika. TCP jest zorientowany na połączenie - po ustanowieniu połączenia dane mogą być przesyłane dwukierunkowo. UDP jest prostszym, bezpołączeniowym protokołem internetowym. Wiele wiadomości jest wysyłanych jako pakiety w porcjach za pomocą UDP.

Wykres porównania

Różnice - podobieństwa - Tabela porównawcza TCP a UDP
TCPUDP
Skrót od Protokół kontroli transmisji User Datagram Protocol lub Universal Datagram Protocol
Połączenie Transmission Control Protocol to protokół zorientowany na połączenie. User Datagram Protocol to protokół bezpołączeniowy.
Funkcjonować Wiadomość przesyła się przez Internet z jednego komputera na drugi. Jest to oparte na połączeniu. UDP jest także protokołem używanym do transportu lub przesyłania wiadomości. Nie jest to oparte na połączeniu, co oznacza, że ​​jeden program może wysłać ładunek pakietów do drugiego, i to byłby koniec relacji.
Stosowanie TCP jest odpowiedni dla aplikacji wymagających wysokiej niezawodności, a czas transmisji jest stosunkowo mniej krytyczny. UDP nadaje się do aplikacji wymagających szybkiej i wydajnej transmisji, takich jak gry. Bezstanowy charakter UDP jest również przydatny w przypadku serwerów, które odpowiadają na małe zapytania od ogromnej liczby klientów.
Wykorzystywane przez inne protokoły HTTP, HTTPs, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Kolejność pakietów danych TCP przestawia pakiety danych w określonej kolejności. UDP nie ma właściwej kolejności, ponieważ wszystkie pakiety są od siebie niezależne. Jeśli wymagane jest zamówienie, musi nim zarządzać warstwa aplikacji.
Szybkość transferu Prędkość TCP jest mniejsza niż UDP. UDP jest szybszy, ponieważ nie próbuje się odzyskać błędów. Jest to protokół „najlepszego wysiłku”.
Niezawodność Istnieje absolutna gwarancja, że ​​przesyłane dane pozostaną nienaruszone i dotrą w tej samej kolejności, w jakiej zostały przesłane. Nie ma żadnej gwarancji, że wysłane wiadomości lub pakiety w ogóle dotrą.
Rozmiar nagłówka Rozmiar nagłówka TCP wynosi 20 bajtów Rozmiar nagłówka UDP wynosi 8 bajtów.
Wspólne pola nagłówka Port źródłowy, port docelowy, suma kontrolna Port źródłowy, port docelowy, suma kontrolna
Streaming danych Dane są odczytywane jako strumień bajtów, żadne wskazania wyróżniające nie są przesyłane do granic komunikatów sygnałowych (segmentów). Pakiety są wysyłane indywidualnie i są sprawdzane pod kątem integralności tylko wtedy, gdy dotrą. Pakiety mają określone granice, które są honorowane po otrzymaniu, co oznacza, że ​​operacja odczytu w gnieździe odbiornika da cały komunikat, tak jak został pierwotnie wysłany.
Waga TCP jest bardzo ciężki. TCP wymaga trzech pakietów do skonfigurowania połączenia przez gniazdo, zanim jakiekolwiek dane użytkownika będą mogły zostać wysłane. TCP obsługuje niezawodność i kontrolę przeciążenia. UDP jest lekki. Nie ma kolejności wiadomości, połączeń śledzących itp. Jest to mała warstwa transportowa zaprojektowana na bazie IP.
Kontrola przepływu danych TCP wykonuje kontrolę przepływu. TCP wymaga trzech pakietów do skonfigurowania połączenia przez gniazdo, zanim jakiekolwiek dane użytkownika będą mogły zostać wysłane. TCP obsługuje niezawodność i kontrolę przeciążenia. UDP nie ma opcji kontroli przepływu
Sprawdzanie błędów TCP sprawdza błędy i je przywraca. Błędne pakiety są retransmitowane ze źródła do miejsca docelowego. UDP sprawdza błędy, ale po prostu odrzuca błędne pakiety. Odzyskiwanie błędów nie jest podejmowane.
Pola 1. Numer sekwencji, 2. Numer AcK, 3. Przesunięcie danych, 4. Zarezerwowane, 5. Bit kontrolny, 6. Okno, 7. Pilny wskaźnik 8. Opcje, 9. Wypełnienie, 10. Suma kontrolna, 11. Port źródłowy, 12. Port docelowy 1. Długość, 2. Port źródłowy, 3. Port docelowy, 4. Suma kontrolna
Potwierdzenie Segmenty potwierdzenia Brak potwierdzenia
Uścisk dłoni SYN, SYN-ACK, ACK Bez uzgadniania (protokół bezpołączeniowy)

Zawartość: TCP vs UDP

  • 1 Różnice w funkcjach przesyłania danych
    • 1.1 Niezawodność
    • 1.2 Zamawianie
    • 1.3 Połączenie
    • 1.4 Metoda transferu
    • 1.5 Wykrywanie błędów
  • 2 Jak działają TCP i UDP
  • 3 różne zastosowania TCP i UDP
    • 3.1 TCP vs. UDP dla serwerów gier
  • 4 referencje

Różnice w funkcjach przesyłania danych

TCP zapewnia niezawodne i uporządkowane dostarczanie strumienia bajtów od użytkownika do serwera lub odwrotnie. UDP nie jest przeznaczony do połączeń typu end-to-end, a komunikacja nie sprawdza gotowości odbiornika.

Niezawodność

TCP jest bardziej niezawodny, ponieważ zarządza potwierdzaniem wiadomości i retransmisją w przypadku zagubionych części. Dlatego absolutnie nie brakuje danych. UDP nie zapewnia, że ​​komunikacja dotarła do odbiorcy, ponieważ pojęcia potwierdzenia, przekroczenia czasu i retransmisji nie są obecne.

Zamawianie

TCP transmisje są wysyłane w sekwencji i są odbierane w tej samej sekwencji. W przypadku przychodzenia segmentów danych w niewłaściwej kolejności, protokół TCP zmienia kolejność i dostarcza aplikację. W przypadku UDP, wysłana sekwencja wiadomości może nie zostać utrzymana, gdy osiągnie aplikację odbierającą. Nie ma absolutnie żadnego sposobu, aby przewidzieć kolejność otrzymywania wiadomości.

Połączenie

TCP to bardzo ciężkie połączenie wymagające trzech pakietów do podłączenia gniazda i obsługuje kontrolę przeciążenia i niezawodność. UDP to lekka warstwa transportowa zaprojektowana na szczycie IP. Nie ma połączeń śledzenia ani zamawiania wiadomości.

Metoda transferu

TCP odczytuje dane jako strumień bajtów, a wiadomość jest przesyłana do granic segmentu. UDP wiadomości to pakiety wysyłane indywidualnie, a po przybyciu są sprawdzane pod kątem integralności. Pakiety mają zdefiniowane granice, podczas gdy strumień danych nie ma żadnych.

Wykrywanie błędów

UDP działa na zasadzie „dołożenia wszelkich starań”. Protokół obsługuje wykrywanie błędów za pomocą sumy kontrolnej, ale po wykryciu błędu pakiet jest odrzucany. Ponowna próba przesłania pakietu w celu odzyskania po tym błędzie nie jest podejmowana. Wynika to z faktu, że UDP jest zwykle przeznaczony do aplikacji wrażliwych na czas, takich jak gry lub transmisja głosu. Odzyskiwanie po błędzie byłoby bezcelowe, ponieważ do czasu odebrania retransmitowanego pakietu nie będzie on przydatny.

TCP wykorzystuje zarówno wykrywanie błędów, jak i odzyskiwanie błędów. Błędy są wykrywane za pomocą sumy kontrolnej, a jeśli pakiet jest błędny, odbiorca nie potwierdza go, co powoduje ponowną transmisję przez nadawcę. Ten mechanizm operacyjny nosi nazwę Positive Acknowledgment with Retransmission (PAR).

Jak działają TCP i UDP

Połączenie TCP jest ustanawiane za pomocą trójdrożnego uzgadniania, które jest procesem inicjowania i potwierdzania połączenia. Po ustanowieniu połączenia można rozpocząć transfer danych. Po transmisji połączenie zostaje zakończone przez zamknięcie wszystkich ustanowionych obwodów wirtualnych.

UDP wykorzystuje prosty model transmisji bez ukrytych dialogów z drżeniem rąk, aby zagwarantować niezawodność, porządek lub integralność danych. W ten sposób UDP zapewnia niewiarygodną usługę, a datagramy mogą przychodzić poza kolejnością, wyglądać na zduplikowane lub zaginąć bez powiadomienia. UDP zakłada, że ​​sprawdzanie i korekta błędów albo nie są konieczne, ani wykonywane w aplikacji, co pozwala uniknąć narzutu takiego przetwarzania na poziomie interfejsu sieciowego. W przeciwieństwie do TCP, UDP jest kompatybilny z transmisją pakietów (wysyłanie do wszystkich w sieci lokalnej) i multiemisją (wysyłanie do wszystkich subskrybentów).

Różne zastosowania TCP i UDP

Przeglądanie stron internetowych, poczta e-mail i przesyłanie plików to popularne aplikacje korzystające z protokołu TCP. TCP służy do kontroli wielkości segmentu, szybkości wymiany danych, kontroli przepływu i przeciążenia sieci. TCP jest preferowany tam, gdzie wymagane są funkcje korekcji błędów na poziomie interfejsu sieciowego. UDP jest w dużej mierze wykorzystywany przez aplikacje wrażliwe na czas, a także przez serwery, które odpowiadają na małe zapytania od ogromnej liczby klientów. UDP jest kompatybilny z transmisją pakietową - wysyłaniem do wszystkich w sieci i multiemisją - wysyłaniem do wszystkich subskrybentów. UDP jest powszechnie używany w systemie nazw domen, Voice over IP, Trivial File Transfer Protocol i grach online.

TCP vs. UDP dla serwerów gier

W przypadku masowo wieloosobowych gier online (MMO) programiści często muszą dokonać architektonicznego wyboru między użyciem trwałych połączeń UDP lub TCP. Zaletą protokołu TCP są trwałe połączenia, niezawodność i możliwość korzystania z pakietów o dowolnych rozmiarach. Największym problemem związanym z TCP w tym scenariuszu jest algorytm kontroli przeciążenia, który traktuje utratę pakietów jako oznakę ograniczenia przepustowości i automatycznie ogranicza wysyłanie pakietów. W sieciach 3G lub Wi-Fi może to powodować znaczne opóźnienia.

Doświadczony programista Christoffer Lernö przeanalizował zalety i wady i zaleca następujące kryteria, aby wybrać, czy w swojej grze ma być używany protokół TCP, czy UDP:

  • Użyj HTTP przez TCP, aby od czasu do czasu inicjować zapytania bezstanowe inicjowane przez klienta, gdy może być od czasu do czasu opóźnione.
  • Używaj trwałych zwykłych gniazd TCP, jeśli zarówno klient, jak i serwer niezależnie wysyłają pakiety, ale okazjonalne opóźnienie jest OK (np. Poker online, wiele MMO).
  • Użyj UDP, jeśli zarówno klient, jak i serwer mogą niezależnie wysyłać pakiety, a okazjonalne opóźnienie jest nieprawidłowe (np. Większość gier akcji dla wielu graczy, niektóre MMO).

Bibliografia

  • Wikipedia: Protokół kontroli transmisji
  • Wikipedia: User Datagram Protocol
  • UDP vs TCP dla serwerów gier
  • Protokół kontroli transmisji