La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso di Reti di Calcolatori A.A. 2005-2006 Prof. D. Rosaci Capitolo Cinque: Il livello di Trasporto.

Presentazioni simili


Presentazione sul tema: "Corso di Reti di Calcolatori A.A. 2005-2006 Prof. D. Rosaci Capitolo Cinque: Il livello di Trasporto."— Transcript della presentazione:

1 Corso di Reti di Calcolatori A.A Prof. D. Rosaci Capitolo Cinque: Il livello di Trasporto

2 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il livello di Trasporto E il cuore dellintera gerarchia di protocolli Compito: fornire comunicazioni affidabili e convenienti dal computer sorgente al computer destinatario, indipendentemente dalla rete fisica utilizzata Per assolvere questo compito, il livello di trasporto utilizza i servizi forniti dal livello di rete Gli utenti del livello di trasporto sono i processi del livello delle applicazioni

3 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Entità di trasporto Lhardware e\o il software che esegue il lavoro è chiamato entità di trasporto Può essere situata nel nucleo del sistema operativo, in un processo utente separato, in un pacchetto di libreria collegato alle applicazioni di rete oppure nella scheda di rete

4 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Tipologie del livello di trasporto Come nel livello di rete, abbiamo servizi connection-oriented e servizi connectionless. Anche lindirizzamento e il controllo di flusso sono simili in entrambi gli strati Allora, perché abbiamo due strati diversi e non uno solo?

5 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Giustificazione dellesistenza del livello di rete Il livello di rete fa parte della sottorete di comunicazione ed è eseguito dal fornitore (almeno nelle WAN) Il livello di rete può essere soggetto a perdite di pacchetti, o guasti. Lutente non può fare nulla per intervenire: il livello di trasporto può cercare di ovviare ai problemi che sorgono nel livello di rete Ad esempio, se una connessione di rete si chiude prima che un trasferimento dati sia stato completato, il livello trasporto può aprire una nuova connessione di rete con lhost remoto e informarsi su quali dati siano arrivati e quali no, e riprendere dal punto di interruzione Il livello di trasporto ha lobiettivo di migliorare la Quality of Service (QoS) del livello di rete

6 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Altra giustificazione dellesistenza del livello di trasporto Le primitive di questo livello possono essere progettate in modo da essere indipendenti da quelle del livello di rete, le quali possono variare considerevolmente da rete a rete Così diventa possibile scrivere applicazioni basate su un insieme standard di primitive Solo se le reti reali fossero senza difetti e condividessero le stesse primitive, il livello di trasporto sarebbe inutile

7 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Differenze tra servizi di trasporto e servizi di rete Un servizio di rete intende modellare un servizio della rete reale, con le sue imperfezioni (es., perdita di pacchetti) e quindi è generalmente inaffidabile Un servizio di trasporto è in genere affidabile, pur essendo inaffidabile la rete sulla quale opera Inoltre un servizio di trasporto deve essere conveniente e facile da usare, perché utilizzato da molti programmatori, a differenza di un sistema di rete che è usato solo dai programmatori dellentità di trasporto

8 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Esempio (essenziale) di interfaccia di trasporto PrimitivaTPDU speditoSignificato LISTEN(nessuna)Si blocca fino a quando un processo cerca di connettersi CONNECTCONNECTION REQ.Cerca di creare una connessione SENDDATASpedizione di informazioni RECEIVE(nessuna)Si blocca fino allarrivo di un TPDU DATA DISCONNECTDISCONNECT REQU. Questo lato vuole chiudere la connessione

9 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Applicazione client-server Il server esegue la primitiva LISTEN e si blocca in attesa di una chiamata da un client Un client vuole parlare col server ed esegue la primitiva CONNECT Lentità di trasporto del client esegue CONNECT bloccando il chiamante ed inviando al server un pacchetto che contiene un messaggio del livello trasporto destinato allentità di trasporto del server.

10 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto TPDU Transport Protocol Data Unit: Unità di dati del protocollo di trasporto I TPDU sono scambiati dalle entità di trasporto al livello di trasporto, e sono contenuti in pacchetti scambiati dal livello rete A loro volta i pacchetti sono contenuti in frame scambiati dal livello data link

11 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Ancora sullesempio client-server CONNECT fa in modo che venga spedito un TPDU CONNECTION REQUEST al server Quando questo arriva, lentità di trasporto del server verifica che il server sia bloccato su LISTEN (cioè sia interessato a gestire richieste) e, in caso affermativo, sblocca il server e invia al client un TPDU CONNECTION ACCEPTED Quando questo arriva il client viene sbloccato e la connessione viene stabilita

