Jaka jest różnica między UDP a TCP?

46

Mój router ma dwa protokoły (i opcję „oba”), które mogę wybrać podczas konfigurowania przekierowania portów: UDP i TCP. Jaka jest różnica między tymi dwoma protokołami i kiedy wybrałbyś jeden do drugiego w przekierowaniu portów?

Chłopak
źródło

Odpowiedzi:

51

Protokół TCP jest wspierany przez pakiety i próby, aby upewnić się, że dane dotrą do celu. UDP jest bezpołączeniowy i „odpala i zapomina”. UDP jest najczęściej używany do aplikacji typu streaming, w przypadku utraty niektórych danych, nie trzeba próbować ich ponownie wysyłać.

To, którego używasz, zależy od aplikacji. Na przykład serwer WWW używa protokołu TCP.


źródło
3
To ma sens - więc jeśli przesyłasz strumieniowo wideo, nie ma sensu ponownie wysyłać brakującej klatki później, ponieważ ten punkt już minął. Dzięki
Guy
15
+1. Dodajmy, że każdy, kto szuka głębszego zrozumienia, powinien przeczytać jedną z wielu doskonałych książek na ten temat W. Richarda Stevensa. „TCP / IP Illustrated, v1” i „Programowanie sieciowe UNIX” stanowią doskonałe samouczki i odniesienia.
Murali Suriar
73

Dobre podsumowanie znajdziesz tutaj:

Jaka jest różnica między protokołami internetowymi UDP i TCP?

Zarówno TCP, jak i UDP działają w modelu TCP / IP warstwy transportowej, ale mają bardzo różne zastosowania.

Najważniejsze różnice to:

  • Niezawodność :
    TCP:
    UDP zorientowany na połączenie: bezpołączeniowy
  • Zamówienie :
    TCP: kolejność odbioru wiadomości jest gwarantowana
    UDP: kolejność nie jest gwarantowana
  • Waga protokołu :
    TCP: ciężki, ze względu na obciążenie związane z łączeniem / zamawianiem
    UDP: lekki, bardzo niewielki narzut
  • Pakiety :
    TCP: przesyłanie strumieniowe, dane są odczytywane jako „strumień”, bez rozróżnienia, gdzie kończy się jeden pakiet, a zaczyna inny. Może istnieć wiele pakietów na połączenie odczytu.
    UDP: datagramy, jeden pakiet na jedno wywołanie odczytu.

Struktura ramy

Gdy dane są przesyłane przez sieć, muszą być obudowane w tak zwane „ramki”. Istnieją różne metody enkapsulacji w zależności od używanego protokołu i topologii. Poniższe obrazy pokazują, jak różnią się struktury ramek TCP i UDP.

Oto struktura ramki TCP:

Ramka TCP

Jest to struktura ramki UDP, o wiele prostsza:

Ramka UDP

Typowe protokoły korzystające z TCP to HTTP, FTP i SMTP. Przykładami protokołów używających UDP są DNS i DHCP.

splattne
źródło
@splattne - kolejność otrzymywania wiadomości jest gwarancją, a nie transmisją
Alnitak
@Alnitak: oczywiście masz rację. Miałem na myśli, że odbiór jest gwarantowany w kolejności przesyłania. Zaktualizuję, aby to wyjaśnić.
splattne
43

I wyjaśnienie na poziomie CEO:

UDP polega na rzuceniu papieru w ogólnym kierunku pojemnika.

TCP jest wtedy, gdy nie trafi, rzucasz dokładnie kopiami tego samego papieru, aż wpadnie do kosza. Nastąpiłoby marnotrawstwo papieru, a nawet ponowne wysłanie pakietów TCP powodowałoby marnowanie zasobów sieciowych lub systemowych.

pgs
źródło
1
To bardzo dobre wyjaśnienie „na poziomie CEO” - podoba mi się!
Keithius
Nie jestem CEO, ale dlaczego nikt mi wcześniej tego nie powiedział! : p
Nicolas Dorier,
To jest genialne!
shylent
7

