Anteprima
Vedrai una selezione di 20 pagine su 150
Reti di calcolatori - Appunti completi Pag. 1 Reti di calcolatori - Appunti completi Pag. 2
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 6
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 11
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 16
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 21
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 26
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 31
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 36
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 41
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 46
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 51
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 56
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 61
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 66
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 71
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 76
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 81
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 86
Anteprima di 20 pagg. su 150.
Scarica il documento per vederlo tutto.
Reti di calcolatori - Appunti completi Pag. 91
1 su 150
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

TCP

La principale differenza tra TCP e UDP è l’affidabilità. TCP implementa determinate soluzioni basate su

protocolli a finestra per cercare di offrire su un canale non affidabile, servizi affidabili alle applicazioni che

stanno al livello superiore. È più complesso di UDP, poiché deve gestire ogni connessione in modo accurato

per garantire la consegna ordinata dei dati.

Ricapitolo protocolli pipeline:

• Go-back-N: nella pipeline (finestra di trasmissione) si hanno fino a N pacchetti non ancora riscontrati.

Il ricevitore manda solo ACK cumulativi, cioè dopo ogni pacchetto si invia un ACK che vale anche per i

pacchetti ricevuti in precedenza. Quando si hanno N pacchetti in attesa di ACK si ha un unico timer

(relativo al pacchetto più vecchio) che quando scade si invia nuovamente l’intera finestra di pacchetti.

• Selective repeat: il mittente può avere fino ad N pacchetti in attesa di ACK nella pipeline e il ricevitore

invia ACK individuali per ogni pacchetto ricevuto. Solo i pacchetti mancanti vengono ritrasmessi.

TCP è un protocollo punto-punto, cioè si ha un’unica sorgente ed un’unica destinazione (comunicazione

unicast a livello 3). Le comunicazioni multicast non sono permesse con TCP poiché bisogna mantenere le

variabili di stato relative alle singole comunicazioni tra due punti. Una comunicazione multicast IP dovrà avere

UDP come livello trasporto.

TCP riceve dati dal livello superiore come uno stream continuo di byte, senza senza confini di messaggio

definiti, li segmenta e si occupa di consegnarli in ordine al destinatario. Essendo un protocollo pipelined, TCP

può inviare più pacchetti in sequenza senza aspettare un ACK per ciascuno prima di trasmettere il successivo.

La dimensione della finestra di trasmissione, che determina il numero massimo di pacchetti inviabili

contemporaneamente, è regolata dai meccanismi di controllo di flusso e controllo di congestione.

TCP supporta uno scambio di dati full-duplex, creando due canali logici: uno per l'invio delle richieste e l'altro

per le risposte. Questi canali logici non influenzano direttamente la rete, poiché i router non li vedono; si

tratta infatti di una convenzione stabilita tra le due estremità della connessione.

119

Se la MTU (Maximum Transmission Unit) è di 1500 byte, la MSS (Maximum Segment Size) sarà anch'essa di

1500 byte o inferiore. Questo parametro definisce la dimensione massima dei segmenti inviati, che non potrà

essere superata.

TCP è orientato alla connessione, poiché richiede una fase di handshaking iniziale tra mittente e destinatario

per stabilire i parametri della comunicazione, come la MSS e altre opzioni.

L’header TCP è formato da 20 byte distribuiti su 5 righe, più eventuali campi opzionali. Tra i campi principali

troviamo:

 numero di sequenza e numero di ACK,

utilizzati per contare i segmenti e per

riscontrare i segmenti ricevuti

(equivalenti ai campi dei protocolli a

finestra).

 flag come RST, FIN, SYN che gestiscono

apertura e chiusura della connessione.

 receive window, fondamentale per il

controllo di flusso

 checksum, utilizzato per verificare

l’integrità dei dati su header e payload

(simile a UDP).

 opzioni, presenti raramente, come il campo MSS (Maximum Segment Size), che viene specificato solo

