{"id":944,"date":"2021-08-03T11:41:16","date_gmt":"2021-08-03T09:41:16","guid":{"rendered":"https:\/\/il-mio-ip.it\/?page_id=944"},"modified":"2021-08-03T22:31:09","modified_gmt":"2021-08-03T20:31:09","slug":"tcp-transmission-control-protocol","status":"publish","type":"page","link":"https:\/\/il-mio-ip.it\/?page_id=944","title":{"rendered":"TCP \/ Transmission Control Protocol"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull has-background-dim has-parallax has-background-gradient\" style=\"background-image:url(https:\/\/il-mio-ip.it\/wp-content\/uploads\/2021\/08\/servizi.jpg);min-height:380px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__gradient-background\" style=\"background:linear-gradient(100deg,rgb(21,50,67) 0%,rgb(26,108,122) 100%)\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h1 class=\"has-text-align-center has-white-color has-text-color wp-block-heading\">TCP \/ Transmission Control Protocol<\/h1>\n<\/div><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"color: #0693e3;\" class=\"ugb-highlight\"><strong><strong><strong>Il protocollo TCP<\/strong><\/strong><\/strong><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TCP \u00e8 uno degli elementi costitutivi pi\u00f9 importanti della suite di protocolli TCP\/IP. Come definito nelle specifiche RFC793, \u201cTCP \u00e8 un protocollo affidabile end-to-end orientato alla connessione (connection oriented) e progettato per adattarsi a una gerarchia stratificata di protocolli che supportano applicazioni multi-rete&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In parole semplici, il protocollo TCP stabilisce una connessione tra l&#8217;origine e la destinazione. Durante questa connessione, il protocollo TCP suddivide i dati dell&#8217;origine in segmenti, e quindi li riassembla una volta giunti a destinazione. Qualsiasi segmento non ricevuto o ricevuto per errore viene inviato nuovamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nell\u2019ambito del modello OSI, il TCP pu\u00f2 essere classificato al livello Transport (livello 4) di tale modello, e il suo utilizzo pi\u00f9 comune \u00e8 quello effettuato in combinazione con il protocollo IP, di livello rete (OSI 3).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Invece nel modello TCP\/IP il protocollo TCP occupa il livello 4, ovvero Transport.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il protocollo TCP \u00e8 stato progettato con l\u2019interno di superare i problemi di affidabilit\u00e0 delle comunicazioni che affliggono il modello IP del livello 3 (Network) dello stack OSI. TCP \u00e8 stato quindi realizzato il modo da utilizzare i servizi offerti dai protocolli di rete di livello inferiore (Network, Data-Link e Fisico) in ottica di affidabilit\u00e0. I protocolli inferiore dello stack OSI infatti definiscono in maniera efficace il modo di trasferimento tramite un canale di comunicazione, ma parimenti non offrono alcuna garanzia sull\u2019affidabilit\u00e0 in termini di consegna dei pacchetti. Il protocollo TCP sopperisce a questa mancanza creando un canale di comunicazione affidabile tra due processi applicativi residenti su due host di rete.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TCP \u00e8 quindi diventato fondamentale per garantire il corretto funzionamento di una rete IP, dato che si occupa per l\u2019appunto di costruire connessioni di rete nell\u2019ambito di una sottostante rete IP, che, come abbiamo visto, \u00e8 di tipo best-effort (senza garanzie), e di garantirne al contempo l\u2019affidabilit\u00e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le sue principali caratteristiche sono le seguenti:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TCP \u00e8 un protocollo connection oriented<\/strong> e quindi prima di iniziare a trasmettere dati deve stabilire la comunicazione tra il mittente e il destinatario. Il canale di comunicazione, una volta stabilito, rimane attivo anche in assenza di scambio dati, e la sua chiusura non avviene in automatico ma deve essere effettuata esplicitamente. Il protocollo&nbsp; TCP quindi possiede le funzionalit\u00e0 per creare, mantenere e chiudere una connessione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TCP \u00e8 un protocollo affidabile<\/strong>, a differenza del protocollo IP dello stack OSI: esso quindi garantisce la corretta consegna dei segmenti a destinazione attraverso il meccanismo dei flag acknowledgements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il servizio offerto da TCP consiste quindi nel trasporto di un flusso di byte in maniera bidirezionale tra due applicazioni in esecuzione su differenti host. Il protocollo permette alle due applicazioni di trasmettere contemporaneamente nelle due direzioni, quindi il servizio \u00e8 di tipo Full-duplex, anche se non tutti i protocolli applicativi basati su TCP utilizzano questa modalit\u00e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I dati, sotto forma di flusso di byte, che partono dall\u2019host verso il destinatario, sono presi in carico per la trasmissione da parte del protocollo TCP, quindi vengono frazionati in pacchetti, detti segmenti, e consegnati al destinatario. L\u2019host destinatario riceve il flusso dati attraverso una determinata porta logica, e lo passa all\u2019applicativo che ne ha fatto richiesta sull\u2019host destinatario. Ad esempio, le comunicazioni sul protocollo HTTP avvengono in modalit\u00e0 TCP, e gli host coinvolti comunicano sulla porta 80.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il protocollo TCP garantisce che i dati trasmessi, una volta giunti a destinazione, lo facciano nel corretto ordine e una sola volta. Pi\u00f9 specificamente, il protocollo TCP offre ai livelli superiori un servizio equivalente ad una connessione fisica diretta che si occupa del trasporto di un flusso di byte. Il corretto funzionamento di questo flusso di trasporto viene realizzato tramite i meccanismi di acknowledgment e di ritrasmissione su timeout. Il protocollo offre inoltre diverse funzione per il controllo di errori sui pacchetti grazie al campo checksum contenuto nella sua PDU, e anche funzionalit\u00e0 per il controllo del flusso di dati tra host che comunicano tramite reti o canali congestionati, riuscendo a gestire efficacemente la quantit\u00e0 necessaria di segmenti da inviare e gestire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Infine, la disponibilit\u00e0 della comunicazione attraverso i numeri di porta, ci permette di ottenere delle connessioni di tipo multiplexing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La Figura [24] mostra un tipico segmento TCP.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"408\" src=\"https:\/\/il-mio-ip.it\/wp-content\/uploads\/2021\/08\/24-segmento-TCP-1024x408.png\" alt=\"Figura 24: Segmento TCP\" class=\"wp-image-946\" srcset=\"https:\/\/il-mio-ip.it\/wp-content\/uploads\/2021\/08\/24-segmento-TCP-1024x408.png 1024w, https:\/\/il-mio-ip.it\/wp-content\/uploads\/2021\/08\/24-segmento-TCP-300x120.png 300w, https:\/\/il-mio-ip.it\/wp-content\/uploads\/2021\/08\/24-segmento-TCP-768x306.png 768w, https:\/\/il-mio-ip.it\/wp-content\/uploads\/2021\/08\/24-segmento-TCP.png 1234w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption><em><strong>Figura 24: Segmento TCP<\/strong><\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Source Port (16 bit)<\/strong>: Identifica il numero di porta associato alla connessione TCP sull&#8217;host sorgente, o mittente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Destination Port (16 bit)<\/strong>: Identifica il numero di porta associato alla connessione TCP sull&#8217;host di destinazione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sequence Number (32 bit)<\/strong>: Numero che indica lo scostamento (espresso in byte) dell&#8217;inizio del segmento TCP all&#8217;interno del flusso completo, a partire dall&#8217;Initial Sequence Number (ISN), deciso all&#8217;apertura della connessione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Acknowledgment Number (32 bit)<\/strong>: Numero di riscontro, ha significato solo se il flag ACK \u00e8 impostato a 1, e conferma la corretta ricezione di una parte del flusso di dati nella direzione opposta, indicando il valore del prossimo Sequence number che l&#8217;host mittente del segmento TCP si aspetta di ricevere.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HLEN (4 bit)<\/strong>: Indicato anche come Data Offset esprime la lunghezza (in dword da 32 bit, ovvero in Double Word) dell&#8217;header del segmento TCP; tale lunghezza pu\u00f2 variare da 5 un minimo di dword (20 byte) a 15 dword (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Opzioni\/Padding.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Reserved (4 bit)<\/strong>: questi 4 bit non sono attualmente utilizzati ma restano predisposti per sviluppi futuri del protocollo; dovrebbero essere impostati a zero.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Flags (8 bit)<\/strong>: Bit utilizzati per il controllo del protocollo. Pu\u00f2 assumere diversi valori, di seguito riportati:<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>CWR (Congestion Window Reduced)<\/strong>: se impostato a 1 questo flag indica che l&#8217;host sorgente ha ricevuto un segmento TCP con il flag ECE impostato a 1.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>ECE [ECN (Explicit Congestion Notification) -Echo]<\/strong>: se impostato a 1 indica che l&#8217;host supporta il protocollo ECN.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>URG <\/strong>&#8211; se impostato a 1 indica che nel flusso sono presenti dati da inviare in maniera urgente alla posizione, ovvero all\u2019offset, indicata dal campo \u201cUrgent pointer\u201d. Il campo Urgent Pointer punta alla fine dei dati urgenti;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>ACK<\/strong> &#8211; se impostato a 1 indica che il campo Numero di Acknowledgment \u00e8 valido;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>PSH<\/strong> &#8211; se impostato a 1 indica che i dati in arrivo non devono essere bufferizzati ma che vanno passati subito ai livelli superiori dello stack.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>RST<\/strong> &#8211; se impostato a 1 indica che la connessione non \u00e8 valida; questo flag viene quindi utilizzato in caso si verifichi un grave errore. A volte viene utilizzato insieme al flag ACK (di Acknowledgment) per determinare la chiusura di una connessione.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>SYN<\/strong> &#8211; se impostato a 1 indica che l&#8217;host mittente del segmento vuole aprire una connessione TCP con l&#8217;host destinatario e specifica nel campo Numero di Sequenza il valore dell&#8217;Initial Sequence Number (ISN); Questo flag ha quindi lo scopo di sincronizzare correttamente i numeri di sequenza dei due host. L&#8217;host che ha inviato il SYN deve attendere dall&#8217;host remoto un pacchetto SYN\/ACK.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>FIN<\/strong> &#8211; se impostato a 1 indica che l&#8217;host mittente del segmento vuole chiudere la connessione TCP aperta con l&#8217;host destinatario. Il mittente dovr\u00e0 attendere la conferma dal ricevente (con un FIN-ACK). A questo punto la connessione \u00e8 ritenuta chiusa per met\u00e0: l&#8217;host che ha inviato FIN non potr\u00e0 pi\u00f9 inviare dati, mentre l&#8217;altro host ha il canale di comunicazione ancora disponibile. Quando anche l&#8217;altro host invier\u00e0 il pacchetto con FIN impostato la connessione, dopo il relativo FIN-ACK, sar\u00e0 considerata completamente chiusa.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Window (16 bit)<\/strong>: Indica la dimensione della finestra di ricezione dell&#8217;host mittente, ovvero il numero di byte che il mittente \u00e8 in grado di accettare a partire da quello specificato dal numero di acknowledgment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Checksum (16 bit)<\/strong>: questo campo si utilizza per effettuare il controllo utilizzato sulla validit\u00e0 del segmento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Urgent pointer (16 bit): Questo flag indica un dato urgente,&nbsp; e ha significato solo se il flag URG \u00e8 impostato a 1. Esso indica lo scostamento in byte a partire dal Numero di Sequenza del byte di dati urgenti all&#8217;interno del flusso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Opzioni\/Padding (facoltative)<\/strong>: campi di uso facoltativo, per usi del protocollo particolari.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dati<\/strong>: rappresenta il carico utile o payload da trasmettere cio\u00e8 la PDU proveniente dal livello superiore.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f3f9fb\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/il-mio-ip.it\/guida-al-networking\/tcp-transmission-control-protocol\/\" data-type=\"page\" data-id=\"944\">&lt;&lt; <strong><strong>TCP \/ Transmission Control Protocol<\/strong><\/strong><\/a><\/h3>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"has-text-align-right wp-block-heading\"><a href=\"https:\/\/il-mio-ip.it\/guida-al-networking\/la-modalita-di-connessione\/\" data-type=\"page\" data-id=\"950\"><strong><strong><strong><strong><strong>La modalit\u00e0 di connessione<\/strong><\/strong><\/strong><\/strong><\/strong> >><\/a><\/h3>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Il protocollo TCP TCP \u00e8 uno degli elementi costitutivi pi\u00f9 importanti della suite di protocolli TCP\/IP. Come definito nelle specifiche RFC793, \u201cTCP \u00e8 un protocollo affidabile end-to-end orientato alla connessione (connection oriented) e progettato per adattarsi a una gerarchia stratificata di protocolli che supportano applicazioni multi-rete&#8221;. In parole semplici, il protocollo TCP stabilisce una connessione [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":647,"menu_order":43,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"right-sidebar","site-content-layout":"plain-container","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[10],"tags":[],"class_list":["post-944","page","type-page","status-publish","hentry","category-guida-al-networking"],"featured_image_urls_v2":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":""},"post_excerpt_stackable_v2":"<p>TCP \/ Transmission Control Protocol Il protocollo TCP TCP \u00e8 uno degli elementi costitutivi pi\u00f9 importanti della suite di protocolli TCP\/IP. Come definito nelle specifiche RFC793, \u201cTCP \u00e8 un protocollo affidabile end-to-end orientato alla connessione (connection oriented) e progettato per adattarsi a una gerarchia stratificata di protocolli che supportano applicazioni multi-rete&#8221;. In parole semplici, il protocollo TCP stabilisce una connessione tra l&#8217;origine e la destinazione. Durante questa connessione, il protocollo TCP suddivide i dati dell&#8217;origine in segmenti, e quindi li riassembla una volta giunti a destinazione. Qualsiasi segmento non ricevuto o ricevuto per errore viene inviato nuovamente. Nell\u2019ambito del modello&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/il-mio-ip.it\/?cat=10\" rel=\"category\">Guida al Networking<\/a>","author_info_v2":{"name":"admin","url":"https:\/\/il-mio-ip.it\/?author=1"},"comments_num_v2":"0 commenti","_links":{"self":[{"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages\/944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=944"}],"version-history":[{"count":6,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages\/944\/revisions"}],"predecessor-version":[{"id":974,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages\/944\/revisions\/974"}],"up":[{"embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages\/647"}],"wp:attachment":[{"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}