Argomenti: ! Servizi dello strato di trasporto! multiplexing/demultiplexing! Servizio senza connessione: UDP

Documenti analoghi
Livello 4 (trasporto): cosa vedremo

Il Livello Trasporto. Multiplexing/demultiplexing. Multiplexing/demultiplexing. Multiplexing/demultiplexing: esempi. Servizi e protocolli di Trasporto

Livello trasporto. Servizi del livello trasporto

Il livello trasporto: Introduzione e protocollo UDP

Principi di trasferimento affidabile

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Il livello trasporto: Introduzione e protocollo UDP

Livello di trasporto: meccanismi trasferimento dati affidabile

Capitolo 3 - parte 2. Corso Reti ed Applicazioni Mauro Campanella

UDP. User Datagram Protocol. UDP Connectionless

Livello di trasporto: meccanismi trasferimento dati affidabile

Reti di calcolatori TCP/IP. Slide a cura di Simon Pietro Romano

Reti di Calcolatori in Tecnologia IP

Prestazioni stop-and-wait. Prestazioni

Livello di trasporto: meccanismi trasferimento dati affidabile (2), TCP

RETI DI CALCOLATORI Home Assignment protocolli a finestra scorrevole. Prima parte

Homework assignment #2. Maurizio Bonuccelli. Dipartimento di Informatica Università di Pisa

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

Telematica di Base. IL Livello di Trasporto TCP

Standard: OSi vs TCP/IP. Il livello di trasporto. TCP e UDP. TCP: Transmission Control Protocol. TCP: funzionalità

Il livello trasporto Protocolli TCP e UDP

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

Esercitazione. Livello di Trasporto [Capitolo 3]

Reti di Calcolatori:

Livello Trasporto. Liv. Applic. Liv. Transport. Transport Entity. Liv. Network. Trasporto

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP

Gestione delle Reti di Telecomunicazioni

Reti di Telecomunicazione Lezione 8

Capitolo 3 Livello di trasporto

Introduzione (parte III)

Rete: classificazione in funzione della distanza fra due generici elementi

4 - Il livello di trasporto

Capitolo 3 Livello di trasporto

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

TCP/IP: summary. Lorenzo Cavallaro, Andrea Lanzi

SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

TCP: rassegna RFCs: 793, 1122, 1323, 2018, 2581

Internet (- working). Le basi.

I protocolli UDP e TCP

Università degli Studi di Bergamo

Livello trasporto: TCP / UDP. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35.

MODELLI ISO/OSI e TCP/IP

Modulo 11. Il livello trasporto ed il protocollo TCP Indice


MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

PARTE 5 LIVELLO TRASPORTO. - Protocolli UDP e TCP. Parte 5. Modulo 1: Servizi del livello trasporto

MODELLI ISO/OSI e TCP/IP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00

Controllo di congestione

Transmission Control Protocol

TCP/IP: elemento unificante

Livello di Trasporto

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

Livello di trasporto: TCP, controllo flusso, controllo congestione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Capitolo 10 Lo Strato di Trasporto in Internet

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Transmission Control Protocol: TCP

L architettura di TCP/IP

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

TCP e UDP: il livello trasporto dell'architettura TCP/IP

TCP e UDP: il livello trasporto dell'architettura TCP/IP. OSI vs. TCP/IP. Transport layer. A.Lioy - Politecnico di Torino ( ) A-1

Capitolo 1 - parte 1. Corso Reti ed Applicazioni Mauro Campanella

Strato di Trasporto Multiplazione a livello di trasporto

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Livello di trasporto e TSAP

ESERCIZIARIO. Risposte ai quesiti:

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Reti di Calcolatori e Laboratorio - Compito del 15 Gennaio 2013

Livello di trasporto: TCP

Il livello trasporto nella rete Internet: TCP e UDP

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Il livello di Trasporto del TCP/IP

Strato di Col o l l e l g e a g m a e m n e t n o

