Transmission Control Protocol: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Check Wikipedia using AWB |
|||
Riga 1:
{{IPstack}}
{{vedi anche|Suite di protocolli Internet}}
In [[telecomunicazioni]] e [[informatica]] il '''Transmission Control Protocol''' ('''TCP'''), anche chiamato '''Transfer Control Protocol''', è un [[protocollo di rete]] a [[rete a pacchetto|pacchetto]] di [[livello di trasporto]], appartenente alla [[suite di protocolli Internet]], che si occupa di ''controllo di [[trasmissione (telecomunicazioni)|trasmissione]]''. È definito nella RFC 793 e su di esso si appoggiano gran parte delle [[applicazione
==Descrizione==
Riga 12:
=== 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 viene esplicitamente chiusa quando non più necessaria. Esso quindi possiede le funzionalità per creare, mantenere e chiudere/abbattere una [[connessione (informatica)|connessione]].
* 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|Full-Duplex]]'''" anche se non tutti i protocolli applicativi basati su TCP utilizzano questa possibilità.
* Il ''flusso di byte'' viene '''frazionato''' in blocchi per la trasmissione dall'applicazione a TCP (che normalmente è implementato all'interno del [[sistema operativo]]), per la trasmissione all'interno di ''[[pacchetto (reti)|segmenti]]'' TCP, per la consegna all'applicazione che lo riceve, ma questa divisione in blocchi non è necessariamente la stessa nei diversi passaggi.
* TCP garantisce che i dati trasmessi, se giungono a destinazione, lo facciano in ordine e una volta sola ("'''at most once'''"). Più formalmente, il protocollo fornisce ai livelli superiori un servizio equivalente ad una connessione fisica diretta che trasporta un flusso di byte. Questo è realizzato attraverso vari meccanismi di [[acknowledgment]] e di ritrasmissione su [[timeout]].
* TCP offre funzionalità di [[controllo di errore]] sui [[pacchetto (reti)|pacchetti]] pervenuti grazie al campo [[checksum]] contenuto nella sua [[Protocol Data Unit|PDU]].
* TCP possiede funzionalità di [[controllo di flusso]] tra terminali in comunicazione e [[controllo della congestione]] sulla connessione, attraverso il meccanismo della [[finestra scorrevole]]. Questo permette di ottimizzare l'utilizzo della rete anche in caso di [[congestione (reti)|congestione]], e di condividere equamente la capacità disponibile tra diverse sessioni TCP attive su un collegamento.
* TCP fornisce un servizio di [[multiplazione#Multiplazione nei protocolli di trasporto|multiplazione]] delle connessioni su un [[host]], attraverso il meccanismo delle [[Porta (reti)|porte]].
Riga 24:
* mentre TCP è un protocollo orientato alla connessione, pertanto per stabilire, mantenere e chiudere una connessione, è necessario inviare pacchetti di servizio i quali aumentano l'overhead di comunicazione. Al contrario, UDP invece è [[connectionless|senza connessione]] ed invia solo i [[datagramma|datagrammi]] richiesti dal [[Livello applicazioni|livello applicativo]];
* UDP non offre nessuna garanzia sull'affidabilità della comunicazione ovvero sull'effettivo arrivo dei datagrammi, sul loro ordine in sequenza in arrivo, al contrario il TCP tramite i meccanismi di acknowledgement e di ritrasmissione su timeout riesce a garantire la consegna dei dati, anche se al costo di un maggiore [[Overhead#Reti di computer|overhead]] (raffrontabile visivamente confrontando la dimensione delle intestazioni dei due protocolli);
* l'oggetto della comunicazione di TCP è il ''flusso di byte'' mentre quello di UDP è il ''singolo datagramma''.
L'utilizzo del protocollo TCP rispetto a [[User Datagram Protocol|UDP]] è, in generale, preferito quando è necessario avere garanzie sulla consegna dei dati o sull'ordine di arrivo dei vari segmenti (come per esempio nel caso di trasferimenti di file).
Riga 30:
=== Segmento TCP ===
La [[Protocol Data Unit|PDU]] di TCP è detta ''segmento''. Ciascun segmento viene normalmente [[imbustamento (reti)|imbustato]] in un pacchetto [[Internet Protocol|IP]], ed è costituito dall'intestazione ([[header]]) TCP e da un carico utile (in inglese [[
Un segmento TCP è così strutturato:
Riga 111:
I due processi che comunicano attraverso una connessione TCP hanno ruoli diversi:
* Il processo che avvia una nuova connessione TCP è detto [[client]], ed invia una richiesta di connessione verso una determinata porta.
* Affinché la connessione venga stabilita, su quella porta deve esserci un processo [[server]] "in ascolto", che accetta di stabilire una connessione TCP.
Riga 125:
In relazione al numero di sequenza TCP ricevente attua le seguenti procedure:
* se il numero di sequenza ricevuto è quello atteso invia direttamente il carico utile del segmento al processo di livello applicativo e libera i propri [[buffer]].
* se il numero di sequenza ricevuto è maggiore di quello atteso deduce che uno o più segmenti ad esso precedenti sono andati persi, ritardati dal livello di rete sottostante o ancora in transito sulla rete. Pertanto, memorizza temporaneamente in un buffer il carico utile del segmento ricevuto fuori sequenza per poterlo consegnare al processo applicativo solo dopo aver ricevuto e consegnato anche tutti i segmenti precedenti non ancora pervenuti passanti anch'essi per il buffer, aspettandone l'arrivo fino ad un tempo limite prefissato (''time-out''). All'istante di consegna del blocco ordinato di segmenti tutto il contenuto del buffer viene liberato. Dal punto di vista del processo applicativo, quindi, i dati arriveranno in ordine anche se la rete ha per qualsiasi motivo alterato questo ordine realizzando così il requisito della '''consegna ordinata dei dati'''.
Riga 189:
[[Categoria:Protocolli di Internet]]
[[Categoria:Protocolli livello trasporto]]
{{Link VdQ|de}}▼
▲{{Link VdQ|de}}
[[ar:تي سي بي]]
[[ast:Transmission Control Protocol]]
| |||