Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

Ricerca di Informatica - Protocolli TCP/IP

informatica



Ricerca di Informatica

Protocolli TCP/IP

Protocolli

Verso la fine degli anni '70 la ISO (International Standard Organization) con lo scopo di uniformare la comunicazione anche tra reti progettate da case diverse, sviluppò un modello standardizzato, chiamato modello di riferimento OSI (Open System Interconnection).

Il modello di riferimento OSI descrive il modo in cui le informazioni vengono trasferite tra gli host in rete tramite 7 livelli (layer): Application, Presentation, Session, Transport, Network, Data Link, Physical.

- Application layer (livello applicazione): è il livello più vicino all'utente e si occupa di fornire i servizi di rete (ad esempio il traferimento di file o la posta elettronica). Tra i protocolli che fanno parte di questo livello abbiamo: SMTP (Simple Mail Transfer Protocol) il quale si occupa del trasferimento dei messaggi di posta elettronica, HTTP (Hypertext Transfer Protocol) per l'interconnessione con siti web, TELNET il quale svolge le operazioni necessarie a creare una sessione con un host remoto, FTP (File Transfer Protocol) che permette il traferimento dati attraverso la rete tra due host, POP3 (Post Office Protocol v3) per il download dei messaggi di posta, IMAP (Internet Mail Access Protocol) un protocollo relativo alla posta, ma più avanzato e complesso, NNTP (Network News Transfer Protocol) che permette di leggere e scrivere informazioni su Usenet;

- Presentation layer (livello presentazione): gestisce le conversioni tra formati di dati, cioè definisce una codifica indipendente dalla macchina utilizzata allo scopo di creare un formato standard comprensibile da tutti. Se necessario, sono utilizzate anche la funzioni di compressione e crittografia;

- Session layer (livello sessione): definisce le regole per aprire e chiudere una connessione logica riguardante il trasferimento dati tramite protocolli di connessione e comunicazione. In questo layer sono svolte anche funzioni di sicurezza al fine di garatire che due host siano autorizzati a comunicare tra loro. Tra i protocolli di questo layer troviamo NFS (Network File System), RPC (Remote Procedure Call), X Window;

- Transport layer (livello trasporto): assicura la corretta trasmissione dei dati segmentando il flusso proveniente dal livello superio 949b12j re in porzioni di dimensione prevista dal supporto utilizzato dalla rete. Inoltre fornisce un riscontro delle trasmissioni e nel caso in cui si verifichino errori provvede a reinviare i dati. I protocolli caratteristici di questo layer sono TCP e UDP;