Soluzione dell esercizio 2 (TCP) dell esame del 16 giugno 2015

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Riferimenti. I protocolli TCP e UDP. Sorgente TCP. Principi Fondamentali. TCP header. Ricevitore TCP

Capitolo 3 Livello di trasporto

Reti e Protocolli rassegna (II)

Parte II: Reti di calcolatori Lezione 12

Corso di Sistemi di Misura Distribuiti. Ing. Domenico Capriglione

Reti di Calcolatori:

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

Il livello trasporto nella rete Internet: TCP e UDP

Il livello trasporto nella rete Internet: TCP e UDP

Strato trasporto. Per capir meglio la cosa analizziamo il seguente esempio:

Reti di Telecomunicazioni 1

Capitolo 10 Lo Strato di Trasporto in Internet. Baccarelli, Cordeschi, Patriarca, Polli

Reti di Comunicazione e Internet

RETI TELEMATICHE Lucidi delle Lezioni Capitolo II

Implementazioni tipiche del protocollo TCP

Uso di UDP per client-server UDP. Porte e multiplexing. TCP e UDP. Connessione TCP (o messaggio UDP) Caratteristiche delle porte TCP e UDP

Internet e Reti di Calcolatori

R. Cusani - F. Cuomo, Telecomunicazioni - Data link layer: controllo di flusso, Aprile 2010

Esercizi: Telecomunicazioni parte Reti

Introduzione. Obiettivo: Sommario: Introduzione alle reti di telecomunicazioni approccio:

Reti. Il livello Trasporto: UDP e TCP. Renato Lo Cigno.

Transcript:

Strato di trasporto Obiettivi:! Comprendere i principi dei servizi dello strato di trasporto: " multiplexing/demultipl exing " Trasferimento affidabile dei dati " Controllo di flusso " Controllo di congestione! Implementazione in Internet Argomenti:! Servizi dello strato di trasporto! multiplexing/demultiplexing! Servizio senza connessione: UDP! Principi di trasporto affidabile! Servizio orientato alla connessione: TCP " Trasferimento affidabile " Controllo di flusso " Gestione della connessione! Aspetti generali del controllo della congestione! Controllo della congestione in TCP 3: Transport Layer 3a-1 Protocolli e servizi di trasporto! Creare un canale logico tra processi su host diversi! I protocolli di trasporto sono presenti sui sistemi terminali! Servizi di trasporto vs servizi di rete:! Strato di rete: trasferimento dati tra sistemi terminali! Strato di trasporto: trasferimento dati tra processi " Usa e integra (possibilmente migliorandoli) i servizi dello strato di rete application transport Canale logico end-to-end application transport 3: Transport Layer 3a-2

Protocolli di trasporto Servizi di trasporto in Internet:! Trasporto affidabile in ordine uno a uno (unicast): TCP " Congestione " Controllo di flusso " Instaurazione di connessione! Trasporto non affidabile e non in ordine uno a uno o uno a molti (multicast): UDP! Servizi non disponibili: " Real-time " Garanzia di banda application transport Trasporto logico end-to-end application transport 3: Transport Layer 3a-3 Multiplexing/demultiplexing Segmento unità dati scambiata tra entità di trasporto (4-PDU) segmento " TPDU: transport protocol data unit Messaggio-strato applicativo header Del segmento Ht M Hn segmento P1 M application transport P3 Demultiplexing: consegna dei segmenti ricevuti all applicazione cui sono destinati ricevente M M application transport P4 M P2 application transport 3: Transport Layer 3a-4