durante la fase di apertura della connessione. Questo valore rappresenta l’unità minima della finestra,

che può crescere o decrescere di multipli di MSS

→ la PCI di TCP ha dimensione variabile.

 sequence number: rispetto ai protocolli a finestra dove negli esercizi si inseriscono dei numeri che

indicano i pacchetti, in TCP non vengono contati i segmenti ma i byte nello stream totale: indica la

posizione del primo byte del messaggio nella sequenza di byte tramessi sulla connessione TCP. Il

numero di sequenza rappresenta il primo byte contenuto dentro il segmento. Per esempio, con uno

stream di 4000 byte e MSS pari a 500 byte, se il numero di sequenza iniziale è scelto randomicamente

come 0, avremo:

o Primo segmento: Seq. 0 (da byte 0 a 499).

o Secondo segmento: Seq. 500 (da byte 500 a 999).

o Terzo segmento: Seq. 1000 (da byte 1000 a 1499).

In realtà, il numero di sequenza non parte mai da 0, ma viene selezionato casualmente per ragioni di

sicurezza.

 acknowledge number: è cumulativo ma non dice qual è l’ultimo byte ricevuto, ma dice qual è il

prossimo byte che il ricevitore si aspetta di ricevere. T

TCP utilizza una versione modificata del Go-Back-N, in cui i pacchetti fuori sequenza non vengono

scartati ma conservati, consentendo una finestra di ricezione più ampia (generalmente maggiore di 1).

Esempio: 120

1. Un utente sull’Host A schiaccia “C” e deve trasferire il

byte all’host B. Il numero di sequenza è randomicamente

partito da 42 (manda il byte 42) e l’ACK è 79 per via della

sequenza precedente. Il payload conterrà 1 byte, cioè il

carattere C.

2. B riceve il segmento e deve farne l’Acknowledge, perciò,

l’ACK sarà 43 (42+1 byte) cioè B si aspetta di ricevere il

byte 43. Come sequenza c’è il 79, come si aspettava

prima l’host A. Il payload è ancora una volta un byte.

3. A invia l’ACK (che è l’80 perché ha ricevuto il 79°) e come

sequenza mette 43 perché B ha chiesto il 43.

Quest’ultimo ACK non ha payload. Visto che il payload è vuoto, il messaggio successivo di A verso

B sarà solo con sequenza 43.

Inviare un ACK insieme a del payload vuol dire fare piggybacking.

TCP e la trasmissione affidabile

TCP realizza un servizio affidabile sopra una rete non affidabile tramite:

• Pipeline di segmenti, che permette di inviare più segmenti contemporaneamente

• Acknowledge cumulativi, che riducono la necessità di riscontri individuali per ogni segmento

• Singolo timer di ritrasmissione, associato al pacchetto più vecchio non ancora riscontrato

Le trasmissioni possono essere innescate da due eventi:

 Timeout: se un segmento non viene riscontrato entro il tempo limite, viene ritrasmesso solo il segmento

scaduto (approccio simile al Selective Repeat). Questo riduce il sovraccarico rispetto alla ritrasmissione

dell’intera finestra.

 ACK duplicati: se il mittente riceve più ACK duplicati per un segmento specifico, può ritrasmetterlo

senza attendere il timeout.

Con tali premesse, un trasmettitore TCP:

• Riceve dal livello applicazione lo stream di byte e costruisce i segmenti utilizzando dei numeri di

sequenza per identificarli univocamente

• Se non c’è già un timer attivo, ne fa partire uno relativo al segmento più vecchio

• Quando scatta un timeout viene ritrasmesso solo il segmento che ha causato il timeout (che non è

stato riscontrato). Non inviare nuovamente tutta la finestra è problematico se non si sono gestiti i

pacchetti fuori sequenza. Nella realtà non si hanno troppe perdite, poiché quando la rete inizia ad

