Quarto Articolo
TCP/IP, protocolli ed altri misteri
Parte 4
Il TRASPORTO
Nelle puntate precedenti abbiamo parlato pi— volte di "funzioni
di trasporto" attive da un capo all'altro di una rete (End-to
end). Il TCP Š appunto il livello che si occupa del trasporto
nelle reti TCP/IP.
Per capire a fondo il TCP credo sia meglio parlare prima di OSI
e del suo quarto livello, per poi vedere le somiglianze e le
differenze col TCP. Non bisogna dimenticare, infatti, che il
TCP/IP Š il passato. Il futuro si chiama OSI.
Prima di esaminare il Trasporto secondo OSI e secondo TCP
rivediamo i concetti fondamentali su cui il modello di
riferimento OSI poggia: solo cos saremo in grado di inquadrare
giustamente le varie funzioni ed il modo in cui sono state
realizzate.
OSI
OSI st… per Open System Interconnection. L'OSI ha costruito un
"Modello di Riferimento" su come devono funzionare le
comunicazioni fra computer eterogenei organizzato in sette
livelli. Ma perchŠ proprio sette livelli ? ... non lo so di
preciso, ma sicuramente 7 Š un numero magico. La cosa certa Š
che la comunicazione fra computer Š una cosa molto complicata ed
il cervello umano ha delle limitazioni sue intrinseche nel
trattare problemi complessi: l'unica via di fuga consiste nello
spezzare i problemi complessi in sottoproblemi ed affrontarli
uno alla volta. Pare infatti che per il cervello umano valga la
legge del " 4 + o - 3". I cervelli pi— dotati sono in grado di
analizzare problemi che al massimo hanno 7 (4+3) componenti
indipendenti; un cervello medio riesce a cavarsela al massimo
con 3 o 4 componenti contemporanee. Gli altri, fortunati,
vivono felici e senza dubbi ragionando su una sola cosa alla
volta. Da qu si capisce anche il problema che esiste coi Dieci
Comandamenti e del perchŠ si tende sempre a dimenticarne
qualcuno.
Quindi l'OSI ha individuato 7 funzioni fondamentali per la
comunicazione fra computer. Di queste 7 funzioni, o livelli, i
primi quattro riguardano le comunicazioni vere e proprie, mentre
i livelli dal 5 al 7 si occupano di problematiche pi— vicine ai
sistemi operativi ed al modo in cui i dati sono trattati
all'interno di computer con architetture diverse. La
definizione dettagliata di questi livelli non Š ancora del tutto
terminata: attualmente i lavori dei varii comitati di
standardizazione si stanno occupando del livello 7.
Gi… tutti sanno che il livello fisico, (1), Š quello incaricato
della connessione elettrica con la rete. PoichŠ di reti ce ne
sono di tantissimi tipi Š ovvio che anche di livelli 1 ce ne
sono altrettanti. L'accesso ad una rete locale in fibra ottica
FDDI Š certamente molto diverso dall'accesso alla rete pubblica
mondiale X.25. Le problematiche per la trasmissione via Packet
Radio sono diverse da quelle per la trasmissione su cavo
coassiale Ethernet. I varii livelli 1 descrivono il
funzionamento fisico ed elettrico per interfacciare le reti cui
si riferiscono.
Anche del livello 2 si Š gia' molto parlato. Il livello 2 si
occupa di individuare e correggere eventuali errori di
trasmissione dovuti al rumore o ad altre cause, tratta per
tratta, cioŠ fra un nodo e l'altro della rete. In alcuni casi
al livello 2 si fa fare qualcosa in pi— quando, per esempio,
occorre anche conquistarsi il canale su cui trasmettere: Š
appunto l'esempio del packet radio ed in generale dei sistemi
CSMA (Carrier Sense Mulptiple Access) in cui ci sono opportune
procedure per accedere al canale. In questi casi si suole
pensare il livello 2 diviso in due sottolivelli: quello
inferiore si occupa, appunto, dell'accesso al canale, quello
superiore si incarica di scoprire e correggere gli errori di
trasmissione. Anche per il livello 2 vale il fatto che esistono
varie implementazioni in funzione del tipo di rete su cui devono
lavorare.
L'AX.25 Š prorio un livello 2 a funzione doppia: un metodo di
accesso al canale radio con le sue regole di monitoraggio della
portante e ritrasmissione con un ritardo casuale dopo una
collisione, ed un metodo di correzione degli errori dovuti al
rumore o all'interferenza.
Dei livelli 3 ne abbiamo gi… parlato in abbondanda nelle puntate
precedenti. Il demone di livello 3 si occupa di ottenere le
funzioni di instradamento attraverso la rete. Anche questo
livello pu• essere spezzato in due sottolivelli qualora esista
una funzione di Internetworking, come nel caso dell'IP. In
questo caso si chiama 3A il livello di rete vero e proprio e 3B
quello in Internetworking.
La sezione del collegamento fra due Host attraverso una rete di
due nodi Š rappresentata in Fig. 4.1
Il livello 4 secondo OSI, dicevamo, gestisce il trasporto da un
capo all'altro della rete e qu le cose si complicano un
pochino. Infatti, a seconda del tipo di rete che ha sotto, il
quarto livello pu• funzionare in uno di cinque modi diversi.
Questi modi si chiamano "Classi". Le classi sono individuate da
un numero che va da zero a quattro. La classe zero la lasciamo
da parte in quanto Š dedicata alle reti TELETEX, un tipo di
telex molto sofisticato ma nato tardi. Per capire cosa fanno le
altre classi occorre soffermarsi sul fatto che le reti su cui il
livello di trasporto poggia, sono classificate in tre tipi in
funzione delle loro caratteristiche e della loro bont….
Tipo A: Sono reti molto buone, con un tasso di errori
accettabile e gli eventuali guasti sono opportunamente
segnalati. I pacchetti arrivano in ordine e nessuno va
perso.
Tipo B: Sono reti molto buone per quel che riguarda il tasso
di errori, ma scarse in quanto a diagnostica dei
guasti. I pacchetti possono arrivare fuori sequenza o
non arrivare affatto.
Tipo C: Sono reti scarse sia dal punto di vista del tasso di
errori, sia dal punto di vista della segnalazione dei
guasti.
Tanto per fare degli esempi le reti pubbliche X.25 come anche la
nostra ROSE possono essere considerate di Tipo A in quanto non
ci sono errori dovuti al rumore garzie all'efficiente livello 2
ed inoltre segnalano eventuali malfunzionamenti con opportuni
codici diagnostici.
La rete NETROM la metterei fra le reti di tipo B in quanto Š un
p• scarsa in fatto di diagnostica: se qualcosa va male ti
sconnette e se ne lava le mani. Anche le reti datagram sono
tendenzialmente di questo tipo.
Le reti fatte di RTTY o di connessioni su linea telefonica con
modem semplici e senza un meccanismo di correzione degli errori,
sono sicuramente di tipo C.
A questo punto avrete capito che il livello 4 si deve comportare
in modo diverso in funzione del tipo di rete che ha sotto: se la
rete Š buona deve fare poco, altrimenti deve farsi carico delle
deficenze dei livelli sottostanti.
Tornando alle classi, OSI dice che la Classe 1 Š per le reti di
tipo B ed il livello di trasporto fa il recupero guasti o
malfunzionamenti della rete (disconnessioni o reset). Questa
classe d… una funzionalit… di base col minimo dell'aggiunta di
byte.
La Classe 2 Š per le reti di tipo A e il trasporto fa, in pi—,
da multiplexatore permettendo pi— connessioni di trasporto
contemporanee sulla stessa connessione di rete. E' disponibile
un'opzione per il controllo di flusso.[vedi la prima puntata]
La Classe 3 Š ancora per le reti di tipo B ma in questo caso il
Trasporto fa sia il recupero degli errori che la
multiplexazione.
Infine la Classe 4 Š per quelle poveracce delle reti di tipo C:
in questo caso il trasporto deve anche occuparsi di individuare
e correggere gli errori di trasmissione. In particolare questa
classe Š capace di individuare e recuperare da errori dovuti a
pacchetti persi, duplicati o arrivati fuori sequenza o
addirittura corrotti a causa del rumore.
Ed ecco una stranezza ! il TCP, che Š l'antesignano dei livelli
di trasporto, si comporta come il Trasporto di Classe 4...sempre
ed indipendentemente dal tipo di rete o IP che ha sotto. In
molti casi questo Š uno spreco di risorse. Ecco un valido
motivo per accellerare la conversione verso i protocolli OSI.
Ma come fanno i demoni di quarto livello a scegliere la classe ?
Semplice... la contrattano.
Il Trasporto di cui stiamo parlando Š di tipo "Connection
Oriented" cioŠ all'inizio i demoni non si parlano, poi, ad un
certo momento fanno una connessione fra di loro, si scambiano
messaggi e dati poi si sconnettono. [Esiste anche un Trasporto
"Connectionless, ma lasciamolo ai guru]. In fase di connessione
il demone che apre propone all'altro una classe di
funzionamento. Il corrispondente pu• o accettare quanto
proposto o richiederne, a sua volta, una inferiore: a questo
punto l'iniziatore o accetta o chiude. Questa sequenza si
chiama "Negoziazione della classe di trasporto".
La definizione del quarto livello secondo la standardizzazione
del CCITT si chiama X.224
Il TCP, ovviamente, non sa cosa sia la negoziazione perchŠ non
ha classi.
CARATTERISTICA IMPORTANTISSIMA
La struttura a strati del modello di riferimento OSI ha una
caratteristica importantissima:
==> "La catasta dei livelli Š sezionabile orizzontalmente" (Fig.4.2)
Questo significa che uno strato puo' essere cambiato da entrambi
i lati di una connessione purche' rimangano intatte le
interfacce verso l'alto e verso il basso. Inoltre, se occorre,
una sequenza di strati pu• essere eliminata da entrambe le parti
come in Fig.4.3.
Se l'interfaccia alla rete fisica cambia, per esempio, si
sostituisce il livello 1 da entrambe le parti lasciando
inalterati tutti i livelli superiori.
Se due computer che, sono nella stessa stanza, ad un metro l'uno
dall'altro, devono essere collegati fra di loro attraverso una
seriale RS232 i livelli 2 e 3 non hanno ragione di esistere
perche' non c'e' la rete ed il tasso di errori su un pezzo di
filo da un metro Š del tutto trascurabile. Quindi i livelli di
trasporto possono interfacciare direttamente i livelli fisici.
Ovviamente adattando opportunamente le interfacce fra i livelli.
Per applicare questa propriet… al nostro packet si pu• pensare
di cambiare il sottolivello di accesso al mezzo fisico (CSMA)
dell'AX.25 con un altro pi— adatto senza dover toccare tutti gli
strati superiori. Meditate gente !...ma torneremo su questo
interessante argomento.
TCP
Riprendiamo, par ora, il nostro "Trasporto" per esaminare un p•
pi— in dettaglio il TCP per capire cosa fa e come lo fa.
TCP st… per "Transmission Control Protocol" ed Š cos
importante, insieme all'IP, da aver dato il suo nome a tutto il
sistema dei protocoli correlati.
Il TCP Š nato apposta per lavorare sopra la rete IP che, come
abbiamo visto in precedenza, Š una rete inaffidabile e senza
connessione. PoichŠ l'IP non garantisce la consegna dei
datagram nŠ il loro arrivo in sequenza il TCP deve mettere
ordine nei medesimi ed eventualmente, richiedere la
ritrasmissione di quelli persi. Il TCP deve quindi fornire un
Servizio di Trasporto Affidabile per lo scambio di una Sequenza
di dati. I dati che le applicazioni si vogliono scambiare sono
una sequenza ordinata di caratteri, per esempio la sequenza di
byte che formano un file o i caratteri di un messaggio. Il TCP
Š fatto proprio per trasferire sequenze di byte. PoichŠ una
tale sequenza ha un inizio ed una fine, anche il colloquio fra i
demoni TCP, da un lato all'altro della rete, ha un inizio ed una
fine...un p• come una telefonata. Questo implica che il TCP
lavora "a connessione", cioŠ apre un canale virtuale per il
tempo del trasferimento della sequenza di byte e poi lo chiude.
Il TCP deve anche opportunamente bufferizzare i dati che gli
provengono dai livelli superiori (gli applicativi FTP, SMTP
ecc.) infatti prima di spedire un datagram Š opportuno riempirlo
a sufficenza per non sprecare inutilmente le risorse della rete.
PoichŠ non si sa in che quantit… gli applicativi forniscono byte
da trasmettere il, TCP si deve inacaricare di accumulare
caratteri quanto basta prima di poterli spedire in rete. Se si
vuole forzare comunque l'invio di una sequenza di caratteri ci
si pu• sempre dare, per•, una spinta (PUSH).
Le connessioni che il TCP fornisce sono Full Duplex. Questo
significa che ci sono due correnti di byte indipendenti ed in
direzioni opposte.
Il TCP realizza le sue funzioni unenendo la tecnica della
trasmissione con conferma positiva ed eventuale ritrasmissione
se la conferma non arriva in tempo con la tecnica della finestra
scorrevole (Sliding Window).
La tecnica di trasmissione con conferma positiva Š rappresentata
in figura 4. Il trasmettitore invia il primo segmento di dati.
Il ricevitore lo riceve e risponde con un OK (Acknoledge, ACK) e
la cosa procede col secondo segmento e cos via. Tutte le volte
che il trasmettitore manda un segmento in rete fa anche partire
un timer. Se questo timer si esaurisce e l'OK non Š ancora
ritornato il segmento viene considerato perso e ritrasmesso.
Nella figura il tempo scorre dall'alto verso il basso.
Questa tecnica Š poco efficente soprattutto se i ritardi
attraverso la rete sono considerevoli perchŠ non permette di
trasmettere il segmento successivo finchŠ non arriva l'OK del
precedente. Per ovviare a ci• si usa la "Finestra scorrevole"
(Fig.4.5). In pratica ci sono pi— segmenti contemporaneamente
in transito sulla rete. Supponiamo che la finestra sia di tre
segmenti: allora il trasmettitore avr… al massimo tre segmenti
in giro non confermati. Man mano che arrivano gli OK trasmette
i segmenti successivi spostando la finestra in avanti.
(Fig.4.6)
Tarando opportunamente la larghezza della finestra in funzione
dei tempi di attraversamento della rete si ottiene un uso
ottimale della rete stessa.
La cosa interessante del TCP Š che l'ampiezza della finestra
viene misurata in byte, non in numero di datagram; l'ampiezza
della finestra, inoltre, pu• variare dinamicamente in funzione
delle possibilit… trasmissive della rete e di ricezione del
destinatario, realizzando cos un meccanismo di "Flow Control".
Ciascun OK spedito dall' host ricevente contiene l'indicazione
del numero di byte ricevuti fino a quel punto nonchŠ il "Window
Advertisement" che dichiara quanti byte ancora il destinatario Š
disposto a ricevere. Il window advertisement pu• essere
considerato come la dimensione di buffer libero presso il
ricevente. Il demone che trasmette allarga o stringe la
finestra di trasmissione in funzione del window advertisement.
Se il ricevente Š totalmente a corto di buffer manda un window
advertisement a zero, bloccando cos del tutto la trasmissione.
La trasmissione pu• riprendere in un secondo tempo con l'invio
di un altro window advertisement. Questo meccanismo Š
essenziale perchŠ nelle reti si hanno a volte computer di
velocit… molto diversa. Notate che questo meccanismo di flow
control funziona solo Edn-to-End e non ha niente a che vedere
col meccanismo analogo necessario all'IP per non intasare i
gateway. L' IP fa il suo flow control apponggiandosi sul
protocollo ICMP.
Anche il TCP ha bisogno di 20 byte per espletare le sue
funzioni. Le unit… di trasferimento fra i demoni TCP si
chiamano SEGMENTI. Per aprire la connessione, trasferire i dati
e chiudere poi la connessione i due TCP si scambiano opportuni
"segmenti". Ogni segmento Š composto da 20 byte (se le opzioni
sono assenti) ed i dati dell'applicativo vero e proprio.
Fig.4.7
bit 0 8 16 31
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Porta Mittente ³ Porta Destinatario ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Numero di sequenza ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Numero di conferma ACK ³
ÃÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Off. ³ Res. ³ CODICE ³ Finestra ³
ÃÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Checksum ³ Urgent Pointer ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Opzioni ³ Riempitivo ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ dati applicativi... ³
³ ³
Fig. 4.7
Il campo da 32 bit detto "Numero di sequenza" specifica appunto
la posizione del segmento di dati annesso nella sequenza
originaria fornita dall'applicativo. Il "Numero di conferma"
dice la posizione dell'ultimo byte correttamente ricevuto
(Ovviamente per il trasferimento che avviene nel senso opposto).
Questi sono i due numeri chiave per implementare la funzione di
trasporto di cui dicevamo prima.
Il campo FINESTRA contiene il famoso "Window Advertisement" di
cui sopra.
Il campo Offset (Off.) dice dove iniziano i dati veri e propri a
partire dal primo byte: infatti il campo opzioni pu• essere di
varie lunghezze o assente del tutto.
Il campo Reserved (Res.) Š per futuri usi.
Il campo CODICE, invece indica proprio lo scopo del segmento ed
il suo contenuto. Il campo Codice Š formato da sei bit ognuno
con un significato.
Bit ³ Significato
ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
URG ³ Il campo Urgent Pointer Š valido
ACK ³ Il Numero di conferma Š valido
PSH ³ Questo segmento richiede un PUSH
RST ³ Reset della connessione
SYN ³ Sincronizza i numeri di sequenza
FIN ³ Il mittente Š arrivato alla fine
³
Il campo Urgent Pointer marca la posizione di byte "Urgenti" che
devono essere immediatamente consegnati all'applicativo. Sono
di questo tipo quei messaggi applicativi che, per esempio,
richiedono l'interruzione immediata di un comando precedente.
Il campo CHECKSUM Š quello che serve a verificare che tutto il
segmento ha raggiunto il destinatario senza
corrompersi...ovviamente nell'ipotesi che il livello 2 non
esista. Come gi… sappiamo questo campo Š superfluo sulle reti
moderne che gi… dispongono di un efficente strumento per la
correzione degli errori tratta per tratta.
I numeri che indicano le PORTE mittenti e destinatarie sono i
famosi "Well-Known Port Assignment". Alcuni di questi numeri
sono riservati per le applicazioni principali che risiedono
sopra il TCP e sono quei numeri che compaiono della tabella
quando si d… il comando "TCP STATUS", altri sono disponibili per
varie applicazioni. Ecco i principali:
21 FTP
20 FTP-DATA
23 Telnet
25 SMTP
79 Finger
7 ECHO
9 DISCARD
Questi numeri servono a sapere a quale applicativo inviare i
dati di quel segmento. Si realizza cos la multiplexazione.
IL TCP AL LAVORO
Dicevamo che i demoni del TCP si connettono, si scambiano dati
e poi si sconnettono. Vediamo come queste operazioni vengono
realizzate.
La connessione avviene con un "Handshake" a tre vie: Fig. 4.8
Il demone chiamente invia un segmento col bit SYN alzato ed un
numero di sequenza x. Il chiamato risponde a sua volta con un
segmento che porta il bit SYN alzato, il numero di conferma =
x+1 ed un suo numero di sequenza y. A questo punto il chiamante
risponde con un numero di conferma = y+1. Da questo momento in
poi entrambe i partners sono daccordo sui numeri x ed y nelle
due direzioni: sono sincronizzati.
Ora sapete cosa vuol dire quando TCP STATUS vi dice: "SYN
Received": La vostra stazione ha ricevuto una chiamata, ha
risposto al chiamante ma non ha ancora ricevuto l'ACK di
ritorno. Questo ACK di titorno non arriver… mai se le vostre
tabelle di routing non sono a posto !
La connessione continua con l'invio, da parte del chiamante, di
dati confermati da opportuni ACK dove il numero di conferma Š il
numero dell'ultimo byte correttamente ricevuto pi— 1...questo se
tutto fila liscio. Ma se la rete si intasa cosa succede ?
Scattano i timeout ed avvengono le ritrasmissioni. Infatti per
ogni segmento inviato il mittente fa partire un timer. Se la
conferma di ricezione non arriva prima che il timer scatti
allora il segmento Š considerato perso e ritrasmesso. Il
problema con l'IP, che, lo ricordo, Š una RETE di RETI, Š che i
tempi di propagazione sono estremamente variabili: infatti
dipendono sia dalle velocit… delle singole reti che possono
essere enormemente diverse l'una dall'altra, sia
dall'intasamento dei gateway. Questo significa the i tempi di
attesa possono cambiare moltissimo da un momento all'altro in
funzione delle strade prese dai datagram e dal traffico del
momento.
Per adattarsi a questo ambiente cos variabile il TCP cambia
continuamente il tempo dei timer con un algoritmo adattativo.
Il TCP calcola continuamente il "Round Trip Time" che Š il
totale del tempo impiegato per ricevere un ACK dopo l'invio di
un segmento: Š il tempo di andata e ritorno. Con i valori
misurati ne fa una media e calcola la lunghezza dei timer in
funzione di questa media. Con un opportuno parametro nella
formula di calcolo si pu• fare in modo che le variazioni della
lunghezza dei timer siano pi— o meno dolci.
La chiusura della connessione avviene inviando un segmento col
bit FIN alzato. PoichŠ le connessioni sono fulduplex, quindi due
ed indipendenti, la connessione non si interrompe finchŠ anche
l'altro partner non dichiara di aver finito. Solo a questo punto
la connessione si spezza. Una connessione pu• essere interrotta
bruscamente inviando un RESET.
Il meccanismo di conferma dei byte ricevuti, dicevamo, Š
cumulativo, cioŠ il destinatario dice solo quanti byte ha
accumulato fino a quel momento. Questo meccanismo ha dei
vantaggi, ma anche dei grossi svantaggi. Lo svantaggio
principale Š che il TCP che invia non ha informazioni sui
segmenti ben ricevuti, ma solo sull'ultimo byte ben ricevuto in
sequenza. Supponiamo, per esempio, di avere una finestra di 500
byte a partire dalla posizione 1000 e di trasmettere 100 byte di
dati per ogni segmento.
Supponiamo ancora che il primo segmento sia andato perso, mentre
tutti i successivi siano arrivati correttamente. Il ricevente
mander… il numero di conferma ACK = 1001 molte volte per ogni
nuovo segmento che arriva. Non c'Š modo per far sapere al
trasmittente che la maggior parte dei dati Š arrivata e che
basterebbe inviare un solo segmento per mettere le cose a posto.
Quando il timeout scatta il trasmittente rimanda tutti i 500
byte della finestra...un segmento alla volta. Ovviamente quando
ora il primo segmento della finestra arriva correttamente l'ACK
conterr… il numero 1501, ma non Š detto che, a causa dei
ritardi, questo ACK arrivi in tempo per bloccare la
ritrasmissione degli altri segmenti in coda. Se d'altro canto,
nel ritrasmettere, si mandasse un solo segmento e si aspettasse
l'ACK prima di inviare gli altri, il vantaggio della Sliding
Window sarebbe vanificato.
BIBLIOGRAFIA
Per chi ne vuole sapere di pi—, e spero che questa serie di
articoli serva a stimolare il desiderio di conoscenza nel campo
delle reti, cosiglio innanzitutto di leggere la documentazione
che viaggia sui dischetti insieme al programma NET.EXE di KA9Q.
Un ulteriore approfondimento sul TCP/IP lo si trova sull'ottimo
libro di Douglas Comer intitolato: "Internetworking with TCP/IP,
Principles, Protocols and Architecture" della casa editirice
Prentice Hall.
Per una conoscenza generale sulle reti, sia a commutazione di
pacchetto che di circuito, nonchŠ per approfondire la conoscenza
dell'OSI e le filosofie che ci sono dietro consiglio
"Telecommunication Networks, Protocols, Modeling and Analysis"
di Misha Schwartz, casa editrice Addison Wesley.
Chi poi soffre d'insonnia pu• sempre leggere i documenti
ufficiali dell'OSI e del CCITT che sono migliaia ed anche
raccolti in libri variamente colorati.