Esistono due tipi di traffico IP (Internet Protocol). Loro sono TCP o Transmission Control Protocol e UDP o User Datagram Protocol. TCP è orientato alla connessione - una volta stabilita una connessione, i dati possono essere inviati bidirezionali. UDP è un protocollo Internet più semplice e senza connessione. Più messaggi vengono inviati come pacchetti in blocchi usando UDP.
TCP | UDP | |
---|---|---|
Acronimo di | Transmission Control Protocol | User Datagram Protocol o Universal Datagram Protocol |
Connessione | TCP è un protocollo orientato alla connessione. | UDP è un protocollo senza connessione. |
Funzione | Come un messaggio si fa strada attraverso internet da un computer all'altro. Questo è basato sulla connessione. | UDP è anche un protocollo utilizzato nel trasporto o trasferimento di messaggi. Questo non è basato sulla connessione, il che significa che un programma può inviare un carico di pacchetti a un altro e che sarebbe la fine della relazione. |
uso | TCP è adatto per applicazioni che richiedono un'elevata affidabilità e il tempo di trasmissione è relativamente meno critico. | UDP è adatto per applicazioni che richiedono una trasmissione rapida ed efficiente, come i giochi. La natura stateless di UDP è anche utile per i server che rispondono a piccole query da un numero enorme di client. |
Utilizzare da altri protocolli | HTTP, HTTP, FTP, SMTP, Telnet | DNS, DHCP, TFTP, SNMP, RIP, VOIP. |
Ordinamento di pacchetti di dati | TCP riorganizza i pacchetti di dati nell'ordine specificato. | UDP non ha ordine intrinseco poiché tutti i pacchetti sono indipendenti l'uno dall'altro. Se è richiesto l'ordine, deve essere gestito dal livello dell'applicazione. |
Velocità di trasferimento | La velocità per TCP è più lenta di UDP. | UDP è più veloce perché non viene tentato il recupero degli errori. È un protocollo "best effort". |
Affidabilità | È assolutamente garantito che i dati trasferiti rimangano intatti e arrivino nello stesso ordine in cui sono stati inviati. | Non vi è alcuna garanzia che i messaggi o i pacchetti inviati raggiungano affatto. |
Dimensioni intestazione | La dimensione dell'intestazione TCP è 20 byte | La dimensione dell'intestazione UDP è 8 byte. |
Campi di intestazione comuni | Porta di origine, Porta di destinazione, Somma di controllo | Porta di origine, Porta di destinazione, Somma di controllo |
Streaming di dati | I dati vengono letti come un flusso di byte, nessuna indicazione distintiva viene trasmessa ai limiti del messaggio (segmento) del segnale. | I pacchetti vengono inviati singolarmente e controllati per integrità solo se arrivano. I pacchetti hanno confini definiti che vengono onorati al momento del ricevimento, il che significa che un'operazione di lettura nella presa del ricevitore produrrà un intero messaggio come originariamente inviato. |
Peso | TCP è pesante. TCP richiede tre pacchetti per impostare una connessione socket, prima che i dati utente possano essere inviati. TCP gestisce l'affidabilità e il controllo della congestione. | UDP è leggero. Non c'è ordinamento di messaggi, nessuna connessione di tracciamento, ecc. Si tratta di un piccolo livello di trasporto progettato su IP. |
Controllo del flusso di dati | TCP esegue il controllo del flusso. TCP richiede tre pacchetti per impostare una connessione socket, prima che i dati utente possano essere inviati. TCP gestisce l'affidabilità e il controllo della congestione. | UDP non ha un'opzione per il controllo del flusso |
Controllo errori | TCP esegue il controllo degli errori e il recupero degli errori. I pacchetti errati vengono ritrasmessi dalla sorgente alla destinazione. | UDP esegue il controllo degli errori, ma semplicemente elimina i pacchetti errati. Errore nel recupero non tentato. |
campi | 1. Numero sequenza, 2. Numero AcK, 3. Scostamento dati, 4. Riservato, 5. Bit di controllo, 6. Finestra, 7. Puntatore urgente 8. Opzioni, 9. Riempimento, 10. Controllo Somma, 11. Porta sorgente, 12. Porta di destinazione | 1. Lunghezza, 2. Porta sorgente, 3. Porta destinazione, 4. Verifica somma |
Riconoscimento | Segmenti di riconoscimento | Nessun riconoscimento |
Stretta di mano | SYN, SYN-ACK, ACK | Nessuna stretta di mano (protocollo senza connessione) |
TCP garantisce una consegna affidabile e ordinata di un flusso di byte da utente a server o viceversa. UDP non è dedicato alle connessioni end to end e la comunicazione non controlla la disponibilità del ricevitore.
TCP è più affidabile poiché gestisce la conferma e la ritrasmissione dei messaggi in caso di parti perse. Quindi non ci sono assolutamente dati mancanti. UDP non garantisce che la comunicazione abbia raggiunto il destinatario poiché non sono presenti concetti di riconoscimento, timeout e ritrasmissione.
TCP le trasmissioni vengono inviate in sequenza e vengono ricevute nella stessa sequenza. Nel caso in cui i segmenti di dati arrivino in ordine errato, TCP riordina e consegna l'applicazione. In caso di UDP, la sequenza di messaggi inviata potrebbe non essere mantenuta quando raggiunge l'applicazione ricevente. Non c'è assolutamente alcun modo di prevedere l'ordine in cui il messaggio verrà ricevuto.
TCP è una connessione pesante che richiede tre pacchetti per una connessione socket e gestisce il controllo della congestione e l'affidabilità. UDP è uno strato di trasporto leggero progettato su un IP. Non ci sono collegamenti di tracciamento o ordini di messaggi.
TCP legge i dati come un flusso di byte e il messaggio viene trasmesso ai limiti del segmento. UDP i messaggi sono pacchetti che vengono inviati individualmente e all'arrivo vengono controllati per la loro integrità. I pacchetti hanno dei limiti definiti mentre il flusso di dati non ne ha.
UDP lavora su base "best-effort". Il protocollo supporta il rilevamento degli errori tramite checksum ma quando viene rilevato un errore, il pacchetto viene scartato. Non viene tentata la ritrasmissione del pacchetto per il recupero da quell'errore. Ciò è dovuto al fatto che UDP è solitamente utilizzato per applicazioni sensibili al tempo come i giochi o la trasmissione vocale. Il recupero dall'errore sarebbe inutile perché nel momento in cui il pacchetto ritrasmesso viene ricevuto, non sarà di alcuna utilità.
TCP utilizza sia il rilevamento degli errori che il recupero degli errori. Gli errori vengono rilevati tramite checksum e se un pacchetto è errato, non viene riconosciuto dal ricevitore, che attiva una ritrasmissione da parte del mittente. Questo meccanismo operativo è chiamato Positive Acknowledgment with Retransmission (PAR).
Una connessione TCP viene stabilita tramite un handshake a tre vie, che è un processo di avvio e conferma di una connessione. Una volta stabilita la connessione, può iniziare il trasferimento dei dati. Dopo la trasmissione, la connessione viene interrotta chiudendo tutti i circuiti virtuali stabiliti.
UDP utilizza un modello di trasmissione semplice senza dialoghi di scuotimento manuale impliciti per garantire affidabilità, ordine o integrità dei dati. Pertanto, UDP fornisce un servizio inaffidabile e datagrammi possono arrivare fuori ordine, apparire duplicati o scomparire senza preavviso. UDP presuppone che la verifica e la correzione degli errori non siano necessarie o eseguite nell'applicazione, evitando il sovraccarico di tale elaborazione a livello di interfaccia di rete. A differenza del TCP, UDP è compatibile con le trasmissioni a pacchetto (invio a tutti sulla rete locale) e multicasting (invia a tutti gli abbonati).
La navigazione Web, la posta elettronica e il trasferimento di file sono applicazioni comuni che fanno uso di TCP. TCP viene utilizzato per controllare la dimensione del segmento, la velocità di scambio dei dati, il controllo del flusso e la congestione della rete. Il TCP è preferito dove sono richieste le funzioni di correzione degli errori a livello di interfaccia di rete. UDP è largamente utilizzato da applicazioni sensibili al tempo e da server che rispondono a piccole query da un numero enorme di client. UDP è compatibile con la trasmissione di pacchetti - l'invio a tutti su una rete e multicasting - l'invio a tutti gli abbonati. UDP è comunemente usato in Domain Name System, Voice over IP, Trivial File Transfer Protocol e giochi online.
Per i giochi MMO (massively multiplayer online), gli sviluppatori spesso devono fare una scelta architetturale tra l'uso delle connessioni persistenti UDP o TCP. I vantaggi del TCP sono connessioni persistenti, affidabilità e capacità di utilizzare pacchetti di dimensioni arbitrarie. Il problema più grande con TCP in questo scenario è l'algoritmo di controllo della congestione, che considera la perdita di pacchetti come un segno di limitazioni della larghezza di banda e riduce automaticamente l'invio di pacchetti. Sulle reti 3G o Wi-Fi, ciò può causare una latenza significativa.
Lo sviluppatore esperto Christoffer Lernö ha valutato i pro ei contro e consiglia i seguenti criteri per scegliere se utilizzare TCP o UDP per il tuo gioco: