TCP e UDP: differenze di trasporto ed esempi pratici
TCP e UDP trasportano i dati delle applicazioni su IP, ma offrono servizi diversi. TCP fornisce alle applicazioni un flusso di byte ordinato con conferme di ricezione e ritrasmissione. UDP invia singoli datagrammi senza queste garanzie a livello di trasporto. Nessuna delle due scelte è automaticamente migliore: decidono i requisiti dell'applicazione.
Cosa offre TCP
TCP stabilisce una connessione tra gli endpoint prima che vengano scambiati i dati dell'applicazione. Numera i segmenti, può ritrasmettere i dati mancanti e consegna i byte all'applicazione ricevente nell'ordine corretto. Il controllo di flusso e di congestione aiuta a evitare che un mittente sovraccarichi il destinatario o la rete. Queste proprietà sono adatte a file, e-mail e molte connessioni web. Non implicano la crittografia: per proteggere i contenuti serve un protocollo di sicurezza separato come TLS.
Quando un segmento va perso, l'applicazione può dover attendere i byte mancanti prima di elaborare quelli successivi. Ciò è appropriato per un documento che deve arrivare integro, ma può aggiungere ritardo al traffico interattivo. TCP inoltre non preserva i confini dei messaggi dell'applicazione. Due scritture del mittente non devono necessariamente corrispondere a due letture del destinatario; l'applicazione deve definire come delimitare i propri messaggi.
Cosa UDP lascia all'applicazione
UDP preserva i confini dei datagrammi e non stabilisce una connessione in stile TCP. UDP di per sé non conferma la consegna, non riordina i pacchetti e non ritrasmette i dati mancanti. Un'applicazione basata su UDP può comunque aggiungere queste funzioni, insieme al controllo della congestione e alla crittografia, quando necessario. Il DNS usa comunemente UDP per le query. QUIC funziona su UDP ma implementa flussi affidabili e sicurezza moderna a un livello superiore.
Per una conversazione dal vivo o un gioco, un pacchetto molto in ritardo può essere meno utile del successivo arrivato in tempo. Alcune applicazioni scelgono quindi di gestire da sole perdite e scadenze. Usare UDP non rende veloce una rete congestionata: code e scarti influiscono su entrambi i protocolli di trasporto. Misura l'applicazione reale invece di presumere che il nome del protocollo ne preveda le prestazioni. Come verifica aggiuntiva puoi usare lo strumento Verifica raggiungibilità di IP o sito web di 2IP.
Porte e scelta del protocollo
Entrambi usano numeri di porta, ma la porta TCP 443 e la porta UDP 443 identificano endpoint diversi. Una verifica delle porte TCP non può dimostrare che un servizio UDP sullo stesso numero funzioni. HTTP/1.1 e HTTP/2 usano normalmente TCP con TLS, mentre HTTP/3 usa QUIC su UDP. Quando la connettività UDP non funziona, un client può usare una versione di HTTP basata su TCP; il risultato esatto dipende da entrambi gli endpoint.
Parti dalle esigenze dell'applicazione: consegna completa, ordine, confini dei messaggi e limiti di tempo. Poi verifica il supporto della rete e i requisiti di sicurezza. Le specifiche di TCP e UDP definiscono i rispettivi servizi di trasporto. Consulta la guida alle porte di rete per il significato dei numeri.