Multiplexing/demultiplexing (2) Multiplexing: Raccolta di dati provenienti Da applicazioni diverse e Aggiunta di header (usati per il demultiplexing) multiplexing/demultiplexing:! Basato sui numeri di porta sorgente e destinazione e sull indirizzo IP " source, dest port #s in ogni segmento " Nota: esistono numeri di porta riservati a particolari applicazioni (well-known port numbers, es. 80 o 21) 32 bit source port # dest port # Altri campi dell header application data (messaggio) Formato segmenti TCP/UDP 3: Transport Layer 3a-5 Multiplexing/demultiplexing: Esempi host A source port: x dest. port: 23 server B Client Web host C source port:23 dest. port: x Applicazione: telnet Source IP: C Dest IP: B source port: y dest. port: 80 Source IP: C Dest IP: B source port: x dest. port: 80 Client Web host A Source IP: A Dest IP: B source port: x dest. port: 80 Web server B Applicazione: Web server 3: Transport Layer 3a-6

UDP: User Datagram Protocol [RFC 768]! Protocollo di trasporto senza fronzoli! Servizio best effort, i segmenti UDP possono: " Andare persi " Essere consegnati fuori ordine! Senza connessione (connectionless): " Non viene scambiata informazione di controllo tra mittente e ricevente (handshaking) " Ogni segmento UDP è trattato in modo indipendente dagli altri Perché esiste UDP?! Non si instaura una connessione (si evitano i ritardi relativi)! Semplice: non serve informazione di stato! Header dei segmenti piccolo! Nessun controllo di congestione: UDP va alla massima velocità possibile (adatto per applicazioni real time) 3: Transport Layer 3a-7 UDP (2)! Spesso usato per streaming multimediale " Tollerante alle perdite " Sensibile alla velocità di trasferimento! Altri usi dell UDP: " DNS " SNMP! Trasporto affidabile su UDP: l affidabilità va conseguita a livello applicativo " La gestione di condizioni di errore dipende dall applicazione! Lunghezza, compreso header 32 bit source port # dest port # length Application data (messaggio) checksum Formato segmento UDP 3: Transport Layer 3a-8

Checksum UDP Obiettivo: trovare errori (es., bit invertiti) nel segmento trasmesso Mittente:! I contenuti del segmento sono trattati come interi a 16 bit! checksum: somma dei contenuti del segmento + complemento a 1! Il mittente mette il valore del checksum nel campo relativo Ricevente:! Si calcola il checksum sui contenuti del segmento ricevuto! Confronto tra il risultato e il contenuto del campo checksum: " NO trovato errore (valori diversi) " YES nessun errore trovato (ciò non significa che non ve ne siano) 3: Transport Layer 3a-9 Trasporto affidabile (principi)! Di fondamentale importanza negli strati applicativi, di trasporto e di collegamento!! Le caratteristiche del canale determinano la complessità del protocollo di trasporto affidabile reliable data transfer (rdt) 3: Transport Layer 3a-10

Trasferimento affidabile (generalità) rdt_send(): chiamata da sopra, (es. app.). Dati da inviare deliver_data(): invocata da rdt per consegnare i dati Mittente (sender) Ricevente (receiver) udt_send(): chiamata da rdt per trasferire i dati sul canale non affidabile rdt_rcv(): chiamata quando un pacchetto arriva al lato ricezione del canale 3: Transport Layer 3a-11 Generalità (2)! Sviluppo incrementale dei lati mittente e ricevente del protocollo affidabile (rdt)! Flusso unidirezionale dei dati (per semplicità) " Flusso di controllo in entrambe le direzioni!! Macchina a stati finiti (FSM) per modellare mittente e ricevente Stato: se in questo stato, lo stato successivo è determinato solo da evento Stato 1 Evento che causa una transizione Azioni corrispondenti Evento Azioni Stato 2 3: Transport Layer 3a-12

Rdt1.0: canale affidabile! Canale già affidabile " Nessun errore sui bit trasmessi " Nessuna perdita di pacchetti! FSM distinte per mittente e ricevente: " Mittente invia dati nel canale " Ricevente legge dati dal canale 3: Transport Layer 3a-13 Rdt2.0: canale con errori sui bit! Il canale non affidabile può invertire bit " Si ricordi: checksum UDP serve a individuare errori sui bit! Domanda: come reagire agli errori (scoperti): " Acknowledgement (ACK): il ricevente comunica esplicitamente che pacchetto OK " Negative acknowledgement (NAK): il ricevente comunica esplicitamente che pacchetto ha avuto errori " Il mittente ritrasmette un pacchetto se riceve NAK! Nuovi meccanismi in rdt2.0 (oltre rdt1.0): " Individuazione di errori " Riscontro del ricevente: messaggi di controllo (ACK,NAK) ricevente->mittente (ARQ) 3: Transport Layer 3a-14

