Transmission Control Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ortografia
Nessun oggetto della modifica
Etichette: Annullato Rimozione di avvisi di servizio Modifica visuale: commutato
Riga 1:
{{F|informatica|novembre 2017}}
{{citazione|Per il TCP due host sono una compagnia, tre sono una folla|J.F. Kurose, K.W. Ross - Internet e Reti di Calcolatori, un approccio top-down}}
In [[telecomunicazioni]] e [[informatica]] il '''Transmission Control Protocol''' ('''TCP''') è un [[protocollo di rete]] a [[rete a pacchetto|pacchetto]] di [[livello di trasporto]], appartenente alla [[suite di protocolli Internet]], che si occupa di ''controllo della [[trasmissione (telecomunicazioni)|trasmissione]]'' ovvero rendere ''affidabile'' la comunicazione dati in rete tra mittente e destinatario. Definito nella RFC 793, su di esso si appoggia gran parte delle [[applicazione (informatica)|applicazioni]] della rete [[Internet]], è presente solo sui [[terminale (telecomunicazioni)|terminali di rete]] ([[host]]) e non sui [[nodo (informatica)|nodi]] interni di [[commutazione (telecomunicazioni)|commutazione]] della [[rete di trasporto]], implementato come strato [[software]] di rete all'interno del [[sistema operativo]] di un host, e il terminale in trasmissione o in ricezione vi accede attraverso l'uso di opportune [[chiamata di sistema|chiamate di sistema]] definite nelle [[Application Programming Interface|API]] di sistema.
 
== Descrizione ==
Il TCP può essere classificato al [[Livello di trasporto|livello trasporto]] (level 4) del [[modello di riferimento OSI]], e di solito è usato in combinazione con il protocollo di [[Livello di rete|livello rete]] (OSI level 3) [[Internet Protocol|IP]].
Nel [[Suite di protocolli Internet|modello TCP/IP]] il protocollo TCP occupa il livello 4, trasporto.
 
In linea con i dettami del livello di trasporto stabiliti dal [[modello ISO/OSI]] e con l'intento di superare il problema della mancanza di affidabilità e controllo della comunicazione sorto con l'interconnessione su vasta scala di [[rete locale|reti locali]] in un'unica grande [[Wide Area Network|rete geografica]], TCP è stato progettato e realizzato per utilizzare i servizi offerti dai protocolli di rete di livello inferiore ([[Internet Protocol|IP]] e protocolli di [[livello fisico]] e [[livello datalink]]) che definiscono efficacemente il [[modo di trasferimento]] sul [[canale (telecomunicazioni)|canale]] di comunicazione, ma che non offrono alcuna garanzia di affidabilità sulla consegna in termini di ritardo, perdita ed [[controllo di errore|errore]] dei [[pacchetto (reti)|pacchetti]] informativi trasmessi, sul [[controllo di flusso]] tra terminali e sul [[controllo della congestione]] di rete, supplendo quindi ai problemi di cui sopra e costruendo così un affidabile [[canale (telecomunicazioni)|canale di comunicazione]] tra due [[processo (informatica)|processi]] applicativi di rete. Il canale di comunicazione così costruito è composto da un flusso bidirezionale di [[byte]] a seguito dell'instaurazione di una [[connessione (informatica)|connessione]] agli estremi tra i due terminali in comunicazione. Inoltre alcune funzionalità di TCP sono vitali per il buon funzionamento complessivo di una rete IP. Sotto questo punto di vista TCP può essere considerato come un protocollo di rete che si occupa di costruire connessioni e garantire affidabilità su una rete IP sottostante che è sostanzialmente di tipo ''[[Best effort|best-effort]]''.
 
Il TCP nacque nel [[1970]] come frutto del lavoro di un gruppo di ricerca del [[Dipartimento della Difesa statunitense]]. I suoi punti di forza sono l'alta affidabilità e robustezza. La sua popolarità si deve anche grazie ad una sua implementazione diffusa dalla [[Università della California, Berkeley|Università di Berkeley]], rilasciata in California sotto forma di sorgenti (''TCP Berkeley''). Molte tuttavia sono le implementazioni e sviluppi che si sono succeduti nel tempo come evoluzioni e miglioramenti (es. ''TCP Tahoe'', ''TCP Reno'', ''TCP New Reno'').
 
=== Caratteristiche principali ===
* TCP è un protocollo '''[[Comunicazione orientata alla connessione|orientato alla connessione]]''', ovvero prima di poter trasmettere dati deve stabilire la comunicazione, negoziando una connessione tra mittente e destinatario, che rimane attiva anche in assenza di scambio di dati e viene esplicitamente chiusa quando non più necessaria. Esso quindi possiede le funzionalità per creare, mantenere e chiudere una [[connessione (informatica)|connessione]].
* TCP è un protocollo affidabile: garantisce la consegna dei segmenti a destinazione attraverso il meccanismo degli acknowledgements.
* Il servizio offerto da TCP è il trasporto di un '''flusso di [[byte]]''' bidirezionale tra due applicazioni in esecuzione su host differenti. Il protocollo permette alle due applicazioni di trasmettere contemporaneamente nelle due direzioni, quindi il servizio può essere considerato "'''[[Full-duplex]]'''" anche se non tutti i protocolli applicativi basati su TCP utilizzano questa possibilità.
* Il ''flusso di byte'' prodotto dall'applicazione (o applicativo, o protocollo applicativo) sull'host mittente, viene preso in carico da TCP per la trasmissione, viene quindi '''frazionato''' in blocchi, detti '''segmenti''', e consegnato al TCP sull'host destinatario che lo passerà all'applicativo indicato dal numero di porta del destinatario nell'header del segmento (es.: applicativo HTTP, porta 80).