TCP i UDP to protokoły działające na bazie IP. TCP gwarantuje dostawę, a UDP nie. Możesz wybrać jedno lub drugie do przekierowania portów w zależności od usługi, którą próbujesz przekazać. Na przykład HTTP to TCP. Jeśli nie wiesz, jakiego protokołu jest usługa, którą próbujesz przekazać, prawie na pewno jest to TCP.

Brian
źródło
3

Aby odpowiedzieć na inną część pytania, musisz przekazać dalej, z czego korzysta Twoja aplikacja. Aby przekazać ruch HTTP, wybierz TCP. Aby przekazać ruch TFTP, wybierz UDP. Programy p2p używają głównie zarówno tcp, jak i udp, więc przekaż je oba.

Wszystko zależy od protokołu i używanego programu.

Hayalci
źródło
nie masz całkowitej racji. dns używa również tcp / 53, nie tak często, ale nadal [np. do transferu strefy].
pQd
tak. Ponadto wysyłanie regularnych zapytań dns przez tcp jest całkowicie poprawne. Zmieniłem przykład na TFTP, który używa wyłącznie UDP.
hayalci
2

Oprócz wspomnianych różnic, TCP zapewnia również

Kontrola przepływu. Za pomocą mechanizmu okna odbiorca ogranicza liczbę oktetów (bajtów), które chce otrzymać od nadawcy, zanim nadawca będzie musiał czekać na pozwolenie na wysłanie większej ilości danych. Rozmiar okna może być zmieniany przez odbiorcę w trakcie rozmowy. Umożliwia to odbiornikowi „dławienie” prędkości danych pochodzących od nadawcy: UDP nie pozwala na to i wszystko, co odbiorca może zrobić, to wyrzucić dane, których nie może buforować ani przetwarzać po przybyciu.

niektóre bardziej techniczne ułatwienia, takie jak nieciągłe potwierdzanie (wykorzystuje selektywne potwierdzenia, aby umożliwić nadawcy retransmitację tylko brakującej ramki zamiast brakującej ramki i kolejnych, które odbiorca już ma, ale nie mógł potwierdzić w zwykły sposób), obsługę zatorów i adaptacyjna retransmisja (dostosowanie timera decydującego o tym, kiedy ponownie wysłać przesłaną ramkę, gdy potwierdzenie nie zostanie odebrane). Nie są one istotne dla UDP, ale pomagają TCP świadczyć dodatkowe usługi przez UDP bez znacznego zwiększenia obciążenia sieci dla tego samego wolumenu ładunku.

mas
źródło
2

TCP dokłada starań, aby dane dotarły do ​​odbiorcy; UDP nie.

J. Polfer
źródło
Źle. Protokół IP nie jest niezawodny i może wystąpić utrata danych. TCP dokłada starań, aby wysłane dane (podzielone na małe części i wysłane za pośrednictwem pakietów IP) dotarły do ​​odbiorcy (ewentualnie w razie potrzeby ponownie wysyłając małe części).
Anonimowy
@ Anonimowy - Zasadniczo odtworzyłeś to, co powiedziałem powyżej. Jak się mylę
J. Polfer,
Myślę, że oboje przekonasz się, że IP jest podstawową strukturą (stosem) i podstawowym protokołem komunikacyjnym używanym zarówno przez UDP, jak i TCP. O ile mi wiadomo, nie można w rzeczywistości komunikować użytecznych danych przez Internet, JUST IP - nawet podstawowe pingi itp. Używają protokołu na IP (drugi główny; ICMP).
Lee B,
1

Nie wspominając o wszystkich odpowiedziach wyjaśniających jedno kontra drugie. W celu skonfigurowania przekierowania portów reguły są dość proste: musisz wybrać TCP, chyba że dokumenty używanego protokołu / aplikacji mówią o używaniu UDP. Zwykle te, które używają UDP są związane z transmisją strumieniową lub bardzo prostymi rzeczami, które preferują lekkie protokoły / szybkość nad niezawodnością (szczególnie DNS i NTP). Zauważ, że istnieją również inne protokoły oprócz TCP i UDP - ICMP, protokoły tunelowania itp.

