Programmazione in Rete

Documenti analoghi
Reti di Calcolatori:

Reti di Calcolatori:

Telematica di Base. IL Livello di Trasporto TCP

Livello di trasporto:

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

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 3

Parte II: Reti di calcolatori Lezione 13 (37)

Il livello trasporto: Introduzione e protocollo UDP

Il livello trasporto: Introduzione e protocollo UDP

Telematica di Base. Il livello di trasporto

Programmazione in Rete

Capitolo 3 Livello di trasporto

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

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

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

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

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

Reti di Calcolatori I. Prof. Roberto Canonico Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Reti di Calcolatori in Tecnologia IP

TCP: apertura della connessione. Apertura connessione (handshake)

Transport Layer & TCP/UDP

Livello trasporto. Servizi del livello trasporto

Lezione n.3 LIVELLO TRASPORTO

Il livello trasporto: introduzione Il protocollo UDP

Livello 4 (trasporto): cosa vedremo

Parte II: Reti di calcolatori Lezione 12 (36)

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

Parte II: Reti di calcolatori Lezione 14 (38)

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

Parte II: Reti di calcolatori Lezione 14 (38)

Livello di trasporto: TCP, controllo flusso, controllo congestione

Parte II: Reti di calcolatori Lezione 12

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

Il livello Trasporto si occupa di come avviene lo scambio dei dati tra mittente e destinatario, gestisce quindi l invio e la ricezione dei dati.

Capitolo 3 Livello di trasporto

UDP. User Datagram Protocol. UDP Connectionless

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

Esercitazione. Livello di Trasporto [Capitolo 3]

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

Controllo di congestione

Transmission Control Protocol: TCP


Livello di trasporto: meccanismi trasferimento dati affidabile

Parte II: Reti di calcolatori Lezione 13 (37)

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

Reti di Calcolatori e Laboratorio

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

Il Livello Trasporto III 3. Corso di RETI DI CALCOLATORI (9 CFU) a.a II anno / II semestre. Il Livello Trasporto. Il Livello Trasporto

I protocolli UDP e TCP

Servizi del livello trasporto, protocollo UDP, intro a TCP

RETI DI CALCOLATORI. I Protocolli TCP e UDP. Livello TRASPORTO. Reti di Calcolatori A.A Carlo Mastroianni. Internet (IP) Trasporto

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

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Sistemi e Tecnologie della Comunicazione

Lo strato di Trasporto

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

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

Capitolo 3 - parte 1. Corso Reti ed Applicazioni Mauro Campanella Como 2003

Livello di trasporto: TCP

TCP/IP: summary. Lorenzo Cavallaro, Andrea Lanzi

RETI DI CALCOLATORI. I Protocolli TCP e UDP. Livello TRASPORTO. Reti di Calcolatori A.A Carlo Mastroianni. Internet (IP) Trasporto

Lo strato di Trasporto

RETI DI CALCOLATORI. TCP e UDP: Il Livello di Trasporto Internet

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

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

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

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

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

Rete: livello trasporto (TCP/IP) Rete: livello trasporto (TCP/IP) Rete: livello trasporto (TCP/IP) Rete: livello trasporto (TCP/IP) Parte 2 - Indice

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Gestione delle Reti di Telecomunicazioni

DNS: Domain Name System

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

Plazzotta Marco Sistemi e Reti Livello di Trasporto

Parte II: Reti di calcolatori Lezione 15 (39)

Strato di Trasporto TCP

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

1) (commutazione pacchetto, prodotto banda-ritardo) 2) (frammentazione, commutazione di pacchetto) 3) (Selective Repeat)

Il livello trasporto: tecniche di trasmissione affidabile dei dati

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Capitolo 3 Livello di trasporto

Il livello trasporto: controllo di flusso in TCP

Servizi del livello trasporto, protocollo UDP, meccanismo stop-and-wait

Prestazioni. aumentare l intervallo dei numeri di sequenza dotare sender e receiver di buffer per memorizzare i pacchetti non riscontrati

Prestazioni stop-and-wait. Prestazioni

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

Livello di trasporto e TSAP

Reti di Calcolatori e Laboratorio - Compito del 12 Gennaio 2012

Strato 4 (Transport Layer) Protocolli TCP e UDP

Nome e Cognome : Anno di corso Numero di matricola : Como, 7 maggio Quiz a risposta multipla

Lo strato di Trasporto

OSI vs. TCP/IP. TCP e UDP: il livello trasporto dell'architettura TCP/IP. Transport layer. Transport layer. Cosa misuriamo?

Marco Listanti. Telecomunicazioni e Telerilevamento - Prof. Marco Listanti - A.A. 2010/2011. INFOCOM Dept

Introduzione (parte III)