12 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto SEND e RECEIVE Servono per scambiare i dati RECEIVE blocca lattore che lha invocata per aspettare che qualche altro attore esegua una SEND Quando il TPDU arriva, il ricevitore viene sbloccato Modello molto semplificato

13 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Modello basato su SOCKET primitivaSignificato SOCKETCrea un nuovo punto finale di comunicazione BINDAssocia un indirizzo locale ad un socket LISTENAnnuncia la volontà di accettare connessioni ACCEPTArresta il visitatore finchè non arriva la connessione CONNECTTenta attivamente di stabilire una connessione SENDSpedisce dati sulla connessione RECEIVERiceve dati dalla connessione CLOSEChiude la connessione

14 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Lato Server: SOCKET La primitiva SOCKET crea un nuovo punto di accesso e alloca spazio per esso nelle tabelle dellentità di trasporto I parametri della chiamata specificano il formato di indirizzamento che dovrà essere usato, il tipo di servizio desiderato (es. flusso di byte affidabile) e il protocollo Se ha successo, SOCKET restituisce un descrittore di file ordinario da utilizzare nelle chiamate successive

15 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Lato Server: BIND I socket appena creati non hanno indirizzi Questi sono assegnati usando la primitiva BIND Una volta che il server ha collegato un indirizzo a un socket, i client possono connettersi a esso

16 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Lato Server: LISTEN e ACCEPT LISTEN alloca spazio per la coda delle chiamate in arrivo, nel caso più client cerchino di connettersi contemporaneamente LISTEN non è bloccante: per bloccarsi in attesa di una connessione in arrivo il server esegue una primitiva ACCEPT

17 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Lato Server: arrivo di richieste Quando arriva una TPDU di richiesta connessione, lentità di trasporto crea un nuovo socket con le stesse proprietà delloriginale e restituisce per esso un descrittore di file Il server crea un processo o un thread per gestire la connessione di un nuovo socket, e torna ad aspettare nuove connessioni sul socket

18 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Lato Client Anche il client invoca SOCKET. In questo caso, non ha bisogno di assegnare un indirizzo al socket con BIND, perché lindirizzo utilizzato non ha importanza per il client La primitiva CONNECT blocca il chiamante e attiva la procedura di connessione Quando il TPDU viene ricevuto dal server, il client viene sbloccato e la connessione è stabilita Entrambi i lati possono usare SEND e RECEIVE per trasmettere e ricevere dati sulla connessione full dupex In questo modello, la chiusura delle connessioni è simmetrica e si realizza con CLOSE

19 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Protocolli di livello Transport I protocolli di livello transport (sulla base dei quali si implementano i servizi) assomigliano per certi aspetti a quelli di livello data link. Infatti si occupano, fra le altre cose, anche di: controllo degli errori; controllo di flusso; riordino dei TPDU. Ci sono però anche delle importanti differenze. Quella principale è che: nel livello data link fra le peer entity c'è un singolo canale di comunicazione; nel livello transport c'è di mezzo l'intera subnet di comunicazione. Questo implica che, a livello transport: è necessario indirizzare esplicitamente il destinatario; è più complicato stabilire la connessione; la rete ha una capacità di memorizzazione, per cui dei TPDU possono saltare fuori quando la destinazione meno se li aspetta;

20 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Indirizzamento Quando si vuole attivare una connessione, si deve ovviamente specificare con chi la si desidera. Dunque, si deve decidere come è fatto l'indirizzo di livello transport, detto TSAP address (Transport Service Access Point address). Tipicamente un TSAP address ha la forma (NSAP address, informazione supplementare) Ad esempio, in Internet un TSAP address (ossia un indirizzo TCP o UDP) ha la forma: (IP address:port number) dove IP address è il NSAP address, e port number è l'informazione supplementare. Questo meccanismo di formazione degli indirizzi dei TSAP ha il vantaggio di determinare implicitamente l'indirizzo di livello network da usare per stabilire la connessione. In assenza di tale meccanismo, diviene necessario che l'architettura preveda un servizio per effettuare il mapping fra gli indirizzi di livello transport e i corrispondenti indirizzi di livello network.

