Transcript for:
Protocolli di trasporto TCP e UDP

In questo video analizzeremo i due principali protocolli di trasporto, il TCP e l'UDP. Ma prima di procedere cerchiamo di capire perché abbiamo bisogno dei protocolli di trasporto. Nella rete internet dove si usa come riferimento lo stack TCP IP, ogni pacchetto attraversa 5 livelli. In alto abbiamo il livello applicazione, poi il livello di trasporto, il livello di rete, il livello di collegamento e il livello fisico. Ciascuno di questi livelli svolge un ruolo specifico attraverso l'uso di appositi protocolli. TCP e UDP agiscono nel livello di trasporto. Vi siete mai chiesti come fanno due applicazioni diverse ad utilizzare la stessa connessione ad internet contemporaneamente? Beh, questo è proprio uno dei compiti svolti dal livello di trasporto. Questo processo è noto come moltiplazione della connessione. Per fare ciò i protocolli di trasporto utilizzano un meccanismo di numerazione chiamato porta o numero di porta. Si tratta di un numero codificato su 16 bit e che quindi può assumere tutti i valori compresi tra 0 e 65535 che appunto pari a 2 elevato alla 16 meno 1. Non tutti i numeri di porta possono essere utilizzati liberamente. Alcuni di essi infatti sono riservati. ovvero sono ad uso esclusivo di determinate applicazioni. Ad esempio, la porta numero 80 è utilizzata per la navigazione sul web, la porta 25 è utilizzata per inviare messaggi di posta elettronica e così via. Quando il livello applicativo invia un messaggio, il livello di trasporto utilizza i numeri di porta per effettuare la moltiplazione delle connessioni. Inoltre scompone l'informazione ricevuta in vari pezzi, detti segmenti, che vengono poi inoltrati al livello sottostante, cioè al livello di rete. Quando il destinatario riceve il pacchetto, il livello di trasporto analizzerà la porta del destinatario, in modo da recapitare il pacchetto solo all'applicazione a cui il messaggio è destinato. Andiamo a conoscere ora il primo dei due protocolli di trasporto che analizzeremo, il TCP. TCP è un acronimo che sta per Transfer Control Protocol, protocollo di controllo del trasferimento. Si tratta di un protocollo affidabile e orientato alla connessione. Orientato alla connessione direte voi e che significa? La connessione è un processo che avviene prima di avviare la trasmissione delle informazioni. Mittente e destinatario si accortano e si assicurano di essere entrambi pronti a scambiarsi dei dati. Questa procedura avviene in tre fasi e per questo in inglese viene spesso denotata con il termine three way and shake, cioè stretta di mano in tre fasi. La prima fase è avviata dal mittente che invia un messaggio al destinatario, come dire Ehi, sei pronto? La seconda fase si ha quando il destinatario è pronto e quindi risponde al mittente con un messaggio. Sì, sì, sono pronto. A questo punto il mittente riceve il messaggio e ne invia un ultimo. Quindi ha inizio la terza fase. Ok, iniziamo. Una volta che il destinatario ha ricevuto questo messaggio, il mittente inizia a trasmettere le informazioni oggetto della comunicazione. Durante la trasmissione dei dati, Ogni volta che il destinatario riceve un pacchetto, invia una sorta di ricevuta al mittente. Il mittente in questo modo saprà che il dato è stato ricevuto correttamente. Questo meccanismo prende il nome di Delivery Acknowledgement. A questo punto possiamo chiederci, ma che cosa succede se un dato viene perso e non arriva quindi al destinatario? Bene. Grazie al meccanismo che abbiamo visto in precedenza del delivery acknowledgement, se un dato viene perso, il destinatario non invierà la ricevuta. Quindi, se il mittente, entro un determinato intervallo di tempo, non riceve la ricevuta dal destinatario, che cosa farà? Invierà nuovamente il dato. Questo meccanismo è noto come ritrasmissione dei dati. Sappiamo che nella rete internet nulla ci garantisce che i pacchetti arrivino a destinazione con lo stesso ordine con il quale sono stati inviati. Il TCP svolge un'importante funzione che è quella di riordinare i pacchetti che siano arrivati con un ordine errato. Questo perché prima di inviarlo a livello di applicazione effettua una operazione nota come riordino dei segmenti. Il TCP ha anche altri punti di forza. Infatti questo protocollo è in grado di capire quando la rete è troppo intasata. Quando rileva una situazione del genere, per evitare di generare altro traffico e quindi di intasarla ulteriormente, che cosa fa? Rallenta l'invio dei pacchetti. Un'altra caratteristica distintiva del protocollo TCP è il controllo degli errori. Infatti TCP utilizza sempre un meccanismo chiamato checksum che ci consente di sapere se un pacchetto arrivato a destinazione è stato danneggiato durante il trasporto. Se il destinatario rileva di aver ricevuto un pacchetto danneggiato, chiede al mittente di ritrasmettergli quello stesso pacchetto. Ma non sono tutte rose e fiori. Per svolgere tutte queste belle funzioni il TCP fa un uso di un header abbastanza ingombrante, che aumenta di molto l'overhead della comunicazione. Inoltre ricordate che abbiamo parlato del controllo della congestione? Beh, questa cosa che a prima vista ci può sembrare soltanto una cosa positiva, in realtà nasconde un effetto collaterale. Se la rete è congestionata, i nostri pacchetti potrebbero essere spediti più lentamente del normale e ciò influisce negativamente sulle performance della nostra comunicazione. L'alterego del TCP è il protocollo UDP. UDP è un'abbreviazione di User Datagram Protocol. Si tratta di un protocollo più snello rispetto al TCP, che non richiede di stabilire una connessione prima di trasmettere i dati. Un UDP, quando vuole inviare un pacchetto di informazioni, non si accorda con nessuno, trasmette e basta. D'altro canto, però, l'UDP non è così affidabile come il TCP. Infatti... non controlla se un pacchetto contiene errori oppure no e se un pacchetto non viene consegnato beh pazienza non lo ritrasmette i punti di forza dell'udp sono quello di avere un header molto più piccolo un header di solo 8 byte a confronto di quello del tcp che occupa ben 20 byte inoltre non c'è nessuna connessione da creare quindi la trasmissione dei dati avviene in maniera pressoché istantanea. Inoltre ci consente di avere un maggior controllo sul tempo di invio dei dati. Infatti l'UDP non effettua nessun controllo sulla congestione della rete. TCP e ODP sono uno l'opposto dell'altro. Il TCP è lento però molto affidabile mentre l'UDP è più veloce però non è che ci possiamo fidare molto di lui. Quindi sorge spontanea una domanda. Quando ci conviene usare il TCP e quando invece ci conviene utilizzare l'UDP? Per rispondere a questa domanda dobbiamo precisare che questi due protocolli sono concettualmente diversi tra loro. L'UDP è message oriented, è il livello applicativo che in questo caso decide come gestire la suddivisione dei dati. Il TCP invece è stream oriented. Quindi è pensato per trasmettere grandi flussi di informazione. Il livello applicativo invia al livello di trasporto, quindi al TCP, le informazioni come un unico flusso. Sarà il TCP che dovrà prendersi cura di affettare questo flusso in pezzi più piccoli e poi di ricomporre il tutto lato ricevente. Alla luce di quanto abbiamo appena detto, andiamo a vedere quando ci conviene utilizzare il protocollo TCP. Il TCP risulta adatto in tutte quelle applicazioni in cui i dati, la loro correttezza e la loro integrità sono di fondamentale importanza e soprattutto quando dobbiamo assicurarci che tutto quello che inviamo venga ricevuto e soprattutto venga ricevuto in maniera corretta e senza errori. Per questo motivo il TCP viene utilizzato nel trasferimento dei file, ad esempio in download o anche in upload, o ad esempio viene utilizzato per accedere in remoto a un altro terminale, attraverso ad esempio un protocollo di livello applicativo chiamato SSH. Il protocollo UDP invece si adatta meglio ad altri tipi di situazioni. Ad esempio quando vogliamo compiere delle operazioni piccole e semplici in maniera molto veloce. Oppure in quei contesti in cui la velocità è più importante della correttezza e dell'affidabilità. Quindi nelle applicazioni cosiddette real time. Alcuni esempi in cui si utilizza l'UDP sono il DNS Lookup, cioè il servizio che ci consente di trasformare... un indirizzo di un sito web in un indirizzo IP, oppure l'OTP viene molto spesso utilizzato in tutte quelle applicazioni di telefonia o di videotelefonia che troviamo in rete, proprio per i motivi citati in precedenza.