rdt2.0: specifica della FSM FSM mittente FSM ricevente 3: Transport Layer 3a-15 rdt2.0 in azione (no errori) sender FSM receiver FSM 3: Transport Layer 3a-16

rdt2.0 in azione (errori) sender FSM receiver FSM 3: Transport Layer 3a-17 rdt2.0 ha un difetto (flaw) fatale! Cosa succede se ACK/NAK corrotti?! Il mittente non sa cosa è successo al ricevente!! Non si può semplicemente ritrasmettere: possibilità di pacchetti duplicati Cosa fare?! Mittente riscontra ACK/NAK del ricevente. Cosa succede se questi ACK/NAK persi?! La ritrasmissione potrebbe causare il reinvio di un pacchetto correttamente consegnato! Gestione duplicati:! Il mittente aggiunge numero di sequenza (sequence number) a ciascun pacchetto! Mittente ritrasmette pacchetto se ACK/NAK con errori! Il ricevente distrugge (non consegna) pacchetti duplicati stop and wait Il mittente invia un pacchetto e aspetta la risposta 3: Transport Layer 3a-18

rdt2.1:(mittente): gestione errori negli ACK/NAK 3: Transport Layer 3a-19 rdt2.1 (ricevente): gestione errori negli ACK/NAK 3: Transport Layer 3a-20

rdt2.1: osservazioni Mittente:! # seq per ogni pacchetto! Due # seq. (0,1) sono sufficienti. Perché?! Controllo: ACK/NAK ricevuto è corrotto?! Numero doppio di stati " Lo stato deve memorizzare se il pacchetto corrente ha # seq. 0 o 1 Ricevente:! Necessità di verificare se un pacchetto ricevuto è duplicato " Lo stato indica se il # seq. atteso sia 0 o 1 " Nota: il ricevente non sa se l ultimo ACK/NAK spedito sia stato ricevuto senza errori dal mittente 3: Transport Layer 3a-21 rdt2.2: protocollo privo di NAK (NAK-free)! Stesse funzionalità di rdt2.1, ma solo ACK! Invece di un NAK, il ricevente invia ACK per l ultimo pacchetto ricevuto correttamente! Il ricevente deve esplicitamente includere nell ACK # seq del pacchetto confermato! ACK duplicato al mittente ha lo stesso significato di un NAK: ritrasmetti il pacchetto corrente! FSM mittente 3: Transport Layer 3a-22

rdt3.0: canale con errori e perdita Nuova assunzione: il canale può perdere pacchetti (dati o ACK) " checksum, # seq., ACK, ritrasmissioni non bastano D: come trattare la perdita? " Il mittente aspetta fino ad essere certo che il pacchetto sia andato perso, poi ritrasmette " Svantaggi? Approccio: il mittente attende per un intervallo ragionevole l arrivo di un ACK! Ritrasmette se un ACK non è ricevuto entro l intervallo! Se il pacchetto (o ACK) solo ritardato (non perso): " La ritrasmissione sarà un duplicato, ma l uso di # seq gestisce ciò " Il ricevente deve indicare il # seq del pacchetto riscontrato! È necessario un timer 3: Transport Layer 3a-23 rdt3.0 mittente Nota: le ritrasmissioni avvengono all frequenza del timer Si riferisce ad ack che giungono in ritardo 3: Transport Layer 3a-24

rdt3.0 in azione 3: Transport Layer 3a-25 rdt3.0 in azione (cont.) 3: Transport Layer 3a-26

