Qual è la differenza tra UDP e TCP?


46

Il mio router ha due protocolli (e un'opzione "entrambi") che posso selezionare durante l'impostazione del port forwarding: UDP e TCP. Qual è la differenza tra questi due protocolli e quando sceglieresti uno sopra l'altro nel port forwarding?

Risposte:


51

TCP è supportato da acks e tentativi per assicurarsi che i dati arrivino dove stanno andando. UDP è senza connessione e "spara e dimentica". UDP viene utilizzato principalmente per applicazioni di tipo streaming, in cui se si perdono alcuni dati non è necessario provare a inviarli di nuovo.

Quale usi dipende dall'applicazione. Ad esempio, un server Web utilizza TCP.


3
Questo ha senso - quindi se stai trasmettendo un video in streaming non ha senso inviare nuovamente un fotogramma mancante in seguito perché hai già superato quel punto. Grazie
Guy,

15
+1. Solo per aggiungere, chiunque sia alla ricerca di una comprensione più approfondita dovrebbe leggere uno dei numerosi libri eccellenti sull'argomento di W. Richard Stevens. "TCP / IP Illustrated, v1" e "UNIX Network Programming" servono come tutorial e riferimenti eccellenti.
Murali Suriar,

73

Puoi trovare un buon riassunto qui:

Qual è la differenza tra i protocolli Internet UDP e TCP?

Sia TCP che UDP funzionano sul modello TCP / IP del livello di trasporto, ma hanno un utilizzo molto diverso.

Le differenze più importanti sono:

  • Affidabilità :
    TCP:
    UDP orientato alla connessione: senza connessione
  • Ordinato :
    TCP: l'ordine di ricezione del messaggio è garantito
    UDP: l'ordine non è garantito
  • Peso del protocollo :
    TCP: pesante, a causa della connessione / ordinazione
    UDP ambientale : leggero, pochissime spese generali
  • Pacchetti :
    TCP: streaming, i dati vengono letti come "stream", con nulla che distingue dove finisce un pacchetto e ne inizia un altro. Potrebbero esserci più pacchetti per chiamata in lettura.
    UDP: datagrammi, un pacchetto per una chiamata di lettura.

Struttura del telaio

Quando i dati vengono inviati attraverso la rete, devono essere incapsulati nei cosiddetti "frame". Esistono vari metodi di incapsulamento in base al protocollo e alla topologia utilizzati. Le seguenti immagini mostrano come differiscono le strutture dei frame TCP e UDP.

Questa è la struttura del frame TCP:

Frame TCP

Questa è la struttura del frame UDP, molto più semplice:

Frame UDP

I protocolli tipici che utilizzano TCP sono HTTP, FTP e SMTP. Esempi di protocolli che utilizzano UDP sono DNS e DHCP.


@splattne - l'ordine di ricezione del messaggio è garantito, non trasmesso
Alnitak,

@Alnitak: certo, hai ragione. Intendevo che la ricevuta è garantita nell'ordine di trasmissione. Lo aggiornerò per chiarirlo.
splattne,

43

E la spiegazione del livello CEO:

UDP è quando si lancia la carta nella direzione generale del cestino.

TCP è quando manca, si lanciano ripetutamente copie esatte della stessa carta fino a quando non cade nel cestino. Ci sarebbero sprechi di carta, anche i pacchetti TCP rinviati causerebbero uno spreco di risorse di rete o di sistema.


1
Questa è un'ottima spiegazione di "livello CEO" - mi piace!
Keithius,

Non sono un CEO, ma perché nessuno me l'ha detto prima! : p
Nicolas Dorier,

È brillante!
shylent,

7

TCP e UDP sono entrambi protocolli eseguiti su IP. TCP ha garantito la consegna e UDP no. Selezionare uno o l'altro per il port forwarding a seconda del servizio che si sta tentando di inoltrare. HTTP, ad esempio, è TCP. Se non sai quale protocollo è il servizio che stai tentando di inoltrare, è quasi sicuramente TCP.


3

Per rispondere ad altra parte della tua domanda, devi inoltrare ciò che la tua applicazione utilizza. Per inoltrare il traffico HTTP, selezionare TCP. Per inoltrare il traffico TFTP, selezionare UDP. I programmi p2p usano principalmente sia tcp che udp, quindi inoltrali entrambi.

Tutto dipende dal protocollo e dal programma in uso.


non hai del tutto ragione. dns usa anche tcp / 53, non così spesso ma comunque [ad es. per trasferimento di zona].
pQd

sì. Inoltre, è del tutto valido inviare query DNS regolari su tcp. Ho cambiato l'esempio in TFTP, che utilizza esclusivamente UDP.
hayalci,

2

Oltre alle differenze menzionate finora, TCP fornisce anche

controllo del flusso. Utilizzando un meccanismo a finestra, il destinatario limita il numero di ottetti (byte) che desidera ricevere dal mittente prima che il mittente debba attendere l'autorizzazione per inviare più dati. La dimensione della finestra può essere modificata dal destinatario mentre la conversazione procede. Ciò consente a un destinatario di "limitare" la velocità dei dati provenienti da un mittente: UDP non lo consente e tutto ciò che un destinatario può fare è gettare via i dati che non può bufferizzare o elaborare all'arrivo.

alcune strutture più tecniche come il riconoscimento non contiguo (utilizza i riconoscimenti selettivi per consentire al mittente di ritrasmettere solo un frame mancante anziché il frame mancante e quelli successivi che il destinatario ha già ma che non è stato in grado di riconoscere nel solito modo), gestione della congestione e ritrasmissione adattiva (regolazione del timer che decide quanto tempo deve inviare nuovamente un frame trasmesso quando non viene ricevuto un riconoscimento). Questi non sono rilevanti per UDP ma aiutano TCP a fornire servizi extra su UDP senza aumentare notevolmente il carico di rete per lo stesso volume di payload.


2

TCP si impegna a garantire che i dati siano stati inviati al destinatario; UDP no.


Sbagliato. Il protocollo IP non è affidabile e può verificarsi una perdita di dati. TCP si impegna a garantire che i dati inviati (che vengono suddivisi in piccole parti e inviati tramite pacchetti IP) li invieranno al destinatario (eventualmente rinviando parti piccole se necessario).
Anonimo il

@ Anonimo - In pratica hai ribadito ciò che ho detto sopra. Come sbaglio?
J. Polfer,

Penso che entrambi scoprirete che IP è il framework (stack) sottostante e il protocollo di comunicazione di base che utilizzano sia UDP che TCP. In realtà non puoi comunicare dati utili su Internet usando JUST IP, per quanto ne so - anche i ping di base ecc. Usano un protocollo sopra IP (l'altro principale; ICMP).
Lee B,

1

Non importa tutte le risposte che spiegano l'una contro l'altra. Ai fini della configurazione di un port-forward, le regole sono piuttosto semplici: devi scegliere TCP, a meno che i documenti per il protocollo / l'applicazione che stai usando dicano di usare UDP. Di solito quelli che usano UDP sono legati allo streaming, o cose molto semplici che favoriscono protocolli leggeri / velocità rispetto all'affidabilità (in particolare DNS e NTP). Nota che ci sono altri protocolli oltre a TCP e UDP: ICMP, protocolli di tunneling, ecc.


1

Più un protocollo è noto, più router sul percorso interviene con il protocollo. Invia pacchetti tcp e c'è una grande probabilità che i pacchetti ricevuti siano fortemente alterati. UDP di solito non è così mutilato, e gli altri 254 protocolli paylod IP sono di solito completamente intatti.


0

User Datagram Protocol (UDP)

Fa parte dei protocolli di base di Internet Protocol Suite. I programmi su computer in rete possono inviare brevi messaggi a volte chiamati come datagrammi. UDP non garantisce alcuna affidabilità (capita che il datagramma possa arrivare fuori servizio, duplicato o mancante senza preavviso). Il fatto che non venga verificato se tutti i pacchetti vengono effettivamente consegnati, UDP si rivela più veloce ed efficiente, per le applicazioni che non richiedono la consegna garantita. UDP trova i suoi usi in tali situazioni:

Applicazioni sensibili al tempo. I problemi dovuti a pacchetti ritardati vengono evitati

È anche utile per i server che rispondono a piccole query da un numero enorme di client. UDP supporta la trasmissione di pacchetti (trasmette a tutti sulla rete locale) e il multicast (trasmette a tutti gli abbonati).

TCP (Transmission Control Protocol)

Viene spesso indicato come TCP / IP a causa dell'importanza di questo protocollo in Internet Protocol Suite. TCP opera a un livello superiore, riguardando solo i due sistemi finali (ad esempio tra browser Web e server Web). TCP fornisce una consegna affidabile e sequenziale di un flusso di dati da un programma su un computer a un altro programma su un altro computer. Gli usi comuni del TCP raggruppano il supporto e-mail e il trasferimento di file e le applicazioni Web. Tra le sue attività di gestione, TCP controlla la dimensione dei messaggi, la velocità con cui vengono scambiati i messaggi e la congestione del traffico di rete. Per quanto riguarda l'IP, gestisce le trasmissioni di livello inferiore da un computer all'altro come un messaggio trasferito su Internet.


0

Bene, entrambi sono protocolli di rete basati su qualcosa chiamato Internet Protocol o IP. Il protocollo Internet è il protocollo principale di Internet ed è, ad esempio, ciò che ci consente di navigare sul Web. Ecco perché vedrai spesso questi protocolli scritti come TCP / IP o UDP / IP. In realtà sono protocolli fondamentali di Internet.

In entrambi i casi i tuoi dati sono suddivisi in blocchi chiamati pacchetti. TCP garantisce che questi pacchetti arrivino a destinazione e nell'ordine corretto e senza errori.

UDP d'altra parte non garantirà nemmeno l'arrivo di un pacchetto di dati. Garantirà solo che se arriva sarà senza errori.

In genere, altri protocolli verranno eseguiti su TCP e UDP e sono noti come protocolli applicativi perché operano all'interno di un'applicazione e non all'interno del sistema operativo. La tua navigazione web utilizza il protocollo HTTP che utilizzerà il protocollo TCP.

Le ricerche dei nomi di dominio o le query DNS spesso usano UDP ma possono anche usare TCP. Numerosi servizi di streaming utilizzano UDP sotto altri protocolli applicativi.

Spero che risponda alla tua domanda in un inglese più semplice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.