Jaka jest różnica między TCP i UDP?
Prawdopodobnie widziałeś odniesienia do TCP i UDP podczas konfigurowania przekazywania portów na routerze lub podczas konfigurowania oprogramowania zapory sieciowej. Te dwa protokoły są używane dla różnych typów danych.
TCP / IP to zestaw protokołów używanych przez urządzenia do komunikacji przez Internet i większość sieci lokalnych. Nazwa pochodzi od dwóch oryginalnych protokołów - TCP (Transmission Control Protocol) i IP (Internet Protocol). TCP zapewnia aplikacjom sposób dostarczania (i odbierania) uporządkowanego i sprawdzanego błędami strumienia pakietów informacyjnych w sieci. Protokół UDP (User Datagram Protocol) jest wykorzystywany przez aplikacje do dostarczania szybszego strumienia informacji poprzez wyeliminowanie sprawdzania błędów. Podczas konfigurowania sprzętu lub oprogramowania sieciowego może być konieczna znajomość różnicy.
Co mają wspólnego
Zarówno TCP, jak i UDP są protokołami używanymi do wysyłania bitów danych - znanych jako pakiety - przez Internet. Oba protokoły opierają się na protokole IP. Innymi słowy, niezależnie od tego, czy wysyłasz pakiet przez TCP czy UDP, ten pakiet jest wysyłany na adres IP. Pakiety te są traktowane podobnie, ponieważ są przekazywane z komputera do pośrednich routerów i do miejsca docelowego.
TCP i UDP nie są jedynymi protokołami, które działają na IP. Jednak są one najczęściej używane.
Jak działa TCP
TCP jest najczęściej używanym protokołem w Internecie.
Kiedy żądasz strony internetowej w przeglądarce, twój komputer wysyła pakiety TCP na adres serwera sieciowego, prosząc go o odesłanie strony internetowej do ciebie. Serwer internetowy odpowiada wysyłając strumień pakietów TCP, które twoja przeglądarka łączy ze sobą, tworząc stronę internetową. Gdy klikniesz link, zalogujesz się, dodasz komentarz lub zrobisz cokolwiek innego, twoja przeglądarka wysyła pakiety TCP na serwer, a serwer wysyła pakiety TCP z powrotem.
TCP polega na niezawodności - pakiety wysyłane z TCP są śledzone, więc żadne dane nie są tracone ani uszkodzone podczas przesyłania. Dlatego pobieranie plików nie ulega uszkodzeniu, nawet jeśli występują problemy z siecią. Oczywiście, jeśli odbiorca jest całkowicie offline, komputer się podda, a zobaczysz komunikat o błędzie z informacją, że nie może się komunikować ze zdalnym hostem.
TCP osiąga to na dwa sposoby. Najpierw zamawia pakiety, numerując je. Po drugie, kontrola błędów polega na tym, aby odbiorca wysłał odpowiedź zwrotną do nadawcy informującą, że otrzymał wiadomość. Jeśli nadawca nie otrzyma prawidłowej odpowiedzi, może ponownie wysłać pakiety, aby upewnić się, że odbiorca otrzymuje je poprawnie.
Process Explorer i inne narzędzia systemowe mogą pokazywać typ połączeń, które tworzy proces - tutaj możemy zobaczyć przeglądarkę Chrome z otwartymi połączeniami TCP z różnymi serwerami sieciowymi.
Jak działa UDP
Protokół UDP działa podobnie jak TCP, ale wyrzuca wszystkie sprawdzane błędy. Cała komunikacja zwrotna wprowadza opóźnienie, spowalniając działanie.
Gdy aplikacja używa UDP, pakiety są wysyłane do odbiorcy. Nadawca nie czeka, aby odbiorca odebrał pakiet - po prostu kontynuuje wysyłanie kolejnych pakietów. Jeśli odbiorca pominie kilka pakietów UDP, zostaną one po prostu utracone - nadawca nie wyśle ich ponownie. Utrata całego tego kosztu oznacza, że urządzenia mogą szybciej komunikować się.
Protokół UDP jest używany, gdy wymagana jest szybkość, a korekcja błędów nie jest konieczna. Na przykład UDP jest często używany do transmisji na żywo i gier online.
Załóżmy na przykład, że oglądasz strumień wideo na żywo, który często jest transmitowany przy użyciu protokołu UDP zamiast TCP. Serwer wysyła ciągły strumień pakietów UDP do oglądania komputerów. Jeśli utracisz połączenie przez kilka sekund, wideo może zatrzymać się na chwilę, a następnie przejść do bieżącego bitu transmisji. Jeśli wystąpi niewielka utrata pakietów, wideo lub dźwięk mogą zostać zniekształcone na chwilę, ponieważ wideo będzie nadal odtwarzane bez brakujących danych.
Działa to podobnie w grach online. Jeśli przegapisz niektóre pakiety UDP, może pojawić się teleportacja graczy na mapie po otrzymaniu nowszych pakietów UDP. Nie ma sensu prosić o stare pakiety, jeśli je przegapiłeś, ponieważ gra toczy się bez ciebie. Ważne jest tylko to, co dzieje się teraz na serwerze gry - a nie to, co działo się kilka sekund temu. Zwalnianie poprawki błędów TCP pomaga przyspieszyć połączenie z grą i zmniejszyć opóźnienie.
Więc co?
To, czy aplikacja korzysta z TCP czy UDP, zależy od programisty, a wybór zależy od tego, czego potrzebuje aplikacja. Większość aplikacji wymaga korekcji błędów i odporności protokołu TCP, ale niektóre aplikacje wymagają szybkości i zmniejszenia narzutów UDP. Jeśli uruchomisz narzędzie do analizy sieci, takie jak Wireshark, zobaczysz różne typy pakietów podróżujących tam iz powrotem.
Jeśli nie jesteś administratorem sieci lub programistą, nie powinno to wpłynąć na ciebie zbyt mocno. Jeśli konfigurujesz router lub zaporę ogniową i nie masz pewności, czy aplikacja używa protokołu TCP lub UDP, możesz ogólnie wybrać opcję "Oba", aby router lub zapora stosowała tę samą regułę do ruchu TCP i UDP.