Livello di Trasporto

Capitolo 10 Lo Strato di Trasporto in Internet

Recupero I Prova in itinere - Rete Internet (ing. Giovanni Neglia) Lunedì 25 Giugno 2007

Application Layer DNS, TELNET

Transcript:

Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Sommario della lezione di oggi: Lo strato di trasporto (1/2) Servizi e protocolli dello strato di trasporto Multiplazione e demultiplazione delle applicazioni Trasporto senza connessione: UDP Trasporto con connessione: TCP Il controllo della congestione nel TCP dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 2

Strato di trasporto: Servizi e protocolli I protocolli di trasporto: forniscono comunicazione logica fra processi applicativi in esecuzione su host distinti sono in esecuzione sui terminali servizi dello strato di transporto vs servizi dello strato di rete: strato di rete: trasferimento dati fra terminali strato di trasporto: trasferimento dati fra processi (basandosi su servizi dello strato di rete) analogia del servizio postale! application transport network data link physical network data link physical logical end-end transport network data link physical network data link physical network data link physical network data link physical application transport network data link physical dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 3

Strato di trasporto: Servizi e protocolli (cont.) ServiziditrasportoInternet: consegna affidabile, in-order eunicast(tcp) controllo della congestione controllo del flusso setup della connessione consegna inaffidabile ( besteffort ), disordinata e unicast o multicast: UDP servizi non disponibili: real-time garanzie sull ampiezza di banda multicast affidabile application transport network data link physical network data link physical logical end-end transport network data link physical network data link physical network data link physical network data link physical application transport network data link physical dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 4

Multiplexing/demultiplexing Demultiplexing nell host ricevente: consegnare i segmenti ricevuti alla socket appropriata Multiplexing nell host mittente: raccogliere i dati dalle socket associate ad un processo ed incapsularli con l intestazione (utilizzati poi per il demultiplexing) = socket = processo applicazione P3 P1 P1 applicazione P2 P4 applicazione trasporto trasporto trasporto rete rete rete collegamento collegamento collegamento fisico fisico fisico host 1 host 2 host 3 dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 5

Demultiplexing: come funziona L host riceve i datagrammi IP ogni datagramma ha un indirizzo IP di origine e un indirizzo IP di destinazione ogni datagramma trasporta 1 segmento a livello di trasporto ogni segmento ha un numero di porta di origine e un numero di porta di destinazione L host usa gli indirizzi IP e i numeri di porta per inviare il segmento alla socket appropriata N porta origine 32 bit N porta destinazione Altri campi dell intestazione Dati dell applicazione (messaggio) Struttura del segmento TCP/UDP dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 6

Demultiplexing senza connessione Crea le socket con i numeri di porta: DatagramSocket mysocket1 = new DatagramSocket(99111); DatagramSocket mysocket2 = new DatagramSocket(99222); La socket UDP è identificata da 2 parametri: (indirizzo IP di destinazione, numero della porta di destinazione) Quando l host riceve il segmento UDP: controlla il numero della porta di destinazione nel segmento invia il segmento UDP alla socket con quel numero di porta I datagrammi IP con indirizzi IP di origine e/o numeri di porta di origine differenti vengono inviati alla stessa socket dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 7

Demultiplexing senza connessione (cont.) DatagramSocket serversocket = new DatagramSocket(6428); P2 P3 P1P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 SP: 9157 SP: 5775 client IP: A DP: 6428 server IP: C DP: 6428 client IP: B SP fornisce l indirizzo di ritorno dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 8

Demultiplexing con connessione La socket TCP è identificata da 4 parametri: indirizzo IP di origine numero di porta di origine indirizzo IP di destinazione numero di porta di destinazione L host ricevente usa i quattro parametri per inviare il segmento alla socket appropriata Un host server può supportare più socket TCP contemporanee: ogni socket è identificata dai suoi 4 parametri N.B. I server WWW hanno socket differenti per ogni connessione client con HTTP non-persistente si avrà una socket differente per ogni richiesta dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 9

Demultiplexing con connessione (cont.) P1 P4 P5 P6 P2 P1P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 client IP: A DP: 80 S-IP: A D-IP:C WWW server IP: C DP: 80 S-IP: B D-IP:C client IP: B dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 10

Trasporto senza connessione: UDP [RFC 768] Protocollo di trasporto senza fronzoli per Internet servizio best effort, i segmenti UDP possono: andare persi essere consegnati in disordine senza connessione: niente handshaking fra mittente e destinatario ogni segmento gestito indipendentemente dagli altri Perché esiste un UDP? Nessun ritardo dovuto al setup di connessione semplicità dovuta ad assenza di stato di connessione breve intestazione del segmento nessun controllo di congestione: UDP può sparare a raffica con velocità desiderata dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 11