21 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Attivazione della connessione Questa operazione sembra facile ma non lo è, perché la subnet può perdere o duplicare (a causa di ritardi interni) dei pacchetti. Ad esempio, a causa di ripetuti ritardi nell'invio degli ack può succedere che vengano duplicati e successivamente arrivino in perfetto ordine a destinazione tutti i pacchetti precedentemente generati nel corso di una connessione. Ciò in linea di principio può significare che l'attivazione della connessione e tutto il suo svolgimento abbiano luogo due volte. Si immaginino le conseguenze di tale inconveniente se lo scopo di tale connessione fosse stato la richiesta (a una banca) di versare un miliardo sul conto di un personaggio dalla dubbia onestà.

22 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Duplicati ritardatari Il problema di fondo risiede nella possibile esistenza di duplicati ritardatari che arrivano a destinazione molto dopo essere partiti. Una volta che la connessione è stabilita, il problema non si pone. Infatti durante il setup della connessione le peer entity si accordano sul numero iniziale di sequenza, e quindi i doppioni ritardatari non vengono accettati. Viceversa, per risolvere il problema dei duplicati relativi alla fase di attivazione della connessione esiste una soluzione detta three-way handshaking (Tomlinson, 1975).

23 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Three-way handshaking Il protocollo funziona così: il richiedente invia un TPDU di tipo conn.request con un numero x proposto come inizio della sequenza; il destinatario invia un TPDU di tipo ack contenente: la conferma di x; la proposte di un proprio numero y di inizio sequenza; il richiedente invia un TPDU di tipo dati contenente: i primi dati del dialogo; la conferma di y. I valori x e y possono essere generati, ad esempio, sfruttando l'orologio di sistema, in modo da avere valori ogni volta diversi.

24 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto In assenza di errori:

25 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto In presenza di duplicati Se arriva a destinazione un duplicato della richiesta di attivazione, il destinatario risponde come prima ma il mittente, che sa di non aver richiesto una seconda connessione, lo informa dell'errore

26 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Altra situazione - 1 Se infine arrivano al destinatario sia un duplicato della richiesta di attivazione che un duplicato del primo TPDU dati, la situazione è la seguente:

27 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Altra situazione - 2 Infatti, in questo caso: il mittente invia un reject alla risposta del destinatario, perché sa di non aver richiesto una seconda connessione (come nel caso precedente); il destinatario scarta il TPDU dati, perché questo reca un ack relativo ad un numero di sequenza (z) precedente e non a quello (y) da lui testé inviato.

28 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Rilascio di una connessione -1 Rilasciare una connessione è più semplice che stabilirla, ma comunque qualche piccolo problema c'è anche in questa fase. In questo contesto, rilasciare la connessione significa che l'entità di trasporto rimuove le informazioni sulla connessione dalle proprie tabelle e informa l'utente di livello superiore che la connessione è chiusa. Ci sono due tipi di rilasci: asimmetrico; simmetrico.

29 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Rilascio di una connessione -2 Nel primo caso (esemplificato dal sistema telefonico) quando una delle due parti "mette giù" si chiude immediatamente la connessione. Ciò però può portare alla perdita di dati, in particolare di tutti quelli che l'altra parte ha inviato e non sono ancora arrivati. Nel secondo caso si considera la connessione come una coppia di connessioni unidirezionali, che devono essere rilasciate indipendentemente. Quindi, lungo una direzione possono ancora scorrere dei dati anche se la connessione lungo l'altra direzione è stata chiusa. Il rilascio simmetrico è utile quando un processo sa esattamente quanti dati deve spedire, e quindi può autonomamente decidere quando rilasciare la sua connessione in uscita.

30 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Rilascio di una connessione -3 Se invece le due entità vogliono essere d'accordo prima di rilasciare la connessione, un modo di raggiungere lo scopo potrebbe essere questo:

31 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Rilascio di una connessione - 4 Purtroppo, le cose non sono così semplici: c'è un problema famoso in proposito, il problema delle due armate:

32 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il problema delle due armate - 1 La definizione del problema è la seguente: i due eserciti che compongono l'armata A sono ciascuno più debole dell'esercito che costituisce l'armata B; l'armata A però nel suo complesso è più forte dell'armata B; i due eserciti dell'armata A possono vincere solo se attaccano contemporaneamente; i messaggi fra gli eserciti dell'armata A sono portati da messaggeri che devono attraversare il territorio dell'armata B, dove possono essere catturati. Come fanno ad accordarsi gli eserciti dell'armata A sull'ora dell'attacco? Una possibilità è la seguente: il comandante dell'esercito 1 manda il messaggio "attacchiamo a mezzanotte. Siete d'accordo?"; il messaggio arriva, un ok di risposta parte e arriva a destinazione, ma il comandante dell'esercito 2 esita perché non può essere sicuro che la sua risposta sia arrivata.

