Nella sua forma base, TCP può avere una dimensione della finestra pari
a 1, il che significa che per ogni segmento
trasmesso dal mittente il ricevente invia un riconoscimento per quel singolo segmento.
Ciò tuttavia rallenta notevolmente il
throughput poiché il mittente non può trasmettere più
dati fino a quando non riceve il riconoscimento di quel singolo segmento trasmesso.
Il throughput sarebbe molto basso a seconda
del timer del
round trip tra l'invio di dati e la ricezione del riconoscimento.
TCP tuttavia consente di avere dimensioni di finestra maggiori per consentire la trasmissione di
più segmenti prima di ricevere
un riconoscimento. 12 La
finestra è il numero di
segmenti di dati che il mittente può inviare senza ricevere una conferma dal ricevitore.
In questo caso,
abbiamo impostato su 1 che significa che quando l'host A vuole
inviare traffico all'host B può inviare 1 segmento perché la dimensione della finestra è
impostata su 1 host B, una volta che riceve quel segmento, invia un riconoscimento.
In questo esempio, supponiamo che l'host A invii il segmento con il numero di sequenza di 1
host B che riconoscerà per il segmento 2.
L'host A invierà quindi il segmento
2 e l'host B, una volta ricevuto correttamente quel segmento confermerà o
ACK per il segmento 3.
L'host A invierà quindi il segmento 3 all'host B.
Questo processo continuerà quindi per tutta la durata della sessione, che
ovviamente è molto affidabile, tuttavia il throughput è molto basso.
A avrebbe bisogno di bufferizzare i segmenti in uscita fino
a quando non riceve un riconoscimento per il segmento trasmesso.
ora per argomento diciamo che ci vuole 1
secondo per il traffico con l'inizio con
la dimensione della finestra piccola e quindi
aumentare in modo esponenziale le dimensioni della finestra per misurare la
quantità di dati che il ricevitore può ricevere e ciò che la rete può gestire.
Probabilmente lo avrete notato, quando inizialmente scaricate un file da internet la
velocità di download è lenta ma
poi aumenta fino a un certo punto nel tempo.
Questo perché le dimensioni della finestra inizialmente sono piccole ma aumentano
in modo esponenziale fino a quando un pacchetto non viene
rilasciato o l'host di ricezione non può gestire la quantità di dati che sta ricevendo.
Quindi noterai inizialmente che la velocità di download è
molto lenta e aumenta molto rapidamente, quindi arriva a un punto e quindi rimane
intorno a quella velocità.
Quindi, ancora una volta,
supponiamo che gli host in questo esempio abbiano una dimensione fissa della finestra di 3.
Ciò significa che A può inviare 3 segmenti prima di ricevere un riconoscimento.
Quindi in questo caso l'host A invia il segmento
1,2 e 3 l'host B riconosce per il segmento 4 consentendo così
a A di sapere che ha ricevuto con successo il segmento 1,2
e 3 l'host A quindi invia i segmenti 4,5 e 6 perché ha una dimensione di
finestra fissa di 3 e l'host B riconosce per
il segmento 7 consentendo a A di sapere che aveva ricevuto segmenti 4,5 e 6.
Ricordare con riconoscimenti, riconoscere il segmento successivo che si desidera ricevere non il segmento che
si è già ricevuto. 80 Quindi l'host B non riconosce per il segmento
6 ma riconosce il segmento 7.
Come ho detto, una finestra scorrevole consente agli host di misurare la quantità di dati
che il ricevitore può ricevere e ciò che la rete può gestire.
Quindi, in questo esempio, supponiamo che l'host stia utilizzando
una finestra scorrevole nel modo in cui determinano cosa
può gestire la rete quando un pacchetto viene rilasciato dalla rete, l'host rallenta.
Questa informazione è trattata in modo
molto più dettagliato in corsi che contengono qualità del servizio.
Con questo corso basti pensare
che quando un pacchetto si
interrompe riducono drasticamente le dimensioni della finestra in breve, la dimensione della finestra è o la finestra concessa al mittente dal ricevitore
o una finestra calcolata chiamata finestra di congestione o CWND la finestra di
congestione o CWND è inizialmente impostato su un valore molto basso al momento della creazione della
connessione e quindi aumenta ad una velocità esponenziale.
Per ogni segmento perso, la finestra di congestione è
per metà dopo che il segmento perso è stato
correttamente ritrasmesso la finestra di congestione cresce di nuovo
fino a raggiungere un valore pari a metà della
finestra di congestione originale, quindi rallenta la sua crescita, utilizzando un algoritmo chiamato evitamento della congestione.
Aumenta in modo esponenziale fino a metà della dimensione originale della finestra di congestione
e poi aumenta lentamente alla velocità lineare.
Nella qualità del servizio può essere utilizzato il rilevamento anticipato o il WRED casuale
ponderato per migliorare l'efficienza delle trasmissioni TCP attraverso il collegamento mentre i pacchetti vengono
rilasciati casualmente da vari flussi o varie sessioni che attraversano un'interfaccia individuale piuttosto che
pacchetti provenienti
da più mittenti che vengono rilasciati allo stesso tempo.
questo evita un problema chiamato sincronizzazione globale in cui i pacchetti provenienti da
più sessioni TCP vengono rilasciati contemporaneamente e quindi più host riducono le dimensioni e il rallentamento della
finestra allo stesso tempo 110 e quindi aumentare
gradualmente le dimensioni della finestra e quindi la velocità effettiva allo stesso tempo.
Quindi molti host rallentano e accelerano allo stesso tempo
con WRED, alcuni
host rallenteranno e altri host aumenteranno il loro throughput o cadute casuali.
Per ulteriori dettagli su WRED, fare riferimento alla documentazione sulla qualità del servizio. In
questo esempio, supponiamo di iniziare con la dimensione iniziale della finestra di 3.
Quindi A trasmette 3 segmenti a B, tuttavia solo i segmenti 1 e 2 arrivano all'host B, il
segmento 3 scompare.
L'host B può ridurre le dimensioni della finestra in questo esempio a 2 e riconoscere il segmento 3.
Ricorda che il riconoscimento è per il prossimo pacchetto che gli host si aspettano di ricevere e poiché l'host
B non ha ricevuto il
segmento 3 sta confermando il ricevimento dei segmenti 1 e 2.
L'host A ritrasmetterà il segmento 3 e in questo esempio invia il segmento 4 ma richiede anche una dimensione della finestra
di 3.
Entrambi questi segmenti sono ricevuti con successo dall'host B, pertanto l'host B confermerà
il segmento 5, ma in questo
esempio, desidera ancora una dimensione della finestra pari a 2.
L'host A invierà solo 2 segmenti perché la dimensione della finestra negoziata è 2
ma A potrebbe comunque richiedere che la dimensione della finestra aumenti a 3.
Con la finestra scorrevole, esiste una negoziazione dinamica delle dimensioni di una finestra e la
dimensione della finestra può cambiare notevolmente durante una sessione, a seconda di
cosa può elaborare il ricevitore e di cosa può gestire la rete.