essere congestionata interverrà il controllo di congestione, perciò, non ha senso rinviare ogni volta

tutta la finestra.

Una volta ritrasmesso il pacchetto che ha fatto scattare il timeout, il timer deve ripartire e sarà di

nuovo relativo al pacchetto più vecchio (identico al timer precedente poiché quello è il pacchetto non

ancora riscontrato).

• Alla ricezione degli ACK il timer associato viene annullato e bisogna far partire un nuovo timer se ci

sono ancora ACK da riscontrare (cioè per il pacchetto successivo).

Tutto funziona perché le perdite sono molto poche.

121

Ricevitore TCP

Il ricevitore TCP è in grado di gestire gli ACK ritardati. Quando arriva un segmento in sequenza con il numero

di sequenza corretto e il sistema funziona normalmente, il ricevitore può decidere di non inviare

direttamente l’ACK. Invece, può attendere la ricezione di un altro segmento

e inviare un ACK cumulativo che conferma entrambi i pacchetti ricevuti,

quello appena arrivato e quello precedente. Questo è un ACK cumulativo

ritardato. Se, invece, il ricevitore ha già un pacchetto in attesa di riscontro

(per via di un ACK ritardato) e l'ultimo pacchetto arriva in sequenza, l'ACK

viene inviato immediatamente. In generale, viene inviato un ACK ogni due

pacchetti ricevuti, con una sorta di "salto" nell'invio degli ACK.

Nel caso in cui un pacchetto arrivi fuori ordine (con un numero di sequenza

maggiore rispetto a quello atteso), il ricevitore invia un ACK duplicato,

indicando il numero di sequenza del byte successivo che si aspetta. Infine, se

il trasmettitore invia un segmento che parzialmente o completamente

riempie il “buco” di pacchetti fuori ordine, il ricevitore invia l’ACK relativo al

pacchetto ricevuto in sequenza e invierà il numero di sequenza relativo al

byte successivo che ci si aspetta di ricevere.

Questi ACK duplicati possono essere utilizzati come indicazione del fatto che c’è stata una perdita (a

differenza dei timeout). Il fatto di ricevere tanti ACK duplicati può essere indice del fatto che c’è stata una

perdita. Se un ACK viene duplicato più volte e si ricevono 3 ACK duplicati si intuisce che c’è stato un problema

e viene inviato nuovamente il pacchetto relativo. Questo si chiama TCP Fast Retransmit.

RTT: il valore ottimale di un RTT in un protocollo a

finestra è circa 2 volte il tempo di propagazione. In

generale, il timeout del timer TCP è più lungo del RTT,

ma questo valorepuò variare. Per poterlo stimare si

può utilizzare il metodo SampleRTT, che misura il

tempo di trasmissione tra l’invio del segmento e la

ricezione dell’ACK.

Poiché il RTT può variare a causa della congestione

della rete, è difficile stimarlo in modo preciso. Per

ottenere una stima più accurata, si utilizza

l'Estimated RTT, che combina il valore stimato al

tempo t-1 con il valore misurato al tempo t, pesando

i valori con il parametro α (dove α tipicamente è 0.125). Se α=0, si considera solo il passato; se α=1, solo il

presente. 122

Inoltre, si può usare la deviazione standard per stimare meglio il RTT, affinché il timeout si adatti

dinamicamente alla variabilità della rete.

Quando il timeout di trasmissione in TCP è settato ad un valore sensibilmente inferiore al round-trip time

possono verificarsi ritrasmissioni di segmenti non necessarie.

Controllo di flusso in TCP

Il controllo di flusso è un meccanismo che impedisce al trasmettitore di non sovraccaricare il ricevitore. Il

controllo di flusso rigu

Dettagli
Publisher
A.A. 2024-2025
150 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Monica56789 di informazioni apprese con la frequenza delle lezioni di Reti di calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Torino o del prof Casetti Claudio.