UDP: struttura del segmento Spesso usato per far scorrere applicazioni multimediali tollerante alla perdita di dati sensibile alla velocità di trasmissione altri usi di UDP: DNS SNMP affidabilità su UDP va gestita a livello applicativo (politica di recupero degli errori) Lunghezza in byte del segmento UDP, inclusa intestazione 32 bits source port # dest port # length Application data (message) checksum Formato del segmento UDP dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 12

UDP: il checksum Obiettivo: rilevare errori nel segmento trasmesso Mittente: tratta i contenuti del segmento come una sequenza di interi a 16 bit checksum: somma (in complemento ad 1) dei contenuti del segmento il mittente pone il valore di checksum nel campo UDP checksum Destinatario: calcola il checksum del segmento ricevuto controlla se il checksum calcolato equivale al valore del campo UDP checksum : NO - errore rilevato YES - nessun errore rievato. Ma potrebbero esserci errori comunque? Lo vedremo più in là. dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 13

Trasporto con connessione: TCP [RFC 793, 1122, 1323, 2018, 2581] socket door punto-a-punto: un mittente, un ricevente byte stream affidabile ed in ordine: no message boundaries buffer di invio e ricezione application writes data TCP send buffer segment application reads data TCP receive buffer full duplex: flusso dati bi-direzionale nella stessa connessione MSS: maximum segment size connection-oriented: handshaking (scambio di msg di controllo) inizializza stato di mittente/ricevente prima di scambio dati flow-controlled: socket door mittente non inonderà ricevente dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 14

TCP: struttura del segmento URG: dati urgenti (generalmente non usato) ACK: nro ACK valido PSH: push data now (generalmente non usato) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (come in UDP) 32 bits source port # dest port # head len sequence number acknowledgement number not used UAP R S F checksum rcvr window size ptr urgent data Options (variable length) application data (variable length) conteggio per byte di dati (non segmenti!) # byte che il ricevente è disposto ad accettare dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 15

TCP: numeri di sequenza e riscontri Numeri di sequenza: numero all interno del flusso del primo byte nel segmento Numeri di riscontro: num. del prossimo byte atteso dall altro lato ACK cumulativi Q: come gestire segmenti in disordine? Soluzione spetta all implementatore del TCP User types C host ACKs receipt of echoed C Host A Host B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 Semplice scenario telnet host ACKs receipt of C, echoes back C time dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 16

Trasferimento dati affidabile nel TCP: eventi del mittente Dati ricevuti dall applicazione: Crea un segmento con il numero di sequenza Il numero di sequenza è il numero del primo byte del segmento nel flusso di byte Avvia il timer, se non è già in funzione (pensate al timer come se fosse associato al più vecchio segmento non riscontrato) Intervallo di scadenza: TimeOutInterval Timeout: Ritrasmette il segmento che ha causato il timeout Riavvia il timer Ricezione di ACK: Se riscontra segmenti precedentemente non riscontrati aggiorna ciò che è stato completamente riscontrato avvia il timer se ci sono altri segmenti da completare dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 17

Trasferimento dati affidabile nel TCP: una modellazione FSA del mittente event: data received from application above create, send segment wait for event event: timer timeout for segment with seq # y retransmit segment event: ACK received, with ACK # y ACK processing dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 18

Trasferimento dati affidabile nel TCP: implementazione semplificata del mittente Assunzioni: Trasferimento dati ad una via nessun controllo di flusso e di congestione Commento: SendBase-1: ultimo byte cumulativamente riscontrato Esempio: SendBase-1 = 71; y = 73, quindi il destinatario vuole 73+ ; y > SendBase, allora vengono riscontrati tali nuovi dati dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 19

Trasferimento dati affidabile nel TCP: scenario n.1 dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 20

Trasferimento dati affidabile nel TCP: scenario n.2 dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 21

Trasferimento dati affidabile nel TCP: scenario n.3 dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 22

Trasferimento dati affidabile nel TCP: stima del timeout D: come impostare il valore di timeout? + lungo di RTT N.B. RTT varierà se troppo breve, timeout prematuro ritrasmissioni non necessarie se troppo lungo, reazione lenta alla perdita del segmento D: come stimare RTT? SampleRTT: tempo misurato dalla trasmissione del segmento fino alla ricezione di ACK ignora ritrasmissioni, segmenti cumulativamente riconosciuti SampleRTT varierà, vuole il RTT stimato + dolce usa diverse misure recenti, non solo attuale SampleRTT dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 23

