Vraag Wat is het verschil tussen UDP en TCP?


Mijn router heeft twee protocollen (en een "beide" optie) die ik kan selecteren bij het instellen van port forwarding: UDP en TCP. Wat is het verschil tussen deze twee protocollen en wanneer zou u de ene boven de andere selecteren in Port Forwarding?


44
2018-05-16 20:25


oorsprong




antwoorden:


TCP wordt ondersteund door acks en nieuwe pogingen om ervoor te zorgen dat uw gegevens waar ze naartoe gaan, worden opgehaald. UDP is verbindingsloos en "vuur en vergeet". UDP wordt meestal gebruikt voor streaming-type-toepassingen. Als u gegevens verliest, hoeft u deze niet opnieuw te verzenden.

Welke je gebruikt hangt af van de applicatie. Een webserver gebruikt bijvoorbeeld TCP.


51
2018-05-16 20:30



Dat is logisch - dus als je een video streamt, heeft het geen zin om een ​​ontbrekend frame later opnieuw te verzenden omdat je dat punt al gepasseerd bent. Bedankt - Guy
1. Gewoon om toe te voegen, iedereen die op zoek is naar meer diepgaand begrip, zou een van W. Richard Stevens veel uitstekende boeken over dit onderwerp moeten lezen. "TCP / IP Illustrated, v1" en "UNIX Network Programming" dienen als uitstekende tutorials en referenties. - Murali Suriar


U kunt hier een goede samenvatting vinden:

Wat is het verschil tussen UDP- en TCP-internetprotocollen?

Zowel TCP als UDP werken op transportlaag-TCP / IP-model, maar hebben een heel ander gebruik.

De belangrijkste verschillen zijn:

  • Betrouwbaarheid:
    TCP: verbindingsgericht
    UDP: verbindingloos
  • bestelde:
    TCP: volgorde van berichtontvangst is gegarandeerd
    UDP: bestelling kan niet worden gegarandeerd
  • Protocol gewicht:
    TCP: zwaargewicht, vanwege de verbinding / bestelling overhead
    UDP: lichtgewicht, weinig overhead
  • pakketten:
    TCP: streaming, gegevens worden gelezen als een "stream", waarbij niets onderscheidt waar een pakket eindigt en een ander begint. Er kunnen meerdere pakketten per gelezen oproep zijn.
    UDP: datagrammen, één pakket per één leesgesprek.

Frameconstructie

Wanneer gegevens via het netwerk worden verzonden, moet deze worden ingekapseld in zogenaamde "frames". Er zijn verschillende methoden voor inkapseling afhankelijk van het protocol en de topologie die worden gebruikt. De volgende afbeeldingen laten zien hoe TCP- en UDP-framestructuren verschillen.

Dit is de TCP-framestructuur:

TCP frame

Dit is de UDP-framestructuur, veel eenvoudiger:

UDP frame

Typische protocollen die TCP gebruiken zijn HTTP, FTP en SMTP. Voorbeelden van protocollen die gebruikmaken van UDP zijn DNS en DHCP.


71
2018-05-16 20:38



+1 - dit heeft me geholpen, en ik weet hier een beetje over. Bedankt! - tomjedrz
@splattne - volgorde van het bericht bon is garantie, geen transmissie - Alnitak
@Alnitak: je hebt natuurlijk gelijk. Ik bedoel dat de bon gegarandeerd is in de verzendopdracht. Ik zal updaten om dat duidelijk te maken. - splattne
deze afbeeldingen zijn gestorven. - strugee
Kun je alsjeblieft nieuwe foto's plaatsen? - user6607


En de toelichting op het CEO-niveau:

UDP is wanneer u uw papier in de algemene richting van de prullenbak gooit.

Als TCP ontbreekt, gooi je keer op keer exacte kopieën van hetzelfde papier totdat het in de prullenbak valt. Er zou papierverspilling zijn, zelfs opnieuw verzonden TCP-pakketten leiden tot verspilling van netwerk- of systeembronnen.


42
2018-06-02 16:20



Dat is een zeer goede verklaring van "CEO-niveau" - ik vind het leuk! - Keithius
Ik ben geen CEO, maar waarom heeft niemand me dit eerder verteld! : p - Nicolas Dorier
Dit is briljant! - shylent
In het geval van TCP pakt u het gemiste papier niet op: in plaats daarvan gooit u keer op keer exacte kopieën van hetzelfde papier totdat het in de prullenbak valt. Er zou papierverspilling zijn, zelfs opnieuw verzonden TCP-pakketten leiden tot verspilling van netwerk- of systeembronnen. - nixnotwin


