Introduzione (parte III)
Argomenti della lezione Ripasso degli argomenti del primo corso: il livello di trasporto, il meccanismo di controllo delle congestioni e le applicazioni
Il livello di trasporto Ruolo cruciale per la realizzazione ed il funzionamento delle applicazioni Supera alcuni dei limiti della sottorete di comunicazione Fornisce un interfaccia software per le applicazioni Utilizza indirizzi (porte) per il multiplexing delle connessioni
L interfaccia socket di Berkeley Processo client Processo server socket connect (indirizzo X) socket bind (indirizzo X) listen accept (connessione) send/receive close send/receive close
Indirizzi TCP Applicazioni processo client (telnet) processo server telnet server FTP Livello di trasporto Livelli 1, 2 e 3 23 TSAP (porte TCP) 21
Alcune well known ports FTP: 21 Telnet: 23 SMTP: 25 DNS: 53 WWW-HTTP: 80 POP3: 110 IMAP2: 143 SNMP: 161
Il livello di trasporto La sottorete di comunicazione può non essere affidabile I pacchetti IP sono datagram (senza connessione né riscontro) È quasi sempre necessario garantire la corretta ricezione di tutti i dati, nell ordine giusto
TCP: numeri di sequenza La numerazione non è orientata ai segmenti, ma al byte Il numero di sequenza di un segmento è sempre il numero di sequenza del primo byte contenuto nel campo dati Nei messaggi di riscontro viene sempre indicato il numero di sequenza del byte successivo che il ricevitore sta aspettando (rispetto all ultimo ricevuto in ordine)
TCP: numeri di sequenza TCP: numeri di sequenza host B host A invio di 10 byte + riscontro prec. (seq=48, ack=162) invio invio di di 3 3 byte byte + + riscontro riscontro (seq=162, (seq=162, ack=59) ack=59) tempo invio di 5 byte + riscontro (seq=59,ack=165) (seq=59,ack=165) tempo
TCP: numeri di sequenza Nei messaggi di riscontro del protocollo TCP viene sempre indicato il prossimo numero di sequenza che il ricevitore si aspetta Quindi,, se la sequenza inizia da 7200, per confermare l avvenuta ricezione dei primi 350 byte il ricevitore invia un acknowledge con numero di sequenza 7551 (cioè( 7200+350+1)
TCP: apertura della connessione (handshake a tre vie) 1. 2. 3. Il client spedisce un segmento SYN (flag SYN=1) notificando il suo numero iniziale di sequenza (client_isn) Il server risponde autorizzando la connessione: SYN=1, notifica il proprio numero iniziale di sequenza (server_isn) e conferma il segmento SYN del client (ack=client_isn+1) Il client conferma la ricezione del segmento SYN del server: SYN=1, seq=client_isn+1, ack=server_isn+1
TCP: apertura della connessione server client richiesta di connessione connessione autorizzazione autorizzazione alla alla conness. conness. (SYN=1, (SYN=1, (SYN=1, seq=client_isn) seq=client_isn) seq=server_isn, seq=server_isn, ack=client_isn) ack=client_isn) tempo ack=server_isn+1) ack=server_isn+1) ACK (SYN=0, seq=client_isn+1, seq=client_isn+1, tempo
TCP: chiusura della connessione (handshake a quattro vie) 1. 2. 3. 4. L host A spedisce all host B un segmento FIN (flag FIN=1) notificando l intenzione di chiudere la connessione L host B invia un riscontro e la connessione viene chiusa in un verso; B può continuare a inviare dati Quando l host B termina la trasmissione invia un segmento FIN L host A invia un messaggio di riscontro
TCP: chiusura della connessione TCP: chiusura della connessione server client (FIN=1, seq=x) notifica di chiusura ACK ACK (ack=x+1) (ack=x+1) notifica notifica di di chiusura chiusura (FIN=1, (FIN=1, seq=y) seq=y) tempo ACK (ack=y+1) tempo
Header TCP 32 bit source port destination port sequence number acknowledgment number hlen (unused) U R G A CK P S H R ST S YN F IN window size checksum urgent pointer options (0 o più parole da 32 bit)
Controllo della congestione del TCP Stesso meccanismo per: Controllo della congestione Controllo di flusso Gestione dei pacchetti danneggiati Protocollo sliding window
Protocolli sliding window Permettono la trasmissione di più segmenti in successione, anche prima di aver ricevuto i riscontri dei precedenti Ogni segmento spedito è numerato con un numero progressivo su n bit (da 0 a 2 n -1) La numerazione è legata ai buffer di memoria di trasmettitore e ricevitore
Protocolli sliding window Il trasmettitore mantiene una finestra di trasmissione Numeri di sequenza dei segmenti che può spedire Indica i segmenti che possono essere spediti prima di aver ricevuto i riscontri dei precedenti I segmenti appartenenti alla finestra vengono memorizzati per eventuali ritrasmissioni
Protocolli sliding window Il ricevitore mantiene una finestra di ricezione Numeri di sequenza dei segmenti che può ricevere Permette di accettare frame fuori ordine e memorizzarli nell attesa dei segmenti precedenti mancanti Segmenti appartenenti alla finestra vengono memorizzati per eventuali ritrasmissioni
Protocolli sliding window TRASMETTITORE 7 0 6 5 4 Il limite superiore viene fatto avanzare quando si spedisce un nuovo frame Il limite inferiore viene fatto avanzare quando si riceve il riscontro del frame il cui numero progressivo corrisponde all estremità inferiore 3 1 2
Protocolli sliding window RICEVITORE 7 0 6 1 5 4 3 2 La dimensione della finestra è fissa L intera finestra viene fatta avanzare quando si riceve un frame il cui numero progressivo corrisponde all estremità inferiore
TCP: segmenti ricevuti fuori ordine Il TCP non usa messaggi espliciti di NACK Se riceve un segmento fuori ordine (buco nella sequenza di dati) invia un duplicato dell ACK per l ultimo segmento in ordine ricevuto Il trasmettitore, quando riceve tre ACK duplicati, li interpreta come NACK per il segmento seguente ( ritrasmissione veloce, RFC 2581)
Ripetizione selettiva: trasmettitore riscontrato inviato, non riscontrato next_seq_num disponibile, non ancora spedito non disponibile dimensione finestra
Ripetizione selettiva: ricevitore fuori ordine ma già riscontrato atteso, non ancora ricevuto next_seq_num accettabile già accettato o non accettabile dimensione finestra
TCP: finestra di ricezione La dimensione della finestra di ricezione varia in funzione della dimensione del buffer (fissa) e dei dati ricevuti ma non ancora prelevati dal processo applicativo La dimensione della finestra di ricezione viene comunicata al trasmettitore nel campo window size dei segmenti inviati
TCP: finestra di trasmissione La dimensione della finestra di trasmissione viene modificata dinamicamente in funzione della capacità della rete e del ricevitore finestra di trasmissione = min (finestra di ricezione, finestra di congestione)
TCP: finestra di congestione Inizialmente a 1, man mano che arrivano riscontri cresce esponenzialmente fino ad un valore di soglia predefinito, poi linearmente Se un riscontro non arriva entro il timeout, il valore di soglia viene abbassato alla metà dell attuale valore della finestra di congestione e questa riparte da 1
TCP: finestra di congestione dimensione della finestra di congestione 11 10 9 8 7 6 5 4 3 2 1 soglia soglia 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 numero di trasmissioni
UDP: protocollo non connesso Aggiunge al pacchetto IP: Porte Limitato controllo di errori Vantaggi e svantaggi Nessun ritardo di setup Basso overhead Non controlla né corregge errori né perdite di pacchetti Nessun controllo di congestione
Header UDP 32 bit source port UDP length destination port UDP checksum
UDP: protocollo non connesso Le applicazioni multimediali richiedono Ritardi costanti e possibilmente contenuti (Spesso) elevata banda trasmissiva Non richiedono correzione di errori Problema: molte applicazioni multimediali UDP possono saturare la rete!
Modelli per l analisi e il dimensionamento delle reti
Commutazione di pacchetto accodamento in attesa di trasmissione A multiplexing statistico B I ritardi indicati determinano il ritardo totale al router A
Ritardi e perdite nelle reti a commutazione di pacchetto Il ritardo totale introdotto da un nodo è dovuto a: Ritardo di elaborazione Ritardo di coda Ritardo di trasmissione Ritardo di propagazione Questi ritardi determinano la probabilità di perdere pacchetti
Ritardi propagazione coda A B elaborazione trasmissione Questi ritardi determinano il ritardo totale al router A
Ritardo di elaborazione Tempo necessario ad esaminare il pacchetto e a determinarne l instradamento Comprende anche il controllo degli errori Il pacchetto viene poi inviato alla coda di trasmissione Ordine di grandezza: microsecondi (o inferiore)
Ritardo di coda Tempo di attesa prima della trasmissione Dipende da quanto pacchetti precedenti sono già in coda È zero se non ci sono pacchetti né in coda né in trasmissione Dipende dall intensità e dalla natura del traffico Ordine di grandezza: dai microsecondi ai millisecondi
Ritardo di trasmissione Tempo necessario a trasmettere tutti i bit del pacchetto Dipende dalla velocità R del link e dalla lunghezza L del pacchetto Esempio: L = 1500 byte = 12000 bit R = 100 Mb/s d tras = L/R = 120 ms
Ritardo di propagazione Tempo necessario al segnale per transitare lungo l intera lunghezza del link fisico Dipende dalla lunghezza l del link e dalla velocità di propagazione s sul mezzo (circa 2 10 8 m/s) Esempio: l = 1 km (LAN), s = 2 10 8 m/s d prop = l/s = 5 ms l = 72000 km (satellite), s = 3 10 8 m/s d prop = l/s = 0.24 s
Ritardo totale al nodo d nodo = d elab + d coda + d tras + d prop A seconda del tipo di collegamento alcuni valori possono essere trascurabili
Ritardo di coda e perdita dei pacchetti d coda non è costante: varia da pacchetto a pacchetto A causa della lunghezza finita dei buffer di memoria può determinare la perdita di pacchetti
Ritardo di coda e intensità di traffico a = velocità media di arrivo dei pacchetti (pacchetti/s) L = lunghezza dei pacchetti (in bit) Si accodano L a bit/s
Ritardo di coda e intensità di traffico R = velocità di trasmissione (b/s) L a/r = intensità di traffico se L a/r>1 la lunghezza della coda cresce senza limiti ed il ritardo tende ad infinito
Ritardo di coda e intensità di traffico Anche se L a/r<1 è possibile la perdita di pacchetti perché la distribuzione dei tempi di arrivo è casuale (possono arrivare a gruppi) ritardo media di coda L a/r 1
Perdita di pacchetti Se un pacchetto in arrivo trova la coda piena, viene scartato All aumentare dell intensità di traffico aumenta la probabilità di perdita di pacchetti I pacchetti persi possono essere recuperati mediante ritrasmissioni da parte del livello di trasporto o delle applicazioni
Ritardo end-to-end Effetto combinato dei ritardi in tutti i nodi attraversati In presenza rete omogenea con poco traffico (d coda = 0) e Q-1 router da attraversare: d end-to-end = Q (d elab + d tras + d prop ) compreso il ritardo dell host sorgente
Introduzione (parte III)