Trasferimento dati affidabile nel TCP: stima del timeout (cont.) EstimatedRTT = (1-x)*EstimatedRTT + x*samplertt Media esponenziale mobile pesata influenza di un certo campione decresce esponenzialmente valore tipico di x: 0.1 Impostare il timeout EstimatedRTT + margine di sicurezza variazione larga in EstimatedRTT -> + largo margine di sicurezza Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x* SampleRTT-EstimatedRTT dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 24

Trasferimento dati affidabile nel TCP: generazione di ACK [RFC 1122, 2581] Evento nel destinatario Azione del ricevente TCP Arrivo ordinato di un segmento con numero di sequenza atteso. Tutti i dati fino al numero di sequenza atteso sono già stati riscontrati. Arrivo ordinato di un segmento con numero di sequenza atteso. Un altro segmento è in attesa di trasmissione dell ACK. Arrivo non ordinato di un segmento con numero di sequenza superiore a quello atteso. Viene rilevato un buco. ACK ritardato. Attende fino a 500 ms l arrivo del prossimo segmento. Se il segmento non arriva, invia un ACK. Invia immediatamente un singolo ACK cumulativo, riscontrando entrambi i segmenti ordinati. Invia immediatamente un ACK duplicato, indicando il numero di sequenza del prossimo byte atteso. Arrivo di un segmento che colma parzialmente o completamente il buco. Invia immediatamente un ACK, ammesso che il segmento cominci all estremità inferiore del buco. dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 25

Trasferimento dati affidabile nel TCP: ritrasmissione rapida Il periodo di timeout spesso è relativamente lungo: lungo ritardo prima di ritrasmettere il pacchetto perduto. Rileva i segmenti perduti tramite gli ACK duplicati. Il mittente spesso invia molti segmenti. Se un segmento viene smarrito, è probabile che ci saranno molti ACK duplicati. Se il mittente riceve 3 ACK per lo stesso dato, suppone che il segmento che segue il dato riscontrato è andato perduto: ritrasmissione rapida: rispedisce il segmento prima che scada il timer. dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 26

Trasferimento dati affidabile nel TCP: ritrasmissione rapida (cont.) evento: ACK ricevuto, con valore del campo ACK pari a y if (y > SendBase) { SendBase = y if (esistono attualmente segmenti non ancora riscontrati) avvia il timer } else { incrementa il numero di ACK duplicati ricevuti per y if (numero di ACK duplicati ricevuti per y = 3) { rispedisci il segmento con numero di sequenza y } un ACK duplicato per un segmento già riscontrato ritrasmissione rapida dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 27

Controllo di flusso nel TCP Controllo di flusso Il mittente non prevaricherà i buffer del ricevente trasmettendo troppo e troppo veloce RcvBuffer = grandezza del TCP Receive Buffer RcvWindow = ammontare di spazio libero in Buffer ricevente: informa esplicitamente il mittente di (dinamicamente mutevole) ammontare di spazio libero di buffer campo RcvWindow nel segmento TCP mittente: tiene l ammontare dei dati trasmessi e non ancora riscontrati inferiore del RcvWindow più recentemente ricevuto receiver buffering dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 28

Gestione della connessione TCP: apertura della connessione Ricorda: sender e receiver TCP stabiliscono una connessione prima di scambiarsi i segmenti inizializzano le variabili TCP: numeri di sequenza buffer, info su controllo di flusso (e.g. RcvWindow) client: iniziatore della connessione Socket clientsocket = new Socket("hostname","port number"); server: contattato dal client Socket connectionsocket = welcomesocket.accept(); Handshake a tre vie: Step 1: il client invia SYN al server, specificando il numero iniziale di sequenza Step 2: il server riceve SYN, replica con SYNACK riconosce SYN ricevuto alloca buffer specifica il proprio numero iniziale di sequenza Step 3: riscontro finale dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 29

Gestione della connessione TCP: apertura della connessione (cont.) dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 30

Gestione della connessione TCP: chiusura della connessione Step 1: il client chiude il proprio socket, invia FIN al server Step 2: il server riceve FIN, replica con ACK, chiude il proprio socket, invia FIN. Step 3: il client riceve FIN, replica con ACK, e si pone nel timed wait close client FIN ACK FIN server close Step 4: il server riceve ACK. Connection closed. Nota: con piccole modifiche può gestire FIN simultanei timed wait closed ACK dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 31

Gestione della connessione TCP: ciclo di vita del lato client dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 32

Gestione della connessione TCP: ciclo di vita del lato server dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 33

Sommario della prossima lezione: Lo strato di trasporto (2/2) Servizi e protocolli dello strato di trasporto Multiplazione e demultiplazione delle applicazioni Trasporto senza connessione: UDP Trasporto con connessione: TCP Il controllo della congestione nel TCP dott.ssa F. A. Lisi - Programmazione in Rete Livello di trasporto (1/2) 34