33 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il problema delle due armate - 2 Si potrebbe pensare di risolvere il problema con un passaggio in più (ossia con un three-way handshake): l'arrivo della risposta dell'esercito 2 deve essere a sua volta confermato. Ora però chi esita è il comandante dell'esercito 1, perché se tale conferma si perde, l'armata 2 non saprà che la sua conferma alla proposta di attaccare è arrivata e quindi non attaccherà. Aggiungere ulteriori passaggi non aiuta, perché c'è sempre un messaggio di conferma che è l'ultimo, e chi lo spedisce non può essere sicuro che sia arrivato. Dunque, non esiste soluzione.

34 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il problema delle due armate - 4 Per fortuna, rilasciare una connessione è meno critico che attaccare un'armata nemica. Quindi, qualche rischio si può anche prendere. Un protocollo di tipo three-way handshaking arricchito con la gestione di timeout è considerato adeguato, anche se non infallibile: il mittente invia un disconn.request e, se non arriva risposta entro un tempo prefissato (timeout), lo invia nuovamente per un massimo di n volte: appena arriva una risposta (disconn.request) rilascia la connessione in ingresso e invia un ack di conferma; se non arriva nessuna risposta, dopo l'ultimo timeout rilascia comunque la connessione in ingresso; il destinatario, quando riceve disconn.request, fa partire un timer, invia a sua volta un disconn.request e attende l'ack di conferma. Quando arriva l'ack o scade il timer, rilascia la connessione in ingresso.

35 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto I protocolli di trasporto di Internet: TCP e UDP TCP (Transmission Control Protocol): protocollo orientato alla connessione UDP (User Data Protocol): protocollo senza connessione

36 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto TCP Fu progettato esplicitamente per fornire un flusso affidabile end-to-end a partire da un internet inaffidabile Ogni macchina che supporta TCP possiede unentità di trasporto TCP che gestisce i flussi di dati TCP e si interfaccia col livello IP Unentità TCP riceve flussi di dati dai processi locali, li spezza in unità larghe al più 64 KB (ma generalmente di circa 1500 byte) e spedisce queste unità come datagram IP separate Ogni datagram che arriva al destinatario viene passato allentità TCP che ricostruisce il flusso originario dei dati Il livello IP non fornisce alcuna garanzia sulla consegna corretta dei datagram: quindi è compito di TCP ritrasmetterli quando necessario

37 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il modello di servizio TCP - 1 Il servizio di TCP si ottiene mediante la creazione, da parte dellutente e del ricevente, di punti di accesso (socket) Ogni socket è caratterizzato da un identificatore (indirizzo), consistente nellindirizzo IP dellhost, e di un numero di 16 bit locale allhost, detto porta Una porta è una Transport Service Access Point (TSAP)

38 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il modello di servizio TCP - 2 Un socket può essere utilizzato contemporaneamente da più connessioni Una connessione è caratterizzata dai socket degli interlocutori, cioè dalla coppia (s1, s2) Le porte inferiori alla 256 sono chiamate porte ben note, e vengono usate per servizi standard Ad es., nellambito di un processo di scambio file (FTP) TCP usa la porta 21, per il login remoto (TELNET) usa la porta 23 Le connessioni TCP sono full duplex, punto-a-punto Non sono supportati multicasting e broadcasting

39 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il modello di servizio TCP: modi di operare TCP trasferisce flussi di dati e non di messaggi. Ovvero TCP non ha idea del significato dei byte trasmessi, e di come vanno letti Quando un processo passa dati a TCP, questi potrebbe spedirli immediatamente oppure salvarli in un buffer per un invio successivo (magari insieme ad altri dati) E possibile forzare linvio immediato dei dati usando il flag PUSH Dati urgenti: vengono inviati in seguito allutilizzo del flag URGENT

40 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il protocollo TCP - 1 Le entità TCP mittente e ricevente si scambiano dati sotto forma di segmenti Un segmento consiste in un preambolo fisso di 20 byte (più alcune parti opzionali) seguito da 0 o più byte di dati Il software TCP decide la dimensione dei segmenti Limite 1: ogni segmento, preambolo incluso, deve entrare in un pacchetto IP di byte Limite 2: ogni rete possiede un Maximum Transfer Unit (MTU, lungo generalmente poche migliaia di byte) e ogni segmento deve entrare in un MTU Un segmento può arrivare ad una rete con un MTU più piccolo della dimensione del segmento: in questo caso il segmento viene frammentato dal router di confine della rete