Lee B.
źródło
1

Im bardziej znany jest protokół, tym więcej routerów na ścieżce ingeruje w protokół. Wysyłaj pakiety tcp i istnieje duże prawdopodobieństwo, że odebrane pakiety są bardzo zniekształcone. UDP zwykle nie jest zniekształcony, a pozostałe protokoły 254 IP paylod są zwykle całkowicie nietknięte.


źródło
0

User Datagram Protocol (UDP)

Jest to część podstawowych protokołów pakietu Internet Protocol Suite. Programy na komputerach w sieci mogą wysyłać krótkie wiadomości nazywane czasami datagramami. UDP nie gwarantuje żadnej niezawodności (zdarza się, że datagram może pojawić się poza kolejnością, jest zduplikowany lub brakuje go bez powiadomienia). Fakt, że nie sprawdza się, czy wszystkie pakiety są rzeczywiście dostarczane, UDP okazuje się szybszy i bardziej wydajny w przypadku aplikacji, które nie wymagają gwarantowanej dostawy. UDP znajduje zastosowanie w takich sytuacjach:

Aplikacje wrażliwe na czas. Unika się problemów związanych z opóźnionymi pakietami

Jest także przydatny dla serwerów, które odpowiadają na małe zapytania od ogromnej liczby klientów. UDP obsługuje transmisję pakietów (przekazuje do wszystkich w sieci lokalnej) i multiemisję (przekazuje do wszystkich subskrybentów).

Protokół kontroli transmisji (TCP)

Jest często określany jako TCP / IP ze względu na znaczenie tego protokołu w pakiecie Internet Protocol Suite. TCP działa na wyższym poziomie, dotyczy tylko dwóch systemów końcowych (np. Między przeglądarką internetową a serwerem WWW). TCP zapewnia niezawodne, sekwencyjne dostarczanie strumienia danych z jednego programu na jednym komputerze do innego programu na innym komputerze. Typowe zastosowania obsługi przegrupowywania wiadomości e-mail przez TCP oraz przesyłania plików i aplikacji internetowych. Wśród zadań zarządzania TCP kontroluje rozmiar wiadomości, szybkość wymiany wiadomości i przeciążenie ruchu w sieci. Jeśli chodzi o IP, obsługuje transmisje niższego poziomu z komputera na komputer jako wiadomość przesyłaną przez Internet.


źródło
0

Oba są protokołami sieciowymi zbudowanymi na czymś zwanym protokołem internetowym lub IP. Protokół internetowy jest głównym protokołem Internetu i umożliwia na przykład przeglądanie Internetu. Dlatego często zobaczysz te protokoły zapisane jako TCP / IP lub UDP / IP. W rzeczywistości są to podstawowe protokoły Internetu.

W obu przypadkach dane są dzielone na części zwane pakietami. TCP zapewnia, że ​​pakiety te docierają do miejsca docelowego we właściwej kolejności i bez błędów.

Z drugiej strony UDP nie zapewni nawet, że pakiet danych dotrze. Zapewni to tylko, że jeśli to dotrze, będzie bezbłędnie.

Zazwyczaj inne protokoły będą działały na TCP i UDP i są znane jako protokoły aplikacji, ponieważ działają w ramach aplikacji, a nie w systemie operacyjnym. Przeglądarka internetowa korzysta z protokołu HTTP, który będzie korzystał z protokołu TCP.

Wyszukiwania nazw domen lub zapytania DNS często używają UDP, ale mogą także używać TCP. Wiele usług przesyłania strumieniowego korzysta z protokołu UDP poniżej innych protokołów aplikacji.

Mam nadzieję, że odpowie na twoje pytanie w prostszym języku angielskim.

Matt
źródło