- Network layer (livello rete): si occupa di trovare il percorso migliore per il trasferimento dati tra host. Suddivide i dati in pacchetti che verranno poi instradati in un determinato percorso stabilito tramite degli algoritmi che analizzano le condizioni di traffico della rete. Tra i protocolli che sono coinvolti nelle funzioni svolte da questo livello abbiamo: IP (il quale si occupa dell'instradamento dei dati) e ICMP (si occupa della gestione degli errori ed il controllo dei messaggi) e protocolli di routing quali ad esempio RIP (Routing Information Protocol), IGP (Internet Gateway Protocol), oppure OSPF (Open Shortest Path First);

- Data link layer (livello collegamento dati): provvede ad organizzare i dati in blocchi di lunghezza predefinita chiamati frame ed effettua i primi controlli sulla validità tramite CRC (Cyclic Redundancy Check). Inoltre in questo strato sono definite le tecniche di sincronizzazione cioè le modalità per evitare che siano inviati dati ad una velocità incompatibile alla capacità di acquisizione del destinatario oppure che in una trasmissione bidirezionale i due nodi trasmettano contemporaneamente. Il Data link layer è suddiviso in due sottostrati: LLC (Logical Link Control) il quale si occupa del controllo errori e lavora a con il Network layer e MAC (Media Access Control) che fornisce l'accesso al mezzo trasmissimo (il cavo) e lavora quindi a stretto contatto con il Physical layer;

- Physical layer (livello fisico): gestisce l'interazione tra il computer e il mezzo trasmissivo e si occupa della conversione tra bit e segnali.

Le informazioni che vengono scambiate da un layer all'altro sono chiamate PDU (Protocol Data Unit). I dati del livello superiore vengono incpasulati come informazioni dallo strato inferiore.
Un esempio di processo:

1. I dati utente (Es. E-mail) vengono convertiti in un formato dati trattabile via rete;
2. I dati convertiti, a loro volta vengono trasformati in segmenti, quindi spediti tramite TCP o UDP ad un host remoto;
3. I segmenti vengono quindi incapsulati in pacchetti ai quale viene aggiunto l'indirizzo di partenza e di destinazione;
4. I pacchetti sono convertiti in frame a seconda del mezzo trasmissivo;
5. I frame sono convertiti in bit ed inviati via cavo.
Processo che dal punto di vista di Layer e PDU è il seguente:
[Dati] - in Application
[Dati] - in Presentation
[Dati] - in Session
[TCP o UDP Header][Dati] - in Transport (PDU = segmenti)
[IP Header][Dati] - in Network (PDU = pacchetti)
[LLC Header][Dati] - in Data Link (LLC) (PDU = frame)
[MAC Header][Dati] - in Data Link (MAC) (PDU = frame)
[010101] - in Physical (PDU = bits)

Una volta che i dati sono giunti a destinazione il processo viene ripetuto in senso inverso. Ogni layer estrae i dati che deve elaborare estrapolandoli dal relativo PDU.



Il modello TCP/IP

Il modello TCP/IP, il quale prende il nome da i due protocolli principali di Internet progettati nel 1974 da Robert E. Kahn e Vinton G. Cerf a Berkeley, descrive il processo di trasmissione dati riassumendo i 7 livelli del modello ISO/OSI.

- Application (Applicazione): rappresenta i layer Application, Presentation e Session del modello OSI. Questo livello si occupa di fornire alle applicazioni (FTP, Telnet, Mail) i servizi di rete, compresi la rappresentazione dei dati, ed il mantenimento di sessioni;
- Transport (Trasporto): rappresenta l'omonimo layer del modello OSI. Questo livello si occupa del trasporto attraverso i protocolli TCP (Transmission Control Protocol) di tipo connection-oriented e UDP (User Datagram Protocol) di tipo connectionless permettendo quindi di stabilire comunicazioni tra due host;
- Internet (Internet): rappresenta il layer Network del modello OSI. Questo livello si occupa di indirizzare, suddividere e  instradare i pacchetti sulla rete. Il protocollo IP lavora in questo layer offrendo un metodo di indirizzamento ed un tipo di trasmissione connectionless;
- Network (Rete): rappresenta i layer Data Link e Phisical del modello OSI, lavora a stretto contatto con l'hardware. Questo livello si occupa di prelevare ed immetere i frame dati, diversi a seconda della tipologia di rete, sul cavo di rete e di controllarne la correttezza tramite un algoritmo CRC (cyclic redundancy check). Rispetto al modello ISO/OSI  non ci sono distinzioni tra schede di rete e driver con il vantaggio di poter implementare TCP/IP su ogni tipo di rete;

Un modello organizzato in questo modo presenta diversi vantaggi, infatti un nuovo protocollo in uno qualsiasi dei layer TCP/IP deve interagire solamente con quello adiacente a livello superiore od inferiore, semplificando e conseguentemente riducendo la possibilità di errori nello sviluppo e nella gestione.




Un esempio

Il direttore della Pippo e Figli manda una lettera riservata al direttore della Pluto e Consorte. Il modo con cui i due comunicano, per esempio i riferimenti a lettere precedenti, lo stile della lettera, il modo di salutare alla fine della lettera, e così via, rappresenta il protocollo ad alto livello, cioè quello applicativo. Per spedire la lettera il direttore lo passa alla sua segretaria. Ciò avviene secondo le regole interne dellaPippo e figli, ed è perciò un'interfaccia. La segretaria prende la lettera, la mette in una busta aggiungendo il nome del destinatario e la scritta RISERVATO. Queste informazioni sono per la sua controparte nella Pluto e consorte, ed è quindi anch'esso un protocollo. La busta viene quindi passata all'Ufficio Posta dell'edificio secondo la procedura ordinaria (altra interfaccia), il quale aggiunge l'indirizzo completo, il CAP e altre informazioni necessarie alla spedizione, e la passa quindi al corriere, che rappresenta il meccanismo fisico di trasferimento del messaggio. Terzo protocollo. Quando la lettera arriva, questa viene gestita dall'Ufficio Posta della Pluto e consorte che, dopo aver buttato la busta esterna con l'indirizzo dell'edificio, la passa alla segreteria del direttore. Questa registra l'arrivo della missiva, la toglie dalla busta più interna, e poi consegna la lettera vera e propria al direttore della Pluto e consorte.


 













Come è possibile collegare insieme tante reti?


La soluzione è l'interconnessione delle reti, o internetworking. Grazie a ponti di collegamento (detti gateway) e la definizione di opportuni protocolli, si possono collegare fra di loro reti anche molto diverse, fornendone agli utenti una visione comune. Questa è la forza di Internet rispetto alle varie reti proprietarie, e di conseguenza del TCP/IP sui vari protocolli proprietari. Il TCP/IP è un insieme di regole pubbliche, aperte a tutti, o come si dice nell'ambiente, un sistema aperto (open system), che permette l'interconnessione di reti anche molto differenti, indipendentemente dalla tecnologia usata da ogni rete. I suoi principali vantaggi sono appunto l'indipendenza dalle tecnologie delle singole reti interconnesse, la possibilità di far comunicare fra di loro ogni computer connesso al sistema, la possibilità di trasmettere conferme di ricezione (acknowledgement) direttamente dal destinatario al mittente, e soprattutto una notevole quantità di protocolli applicativi per qualunque possibile bisogno, come vedremo più avanti. Il TCP/IP definisce quindi una unità di trasmissione dati chiamata datagram, e le regole da seguire per trasmettere un datagram in una particolare rete.

Il principio che sta alla base dell'interconnessione è quello di schermare le applicazioni dalle caratteristiche fisiche delle reti in modo semplice e flessibile. Questo avviene attraverso un livello intermedio che si occupa di spedire e ricevere piccoli pacchetti di dati fra due punti qualsiasi del sistema di reti. Questo meccanismo si chiama packet-switching. Esso consiste nella divisione di ogni messaggio in un certo numero di pacchetti di dati. Ogni pacchetto è formato da poche centinaia di byte, e contiene una intestazione che fornisce informazioni sul destinatario e su come raggiungerlo. Questo meccanismo ha il vantaggio di ottimizzare l'utilizzo della rete, parallelizzando la trasmissione di più messaggi contemporaneamente. Lo svantaggio è che ogni nuovo sistema che si aggancia alla rete per trasferire dati riduce la disponibilità della rete per tutti gli altri sistemi già connessi. Una rete infatti ha una certa capacità ben definita, che dipende sostanzialmente dalla tecnologia hardware e software che utilizza. Tale capacità viene misurata in bit per second (bps). Questa grandezza non rappresenta la velocità dei dati in rete, come si potrebbe pensare in prima istanza, bensì dà una misura del numero massimo di bit che possono essere trasmessi nella rete in un secondo. La velocità reale di un singolo messaggio dipende da tanti fattori, come il numero di sistemi che stanno utilizzando la rete, la qualità delle connessioni e di conseguenza il numero di tentativi necessari per trasferire correttamente i dati, le modalità di trasmissione e i dati aggiuntivi necessari al trasferimento degli stessi.

Ci sono altri modi per trasferire dati in una rete: per esempio, quando fate una telefonata, la rete stabilisce un collegamento diretto fra il vostro telefono e quello della persona chiamata. A questo punto il telefono incomincia a campionare il microfono della vostra cornetta in modo continuo, trasferendo il segnare al ricevitore all'altro capo. Il tutto a 64.000 bit per secondo, che è la velocità di campionamento necessaria a digitalizzare la voce. Questo avviene comunque, indipendentemente dal fatto che stiate parlando o meno. Anche se state in silenzio la linea è saturata al massimo della sua capacità. Questo meccanismo è detto circuit-switching. Al contrario del meccanismo usato dal TCP/IP, quello cioè a pacchetti, la linea è completamente assegnata alla comunicazione in atto, per cui il fatto che altri stiano telefonando non riduce la capacità della connessione. D'altra parte la linea è utilizzata completamente indipendentemente dal fatto che ci siano o meno dati da trasferire. Di qui gli elevati costi di tale meccanismo. La telefonata, infatti, la pagate lo stesso sia che parliate molto velocemente, sia che stiate completamente in silenzio. Questo meccanismo è troppo costoso per una rete informatica, specialmente se si tiene conto che la disponibilità di tecnologie hardware sempre più raffinate e veloci per il trasferimento dei dati bilanciano in buona parte quello che è uno dei punti deboli del sistema a pacchetti, e cioè l'impossibilità di garantire a ogni utente e in ogni momento una certa capacità di trasferimento ben definita.




Il protocollo IP

Il protocollo IP si occupa di fornire un metodo di indirizzamento logico e di gestione frammentazione/riassemblaggio per la trasmissione dati tra gli host di una rete.

Il protocollo IP, descritto nella RFC 791, nasce negli anni '70 grazie a una serie di ricerche fatte dalle università americane su richiesta del ministro della difesa, allo scopo di realizzare una rete in grado di trasportare diversi tipi di informazioni. L'IP protocol definisce una tecnica di trasmissione dati non orientata alla connessione (connectionless) e senza riscontro (non c'è garanzia che i pacchetti giungano a destinazione e nella sequenza corretta). Esso prevede che le informazioni vengano strutturate in unità chiamate datagrammi IP (IP datagram), di lunghezza massima 65535 byte, suddivise in  due aree: il campo dati (data) che contiene il messaggio da inviare e l'intestazione (header) che contiene le informazioni necessarie per instradare il pacchetto.

HEADER IP
L'intestazione di un pacchetto IP è suddivisa nei seguenti campi:
Version: campo di 4 bit,  descrive la versione del protocollo;
IHL: campo di 4 bit, definisce la lunghezza dell'intestazione. Il campo IHL(Internet Header Lenght) viene sottratto da Packet Lenght per determinare l'inizio dei dati;
Service Type: campo di 8 bit, che definisce le caratteristiche del servizio in Precedence (importanza del pacchetto),
Delay, Throughput, Reliability (informazioni per il trasporto, servono a determinare il percorso che il pacchetto farà);
Packet Lenght: campo di 16 bit, definisce la lunghezza totale del pacchetto (Intestazione+Dati);
Packet Fragmentation: è formato da tre campi, identification di 16 bit , flags di 3 bit e fragment offset di 13 bit i quali permettono di suddividere il pacchetto in unità più piccole quando esso deve passare attraverso una rete che prevede frame di dimensioni minori, e di essere ricostruito all'uscita dalla rete;
Time-to-live (TTL): campo di 8 bit, definisce il tempo massimo di permanenza del pacchetto nella rete, ad ogni hop (router attraversato) il suo valore diminuisce di uno, una volta riaggiunto il valore zero il pacchetto viene scartato;
Protocol: campo di 8 bit, definisce il protocollo ad alto livello utilizzato per creare il messaggio contenuto nel campo dati (TCP, UDP, ICMP ecc);
Header Checksum: campo di 16 bit, definisce un checksum per il controllo della correttezza dei dati contenuti nell'intestazione del pacchetto;
Ip Address Source: campo di 32 bit, contiene l'indirizzo IP del mittente;
Ip Address Destination: campo di 32 bit, contiene l'indirizzo IP del destinatario;
Options: campo di dimensioni variabili, è opzionale, contiene informazioni sulle operazioni che devono essere effettuate durante il percorso;
Padding: campo di dimensioni variabili, è utilizzato per far raggiungere all'area d'intestazione una dimensione di 32 bit o un suo multiplo;
Data: i dati trasportati dal protocollo.


Il protocollo TCP

Ma qual è lo scopo del TCP nell'architettura internet? Il protocollo non fornisce le garanzie di affidabilità e robustezza necessarie per implementare un sistema di trasmissione dati sicuro e di facile gestione. L'IP è inaffidabile e benché schermi lo sviluppatore dalla conoscenza della rete fisica, fornisce ancora una visione di livello troppo basso del sistema di reti interconnesse. Questo vuol dire che l'IP è troppo complesso per essere utilizzato direttamente dalle applicazioni. Per avere un protocollo di trasmissione affidabile abbiamo bisogno di gestire tutte le possibili situazioni di errore, la duplicazione o la perdita dei pacchetti, la caduta delle connessioni o di un router, e via dicendo. Se le

applicazioni utilizzassero direttamente i servizi dell'IP, ognuna di esse dovrebbe implementare una serie alquanto complessa di algoritmi e servizi per tenere conto di tutto ciò. A parte il fatto che esistono relativamente pochi programmatori in grado di far questo fra gli svariati milioni di sviluppatori di applicazioni, nella maggior parte dei casi si tratterebbe di reinventare ogni volta la ruota. In generale questi problemi, seppure complessi, sono abbastanza standard, per cui si è pensato di poggiare sui sistemi di trasmissione a pacchetti un protocollo affidabile che potesse essere implementano da sviluppatori altamente specializzati, lasciando così agli altri la possibilità di concentrarsi sulla logica applicativa piuttosto che sugli aspetti specifici della trasmissione dei dati a basso livello.

Vediamo allora quali sono le caratteristiche principali del TCP, eventualmente comparate a quelle dell'IP.

Innanzi tutto il TCP fornisce una visione dei dati di tipo a flusso (data stream), cioè i dati sono ricevuti in sequenza e nello stesso ordine con il quale sono stati trasmessi. A questo livello cioè, l'utente del TCP spedisce i dati come un singolo flusso di byte e nello stesso modo li riceve. Nell'IP avevamo invece la divisione dei dati in pacchetti che potevano subire un'ulteriore frammentazione se si trovavano a passare attraverso reti caratterizzate da una soglia molto bassa sulle dimensioni dei frame fisici. I pacchetti potevano inoltre arrivare in ordine sparso rispetto a quello di trasmissione.

Secondo punto: nell'IP non si sa mai a priori il cammino che effettua un pacchetto. Il TCP fornisce al suo utente una visione del collegamento come se esso fosse una linea dedicata. Ovviamente sotto sotto il meccanismo è ancora quello a pacchetti, ma la cosa è schermata agli utilizzatori del TCP. Tale caratteristica è detta vitual circuit connection, cioè circuito di connessione virtuale. Il TCP si basi sul concetto di connessione, piuttosto che su quello di indirizzo come fa invece l'IP. Una connessione, per definizione, richiede la definizione di due punti piuttosto che di uno solo, detti punti terminali o estremi della connessione (endpoint). Parleremo anche di interlocutori per indicare gli utenti posti agli estremi della connessione.

Terzo punto: abbiamo visto che l'IP divide i dati in pacchetti che vengono costruiti sulla base di esigenze di trasmissione legate alle varie reti fisiche su cui si poggia il sistema. D'altra parte le applicazioni dividono i dati in funzione delle esigenze applicative. Per esempio, un'applicazione di posta elettronica può considerare una lettera da 8.000 caratteri una singola unità dati, mentre un protocollo per la gestione della rete può avere l'esigenza di spedire tanti piccoli messaggi di non più di 16 byte l'uno. Il TCP permette di disaccoppiare il modo di dividere i dati delle applicazioni da quello dell'IP. Così la lettera di cui sopra viene prima spezzata in tante parti, spedita via IP e poi ricomposta dal livello TCP del destinatario, mentre per i messaggi di controllo avviene il contrario: prima vengono accumulati in un singolo pacchetto, e poi rispezzettati presso il destinatario. Questo meccanismo è detto buffered transfer.

Quarto punto: per quanto intelligente, il TCP si preoccupa di trasferire i dati che gli vengono passati senza entrare in merito a il loro significato dal punto di vista applicativo. In che modo il flusso di dati vada interpretato semanticamente è responsabilità delle due applicazioni che utilizzano la connessione TCP per cooperare. Questo vuol dire che se un'applicazione manda alla sua controparte una serie di indirizzi, questi arriveranno uno di seguito all'altro nel giusto ordine, ma senza alcuna garanzia che ogni buffer contenga un numero intero di indirizzi. Sta all'applicazione ricomporre un indirizzo capitato a cavallo di due buffer consecutivi. Si parla quindi di flusso senza struttura (Unstructured Stream).

Quinto e ultimo punto: le connessioni TCP permettono il trasferimento contemporaneo dei dati in entrambe le direzioni, quello che nel gergo delle comunicazioni si chiama una connessione full-duplex. Si hanno cioè due flussi che scorrono indipendentemente in direzioni opposte, senza interagire fra loro. Le applicazioni hanno comunque la possibilità di passare alla modalità half duplex semplicemente bloccando uno dei due flussi di dati.

Tcp lato tecnico pratico

E' un protocollo di trasporto di tipo connection-oriented per la trasmissione dati tra due host.

Il protocollo TCP ha il compito di fornire alle applicazioni un servizio affidabile per il trasferimento dei dati attraverso la rete. Questo protocollo offre un servizio orientato alla connessione (connection-oriented), esso garantisce la consegna e l'ordinamento corretto dei dati grazie all'utilizzo di sequence number e conferme di consegna. Tra gli host impegnati nella comunicazione viene simulato un colloquio diretto attraverso un canale che consente lo scambio interattivo delle informazioni (full-duplex). I dati vengono presentati e ricevuti da TCP ai protocolli superiori come un'unica sequenza (byte-stream). In questo modo è il TCP ad occuparsi di segmentarli lasciando ai protocolli superiori solo il compito di prepararli. Le informazioni contenute in un segmento sono suddivise in due parti: l'intestazione (header) e i dati (data). Il Transmission Control Protocol è utilizzato da diversi protocolli a livello applicativo quali FTP, Telnet, SMTP, POP3 ed altri.

HEADER TCP
L'intestazione di un pacchetto TCP è formata dai seguenti campi:
Source Port: campo di 16 bit, contiene il numero porta utilizzata dall'host mittente;
Destination Port: campo di 16 bit, contiene il numero della porta utilizzata dall'host destinatario;
Sequence Number: campo di 32 bit, definisce l'ordine in cui i segmenti devono essere riassemblati. E' utilizzato anche nella fase di connessione (handshake);
Acknowledgment Number: campo di 16 bit, contiene il prossimo numero di sequenza che l'host destinatario si aspetta di ricevere dall'host mittente. Esprime il numero di segmenti ricevuti correttamente fino a quel momento;
Data Offset: campo di 4 bit, definisce la lunghezza in parole a 32 bit dell'intestazione TCP. Indica dove inziano i dati;
Reserved: campo di 6 bit, riservato per futuri utilizzi;
Urgent Controlo Bit: campo di 6 bit, contiene a sua volta 6 flag da un bit:
 - URG se è attivo indica che il campo Urgent Pointer è significativo e deve essere letto;
 - ACK se attivo indica che il campo Acknowledgement Number è significativo è deve essere letto;
 - PSH se attivo significa che il pacchetto deve essere inviato immediatamente, invece di attendere il riempimento del buffer;
 - RST viene utilizzato per indicare che la connessione deve essere reinizializzata, solitamente a seguito di problemi;
 - SYN viene utilizzato per stabilire una sessione, indica al destinatario di leggere il campo Sequence number e sincronizzare il proprio con esso;
 - FIN indica che l'host mittente non ha più dati da spedire, e vuole terminare la connessione;
Windows Size: campo di 16 bit, contiene la dimensione del buffer di dati che il mittente può accettare;
Checksum: campo di 16 bit, stabilisce la correttezza delle informazioni (Intestazione+Dati);
Urgent Pointer: campo di 16 bit, indica quale porzione dati è urgente;
Options: campo di dimensione varabile, contiene le opzioni per la comunicazione;
Padding: campo di dimensioni variabili, è utilizzato per far raggiungere all'area d'intestazione una dimensione di 32 bit o un suo multiplo;
Data: i dati trasportati dal protocollo;

Connessine di 2 host    struttura schematizzata del protocollo Tcp


I FLAG TCP
Durante una sessione TCP è di fondamentale importanza lo stato dei flag del campo Urgent Control Bit che possono assumere combinazioni differenti:
SYN: è presente nel primo pacchetto di un host che intende stabilire la connessione con un altro;
SYN | ACK: è la risposta di un host contattato che accetta la connessione;
ACK: a connessione stabilita ogni pacchetto è confermato tramite i flag ACK attivo;
FIN: è inviato da un host che intende chiudere una sessione;
FIN | ACK: è la risposta di un host che conferma la chiusura di una connessione;
RST: viene inviato da un host che riceve un pacchetto inatteso e che quindi non accetta la connessione;

STATI DI UNA SESSIONE TCP
Una sessione TCP attraversa diversi stati in seguito al verificarsi di determinati eventi:
LISTEN: host in attesa di connessione;

SYN-SENT: host che ha inviato una richiesta di connessione ed è in attesa di risposta;
SYN-RECEIVED: host in attesa di conferma per la richiesta di connessione dopo aver ricevuto ed inviato una richiesta di conferma;
ESTABLISHED: host con una connessione aperta durante la quale i dati sono inviati e ricevuti;
FIN-WAIT1: host in attesa di una richiesta di termine della sessione o di conferma di richiesta di termine della connessione;
FIN-WAIT2: host in attesa di una richiesta di termine della sessione da parte di un host remoto;
CLOSE-WAIT: host in attesa di terminare la sessione;
CLOSING: host in attesa della conferma della richiesta di termine di connessione;
LAST-ACK: host in attesa della conferma dellle richiesta di termine della connessione già inviata all'host remoto;
TIME-WAIT: host in attesa (per un determinato lasso di tempo) per garantire che l'host remoto abbia ricevuto la conferma della richiesta di termine della connessione;
CLOSED: non esiste connessione tra host;

FINESTRE SCORREVOLI e TIMEOUT
Il meccanismo delle finestre scorrevoli (Sliding Windows) viene utilizzato dal TCP/IP per migliorare le performance di una trasmissione. La dimensione della finestra di trasmissione, contenuto nel campo Windows Size, viene scambiata tra i due host nella fase di handshaking (può comunque variare in seguito durante la sessione).
Questa dimensione indica il numero massimo di segmenti che si possono inviare ogni volta. Il meccanismo dei timeout permette invece di rispedire un pacchetto, qualora scaduto un determinato periodo di tempo (timeout appunto) non sia stata ricevuta la conferma da parte dell'host remoto.

Poniamo che a seguito dell'handshake si abbia una finestra di partenza di 6 segmenti:
1. L'host mittente invia i 6 segmenti al all'host destinatario.
Host A [(1)(2)(3)(4)(5)(6)]7 8 9 10 11 12  - Host B [ ] Host A (1)(2)(3)(4)(5)(6) --> Host B
2. Se l'host destinatario riceve solamente i segmenti 1 e 2, invia una conferma indicando che si aspetta il segmento 3, inidicando quindi che i segementi 1 e 2 sono stati ricevuti. A questo punto la finestra si sposta di due segmenti in modo da poter trasmettere i segmenti 7 ed 8.
Se non viene confermata la ricezione dei segmenti da 3 a 6 inviati precedentemente, il timer di ritrasmissione raggiunge lo zero e vengono quindi rispediti ma con il tempo di timeout raddoppiato.
Host A 1 2 [(3)(4)(5)(6)(7)(8)] 9 10 11 12  - 1 2 [ ] Host A (7)(8) --> Host B
3. L'host destinatario invia un pacchetto di conferma in cui si aspetta di ricevere il segmento 8, indicando quindi di aver ricevuto i segmenti fino al 7. La finestra a questo punto scorre oltre il segmento 7, e si devono inviare i segmenti da 8 a 12 e cosi via.
Host A 1 2 3 4 5 6 7 [(8)(9)(10)(11)(12)] - Host B 1 2 3 4 5 6 7 [] Host A (8)(9)(10)(11)(12) --> Host B

Grazie a queste tecniche si ha un miglioramento delle prestazioni in quanto, l'host destinatario può inviare le conferme di ricezione di più segmenti (contigui) contemporaneamente riducendo quindi il traffico di rete. Naturalmente una finestra troppo grande potrebbe portare a perdere troppi segmenti e quindi a peggiorare la trasmissione.







Privacy




Articolo informazione


Hits: 2312
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024