41 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il protocollo TCP - 2 Ogni byte di una connessione TCP possiede un proprio numero di sequenza Al momento di trasmettere un segmento, il mittente inizializza un timer Quando il segmento arriva a destinazione, il ricevente spedisce indietro un segmento che contiene un numero di ack (conferma di ricezione) uguale al successivo numero di sequenza che attende di ricevere Se il timer del mittente scade prima che il messaggio sia ricevuto, il segmento viene ritrasmesso

42 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il preambolo del segmento TCP

43 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il significato dei campi Source port,destination porti dentificano gli end point (locali ai due host) della connessione. Essi, assieme ai corrispondenti numeri IP, formano i due TSAP. Sequence number il numero d'ordine del primo byte contenuto nel campo dati. Ack. Number il numero d'ordine del prossimo byte aspettato. TCP header length quante parole di 32 bit ci sono nell'header (necessario perché il campo options è di dimensione variabile). URG 1 se urgent pointer è usato, 0 altrimenti. ACK 1 se l'ack number è valido (cioè se si convoglia un ack), 0 altrimenti. PSH dati urgenti (pushed data), da consegnare senza aspettare che il buffer si riempia. RST richiesta di reset della connessione (ci sono problemi!). SYN usato nella fase di setup della connessione:SYN=1 ACK=0 richiesta connessione;SYN=1 ACK=1 accettata connessione. FIN usato per rilasciare una connessione. Window size il controllo di flusso è di tipo sliding window di dimensione variabile. Window size dice quanti byte possono essere spediti a partire da quello (compreso) che viene confermato con l'ack number. Un valore zero significa: fermati per un pò, riprenderai quando ti arriverà un uguale ack number con un valore di window size diverso da zero. Checksum simile a quello di IP; il calcolo include uno pseudoheader. Urgent pointer puntatore ai dati urgenti. Options fra le più importanti, negoziabili al setup:dimensione massima dei segmenti da spedire;uso di selective repeat invece che go-back-n;uso di NAK.

44 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Attivazione della connessione - 1 Si usa la tecnica three-way handshake una delle due parti (diciamo il server) esegue due primitive, listen() e poi accept() rimanendo così in attesa di una richiesta di connessione su un determinato port number e, quando essa arriva, accettandola; l'altra parte (diciamo un client) esegue la primitiva connect(), specificando host, port number e altri parametri quali la dimensione massima dei segmenti, per stabilire la connessione; tale primitiva causa l'invio di un segmento TCP col bit syn a uno e il bit ack a zero; quando tale segmento arriva a destinazione, l'entity di livello transport controlla se c'è un processo in ascolto sul port number in questione: se non c'è nessuno in ascolto, invia un segmento di risposta col bit rst a uno, per rifiutare la connessione; altrimenti, consegna il segmento arrivato al processo in ascolto; se esso accetta la connessione, l'entity invia un segmento di conferma, con entrambi i bit syn ed ack ad uno

45 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Attivazione della connessione - 2

46 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Rilascio della connessione Il rilascio della connessione avviene considerando la connessione full-duplex come una coppia di connessioni simplex indipendenti, e si svolge nel seguente modo: quando una delle due parti non ha più nulla da trasmettere, invia un fin; quando esso viene confermato, la connessione in uscita viene rilasciata; quando anche l'altra parte completa lo stesso procedimento e rilascia la connessione nell'altra direzione, la connessione full- duplex termina. Per evitare il problema dei 3 eserciti si usano i timer, impostati al doppio della vita massima di un pacchetto.

47 D. Rosaci Corso di Reti di Calcolatori Capitolo Quinto Il protocollo UDP Il livello transport fornisce anche un protocollo non connesso e non affidabile, utile per inviare dati senza stabilire connessioni (ad esempio per applicazioni client-server). Lo header di un segmento UDP è molto semplice: La funzione di calcolo del checksum può essere disattivata, tipicamente nel caso di traffico in tempo reale (come voce e video) per il quale è in genere più importante mantenere un'elevato tasso di arrivo dei segmenti piuttosto che evitare i rari errori che possono accadere.


Scaricare ppt "Corso di Reti di Calcolatori A.A. 2005-2006 Prof. D. Rosaci Capitolo Cinque: Il livello di Trasporto."

Presentazioni simili


Annunci Google