TCP vs. UDP
- 4098
- 767
- Prokop Cebula
Istnieją dwa rodzaje ruchu protokołu internetowego (IP). Oni są TCP Lub Protokół kontroli transmisji I UDP Lub Protokół Datagram User. TCP jest zorientowany na połączenie - Po ustaleniu połączenia dane mogą być wysyłane dwukierunkowe. UDP to prostszy, bez połączeń protokół internetowy. Wiele wiadomości jest wysyłanych jako pakiety w fragmentach za pomocą UDP.
Wykres porównania
Różnice - podobieństwa -TCP | UDP | |
---|---|---|
Akronim dla | Protokół kontroli transmisji | Protokół DataGram User lub Universal Datagram Protocol |
Połączenie | Protokół kontroli transmisji to protokół zorientowany na połączenie. | Protokół Datagram User Datagram to protokół bez połączeń. |
Funkcjonować | Gdy wiadomość przechodzi przez Internet z jednego komputera do drugiego. To jest oparte na połączeniu. | UDP jest również protokołem używanym w transporcie wiadomości lub transferu. To nie jest oparte na połączeniu, co oznacza, że jeden program może wysłać ładunek pakietów do innego i to byłby koniec związku. |
Stosowanie | TCP nadaje się do zastosowań wymagających wysokiej niezawodności, a czas transmisji jest stosunkowo mniej krytyczny. | UDP nadaje się do aplikacji, które wymagają szybkiej, wydajnej transmisji, takich jak gry. Beznany charakter UDP jest również przydatny dla serwerów, które odpowiadają na małe zapytania od ogromnej liczby klientów. |
Użyj przez inne protokoły | HTTP, HTTPS, FTP, SMTP, Telnet | DNS, DHCP, TFTP, SNMP, RIP, VOIP. |
Zamawianie pakietów danych | TCP przestawia pakiety danych w określonej kolejności. | UDP nie ma nieodłącznej kolejności, ponieważ wszystkie pakiety są od siebie niezależne. Jeśli wymagane jest zamawianie, musi być zarządzana przez warstwę aplikacji. |
Prędkość transferu | Prędkość TCP jest wolniejsza niż UDP. | UDP jest szybszy, ponieważ nie próba odzyskiwania błędów. Jest to protokół „najlepszy wysiłek”. |
Niezawodność | Istnieje bezwzględna gwarancja, że przesyłane dane pozostają nienaruszone i pojawią się w tej samej kolejności, w jakiej zostały wysłane. | Nie ma gwarancji, że wysłane wiadomości lub pakiety w ogóle osiągną. |
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, sprawdź sumę | Port źródłowy, port docelowy, sprawdź sumę |
Przesyłanie strumieniowe danych | Dane są odczytywane jako strumień bajtów, żadne wskazania rozróżniające nie są przesyłane na granice komunikatu sygnałowego (segmentu). | Pakiety są wysyłane indywidualnie i są sprawdzane pod kątem integralności tylko wtedy, gdy nadejdą. Pakiety mają określone granice, które są uhonorowane po otrzymaniu, co oznacza, że operacja odczytu w gnieździe odbiornika da całą wiadomość, jak pierwotnie wysłano. |
Waga | TCP jest ciężka. TCP wymaga trzech pakietów, aby skonfigurować połączenie gniazda, zanim można wysłać dane użytkownika. TCP obsługuje niezawodność i kontrolę przeciążenia. | UDP jest lekki. Nie ma zamówienia wiadomości, żadnych połączeń śledzących itp. Jest to mała warstwa transportowa zaprojektowana na IP. |
Kontrola przepływu danych | TCP kontroluje przepływ. TCP wymaga trzech pakietów, aby skonfigurować połączenie gniazda, zanim można wysłać dane użytkownika. TCP obsługuje niezawodność i kontrolę przeciążenia. | UDP nie ma opcji kontroli przepływu |
Sprawdzanie błędów | TCP sprawdza błędy i odzyskiwanie błędów. Błędne pakiety są retransmisowane ze źródła do miejsca docelowego. | UDP sprawdza błędy, ale po prostu odrzuca błędne pakiety. Odzyskiwanie błędów nie jest próbowane. |
Pola | 1. Numer sekwencji, 2. Numer ack, 3. Offset danych, 4. Zarezerwowany, 5. Bit kontrolny, 6. Okno, 7. Pilny wskaźnik 8. Opcje, 9. Padding, 10. Sprawdź sumę, 11. Port źródłowy, 12. Port docelowy | 1. Długość, 2. Port źródłowy, 3. Port docelowy, 4. Sprawdź sumę |
Potwierdzenie | Segmenty potwierdzenia | Brak potwierdzenia |
Uścisk dłoni | Syn, Syn-Ack, ack | Brak uścisku dłoni (protokół bez połączeń) |
Różnice w funkcjach przesyłania danych
TCP Zapewnia niezawodne i uporządkowane dostarczanie strumienia bajtów z użytkownika na serwer lub odwrotnie. UDP nie jest dedykowane na zakończenie połączeń, a komunikacja nie sprawdza gotowości odbiornika.
Niezawodność
TCP jest bardziej wiarygodne, ponieważ zarządza potwierdzeniem wiadomości i retransmisjami w przypadku utraconych części. Zatem absolutnie brak braku danych. UDP nie zapewnia, że komunikacja dotarła do odbiornika, ponieważ pojęcia potwierdzenia, czasu i retransmisji nie są obecne.
Zamawianie
TCP transmisje są wysyłane w sekwencji i są odbierane w tej samej sekwencji. W przypadku, gdy segmenty danych przybywają w niewłaściwej kolejności, TCP odnosi się i dostarcza aplikację. W przypadku UDP, Sekwencja wysłanych wiadomości nie może być utrzymywana po osiągnięciu aplikacji odbierającej. Absolutnie nie ma możliwości przewidywania kolejności, w jakiej wiadomości zostanie odebrane.
Połączenie
TCP to połączenie ciężarowe wymagające trzech pakietów do połączenia gniazda i obsługuje kontrolę i niezawodność przeciążenia. UDP to lekka warstwa transportowa zaprojektowana na szczycie IP. Nie ma połączeń śledzenia ani zamówienia wiadomości.
Metoda przeniesienia
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 ich integralności. Pakiety mają zdefiniowane granice, a strumień danych nie ma.
Wykrywanie błędów
UDP działa na podstawie „najlepszego efektu”. Protokół obsługuje wykrywanie błędów za pośrednictwem sumy kontrolnej, ale po wykryciu błędu pakiet jest odrzucony. Retransmisja pakietu w celu odzyskania po tym błędach nie jest próbowana. Wynika to z faktu, że UDP dotyczy zwykle aplikacji wrażliwych na czas, takich jak gier lub transmisja głosowa. Odzyskanie z błędu byłoby bezcelowe, ponieważ do czasu odbierania pakietu retransmitowanego.
TCP używa zarówno wykrywania błędów, jak i odzyskiwania błędów. Błędy są wykrywane za pośrednictwem sumy kontrolnej, a jeśli pakiet jest błędny, nie jest potwierdzony przez odbiornik, który wyzwala retransmisję przez nadawcę. Ten mechanizm operacyjny nazywa się pozytywnym potwierdzeniem z retransmisją (PAR).
Jak działają TCP i UDP
Połączenie TCP jest ustanawiane za pomocą trójdrożnego uścisku dłoni, który jest procesem inicjowania i uznania połączenia. Po ustaleniu połączenia może rozpocząć się transfer danych. Po transmisji połączenie jest zakończone przez zamknięcie wszystkich ustalonych obwodów wirtualnych.
UDP korzysta z prostego modelu transmisji bez niejawnych dialogów wstrząsających ręcznie w celu zagwarantowania niezawodności, zamawiania lub integralności danych. Zatem UDP zapewnia niewiarygodną usługę, a datagramy mogą pojawić się w porządku, wydawać się zduplikowane lub zaginąć bez powiadomienia. UDP zakłada, że sprawdzanie błędów i korekta nie jest albo konieczne lub wykonywane w aplikacji, unikając kosztów takiego przetwarzania na poziomie interfejsu sieciowego. W przeciwieństwie do TCP, UDP jest kompatybilny z transmisji pakietów (wysyłanie do wszystkich w sieci lokalnej) i multiemisji (wyślij do wszystkich subskrybentów).
Różne zastosowania TCP i UDP
Przeglądanie internetowe, przesyłanie wiadomości e -mail i plików to powszechne aplikacje korzystające z TCP. TCP służy do kontrolowania wielkości segmentu, szybkości wymiany danych, kontroli przepływu i przeciążenia sieciowego. TCP jest preferowany, w którym obiekty korekcji błędów są wymagane na poziomie interfejsu sieciowego. UDP jest w dużej mierze używany przez aplikacje wrażliwe na czas, a także serwery, które odpowiadają na małe zapytania od ogromnej liczby klientów. UDP jest kompatybilny z transmisją pakietów - wysyłanie do wszystkich w sieci i multiemisji - wysyłanie do wszystkich subskrybentów. UDP jest powszechnie używany w systemie nazwy domeny, Voice Over IP, trywialny protokół transferu plików i gry online.
TCP vs. UDP dla serwerów gier
W przypadku gier Online (MMO) z masowo wieloosobowymi programiści często muszą dokonać wyboru architektonicznego między użyciem UDP lub TCP Trwałe połączenia. Zalety TCP to trwałe połączenia, niezawodność i możliwość korzystania z pakietów o dowolnych rozmiarach. Największym problemem z TCP w tym scenariuszu jest algorytm kontroli zatłoczenia, który traktuje utratę pakietów jako oznaka ograniczeń przepustowości i automatycznie dławi wysyłanie pakietów. W sieci 3G lub Wi-Fi może to spowodować znaczne opóźnienie.
Doświadczony deweloper Christoffer Lernö ważył zalety i wady i zaleca następujące kryteria, aby wybrać, czy użyć TCP, czy UDP do gry:
- Użyj HTTP przez TCP do od czasu do czasu tworzenia zapytań beztynnych, inicjowanych przez klienta, gdy można okazjonalne opóźnienie.
- Użyj trwałych zwykłych gniazd TCP, jeśli zarówno klient, jak i serwer niezależnie wysyłają pakiety, ale okazjonalne opóźnienie jest w porządku (e.G. 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 nie jest w porządku (e.G. Większość gier akcji dla wielu graczy, niektóre MMO).