CCNA 7: TRANSPORT LAYER
Il transport layer stabilisce una comunicazione temporanea tra due applicazioni e trasferisce dati tra loro. Un’applicazione Un’applicazione genera dei dati che sono spediti dall’applicazione dell’host sorgente sorgente all’applicazione dell’host ricevente, senza tener conto del tipo di dispositivo ricevente, del tipo di media sico, del percorso intrapreso intrapreso , della congestione su un link o della vastità della rete. Il transport laer ! il link tra l’application l’application laer e i laer sottostanti, che sono responsabili della trasmissione in rete. Il transport transport laer provvede alla segmentazione segmentazione del data e fornisce i controlli necessari per riassembla ri assemblare re i segmenti segmenti in in "ussi di comunicazione. #el protocollo $%&'I& la funzione di segmentazione e riassemblaggio del data sono svolti da due tipi di protocolli molto diversi tra loro( $%& )$ransmission %ontrol &rotocol* e U+& )User +atagram &rotocol. e primarie responsabilità del net-ork laer(
Tracking Individal Conversations( monitorare la comunicazione
•
individuale tra le applicazioni dell’host sorgente e uella del destinatario( a livello di transport laer, ogni specico set di dati che scorre tra l’applicazione sorgente e l’applicazione destinataria ! detta conversazione. conversazione. Un host pu/ avere svariati applicazioni applicazioni comunicanti in rete simultaneamente, ognuna di ueste applicazioni comunica con una o pi0 applicazioni su uno o pi0 host remoti. Il transport laer ha uindi la responsabilità di manutenzionare tracciare svariate comunicazioni.
Seg!enting "ata and Reasse!#ling Seg!ents( frammentare il
•
data per una pi0 semplice amministrazione e poi riassemblarne i segmenti in "ussi di dati verso il destinatario. necessario preparare preparare i dati per poterli spedire sul media sico in pezzi maneggevoli. olte reti hanno un limite per l’ammontare dei dati che possono essere inclusi in un singolo pacchetto. I protocolli di transport laer segmentano i dati delle applicazioni in blocchi della giusta misura. 3uesta operazione include l’incapsulamento l’incapsulamento di ogni pezzo di data con l’aggiunta di un header )che servirà poi nel processo di riassemblamento*. Il transport laer dell’host destinatario deve poter ricostruire i pezzi del data in un completo "usso di dati leggibili dall l’application laer.
•
Identi$ying t%e Applications( identicare la corretta applicazione per
ogni "usso di comunicazione4 comunicazione4 possono esserci svariate applicazioni e servizi in uso per ogni host nella rete, e per passare il "usso di dati alla corretta corretta applicazione ! necessario che il transport laer l aer sappia identicare l’applicazione adeguata. &er assolvere tale compito il transport laer assegna ad ogni applicazione applicazione un identicativo, identicativo, chiamato port n!#er. 5d ogni soft-are che deve accedere in rete ! assegnata assegnata una port number, number, unica per uell’host. Il transport laer usa le porte per identicare il tipo di applicazione o di servizio.
12
Conversation <iple'ing( spedire dati molto grandi )streaming
video* in rete sotto forma di un "usso di comunicazione completo, userebbe tutta la band-idth e impedirebbe ad altre comunicazioni di operare simultaneamente, oltre a rendere molto di6cili le operazioni di error recover e ritrasmissione dei dati corrotti. 7egmentare il data in pezzi pi0 piccoli permette a svariate comunicazioni provenienti da svariati utenti di essere multiple8ate sullo stessa rete. a segmentazione permette a pi0 applicazioni di spedire e ricevere dati simultaneamente su un singolo computer, senza la segmentazione solo un’applicazione potrebbe ricevere il data. &er il video streaming il media sarebbe completamente esaurito da una sola comunicazione, invece di essere condiviso da pi0 applicazioni, non si potrebbero ricevere email, chattare e vedere pagine -eb mentre si sta visualizzando un video. Il transport laer aggiunge ad ogni segmento un header che contiene un dato in binario, e che comprende diversi campi contenenti dei bit. I valori di uesti campi permettono ai diversi protocolli di transport laer di amministrare le comunicazioni. Transport Layer Relia#ility ( a6dabilità del transport laer(
il transport laer amministra anche l’a6dabilità di una comunicazione, le diverse applicazioni hanno diversi reuisiti di a6dabilità. I& si basa solamente sulla struttura di tipo addressing e routing dei pacchetti e non specica come i pacchetti vengono consegnati e trasportati. I protocolli di trasporto specicano invece dettagliatamente come avviene la trasmissione dei dati tra gli host. $%&'I& ha due protocolli di trasporto, $%& e U+&. I& usa uesti protocolli di trasporto per abilitare la comunicazione e il trasferimento dei dati tra gli host. $%& ! un protocollo di transport laer a6dabile, che assicura l’avvenuta consegna dei dati al destinatario. U+& ! un protocollo di transport laer molto semplice che non garantisce l’a6dabilità. TCP( ! un protocollo di trasporto a6dabile, include processi che assicurano la consegna
comprovata dei dati tra le applicazioni attraverso la consegna di tipo 5%9 )5ckno-ledged*. Usare $%& ! come spedire un pacco che pu/ essere tracciabile dalla partenza sino alla destinazione. $re operazioni basi dell’a6dabilità di $%&( •
&onitorare i pacc%etti tras!essi
•
&andare n !essaggio AC( per i dati ricevti
•
Ritras!ettere i dati nackno)ledged*
TCP spezza un messaggio in segmenti identicati da una seuenza numerica, e li passa al
processo I& per assemblarli in pacchetti. $%& monitora i pacchetti e se il mittente non riceve un messaggio di 5%9 entro un tempo prestabilito ritrasmette i pacchetti. 7olo la porzione di messaggio andata persa verrà ritrasmessa, non il messaggio per intero. 7ull’host ricevente,$%& deve riassemblare i segmenti del messaggio e passarli all’applicazione. :$& ):ile $ransfer &rotocol* e ;$$& );perte8t $ransfer &rotocol* sono applicazioni che usano il protocollo $%& per la consegna assicurata. ’intestazione di $%& contiene informazioni di controllo per l’5%9, la ritrasmissione e il monitoraggio. ’a6dabilità di $%& fornisce comunicazioni robuste tra le applicazioni ma nel contempo ha svariati meccanismi di controllo che rallentano la trasmissione. Il protocollo di trasporto U+& ! un compromesso tra l’a6dabilità e il peso arrecato sulle risorse di rete.
12
+"P provvede alle funzioni basilari della consegna dei segmenti tra le applicazioni, con una
sorveglianza e verica dei dati molto lievi. U+& ! un protocollo di tipo best non invia responsi di avvenuta consegna )#5%9*. U+& non ha processi a livello di transport laer che informano il mittente se ! avvenuta la consegna. U+& euivale a spedire una lettera senza tracking, pu/ giungere a destinazione oppure no ed il mittente non avrà la conferma di avvenuto recapito. 7ia il $%& che l’U+& sono protocolli di trasporto validi, a seconda delle necessità dell’applicazione ! preferibile uno o l’altro, per alcune applicazione i segmenti devono arrivare con una seuenza specica per essere elaborati con successo, altre hanno bisogno di ricevere tutti i segmenti prima di poterli utilizzare, in uesti casi si usa $%& )esempio( i database, -eb bro-sers e gli email client necessitano che al destinatario giunga il dato completo e nella sua condizione originale, ualsiasi dato mancante pu/ causare la completa rovina della comunicazione*,per tale motivo ! necessario avere un protocollo che supervisiona la comunicazione per uesti tipi di comunicazione. 5ltre volte invece, certe applicazioni sono in grado di tollerare la perdita di dati durante la trasmissione ma non possono ammettere un ritardo, in uesti casi il protocollo U+& ! pi0 indicato perch> necessita di meno supervisione e uindi non crea ritardi )es( streaming audio, video, e ?oI&*. 7e uno o due segmenti di un "usso video si perdono, si crea una momentanea distorsione nel "usso che appare come una distorsione dell’immagine, l’utente pu/ anche non notarla. Invece se lo streaming video avesse un sistema che ritrasmette i pacchetti non ricevuti, si vericherebbe un degrado peggiore per l’immagine, in uesti casi ! preferibile la velocità di U+& e tralasciare l’a6dabilità. Un’altra applicazione che usa U+& ! la radio su -eb, se parte del messaggio ! perduto durante la trasmissione non viene ritrasmesso. %on U+& la perdita di ualche pacchetto causa una rapidissima interruzione, con $%& i pacchetti verrebbero ritrasmessi e la resa nale sarebbe di gran lunga peggiore.
Introdcing TCP and +"P( introduzione a $%& e U+&( per capire
realmente le di=erenze tra i due protocolli ! importante capire come ogni protocollo usa le speciche funzioni di a6dabilità e come tracciano le comunicazioni( TCP ,Trans!ission Control Protocol-: $%& ! descritto con il
documento @:% ABC, supporta le funzioni di segmentazione e riassemblamento ed ! inoltre( Connection.oriented: il protocollo sta#ilisce na conversa/ione di tipo connection.oriented tra!ite delle sessioni* •
•
Relia#le delivery: il protocollo assicra na consegna a0da#ile*
•
Ordered data reconstrction: il protocollo ricostrisce il pacc%etto segendo n ordine*
•
1lo) Control: controlla il 2sso dei dati*
Esta#lis%ing a session( stabilendo una sessione( $%& ! un protocollo di tipo connection< oriented, ovvero negozia e stabilisce una connessione permanente )detta anche sessione* tra
il mittente e il destinatario prima di inoltrare il tra6co. e sessioni preparano i dispositivi per la futura comunicazione. 5ttraverso le sessioni i dispositivi negoziano l’ammontare del tra6co che pu/ essere inoltrato in un dato periodo di tempo e lo amministrano. a sessione viene terminata solo ad avvenuta e completa trasmissione.
12
Relia#le "elivery( $%& ha un metodo per assicurarsi la consegna a6dabile dei dati, in termini
di net-orking, il termine a6dabilità signica assicurarsi che tutti i segmenti che partono da un mittente giungano al destinatario. &er molte ragioni, ! possibile che un segmento si deteriori o si perda del tutto, e $%& assicura la ritrasmissione dei dati corrotti. Sa!e Order delivery( consegna con lo stesso ordine( in una rete ci possono essere tante
rotte con diverse velocità di trasmissione e i dati possono arrivare nell’ordine sbagliato. #umerando e aggiungendo una seuenza ai segmenti, il $%& assicura che i segmenti vengano riassemblati in ordine corretto. 1lo) Control( controllo del "usso( gli host di una rete hanno risorse limitate )memoria e la
band-idth* e uando $%& si accorge che ueste risorse sono utilizzate in maniera massiva, pu/ richiedere all’applicazione trasmittente di ridurre il "usso dei dati. 3uesto processo si chiama "o- control e previene la perdita di segmenti in rete evitando la necessità di ritrasmetterli. Role o$ TCP( ruolo del $%&( una volta che $%& ha
stabilito una sessione ,! capace di tenere traccia della conversazione che avviene durante la sessione. Drazie alla capacità di $%& di tracciare le attuali conversazioni ! considerato un protocollo state!ent )7$5$EE#$ &@F$F%F*, ovvero un protocollo che traccia lo stato delle sessioni di comunicazione. Es( uando un data ! trasmesso con $%&, il mittente attende che il destinatario gli risponda con un 5%9 di avvenuta ricezione del dato, il $%& traccia le informazioni che ha spedito e uelle per le uali ha ricevuto 5%9, se i dati sono #5%9 il mittente capisce che i dati non sono arrivati e li rispedisce. Fgni segmento di $%& ha 2G bte di overhead )controllo* nell’intestazione )header*, mentre un segmento di tipo U+& ne ha solo H. %ontrolli e8tra includono( •
Se3ence n!#er ,45 #it-: sato per riasse!#lare il data*
•
Ackno)ledge!ent N!#er ,45 #it-: indica c%e il seg!ento 6 stato ricevto*
•
•
•
•
•
•
eader leng%t ,8 #it-: detto anc%e 9data oset;< indica la lng%e//a dell=%eader di n seg!ento TCP* Reserved ,> #it-: 3esto ca!po 6 riservato per opera/ioni $tre* Control #its ,> #it-: inclde codici di #it e 2ags c%e indicano lo scopo e la $n/ione del seg!ento TCP* ?indo) si/e ,> #it-: indica il n!ero dei seg!enti c%e possono essere accettati in n solo istante* C%ecks! ,@> #it-: sato per error c%ecking dell=%eader e del data c%e co!pongono il seg!ento* +rgent ,@> #it-: indica se il data 6 rgente*
+"P ,+ser "atagra! Protocol-( ! un protocollo di tipo best
descritto nel documento @:% AH. U+& ! un protocollo di trasporto snello che segmenta e riassembla i dati, come $%&, ma non ha l’a6dabilità e il "o- control. U+& ! un protocollo semplice,le sue caratteristiche(
12
•
•
•
•
Connectionless: non sta#ilisce na connessione tra gli %ost pri!a c%e avvenga la tras!issione* +nrelia#le delivery: +"P non assicra l=a0da#ilit della co!nica/ione< non esistono processi per ritras!ettere i dati persi o corrotti* No Ordered "ata Reconstrction: a volte i seg!enti sono ricevti in ordine diverso da co!e sono stati spediti< +"P non ripristina la se3en/a originale< il data 6 consegnato al destinatario nell=ordine in ci a rrivano* No 1lo) Control: +"P non pB controllare e regolare l=a!!ontare dei dati c%e si sca!#iano gli %ost drante la tras!issione< 3indi pB accadere c%e il dispositivo ricevente sia sovraccarico di dati< in 3esto caso< se il destinatario 6 troppo carico< eli!ina i seg!enti sino a c%e non sar in grado di riceverli*
Role o$ +"P( ruolo dell’U+&( anche se U+& non ha la reliabilit e il "o- control,
la sua semplicità lo rende perfetto per uelle applicazioni che possono tollerare una piccola percentuale di perdita dei dati trasmessi. I segmenti della comunicazione in U+& si chiamano "ATARA& e sono spediti in maniera bes< e=ort dal protocollo di transport laer. +#7, lo streaming video e ?oI& usano U+&. Uno dei pi0 importanti reuisiti del video e della voce in rete ! il "uire veloce dei dati, le applicazioni per video e voce possono tollerare una piccola perdita di dati senza che l’e=etto sia notabile. U+& ! un protocollo STATELESS, ovvero n> il client n> il server tracciano lo stato delle sessioni di comunicazione. Separating <iple Co!!nications( separazione delle comunicazioni
multiple( il transport laer deve poter separare e amministrare le comunicazioni multiple per poterle gestire con i diversi reuisiti necessari al trasporto. Es( un utente sta simultaneamente chattando e ricevendo e spedendo email , guarda pagine -eb ed e=ettua una telefonata di tipo ?oI&, tutte ueste applicazioni ricevono e spediscono dati simultaneamente, nonostante ci siano diversi reuisiti di a6dabilità. tollerabile un po’ di ritardo per il caricamento delle email o delle pagine -eb, e perdere piccole porzioni di dati durante una telefonata pu/ comportare la perdita di alcune parole, ed ! uindi possibile poter chiedere all’interlocutore di ripetere. 3uesti inconvenienti sono considerati accettabili rispetto ai ritardi che si vericherebbero se ogni volta i dati corrotti o persi venissero ritrasmessi. #ella gura si vede come $%& e U+& amministrano diversamente le conversazioni simultanee variando i reuisiti, sia $%& che U+& tengono taccia delle varie applicazioni comunicanti ma la di=erenza sta nei segmenti e datagrammi delle applicazioni, sia $%& che U+& hanno il campo PORT N+&DER a identicarli.
TCP e +"P port addressing( assegnazione dell’indirizzo delle
porte( nell’header di ogni segmento o datagramma sono inserite la porta di sorgente e destinazione, il numero della porta sorgente )source port number* ! il numero associato con l’applicazione che ha creato la comunicazione sull’host locale. a destination port number ! il numero della comunicazione associato all’applicazione che dovrà riceverla su un host remoto. 3uando ! trasmesso un messaggio, i servizi richiesti per l’interpretazione sono identicati dal numero di porta )port number*. Fgni messaggio contiene sia il numero di porta sorgente che il numero di porta di destinazione.
12
•
•
"estination Port: il client i!!ette n n!ero di porta destinataria nel seg!ento per avvisare il server di destina/ione circa il tipo di applica/ione ric%iesta per l=interpreta/ione del !essaggio* La porta F 6 per TTP o servi/i )e#< 3ando il client speciGca la porta F< il server capisce c%e sono ric%iesti servi/i )e#* +n server pB orire svariati servi/i si!ltanei slla porta F e allo stesso te!po provvedere all=1TP slla porta 5@* Sorce Port: il sorce port n!#er 6 generato casal!ente dal dispositivo !ittente< per!ettendo cosH di identiGcare na co!nica/ione tra de dispositivi e 3indi di intraprenderne altre allo stesso !o!ento* +n dispositivo pB spedire svariate ric%ieste TTP ad n )e# server allo stesso te!po perc% sono tracciate gra/ie alle sorce ports* Le porte di sorgente e destina/ione sono i!!esse nel seg!ento< i seg!enti sono poi incapslati in pacc%etti IP*
TCP and +"P port addressing( le porte di sorgente e
destinazione sono immesse nel segmento, i segmenti sono incapsulati all’interno di un pacchetto I&. Il pacchetto I& contiene l’indirizzo I& della sorgente e della destinazione, la combinazione tra indirizzi I& di sorgente e destinazione e il numero delle porte di sorgente e destinazione si chiama socket. Il socket ! usato per identicare il server e il service richiesti dal client4 ogni giorno migliaia di host comunicano con milioni di server diversi e le comunicazioni sono identicate grazie al metodo del socket. Il socket pair ! unico e identica una conversazione specica tra due host( es di client socket ,@FJJ 6 la port n!#er del !ittente-: @J5*@>*@*7:@FJJ il socket in n )e# server potre##e essere: @J5*@>*@*7:F socket pair: 6 la co!#ina/ione di 3esti de socket: @J5*@>*@*K:@FJJ< @J5*@>*@*7:F
a source port di una richiesta client ! generata casualmente, il transport laer mantiene traccia della porta e dell’applicazione che hanno generato la richiesta cosJ la risposta verrà inoltrata all’applicazione corretta. a re3esting application port n!#er ! usata come la port number di destinazione nella risposta che proviene dal server.
IANA )Internet 5ssigned #umbers 5uthorit*organizzazione che assegna il numero delle porte.
+iversi tipi di port numbers( •
•
?ell.kno)n Ports , N!#ers F to @F54 -: porte #en conoscite< da F a @F54< riservate per servi/i e applica/ioni note* +sate per TTP< I&AP
12
•
"yna!ic or Private Ports , N!#ers 8J@K5 to >KK4K -: anc%e dette ep%e!eral ports ,porte passeggere-< assegnate dina!ica!ente alle applica/ioni del client 3ando il client ini/ia a connettersi con n servi/io* La dyna!ic port< identiGca l=applica/ione del client drante la co!nica/ione dato c%e il client sa le )ell.kno)n port per identiGcare e connettersi al server per il servi/io ric%iesto* Non 6 co!ne c%e n %ost si na porta dina!ica o na porta privata ,solo alcni progra!!i peer.to.peer le sano-*
+sing #ot% TCP and +"P( usare sia $%& che U+&( alcune applicazioni usano sia $%& che U+&,
ad es( il pi0 basso controllo di U+& abilita il +#7 a servire svariate richieste client in maniera molto veloce, e a volte spedire le richieste richiede l’a6dabilità di $%&. In casi come uesto si usa la porta )ell.kno)n K4, che implementa sia TCP c%e +"P. 5 volte ! necessario sapere uali sono le connessioni $%& attive, aperte e funzionanti in un host di rete. Il comando netstat verica ueste connessioni, mostra il protocollo in uso, l’indirizzo locale e il numero di porta, l’indirizzo destinatario e la sua porta e lo stato della connessione. #etstat si usa per capire la performance di un host uando ualcosa sembra non andare bene.
TCP and +"P seg!entation( segmentazione di $%& e U+&( ogni
header di un segmento $%& contiene una seuenza di numeri che permettono al transport laer di destinazione di riassemblare i segmenti nello stesso ordine in cui sono stati trasmessi. I servizi che usano U+& tengono traccia delle conversazioni tra le applicazioni )che non signica che tengono traccia dell’ordine dei segmenti o si assicurano di mantenere la comunicazione*, non c’! un numero di seuenza nell’header U+&, uindi ! un protocollo che permette di trasferire dati in maniera pi0 veloce. In uesto caso alcuni segmenti arrivano in ordine sparso, l’applicazione deve poter sopportare uesti piccoli errori.
TCP and +"P A.2( la chiave di distinzione tra $%& e U+& e l’a6dabilità. TCP Server Processes( un solo server pu/ gestire svariate applicazioni simultaneamente,
uesti processi attendono sino a che un client non inizia la comunicazione tramite una richiesta di informazioni o altri servizi. Fgni processo del server ! congurato per usare una port number, sia di default che scelta da amministratore. Un server non pu/ avere due tipologie di servizi assegnati ad una sola porta. e richieste socket che provengono da un client sono accettate uando la porta ! aperta KopenL, signica che il transport laer accetta e processa i segmenti indirizzati a uella porta. %i possono essere svariate porte aperte su un server, una per ogni tipo di applicazione server. Un modo per aumentare la sicurezza su un server ! uello di restringere gli accessi al server alle sole porte associate ai servizi e applicazioni di client autorizzati.
12
12
TCP connection Esta#lis%!ent and Ter!ination:
3uando due host comunicano usando $%& ! stabilita una connessione prima che I dati vengano scambiati. 3uando la comunicazione ! completata la sessione viene chiusa e la connessione terminata. 7ono i meccanismi di connessione e sessione ad abilitare l’a6dabilità di $%&. Dli host tengono traccia di ogni segmento all’interno della sessione e si scambiano informazioni circa il data che ! stato ricevuto usando l’intestazione $%&. $%& ! un protocollo di tipo full< duple8, ogni comunicazione ha due "ussi in una sola direzione, dette sessioni. Dli host compino la t%ree.)ay %ands%ake Kstretta di manoL , un’operazione in pu0 step che permette di stabilire la connessione. I bit di controllo dell’intestazione $%& indicano il progresso e lo stato della connessione. T%ree.)ay %ands%ake( •
•
•
Sta#ilisce c%e il dispositivo di destina/ione 6 presente in rete* MeriGca c%e il dispositivo ricevente a##ia n servi/io attivo e c%e possa ricevere ric%ieste slla port n!#er necessaria al !ittente* In$or!a il dispositivo di destina/ione c%e il client sorgente intende sta#ilire na connessione s 3ella port n!#er*
#elle connessioni $%& l’host client stabilisce la connessione con il server, tre passaggi(
1.
Il client c%iede na sessione di co!nica/ione di tipo client.to.server al server*
5* Il server risponde con n AC( alla ric%iesta di clent.to.server e ric%iede na sessione di co!nica/ione di tipo server.to.client* 4* Il client !anda n AC( al server per la sessione server.to.client*
&er capire il processo three<-a handshake bisogna guardare ai vari valori che si scambiano gli host. 5ll’interno dell’header di un segmento $%& ci sono sei campi a 1 bit che contengono informazioni di controllo per amministrare $%&( •
+R: +rgent pointer Geld signiGcant
•
AC(: Ackno)ledge!ent Geld signiGcant
•
PS: Ps% $nction
•
RST: Reset t%e connection
•
SYN: Sync%roni/e se3ence n!#ers
•
1IN: No !ore data $ro! sender*
I campi AC( e SYN sono rilevanti per l’analisi del three<-a handshake. Step@( il client inizia una richiesta di tipo client
server( un client $%& inizia la sessione di three<-a handshake spedendo un segmento con controllo 7M# )7nchronize seuence number N numero di seuenza sincronizzato*al server, che indica un valore iniziale nel campo di numero di seuenza dell’header. 3uesto valore iniziale per il numero di seuenza si chiama ISN )initial seuence number*, ed ! scelto casualmente e usato per iniziare a tracciare il data dal client al server. ’I7# contenuto nell’header di ogni segmento ! incrementato di uno per ogni bte spedito dal client al server durante tutta la conversazione. #ella gura vediamo l’output di un programma di tipo protocol analy/er per il 7M#( possiamo vedere la control "ag del 7M# settata e il relativo numero di seuenza ! a G. I valori veri sono uelli a C2 bit, la gura rappresenta i O bte in esadecimale.
Step 5( il server manda un 5%9 per la sessione client
richiede una sessione server
12
trova nell’header e uesto valore ! usato per monitorare il "usso dei dati tra server e client della sessione. Step 4( il client riconosce la sessione di tipo server
client $%& risponde con un segmento contenente un 5%9 che ! la risposta al 7M# spedito dal server. #on c’! user data nel segmento, il valore presente nel campo di number ackno-ledgement contiene un valore in pi0 nell’ I7# ricevuto dal server. +opo che entrambe le sessioni sono state stabilite tra client e server, tutti i segmenti scambiati in uesta comunicazione avranno un "ag di 5%9 settato. NOTA( pu/ essere aggiunta delle sicurezza alla rete dati negando la
possibilità di stabilire delle sessioni $%&, permettendo solamente sessioni per specici servizi, permettendo solamente il "uire del tra6co come parte di sessioni precedentemente stabilite.
TCP Session Ter!ination Analysis ( per chiudere una connessione occorre settare il "ag di controllo 1IN ):inish* nell’header del
segmento. &er chiudere una comunicazione $%& di tipo one<-a, occore usare una t-o<-a handshake che consiste nell’utilizzo di un segmento di :I# e di uno di 5%9. &ertanto, per terminare una singola conversazione di $%& sono necessari uattro scambi per terminare le due sessioni. Step@: 3ando il client %a Gnito i dati da inoltrare nel 2sso< invia n seg!ento c%e contiene il 2ag 1IN* Step5: il server spedisce n AC( per avvisare di aver ricevto il 1IN e ter!inare la sessione da client a server* Step4: il server !anda n 1IN al client< per ter!inare la sessione da server a client* Step8: Il client risponde con n AC( con ci dice al server di aver ricevto il 1IN*
anche possibile terminare una connessione con una three<-a handshake, uando il client ha terminato i dati manda un :I# al server4 se anche il server non ha pi0 dati da spedire pu/ rispondere sia con un :I# che con un 5%9, combinando due passaggi in uno. Il client uindi risponde con un 5%9.
Relia#ility e 1lo) Control( durante il setup della sessione viene
assegnato un numero iniziale di seuenza I7#, l’I7# rappresenta il
12
valore di partenza per i bte di uesta sessione. 3uando i dati sono trasmessi durante la sessione, il numero della seuenza ! incrementato con il numero di bte che sono stati trasmessi. 3uesta maniera di tracciare il segmento in base ai bte rende unico il pacchetto, i pacchetti mancanti possono uindi essere identicati. I numeri di seuenza dei segmenti indicano come riassemblare e riordinare i segmenti ricevuti, uesto processo ! identicato come reliabilit.
ConGr!ing Receipt o$ Seg!ents( una delle funzioni di $%& !
assicurare che i pacchetti giungano a destinazione tramite 5%9. Il SE, numero di seuenza e l’5%9 sono usati assieme per confermare la ricezione dei bte nei segmenti. Il n!ero di SE indica il n!ero di #yte c%e sono stati tras!essi in 3esta sessione< incldendo i #yte del seg!ento corrente* $%& usa rispedire il
numero di 5%9 al mittente per indicare il prossimo bte che il ricevente si aspetta di ricevere, uesto processo si chiama e'pectational ackno)ledge!ent )5%9 di prospettiva*. Il mittente viene informato che il destinatario ha ricevuto tutti i bte di uel "usso dati, senza includere per/ il bte che contiene il numero di 5%9. ’host mittente dovrà spedire un segmento che usa un seuence number uguale all’5%9 number. In uesto esempio, se il mittente deve attendere l’5%9 ogni 1G bte spediti, la rete avrà un gran sovraccarico. &er ridurre il sovraccarico creato dagli 5%9 si pu/ spedire un singolo 5%9 per pi0 segmenti. 3uesto 5%9 contiene un numero che ! uguale ai bte ricevuti. Esempio, per una seuenza che inizia con il numero 2GGG, se sono stati ricevuti 1G segmenti da 1GGG bte ciascuno, avremo un 5%9 di 12GG1. NOTA( )indo) si/e( l’ammontare dei dati che un mittente pu/ trasmettere prima di ricevere
un 5%9. a -indo- size abilita l’amministrazione della perdita dei dati e del "o- control. andling Seg!ent Loss( se si perdono uno o pi0 segmenti, solo il data nella prima contigua
seuenza di bte ha un acknoledge. Es( se sono stati ricevuti i segmenti con seuenza numerica 1PPG a CGGG e COGG a CPGG, il numero di 5%9 sarà CGG1. 3uesto perch> ci sono segmenti con un numero di seuenza dal CGG1 al CCBB che non sono stati ricevuti. 7e il mittente non riceve un 5%9 in un determinato periodo di tempo, ritorna all’ultimo 5%9 ricevuto e ritrasmette il dato. Il processo della ritrasmissione non viene descritto nel documento @:%. ’host ritrasmette il segmento, inserisce una copia del segmento in una coda di ritrasmissione e fa partire un timer. 3uando l’5%9 ! ricevuto il segmento ! eliminato dalla coda, se l’5%9 non viene ricevuto prima che scada il tempo il segmento ! di nuovo ritrasmesso. Dli host oggigiorno usano anche un particolare processo, il SAC(s )selective ackno-ledgements*. 7e entrambi gli host supportano il 75%9s ! possibile per il destinatario mandare un 5%9 per segmenti discontinui, in tale maniera solo i dati mancanti verranno ritrasmessi.
TCP 1lo) Control< ?indo) Si/e e Ackno)ledge!ents ( $%&
amministra anche il :lo- %ontrol )controllo del "usso*, che aiuta a mantenere l’a6dabilità della trasmissione $%& aggiustando il tasso del "usso dei dati tra mittente e destinatario. :lo- %ontrol limita l’ammontare dei segmenti inoltrati richiedendo un 5%9 al destinatario prima di inviarne ulteriormente. ’header $%& include un campo a 1 bit chiamato -indo- size, la -indo- size iniziale ! concordata da mittente e destinatario durante la sessione di startup della three<-a handshake, una volta concordata, il mittente limita l’ammontare dei dati inviabili basandosi sulla
12
-indo- size. +urante il ritardo che si crea nell’attesa dell’5%9, il mittente non spedisce nessun pacchetto, e nei momenti in cui la rete ! congestionata il ritardo pu/ aumentare, uindi il reale tasso di trasmissione per la sessione diminuisce. Il rallentamento dei dati aiuta a mitigare i con"itti sulla rete. $%& usa la -indo- size per amministrare il tasso di trasmissione alla massima velocità sostenibile dalla rete e dal ricevente mentre tenta di minimizzare la perdita di dati e la necessità di ritrasmetterli.
TCP 1lo) Control Congestion Avoidance( un altro modo per controllare il "uire dei dati ! usare la )indo) si/e dina!ica4
uando le risorse di rete sono sovraccariche, $%& reduce la -indosize per fare in modo che i segmenti debbano ricevere 5%9 pi0 freuentemente. 3uesto processo rallenta il tasso di trasmissione perch> il mittente deve aspettare un 5%9 con pi0 freuenza. Il ricevente manda il valore di -indo- size al mittente per indicare il numero di bte che ! preparato a ricevere, se la destinazione deve rallentare il "usso spedisce un valore di -indo- size pi0 piccolo inserito in un 5%9. #ella gura, il ricevente ! congestionato e risponde al mittente con un segmento per diminuire la -indo- size )per evitare la perdita di dati*. +opo un periodo in cui non si vericano perdite di segmenti la -indo- size ! di nuovo incrementata, uesto processo che aumenta e decrementa dinamicaente la -indo- size si verica di continuo in $%&. +"P Lo) Over%ead verss Relia#ility( U+& ! un protocollo semplice
e con molti meno controlli di $%& perch> non ! connection
"NS
•
SN&P ,Si!ple Net)ork &anage!ent Protocol-
•
"CP
•
RIP ,Roting In$or!ation Protocol-
•
T1TP ,Trivial 1ile Trans$er Protocol-
•
MoIP
•
Online a!es
5lcune applicazioni come il gioco online e il ?oI& possono tollerare una piccola perdita dei dati, se ueste applicazioni usassero $%& avrebbero enormi ritardi a causa delle tante ritrasmissioni. 5ltre applicazioni, come il +#7, reinoltrano la richiesta se non ricevono risposta, uindi non hanno necessità del $%& per avere una consegna garantita.
+"P "atagra! Reasse!#ly( siccome U+& ! connectionless, cio! le
sessioni non sono stabilite prima dell’inoltro, U+& ! chiamato
12
transaction.#ased, che signica che uando un’applicazione ha un dato da spedire
semplicemente lo spedisce. olte applicazioni che usano U+& spediscono un piccolo uantitativo di dati che possono essere contenuti in un solo segmento, altre invece hanno grandi uantità di dati da spedire e devono essere creati tanti pacchetti. Il &+U dell’U+& si chiama datagra!. 3uando tanti datagrammi sono spediti ad un destinatario, possono prendere svariati percorsi e giungere nell’ordine sbagliato. U+& non traccia il numero di seuenza e non pu/ riordinare i datagrammi in ordine di trasmissione. &erci/ U+& riassembla il data nell’ordine in cui ha ricevuto i datagrammi e lo passa all’applicazione, sarà l’applicazione a dover identicare la seuenza corretta e determinare come deve essere processato il data.
+"P Server Processes and Re3ests( come le applicazioni basate su
$%&, anche le applicazioni per U+& hanno delle port
+"P Client Processes: processi del %lient( come per $%&, anche in
U+& le comunicazioni client
necessità dell’applicazione. TCP: TTP< 1TP< S&TP< Telnet*
U+& si usa per( •
•
Applica/ioni c%e tollerano na piccolo perdita di dati !a non possono sopportare ritardi* Applica/ioni con opera/ioni se!plici di ric%iesta e risposta*
Co!nica/ioni nidire/ionali dove non necessaria la relia#ility o c%e pB essere a!!inistrata dalle applica/ioni* •
12
olte applicazioni si gestiscono autonomamente la reliabilit, uindi non hanno bisogno dei servizi di $%& e si a6dano al pi0 snello U+&( +;%&, +#7 )usa sia $%& che U+&*, 7#&,$:$&.
12