TCP en UDP zijn beide protocollen die op IP worden uitgevoerd. TCP heeft een gegarandeerde bezorging en UDP niet. U zou de ene of de andere voor port forwarding selecteren, afhankelijk van welke service u probeert door te sturen. HTTP, bijvoorbeeld, is TCP. Als u niet weet welk protocol de service is die u probeert door te sturen, is dit vrijwel zeker TCP.


7
2018-05-16 20:34





Om een ​​ander deel van uw vraag te beantwoorden, moet u doorgeven wat uw toepassing gebruikt. Als u HTTP-verkeer wilt doorsturen, selecteert u TCP. Als u TFTP-verkeer wilt doorsturen, selecteert u UDP. p2p-programma's gebruiken meestal zowel tcp als udp, dus stuur ze beide door.

Het hangt allemaal af van het protocol en het programma dat u gebruikt.


3
2018-05-16 21:12



je hebt niet helemaal gelijk. dns gebruikt ook tcp / 53, niet zo vaak maar toch [bijv. voor zoneoverdracht]. - pQd
Ja. Het is ook volledig geldig om reguliere dns-vragen over TCP te verzenden. Ik veranderde het voorbeeld in TFTP, dat uitsluitend UDP gebruikt. - hayalci
eigenlijk veranderde je het in TFPT in plaats van TFTP ... Helaas heb ik nog te weinig rep om het voor je te maken. - Peter Hansen
@ peter-hansen bedankt, de fout gecorrigeerd. - hayalci


Evenals de verschillen die tot nu toe zijn genoemd, biedt TCP ook

stroomregeling. Met behulp van een raammechanisme beperkt de ontvanger hoeveel octetten (bytes) hij van de afzender wil ontvangen voordat de afzender moet wachten op toestemming om meer gegevens te verzenden. De grootte van het venster kan door de ontvanger worden gewijzigd naarmate het gesprek voortschrijdt. Hierdoor kan een ontvanger de snelheid van gegevens die van een afzender komen, 'vertragen': UDP staat dit niet toe en een ontvanger kan alleen gegevens weggooien die het niet kan bufferen of verwerken bij aankomst.

wat meer technische voorzieningen zoals niet-aansluitende bevestiging (maakt gebruik van selectieve bevestigingen om de afzender toe te staan ​​alleen een ontbrekend frame opnieuw te verzenden in plaats van het ontbrekende frame en de volgende die de ontvanger al heeft maar niet op de gebruikelijke manier kon bevestigen), congestiebehandeling en adaptieve hertransmissie (het aanpassen van de timer die beslist hoe snel een uitgezonden frame opnieuw moet worden verzonden wanneer een bevestiging niet wordt ontvangen). Deze zijn niet relevant voor UDP, maar helpen TCP om extra services via UDP te bieden zonder de netwerkbelasting voor hetzelfde laadvolume aanzienlijk te verhogen.


2
2018-06-20 13:00





TCP doet zijn best om ervoor te zorgen dat de gegevens bij de ontvanger zijn aangekomen; UDP doet dat niet.


2
2018-06-17 20:24



Fout. Het IP-protocol is niet betrouwbaar en er kan gegevensverlies optreden. TCP doet zijn best om ervoor te zorgen dat verzonden gegevens (die in kleine delen worden opgesplitst en via IP-pakketten worden verzonden) bij de ontvanger komen (door eventueel uiteindelijk kleine onderdelen opnieuw te verzenden). - Anonymous
@ Anoniem - Je hebt in wezen opnieuw gezegd wat ik hierboven heb gezegd. Hoe heb ik het verkeerd? - J. Polfer
Ik denk dat jullie allebei merken dat IP het onderliggende framework (stack) en het basiscommunicatieprotocol is dat zowel UDP als TCP gebruiken. Je kunt eigenlijk geen bruikbare gegevens over het internet communiceren met JUST IP, voor zover ik weet - zelfs basispings etc. gebruiken een protocol bovenop IP (het andere hoofd-protocol, ICMP). - Lee B


Let niet op alle antwoorden die de ene versus de andere uitleggen. Voor het instellen van een port-forward zijn de regels vrij eenvoudig: je moet TCP kiezen, tenzij de documenten voor het protocol / de applicatie die je gebruikt zeggen dat ze UDP gebruiken. Meestal zijn degenen die gebruikmaken van UDP gerelateerd aan streaming, of heel eenvoudige dingen die lichte protocollen / snelheid ten goede komen (met name DNS en NTP). Merk op dat er naast TCP en UDP ook andere protocollen zijn - ICMP, tunnelingprotocollen, etc.


1
2018-04-25 23:37