{"id":960,"date":"2021-08-03T11:51:26","date_gmt":"2021-08-03T09:51:26","guid":{"rendered":"https:\/\/il-mio-ip.it\/?page_id=960"},"modified":"2021-08-03T22:34:32","modified_gmt":"2021-08-03T20:34:32","slug":"affidabilita-della-comunicazione","status":"publish","type":"page","link":"https:\/\/il-mio-ip.it\/?page_id=960","title":{"rendered":"Affidabilit\u00e0 della comunicazione"},"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\"><strong><strong>Affidabilit\u00e0 della comunicazione<\/strong><\/strong><\/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><strong>Affidabilit\u00e0 della comunicazione<\/strong><\/strong><\/strong><\/strong><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vediamo di seguito di illustrare le caratteristiche, e le problematiche, inerenti l\u2019affidabilit\u00e0 della connessione TCP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consegna ordinata ed eliminazione di duplicati<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Come sappiamo il Sequence Number, o numero di sequenza, serve ad identificare in maniera corretta e ordinata l\u2019esatta sequenza del flusso dato di un segmento TCP. Con la trasmissione a commutazione di pacchetto della rete dati infatti ogni pacchetto del messaggio, a seconda del traffico di rete, pu\u00f2 seguire percorsi molto diverse per giungere a destinazione, dove pu\u00f2 quindi giungere fuori sequenza: \u00e8 quindi necessario prevedere un meccanismo che consenta di ricostruire fedelmente la corretta sequenza dei pacchetti in modo da garantire l\u2019integrit\u00e0 e correttezza del messaggio ricostruito dal destinatario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In modalit\u00e0 ricezione il TCP si aspetta di ricevere i segmenti nel corretto ordine, e adotta le seguenti procedure:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se il numero di sequenza ricevuto \u00e8 quello effettivamente atteso, allora il protocollo provveder\u00e0 ad inviare direttamente il carico utile del segmento (ovvero il suo campo Dati) al processo di livello applicativo che ne ha fatto richiesta e libera i propri buffer, in attesa di altri pacchetti.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se il numero di sequenza ricevuto \u00e8 maggiore di quello atteso allora il protocollo deduce che uno o pi\u00f9 segmenti ad esso precedenti sono andati persi, oppure che sono in ritardo e si trovano ancora al livello Network sottostante, o che sono ancora in transito sulla rete. In questo caso il protocollo memorizza in un buffer temporaneo il campo \u201cDati\u201d del segmento ricevuto fuori sequenza e, prima di consegnarlo al processo applicativo che ne ha fatto richiesta, attende di aver ricevuto e consegnato anche tutti i segmenti precedenti non ancora pervenuti, e passanti anch&#8217;essi per il buffer. Il protocollo resta in attesa dei segmenti mancanti fino ad un tempo limite prefissato (time-out), dopo di che i pacchetti vengono contrassegnati come scaduti. Non appena i segmenti attesi vengono ricevuti, il buffer viene liberato, e si rende utilizzabile per altre comunicazioni. Dal punto di vista del processo applicativo, quindi, questo processo \u00e8 del tutto trasparente: l\u2019applicazione ricever\u00e0 i dati nell\u2019ordine corretto anche se la rete, per qualsiasi motivo, ha alterato il corretto ordine di sequenza. In questo modo il protocollo TCP realizza il requisito della consegna ordinata dei dati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se il numero di sequenza ricevuto \u00e8 inferiore a quello atteso, il segmento viene considerato un duplicato di uno gi\u00e0 ricevuto e gi\u00e0 inviato allo strato applicativo soprastante e dunque viene scartato. Questo meccanismo permette di realizzare l\u2019eliminazione dei duplicati di rete.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riscontro dei pacchetti e ritrasmissione<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per ogni segmento dati ricevuto in sequenza in una trasmissione tramite protocollo TCP, l\u2019host ricevente provvede ad inviare un segnale, ovvero un Acknowledgment Number (numero di riscontro) a conferma dell\u2019avvenuta ricezione del messaggio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per ogni segmento ricevuto in sequenza, inoltre, TCP lato ricevente invia un Acknowledgment Number o numero di riscontro dell&#8217;avvenuta ricezione. In particolare, il numero di Ack inviato da A a B \u00e8 pari al numero di sequenza atteso da A e quindi riguarda il flusso dati che va da B ad A: si tratta quindi di un vero e proprio report di quanto ricevuto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In questo ambito il protocollo TCP adotta la politica di conferma cumulativa, ovvero l\u2019arrivo del numero di Ack indica all\u2019host trasmittente che l\u2019host ricevente ha correttamente ricevuto, ed inoltrato al proprio processo applicativo, il segmento avente numero di sequenza pari al numero di Ack \u2013 1 e quindi anche tutti i segmenti precedenti. Per questo motivo vengono mantenuti in un buffer temporaneo tutti i dati inviati, ma per i quali non si \u00e8 ancora registrato il riscontro da parte del ricevente: infatti quando l\u2019host mittente riceve dall\u2019host ricevente il numero di riscontro per un certo segmento, ne deduce che tutti quelli precedenti sono stati correttamente ricevuti, e quindi provvede a liberare il proprio buffer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La permanenza nel buffer, come abbiamo visto, \u00e8 limitata nel tempo, allo scopo ovviamente di evitare tempi di giacenze troppo lunghi per la trasmissione. All\u2019invio di un segmento, l\u2019host mittente avvia un timer, il cosiddetto timer di ritrasmissione o RTO (Retransmission Time Out): se non verr\u00e0 ricevuto l\u2019ack di ricezione dal destinatario entro un lasso di tempo determinato, il mittente ne deduce che i segmenti inviati siano andati persi, e provvede a trasmetterli nuovamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Notiamo che nel protocollo TCP il meccanismo degli Acknowledge Number non consente all\u2019host destinatario di comunicare all\u2019host mittente che un determinato segmento \u00e8 andato perso, ma solo che alcune dei segmenti successivi sono stati ricevuti, quindi \u00e8 possibile che per un solo pacchetto perso ne debbano essere ritrasmessi molti. Questa tecnica si chiama Go-Back-N, ovvero vai indietro di N segmenti. La strategia alternativa si chiama Selective Repeat, e prevede che solo i pacchetti effettivamente persi vengano inviati di nuovo, e presuppone l\u2019utilizzo di ulteriori campi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo comportamento, non ottimale, \u00e8 tuttavia ampiamente compensato dalla semplicit\u00e0 della gestione del protocollo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il meccanismo dei numeri di Ack e i relativi timer di ritrasmissione permette quindi di realizzare una consegna affidabile con controllo degli errori, ovvero permette di garantire che tutti i dati inviati siano comunque consegnati nel caso in cui qualche pacchetto possa essere andato perso nel transito attraverso la rete.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Controllo di flusso<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un altro sistema che garantisce la correttezza e l\u2019affidabilit\u00e0 delle comunicazioni TCP \u00e8 il cosiddetto sistema di controllo di flusso, ovvero un meccanismo che si occupa di controllare che il flusso dati in trasmissione non super le capacit\u00e0 di ricezione o di memorizzazione dell\u2019host ricevente, con la relativa possibile perdita e aumento della latenza della comunicazione dovuta alla necessit\u00e0 di attivare il processo di ritrasmissione. Tale meccanismo viene implementato attraverso la specifica, da parte dell\u2019host di destinazione, di un apposti campo chiamato RCV_WND, ovvero Receive Window (finestra di ricezione). Si tratta di un valore che dipende dallo spazio disponibile e indica il massimo numero di segmenti ricevibili dal destinatario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Problemi nel controllo di flusso in TCP<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il sistema di controllo del flusso presenta tuttavia alcuni problemi, che si possono verificare sia nell\u2019host di trasmissione che in quello di ricezione. Tali problemi sono noti con il termine di Silly Windows Syndrome, letteralmente \u201cSindrome da finestra sciocca\u201d, e sono dovuti essenzialmente a causa delle differenti velocit\u00e0 di lettura\/scrittura dei buffer utilizzati per memorizzare temporaneamente i pacchetti in attesa delle corrette sequenziazione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il Silly Windows si verifica da lato dell\u2019host ricevitore quando questo svuota molto lentamente il proprio buffer di ricezione. Quando il buffer di ricezione \u00e8 pieno, sar\u00e0 necessario aspettare la sua liberazione prima di poter ricevere nuovi pacchetti dal mittente. Quando si libera un po\u2019 di spazio, ovvero si ottiene una Recive Window, seppur piccola, tale valore viene comunicato indietro all\u2019host mittente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tuttavia, la dimensione potenzialmente ridotta della finestra di ricezione pu\u00f2 causare problemi anche all\u2019host di trasmissione, che potrebbe essere costretto ad inviare segmenti molto corti rispetto alla dimensione canonica di 20 byte, con conseguente riduzione dell\u2019efficienza della trasmissione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per ovviare a questo problema \u00e8 opportuno che, prima di riprendere la trasmissione, il destinatario abbia il proprio buffer svuotato per met\u00e0, per lo meno di una quantit\u00e0 pari al Maximum Segment Size, e non svuotato magari solo in piccola parte. Il destinatario, quindi, comunica un dato falso al mittente, inviando dimensione del proprio buffer uguale a 0, e causando cos\u00ec l\u2019interruzione dell\u2019invio di pacchetti da parte del mittente. Questo sistema viene gestito dall\u2019algoritmo di Clark.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il problema della Silly Windows dal lato dell\u2019host trasmettitore si verifica quando l\u2019applicazione genera i dati da inviare molto lentamente. Dal momento che il protocollo TCP legge i dati presenti nel buffer di trasmissione e crea dei segmenti che invia a destinazione, nel caso in cui l\u2019applicazione mittente generi tali dati molto lentamente, si potrebbe verificare l\u2019evenienza che l\u2019entit\u00e0 TCP potrebbe essere forzata a creare segmenti molto corti e con tanto overhead. Questo problema viene risolto facendo in modo che la sorgente TCP provveda intanto ad inviare la prima porzione di dati, anche se corta, ma che i successivi segmenti vengano creati solo dopo che il buffer d\u2019uscita si sia riempito con una quantit\u00e0 di dati sufficiente a riempire almeno un segmento di dimensioni Maximum Segment Size, oppure quando l\u2019host mittente riceve un riscontro valido, ovvero un Ack. Questo meccanismo viene gestito dall\u2019algoritmo di Nagle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Controllo di congestione<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un altro sistema di controllo effettuato a livello TCP per garantire l\u2019affidabilit\u00e0 della comunicazione \u00e8 il controllo di congestione. Tale sistema \u00e8 mirato a prevenire quanto pi\u00f9 possibile i fenomeni di congestione del traffico di rete dovuto all\u2019eccessiva quantit\u00e0 di pacchetti in circolazione, con relativa possibile perdita di dati e maggiore latenza della trasmissione. Il meccanismo funziona essenzialmente occupandosi di effettuare una modulazione temporale sulla quantit\u00e0 opportuna di dati da tenere in circolazione, in funzione dello stato interno di congestione della rete. La particolarit\u00e0 di questo sistema di controllo sta nel fatto che esso viene effettuato agendo sulla trasmissione agli estremi del canale di comunicazione, ovvero sui terminali di rete e non attraverso la commutazione inter alla rete, grazie alle informazioni reperite sui terminali stessi circa lo stato di trasmissione dei pacchetti.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gli host di invio e destinazione si occupano quindi di stimare il livello di congestione della rete avendo come riferimento il numero di pacchetti persi: tale numero viene desunto dal numero di mancati Ack che il destinatario torna indietro al mittente. Questo parametro viene memorizzato in un apposito campo, chiamato C_WND, ovvero Congestion Window (Finestra di Congestione), la quale assegna dinamicamente nel tempo il numero massimo di segmenti da trasmettere al destinatario.<\/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\/multiplexing-e-demultiplexing\/\" data-type=\"page\" data-id=\"956\">&lt;&lt; <strong><strong>Multiplexing e Demultiplexing<\/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\/i-timer-del-protocollo-tcp\/\" data-type=\"page\" data-id=\"963\"><strong><strong><strong><strong><strong>I timer del protocollo TCP<\/strong><\/strong><\/strong><\/strong><\/strong> >><\/a><\/h3>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Affidabilit\u00e0 della comunicazione Vediamo di seguito di illustrare le caratteristiche, e le problematiche, inerenti l\u2019affidabilit\u00e0 della connessione TCP. Consegna ordinata ed eliminazione di duplicati Come sappiamo il Sequence Number, o numero di sequenza, serve ad identificare in maniera corretta e ordinata l\u2019esatta sequenza del flusso dato di un segmento TCP. Con la trasmissione a commutazione [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":647,"menu_order":46,"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-960","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>Affidabilit\u00e0 della comunicazione Affidabilit\u00e0 della comunicazione Vediamo di seguito di illustrare le caratteristiche, e le problematiche, inerenti l\u2019affidabilit\u00e0 della connessione TCP. Consegna ordinata ed eliminazione di duplicati Come sappiamo il Sequence Number, o numero di sequenza, serve ad identificare in maniera corretta e ordinata l\u2019esatta sequenza del flusso dato di un segmento TCP. Con la trasmissione a commutazione di pacchetto della rete dati infatti ogni pacchetto del messaggio, a seconda del traffico di rete, pu\u00f2 seguire percorsi molto diverse per giungere a destinazione, dove pu\u00f2 quindi giungere fuori sequenza: \u00e8 quindi necessario prevedere un meccanismo che consenta di ricostruire fedelmente&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\/960","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=960"}],"version-history":[{"count":3,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages\/960\/revisions"}],"predecessor-version":[{"id":978,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=\/wp\/v2\/pages\/960\/revisions\/978"}],"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=960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/il-mio-ip.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}