{"id":257268,"date":"2024-05-21T12:09:06","date_gmt":"2024-05-21T12:09:06","guid":{"rendered":"https:\/\/www.ninjaone.com\/?p=257268"},"modified":"2024-06-05T02:29:58","modified_gmt":"2024-06-05T02:29:58","slug":"tcp-e-udp","status":"publish","type":"post","link":"https:\/\/www.ninjaone.com\/it\/blog\/tcp-e-udp\/","title":{"rendered":"TCP e UDP: Qual \u00e8 la differenza?"},"content":{"rendered":"<p>Cosa sappiamo di TCP e UDP? Internet, blockchain, <a href=\"https:\/\/www.ninjaone.com\/it\/it-hub\/gestione-dei-servizi-it\/cos-e-il-cloud-computing\/\" target=\"_blank\" rel=\"noopener\">cloud computing<\/a>: indipendentemente dal settore, i computer sono pi\u00f9 efficaci quando sono collegati tra loro. Tuttavia, il processo di invio dei dati &#8211; e la garanzia che raggiungano il pubblico nella sua interezza &#8211; richiede una complessa interconnessione di reti e nodi. Prima di entrare nello specifico dei <strong>protocolli Transport Control Protocol (TCP) e User Datagram Protocol (UDP),<\/strong> \u00e8 importante fare un passo indietro.<\/p>\n<p>Tutti i modelli di rete mirano a descrivere un processo simile: come i bit di dati vengono inviati attraverso i fili sotto forma di impulsi elettrici o attraverso i cavi in fibra ottica sotto forma di schemi di luce. E &#8211; alla fine del percorso &#8211; come questi bit di dati vengono ricevuti e riassemblati.<\/p>\n<p>Il trasferimento di dati da un&#8217;applicazione a un&#8217;altra su un computer sarebbe tecnicamente possibile con un unico protocollo. Tuttavia, questo metodo sarebbe incredibilmente fragile: qualsiasi modifica all&#8217;hardware comporterebbe la necessit\u00e0 di cambiare l&#8217;intera applicazione e il software di protocollo. Per ottenere la flessibilit\u00e0 richiesta per il collegamento dei dispositivi, il networking utilizza stack stratificati di diversi protocolli. Ogni strato dello stack ha una funzione specifica e interagisce con gli strati immediatamente superiori e inferiori.<\/p>\n<p>Oggi, il framework pi\u00f9 inclusivo \u00e8 l&#8217;<a href=\"https:\/\/www.ninjaone.com\/it-hub\/gestione-dei-servizi-it\/what-is-the-osi-model\/\" target=\"_blank\" rel=\"noopener\">Open System Interconnection (OSI)<\/a>. Sia UDP che TCP tagliano e modificano alcuni degli strati coinvolti, quindi iniziare con l&#8217;OSI garantisce il miglior punto di partenza per approfondire.<\/p>\n<h2>Una rapida panoramica del modello OSI<\/h2>\n<h3>Strato fisico<\/h3>\n<p>Al livello pi\u00f9 elementare, questo strato \u00e8 costituito dagli elementi meccanici di invio e ricezione dei dati. Questo determina il modo in cui i pin e i fili codificano gli 0 e gli 1 in un segnale che viene poi inviato ai media locali sotto forma di segnali luminosi, elettrici e radio.<\/p>\n<h3>Strato di collegamento dati (DLL)<\/h3>\n<p>Lo strato di collegamento dati funge da intermediario tra i componenti fisici di un dispositivo e i pacchetti di dati basati sulla rete. I dati nello strato fisico sono essenzialmente non strutturati e il compito di questo strato \u00e8 quello di impacchettarli in frame. In questo modo, il flusso costante di dati inviati viene raggruppato in cluster, un processo chiamato multiplexing. In questo caso, a ogni pacchetto di dati viene assegnato un header per etichettare il mittente e la destinazione previsti.<\/p>\n<h3>Strato di rete<\/h3>\n<p>Con i pacchetti di dati pronti a partire, lo strato di rete (o Internet) \u00e8 in grado di instradare i pacchetti di dati da un dispositivo all&#8217;altro attraverso una rete. Ci\u00f2 avviene assegnando a ogni dispositivo un indirizzo IP univoco, che viene utilizzato per identificare il dispositivo e determinare il percorso che i pacchetti devono seguire per raggiungerlo.<\/p>\n<h3>Strato di trasporto<\/h3>\n<p>Situato tra lo strato di rete e quello di sessione, lo strato di trasporto si concentra sulla consegna dei messaggi a un host. Lo strato di trasporto consente alle applicazioni e ai servizi di funzionare pi\u00f9 velocemente, poich\u00e9 i processi a monte non devono considerare le caratteristiche uniche della rete di comunicazione di ogni dispositivo. Questo strato \u00e8 alla base dei protocolli UDP e TCP, di cui parleremo tra poco.<\/p>\n<h3>Strato di sessione<\/h3>\n<p>Lo strato di trasporto non si preoccupa se due computer hanno gi\u00e0 comunicato, ma si concentra solo sul trasporto dei pacchetti avanti e indietro. Lo strato di sessione organizza il traffico in un inizio e una fine logici.<\/p>\n<h3>Strato di presentazione<\/h3>\n<p>Il volume di questi pacchetti di dati pu\u00f2 essere molto elevato. Lo strato di presentazione si concentra principalmente sulla codifica e sulla compressione di questi pacchetti per ridurre la loro richiesta di larghezza di banda prima che lascino il dispositivo del mittente.<\/p>\n<h3>Strato applicazione<\/h3>\n<p>Infine, i dati ricevuti (o quelli che stanno per essere inviati) devono essere comunicati all&#8217;utente. Sebbene l&#8217;OSI sia un modello utile, tieni presente che nessun protocollo moderno ne segue le caratteristiche precise in tutti e 7 gli strati. Per esempio, i protocolli TCP e UDP si concentrano solo sugli strati di rete e di trasporto.<\/p>\n<h2>Che cos&#8217;\u00e8 il TCP<\/h2>\n<p>Il <a href=\"https:\/\/www.ninjaone.com\/it\/it-hub\/accesso-remoto\/cos-e-il-trasmission-control-protocol-tcp\/\">Transport Control Protocol<\/a> \u00e8 stato essenzialmente il primo protocollo di rete. Inventato poco dopo l&#8217;avvento di Internet nel 1981, la sua prima forma era incentrata sulla segmentazione dei dati in pacchetti. Nei decenni successivi, \u00e8 cresciuto e si \u00e8 sviluppato fino a diventare lo <a href=\"https:\/\/www.ninjaone.com\/it\/it-hub\/accesso-remoto\/cos-e-il-trasmission-control-protocol-tcp\/\" target=\"_blank\" rel=\"noopener\">stack TCP\/IP<\/a> che \u00e8 lo standard odierno. I pacchetti all&#8217;interno del TCP sono suddivisi in 4 strati: data link, rete, trasporto e applicazione.<\/p>\n<p>Come suggerisce il nome, il TCP \u00e8 pi\u00f9 influente a livello di trasporto. Prima dell&#8217;invio di qualsiasi dato, il TCP stabilisce una breve connessione tra due endpoint della rete tramite un handshake a tre vie.<\/p>\n<p>Innanzitutto, il client avvia la connessione inviando un messaggio SYN (sincronizzazione) (sotto forma di un numero casuale); quando lo riceve, il server lo riconosce con un SYN-ACK (che aggiunge semplicemente un 1 alla fine del numero del client). Infine, il SYN-ACK viene confermato dal client con un messaggio ACK. Questo handshake virtuale assicura che sia il mittente che il destinatario siano pronti a comunicare e sappiano che il canale \u00e8 stabilito. Se la porta ricevente \u00e8 offline o non disponibile, il messaggio ACK viene sostituito da un pacchetto TCP RST (reset).<\/p>\n<p>Non \u00e8 solo il processo iniziale a basarsi su un riconoscimento bidirezionale: anche la terminazione bidirezionale conferma quando un client o un server ha terminato l&#8217;invio dei dati. In modo simile, dopo che tutti i dati rilevanti sono stati inviati, il client invia un segmento FIN sotto forma di numero di sequenza. Anche in questo caso, il server ne prende atto. Quando tutti i dati sono stati ricevuti dal server, \u00e8 il turno del server di inviare un pacchetto FIN, che viene confermato e la connessione termina.<\/p>\n<h3>L&#8217;importanza dell\u2019IP<\/h3>\n<p>Un aspetto fondamentale di questo processo \u00e8 che ogni connessione deve avere una destinazione definita prima di essere inviata. Solo dopo pu\u00f2 avvenire l&#8217;handshake TCP. \u00c8 qui che il protocollo Internet (IP) agisce come l&#8217;altra faccia della medaglia del TCP\/IP.<\/p>\n<p>Ogni dispositivo o dominio connesso a Internet ha un <a href=\"https:\/\/www.ninjaone.com\/it\/it-hub\/gestione-dei-servizi-it\/indirizzo-ip\/\" target=\"_blank\" rel=\"noopener\">indirizzo IP <\/a>univoco. Nell&#8217;header di ogni pacchetto di dati c&#8217;\u00e8 l&#8217;indirizzo IP del destinatario, il che significa che i dati arrivano dove devono arrivare. Una volta identificato l&#8217;indirizzo IP, il processo TCP pu\u00f2 avviare il trasferimento dei dati. I dati ricevuti devono per\u00f2 arrivare alla porta giusta: ecco perch\u00e9 i pacchetti TCP includono i dati della porta. Considera l&#8217;IP come un codice postale e i dati della porta TCP come un numero civico specifico. Infine, i pacchetti TCP includono un numero di sequenza, simile alle pagine numerate di una lettera, che identifica l&#8217;ordine di invio dei pacchetti.<\/p>\n<p>Sebbene il protocollo TCP\/IP sia diventato lo standard per una <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-a-transmission-path\/\" target=\"_blank\" rel=\"noopener\">trasmissione dei dati<\/a> sicura e affidabile su Internet, uno dei principali vantaggi dell&#8217;approccio IP \u00e8 la sua flessibilit\u00e0, e comunque il TCP non \u00e8 l\u2019unico modo per trasportare i dati da un punto A a un punto B.<\/p>\n<h2>Che cos&#8217;\u00e8 l&#8217;UDP<\/h2>\n<p>Il <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-udp-user-datagram-protocol\/\" target=\"_blank\" rel=\"noopener\">protocollo UDP (User Datagram Protocol)<\/a> \u00e8 un protocollo di trasporto dati leggero che si basa sulle fondamenta dell&#8217;IP. Invece del lungo processo di handshake del TCP, tuttavia, l&#8217;UDP invia piccoli pacchetti indipendenti, noti come datagrammi, senza fare prima un riferimento incrociato a una connessione. Sebbene ci\u00f2 possa sembrare rischioso, UDP \u00e8 costruito con la capacit\u00e0 di abbandonare le informazioni senza subire un&#8217;interruzione critica delle comunicazioni.<\/p>\n<p>Ogni datagramma \u00e8 un&#8217;unit\u00e0 autosufficiente e non contiene informazioni sui dati precedenti o successivi. In questo modo, invece di dover elaborare un arretrato di pacchetti in ritardo, un server pu\u00f2 gestire le richieste in modo completamente lineare. Questo processo \u00e8 facilitato dalla dimensione dei pacchetti coinvolti in UDP. Tieni presente che i pacchetti TCP hanno un sistema di controllo degli errori e una numerazione sequenziale incorporati: eliminando tutti questi optional, i datagrammi UDP sono, in termini di dimensione, una frazione degli altri. Questi dati semplificati possono essere elaborati alla velocit\u00e0 della luce.<\/p>\n<p>Di conseguenza, UDP viene utilizzato nei servizi che richiedono un&#8217;elaborazione quasi in tempo reale. Pensa allo streaming video e ai giochi per computer: possono richiedere molti datagrammi UDP, ma la loro velocit\u00e0 \u00e8 necessaria per una buona esperienza utente. E se un pacchetto cade o si perde, le implicazioni nella vita reale sarebbero forse un pixel mancante che dura un fotogramma. Le query <a href=\"https:\/\/www.ninjaone.com\/it\/it-hub\/gestione-dei-servizi-it\/cos-e-un-server-dns\/\" target=\"_blank\" rel=\"noopener\">DNS (Domain Name Service)<\/a>, che collegano un nome di dominio a un indirizzo web riconoscibile, utilizzano UDP. Queste richieste sono minuscole, costituite da una singola coppia di richiesta e risposta, ma devono avvenire rapidamente, rendendo UDP il loro naturale caso d&#8217;uso.<\/p>\n<h3>Differenze, funzionalit\u00e0 per funzionalit\u00e0, tra TCP e UDP<\/h3>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Funzionalit\u00e0<\/b><\/td>\n<td style=\"width: 48.996%;\"><b>UDP (User Datagram Protocol)<\/b><\/td>\n<td style=\"width: 38.253%;\"><b>TCP (Transmission Control Protocol)<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Connessione<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Senza connessione, non stabilisce una connessione prima di inviare i dati.<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">Orientato alla connessione, stabilisce un handshake a tre vie prima del trasferimento dei dati.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Affidabilit\u00e0<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Non garantisce la consegna, l&#8217;ordine o il controllo degli errori.<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">L&#8217;architettura dei pacchetti garantisce la consegna nell&#8217;ordine corretto.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Velocit\u00e0<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Veloce.<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">Pi\u00f9 lento di UDP grazie ai meccanismi di controllo degli errori.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Controllo del flusso di dati<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Nessun controllo di flusso; invia i dati alla velocit\u00e0 che il mittente pu\u00f2 generare e che la rete pu\u00f2 gestire.<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">Il controllo del flusso \u00e8 gestito attraverso tecniche di windowing per regolare il flusso dei dati.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Utilizzo<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Utilizzato per applicazioni sensibili al tempo in cui la perdita di alcuni dati \u00e8 tollerabile (ad esempio, streaming audio\/video in diretta).<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">Utilizzato nei casi in cui la trasmissione affidabile dei dati \u00e8 fondamentale (ad esempio, navigazione web, e-mail).<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Dimensione dell&#8217;header<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Dimensione dell&#8217;header ridotta (8 byte).<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">Dimensione dell&#8217;header maggiore (minimo 20 byte).<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 12.6506%;\"><b>Sequenziamento<\/b><\/td>\n<td style=\"width: 48.996%;\"><span style=\"font-weight: 400;\">Non mette in sequenza i pacchetti di dati.<\/span><\/td>\n<td style=\"width: 38.253%;\"><span style=\"font-weight: 400;\">Sequenzia i pacchetti di dati per garantire una consegna ordinata.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Un ultimo spunto di riflessione sul tema della sicurezza<\/h2>\n<p>Quando ti trovi a scegliere tra i protocolli UDP e TCP nei tuoi progetti, tieni presente che, sebbene la velocit\u00e0 dell&#8217;UDP lo renda una prospettiva attraente, questo protocollo \u00e8 intrinsecamente pi\u00f9 suscettibile a problemi di sicurezza come spoofing e attacchi Denial of Service. Il meccanismo di handshake del TCP impedirebbe a qualsiasi indirizzo IP contraffatto di causare problemi, ma comunque sappi che neanche il TCP \u00e8 immune alle minacce. Negli anni pi\u00f9 recenti, gli attacchi di amplificazione DDoS hanno attaccato con successo questo meccanismo di scambio bidirezionale per costringere un server ad aspettare il messaggio ACK finale, che non arriva mai.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cosa sappiamo di TCP e UDP? Internet, blockchain, cloud computing: indipendentemente dal settore, i computer sono pi\u00f9 efficaci quando sono collegati tra loro. Tuttavia, il processo di invio dei dati &#8211; e la garanzia che raggiungano il pubblico nella sua interezza &#8211; richiede una complessa interconnessione di reti e nodi. Prima di entrare nello specifico [&hellip;]<\/p>\n","protected":false},"author":89,"featured_media":256437,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[4354],"tags":[],"class_list":["post-257268","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-operazioni-it"],"acf":[],"modified_by":"Sergio Oricci","_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/posts\/257268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/users\/89"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/comments?post=257268"}],"version-history":[{"count":0,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/posts\/257268\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media\/256437"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=257268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/categories?post=257268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/tags?post=257268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}