Anatomia di una connessione internet - TCP e UDP - prima parte
15 Maggio 2008 by ciambellasenzabucoPrimo, non me ne vogliano i puristi… non userò un linguaggio tecnico, sarò volutamente poco preciso ed accurato nelle descrizioni, infatti lo scopo è di cercare di capire come funzionano le comunicazioni in rete senza per questo che chi legge sia un tecnico.
Bene, detto ciò veniamo al dunque. Come si comunica su internet? La risposta è banale, si instaura una comunicazione tra due sistemi, dei quali uno funge da client e uno da server (se odiate gli anglicismi possiamo chiamarli cliente e servente, ma onestamente mi fa un po’ senso…). Chiaro, però come parlano questi due sistemi? Ci sono degli standard, a seconda della tipologia di comunicazione richiesta e delle necessità operative vengono utilizzati protocolli (e quindi standard) diversi. Esistono diversi tipi di protocollo, alcuni specializzati altri invece generici. I principali sono tcp, udp e icmp.
I primi due sono tipicamente utilizzati per lo scambio di informazioni, il terzo in genere viene utilizzato per testare le reti e gli eventuali problemi connessi.
Caratteristiche principali:
TCP: Il protocollo TCP offre il servizio di trasporto di un flusso di byte. Questo flusso viene spezzettato in una serie di blocchi (la dimensione è variabile in funzione di diversi parametri) ed inviato all’altro sistema. TCP è orientato alla connessione, vuol dire che prima di operare una trasmissione è richiesto che si instauri una connessione tra il client ed il server, connessione che viene esplicitamente chiusa quando non è più necessaria. Il protocollo è strutturato in modo di trasmettere i dati in maniera tale che sia possibile ricostruire l’intero flusso da parte del sistema ricevente anche quando qualche blocco venga perso (mediante ritrasmissione) o qualora i dati arrivino in un ordine casuale. Accenno poi al fatto che TCP è in grado di determinare lo stato di congestione di una rete, suddividendo così i dati in blocchi di dimensione diversa a seconda ella capacità stessa della rete.
UDP: è un protocollo per molti versi meno sofisticato rispetto a TCP. Non è orientato alla connessione e per questo è un protocollo “inaffidabile” (ciò significa che ad esempio il server invia un pacchetto UDP senza curarsi del fatto che il destinatario lo stia aspettando e che comunque ci sia qualcuno a processare l’informazione). UDP non trasporta una sequenza di dati come TCP, bensì il singolo datagram cioè il singolo frammento che il livello applicativo fa trasmettere. Questo vuol dire che, ad esempio, il server trasmetterà una serie di datagram verso il client e né l’uno né l’altro si interesseranno del fatto che tutti i datagram giungano a destinazione o del fatto che giungano nell’ordine corretto. Fondamentalmente, quindi, UDP offre solo i servizi basilari del livello di trasporto, e cioè l’utilizzo delle porte (multiplazione delle connessioni) e verifica degli errori del singolo datagram (checksum). TCP, oltre a questi, offre come detto anche il controllo di flusso (sequenza dei pacchetti) e il controllo di congestione della rete.
Dopo questa breve introduzione credo che la domanda sia spontanea: e allora quale di questi protocolli si usano in internet? La risposta è tutti e due, dipende dalle necessità.
TCP viene utilizzato quando è importante non solo la trasmissione dei dati, ma anche l’ordine di trasmissione e di ricezione, si usa quando è fondamentale ricevere tutti i pacchetti inviati o ancora quando ci sia la necessità di stabilire una connessione tra server e client. Le connessioni di trasferimento file sono in genere TCP. UDP si usa, invece, quando è fondamentale l’invio di una certa quantità di dati per unità di tempo, anche se magari non è fondamentale ricevere tutti i datagram inviati dal server. Ad esempio il broadcast audio e video di solito utilizza UDP in quanto la perdita di qualche datagram non è rilevante nella riproduzione del flusso multimediale.