Prestazioni di rdt3.0! rdt3.0 funziona, ma le prestazioni non sono buone! Esempio: link da 1 Gbps, ritardo prop. end-to-end 15 ms, pacchetto da 1KB: T trasm = 8Kb/pkt 10**9 b/sec = 8 microsec % di tempo mitt. Fatt. Uso = U = = 8 microsec occupato (busy) 30.016 msec = 0.00015 " Pacchetto da 1KB ogni 30 msec -> throughput 33kB/sec su link da 1 Gbps " Il protocollo limita l uso delle risorse fisiche! 3: Transport Layer 3a-27 Protocolli con pipeline (pipelined) Pipelining: il mittente invia più pacchetti, senza attendere l acknowledgement dei pacchetti precedenti! L intervallo dei numeri di sequenza va aumentato " Buffering dei pacchetti al mittente e/o ricevente! Sliding window: Go-Back-N, Selective Repeat 3: Transport Layer 3a-28

Go-Back-N Mittente:! Numero di sequenza a k-bit nell header del pacchetto! Finestra (window) di (max.) N, pacchetti consecutivi non confermati! ACK(n): conferma tutti i pacchetti, fino a (e incluso) quello con numero di sequenza n - ACK cumulativo! Timer unico per il blocco di pacchetti non confermati ( inflight )! timeout(n): ritrasmetti il pacchetto n e tutti quelli con numero di sequenza più alto nella finestra 3: Transport Layer 3a-29 GBN: FSM estesa (mittente) Nota: timer associato alla variabile base 3: Transport Layer 3a-30

GBN: FSM estesa (ricevente) Ricevente semplice:! Solo ACK: si invia sempre l ACK per il pacchetto con numero di sequenza più alto (mod N) tra quelli correttamente ricevuti! Si possono avere ACK duplicati " È sufficiente memorizzare expectedseqnum al lato ricevente! Pacchetti non in ordine (out-of-order): " Getta (discard), nessun buffering al lato ricezione! " ACK per il pacchetto con numero di sequenza più alto tra quelli ricevuti in ordine 3: Transport Layer 3a-31 GBN in azione 3: Transport Layer 3a-32

Selective Repeat! Il ricevente conferma singolarmente tutti i pacchetti correttamente ricevuti " Memorizza i pacchetti ricevuti per l invio in ordine verso gli strati superiori! Il mittente ritrasmette solamente i pacchetti per cui non ha ricevuto acknowledgement " Il mittente ha un timer per ogni pacchetto non confermato! Finestra del mittente " N numeri di sequenza consecutivi " Come con Go-Back-N si limita il numero di pacchetti trasmessi e non confermati 3: Transport Layer 3a-33 Selective repeat: finestre sender, receiver 3: Transport Layer 3a-34

Selective repeat (cont.) Mittente Dati dall alto :! Se prossimo # seq. disponibile cade nella finestra invia pacchetto timeout(n):! Rimanda pacchetto n, riavvia timer pacchetto n ACK(n) in [sendbase,sendbase+n]:! Marca (mark) pacchetto n come ricevuto! Se n = sendbase, avanza (slide) la base della finestra fino al più piccolo pacchetto non confermato Ricevente n in [rcvbase, rcvbase+n-1]! invia ACK(n)! out-of-order: memorizza (buffer)! in-order: consegna tutti I pacchetti in ordine, avanza rcvbase fino al prossimo pacchetto previsto! n in [rcvbase-n,rcvbase-1]: ACK(n) Altrimenti:! Ignora 3: Transport Layer 3a-35 Selective repeat in azione 3: Transport Layer 3a-36

Selective repeat: dilemma Esempio:! # seq.: 0, 1, 2, 3! Dim. Finestra (window size)=3! Il ricevente non nota differenze tra i due casi!! Erroneamente considera il pacchettoduplicato come nuovo (a) Q: che relazione tra intervallo # seq. e dimensione finestra? 3: Transport Layer 3a-37