430 likes | 541 Views
Corso di laurea in INFORMATICA. RETI di CALCOLATORI A.A. 2003/2004 Protocolli di trasporto Alberto Polzonetti alberto.polzonetti@unicam.it. TCP & UDP. Operano tra lo strato applicativo e quello IP Fungono da intermediari tra i programmi applicativi e le operazioni di rete.
E N D
Corso di laureainINFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Protocolli di trasporto Alberto Polzonetti alberto.polzonetti@unicam.it
TCP & UDP • Operano tra lo strato applicativo e quello IP • Fungono da intermediari tra i programmi applicativi e le operazioni di rete Protocolli di trasporto
Creazione di comunicazione processo – processo (udp – tcp) Garantire l’affidabilità (TCP) Instaurare connessioni tra i processi : UDP – TCP Meccanismi per il controllo di errore tempo limite e ritrasmissione : TCP Meccanismi per il controllo di flusso finestre scorrevoli (sliding window) : TCP Perché un processo dovrebbe richiedere i servizi UDP ? Il protocollo è semplice Adatto per messaggi piccoli e poco importanti Non dovendo l’UDP stabilire prioritariamente una connessione con il destinatario, viene usato quando la consegna tempestiva è importante (SNMP) Compiti dello strato di trasporto Protocolli di trasporto
16 bit 16 bit Numero di porta del mittente Numero di porta del destinatario Dimensione (in ottetti) Checksum header DATI (0 – 65507) UDP: datagramma utente I pacchetti UDP sono chiamati datagramma utente Protocolli di trasporto
Servizi senza connessione Non esiste nessuna relazione tra i datagrammi d’utente I processi devono inviare all’UDP richieste di piccole dimensioni che possono essere inserite nel datagramma utente Protocollo non affidabile Non essendoci controllo di flusso il destinatario potrebbe trovarsi in situazione di congestione Nei casi di errori evidenziati dal checksum non sono previste notifiche Il processo deve sopperire a queste carenze Utile quando: si opera su rete affidabile oppure quando l’affidabilità non è importante l’applicazione mette tutti i dati in un singolo pacchetto non è importante che tutti i pacchetti arrivino a destinazione Principali applicazioni classiche che utilizzano UDP: NFS (Network File System) SNMP (Simple Network Management Protocol) Trasmissioni in Real-Time H.323 videoconferenza RTP Real Time Transfer Protocol Funzionamento del protocollo UDP Protocolli di trasporto
processo processo Dati dal processo Dati al processo Header TRAMA HeaderUDP Header IP Header IP HeaderUDP Header TRAMA Dati UDP Dati IP Dati TRAMA Dati UDP Dati IP Dati TRAMA UDP:incapsulamento ed estrazione Protocolli di trasporto
TCP: Transmission Control Protocol • Protocollo di trasporto • Byte oriented • Connesso • Utilizzato da applicativi che richiedono la trasmissione affidabile di applicazioni • telnet, ftp, http, smtp • SERVIZI • Servizio data stream (usato con i buffer) • Accetta dall’applicazione un intero flusso di dati • Crea i segmenti estraendo sequenze appropriate di dati • Riceve i segmenti, estrae i dati li riordina • Consegna i dati all’applicazione ricevente • Servizio Full – Duplex (trasferimento simultaneo in entrambe le direzioni) • Servizio affidabile • Controllo del flusso • Tecnica del riscontro per il controllo della ricezione dei pacchetti Protocolli di trasporto
TCP: controllo di flusso • Stabilisce la quantità di dati che il mittente può inviare prima della ricezione del riscontro • Caso massimo : il mittente aspetta un riscontro per ogni byte • Caso minimo : il mittente invia tutti i suoi dati riscontrandoli alla fine • End-to-end flow control • Migliora l’efficienza della trasmissione • Controlla il flusso dei dati in modo tale di non congestionare il ricevente • La dimensione della finestra è gestita dal destinatario in relazione allo spazio disponibile sul suo buffer di ricezione • Controlla che i pacchetti arrivino correttamente e nel momento in cui qualcuno si perde procede alla loro ritrasmissione Protocolli di trasporto
End to end flow control • E’ composto da due algoritmi • Sliding window mechanism: • è il meccanismo che gestisce il numero di pacchetti da trasmettere prima di ricevere una conferma di avvenuta ricezione • controlla inoltre che i pacchetti siano arrivati e in caso non siano arrivati procede alla ritrasmissione • Round Trip Estimate: • è il meccanismo che controlla il round trip delay per sapere quando procedere alla ritrasmissione Protocolli di trasporto
Sliding Window Meccanismo che permette la trasmissione di N dati (N-window) prima che giunga l’acknowledge del primo dato trasmesso Protocolli di trasporto
Sliding window [dimensione variabile] • Deve essere stabilito un valore iniziale (che può essere diverso per Sender e Receiver); • viene negoziato all’apertura della connessione • A connessione aperta il ricevitore comunica al trasmettitore, insieme all’acknowledge, il valore della window ammessa • Può ad esempio diminuirla se il buffer nel quale mette i dati TCP è pieno e la ricezione di altri segmenti provocherebbe la perdita di alcuni dati per overflow • L’incremento della window porta ad un incremento di prestazioni, visibile soprattutto nel caso di lunghe distanze (nel quale il round trip time è notevole) Protocolli di trasporto
Sliding window [dimensione e forme] • In TCP la dimensione della finestra è in byte, non in segmenti • Il campo “window” del pacchetto TCP indica quanti byte possono ancora essere trasmessi prima di un ACK • L’acknowledge è dato in forma “cumulativa” • L’arrivo di un ack relativo al segmento X indica implicitamente che tutti i segmenti precedenti ad X sono stati ricevuti • E’ un vantaggio se la connessione non ha perdite di pacchetti (si diminuisce il traffico di controllo tra il receiver e il sender) • Può essere uno svantaggio nel caso di perdita di pacchetti (può essere forzata la trasmissione di un segmento anche se questo era precedentemente arrivato correttamente) Protocolli di trasporto
1001 Numero di sequenza 5001 5001 5001 Numero di riscontro 1000 4000 Dimensione finestra 0 1000 mittente destinatario Buffer 4K tempo tempo Sliding window [simulazione] Buffer 4K Buffer 4K Protocolli di trasporto
Tempo limite (soglia massima di tempo che deve intercorrere da quando un pacchetto è inviato a quando si riceve l’ACK) Orologio di ritrasmissione (tempo limite) Impostato di solito a 2 volte il tempo di andata e ritorno Aggiornato dinamicamente è calcolato in base alle condizioni del traffico: connessioni con basso Round Trip Delay hanno timer bassi a run-time è inoltre in grado di adattarsi ad eventuali variazioni del round trip time medio generando un aumento del timer senza causare ritrasmissioni ad ogni ack ricevuto il valore del timer viene ricalcolato per tenere conto delle variazioni di round trip time All’atto dell’invio di un segmento il mittente gli associa l’orologio L’orologio esegue un conto alla rovescia a partire dal tempo limite fissato Quando l’orologio va a zero il mittente rispedisce quel segmento Non essendo obbligatorio confermare tutti i segmenti, basta che un segmento successivo sia stato a sua volta confermato Se si ritrasmette una quantità di dati pari a tutta la Window ammessa, è possibile dare origini a congestioni (Entrano in gioco i meccanismi di Congestion Control) Retrasmission timer Protocolli di trasporto
TCP: orologi • OROLOGI • Orologio di ritrasmissione (tempo limite) • Impostato di solito a 2 volte il tempo di andata e ritorno • Aggiornato dinamicamente • Orologio di persistenza • Viene attivato quando il destinatario imposta la finestra a zero • Viene disattivato quando il destinatario fa ripartire la trasmissione • Quando si raggiunge il tempo di persistenza il mittente manda un messaggio di sonda per avvisare il destinatario • Orologio di permanenza in attività • Usato per evitare connessioni con periodi troppo lunghi di inattività (es. crash del client) • Orologio tempo di attesa • Usato durante le operazioni di chiusura della trasmissione Protocolli di trasporto
1401 1601 1601 1201 1601 1801 200 200 200 200 mittente destinatario OK OK S OK tempo tempo TCP: segmento rovinato rovinato Protocolli di trasporto
1401 1201 1601 1601 1801 1601 200 200 200 200 mittente destinatario OK OK S OK tempo tempo TCP: segmento smarrito Protocolli di trasporto
1601 1201 1401 1601 1801 200 200 200 mittente destinatario OK OK OK tempo tempo TCP: riscontro smarrito Protocolli di trasporto
Controllo di congestione • In teoria, il controllo della congestione della communication subnet dovrebbe essere svolto dal livello Network. In pratica, il modo più efficiente per risolvere le situazioni di congestione consiste nel regolare la velocità del trasmittente, quindi a livello Transport • Il protocollo TCP integra il controllo della congestione nel meccanismo di controllo del flusso • Presupposto: gli algoritmi TCP utilizzati in Internet assumono che tutti i timeout dovuti a segmenti non ricevuti sono causati da congestione della communication subnet (e non da disturbi delle linee di trasmissione) Protocolli di trasporto
Finestra di congestione • Ogni trasmittente mantiene due diverse finestre: • la finestra di trasmissione per il controllo del flusso • la finestra di congestione per il controllo della congestione • Ad ogni istante, il trasmittente può inviare un numero di byte pari al minimo tra la dimensione della finestra di trasmissione e della finestra di congestione • La dimensione della finestra di congestione non supera mai la dimensione della finestra di trasmissione • Nel protocollo TCP la dimensione della finestra di congestione è regolata dall’algoritmo slow start • Malgrado il nome, l’algoritmo aumenta in modo esponenziale la dimensione della finestra di congestione fino a quando: • si verifica congestione (scade il timer di trasmissione di un segmento) • la finestra di congestione raggiunge una dimensione di soglia (threshold) • la finestra di congestione raggiunge la dimensione della finestra di trasmissione Protocolli di trasporto
Algoritmo slow start • Il valore di threshold iniziale è pari a 64 KB, e la dimensione iniziale della finestra di congestione è pari alla massima dimensione di un segmento (M) • ad ogni ricezione di un acknowledgement (senza timeout) per W byte: • se la finestra di congestione è al di sotto del threshold, aggiungi W alla sua dimensione (generalmente raddoppia la dimensione) • se la finestra di congestione è al di sopra del threshold, aggiungi M alla dimensione della finestra • ad ogni timeout di un segmento: • poni threshold a metà della dimensione della finestra di congestione • imposta la dimensione della finestra di congestione a M Protocolli di trasporto
4 byte Indirizzo di porta del mittente 16 bit Indirizzo di porta del destinatario (16 bit) RST URG SYN ACK FIN PSH Numero di sequenza (32 bit) Numero di riscontro (32 bit) HLEN (4 bit) (6bit) TCP: segmento Richiesta di azzeramento connessione Richiesta di push Urgent Pointer Valido flag (6 bit) Dimensione della finestra (16 bit) Checksum (16 bit) Puntatore urgente (16 bit) Opzioni (sino a 40 byte) Protocolli di trasporto
FINE Protocolli di trasporto
p p p p internet Dominio del protocollo IP Dominio dei protocolli UDP e TCP Comunicazione processo - processo • IP si occupa della comunicazione tra dispositivi • Il messaggio deve giungere al processo UDP e TCP Protocolli di trasporto
13 25 80 Day time Day time mail mail www www client server 193.12.8.21 193.14.6.23 internet Indirizzo di porta I protocolli TCP/IP usano numeri di porta compresi tra 0 e 65535 Gli host vengono individuati per mezzo del loro indirizzo IP I processi vengono individuati per mezzo del loro indirizzo di porta (Punti di destinazione astratti gestiti dal sistema operativo locale) Protocolli di trasporto
13 25 80 52000 Day time Day time mail mail www www Indirizzi effimeri client server DATI ? ? internet TCP/UDP Indirizzi effimeri e ben conosciuti • 0 – 1023 • Indirizzi NOTI • 49152 – 65535 • Indirizzi effimeri Indirizzi Ben conosciuti (noti) 13 52000 Protocolli di trasporto
mail 50000 mail 25 client 192.168.5.2:50000 172.16.2.1 : 25 Server 172.16.2.1 mail 192.168.5.2 50000 172.16.2.1 : 25 client 10.235.14.76 10.235.14.76:50000 Indirizzi socket • Se due client utilizzano allo stesso tempo lo stesso processo sul server ? Indirizzo Socket 192.168.5.2 50000 Protocolli di trasporto
Connessioni • TCP/UDP identificano un “canale” di comunicazione con il nome di connessione • Sono identificate dalla quadrupla: • <IP client><IP server><Port client><Port Server> • | 32 bit | 32 bit | 16 bit | 16 bit | • Questa soluzione permette • A molti client diversi di accedere allo stesso servizio sullo stesso server • Allo stesso client di attivare più sessioni dello stesso servizio • Viola il modello a layer • informazioni di livello 4 mischiate con informazioni di livello 3 Protocolli di trasporto
Connessioni multiple Protocolli di trasporto
Server iterativi e concorrenti • Modalità con le quali i server possono gestire le connessioni in ingresso • Iterativi: • esiste un solo thread server; • gestisce la connessione seguente solo quando quella precedente è terminata • Utilizzati spesso da servizi basati su UDP • Concorrenti: • esiste un “main” thread server, che si clona ogni volta che arriva una nuova connessione; • possono essere servite più connessioni contemporaneamente • Utilizzati spesso da servizi basati su TCP Protocolli di trasporto
Connessioni tra i processi: TCP • Il processo invia i dati allo strato di trasporto • TCP del mittente • Collega mittente a destinatario • Suddivide i dati in unità trasportabili (segmenti) • Numera i segmenti e li trasmette uno a uno • TCP del ricevente • Attende fino alla completa ricezione • Controlla e filtra i segmenti errati • Consegna i dati al processo destinatario • Chiude la connessione Protocolli di trasporto
Numero di sequenza Numero di riscontro mittente destinatario 0 1 1 0 1 1 SYN ACK 0 0 FIN 0 1 4800 1201 1200 4801 1201 tempo tempo Apertura della connessione (funzionamento del protocollo) Triplice stretta di mani Numero di sequenza iniziale randomico Protocolli di trasporto
TRIPLICE STRETTA DI MANI Protocolli di trasporto
mittente destinatario 0 0 ACK SYN 1 0 1 0 0 0 FIN 0 1 1 0 1 7000 2501 7001 2500 7002 2501 2501 Numero di sequenza Numero di riscontro tempo tempo Chiusura della connessione della connessione quadruplice stretta di mani Protocolli di trasporto
Quadruplice stretta di mani 3-way handshake modificato: l’host B può ancora voler trasmettere dei dati, anche se l’host A ha chiuso la connessione; quindi la chiusura della connessione (lato host B) può avvenire in un secondo tempo Protocolli di trasporto
HEADER DATI Connessioni tra i processi: UDP • UDP non invia messaggi di riscontro per notificare l’avvenuta ricezione • UDP fornisce un servizio di consegna non affidabile senza connessione usando IP per trasportare i messaggi tra le macchine • UDP introduce in aggiunta la capacità di distingure tra più destinazioni all’interno di un computer remoto • Esercita un controllo di errore limitandosi a distruggere i pacchetti in cui individua l’errore Il segmento, pur non avendo subito danni, può finire nell’host sbagliato Pseudo - header CHECKSUM Protocolli di trasporto
Il CHECKSUM di UDP • UDP fa checksum anche sui dati del datagramma • Dal momento che IP non calcola la sua checksum sui dati del datagramma, il cheksum di UDP è l’unico strumento di controllo che garantisce che i dati siano arrivati intatti • La pseudo intestazione consente un controllo più accurato e viene realizzata con : • Source ip address 4 ottetti • Destination ip address 4 ottetti • Codice di tipo protocollo 1 ottetto • Lunghezza del datagramma ip 2 ottetti • Zero 1 ottetto per rendere la pseudo intestazione multipla di 16 • La pseudo intestazione non viene trasmessa • A destinazione bisogna • Estrarre i campi dell’intestazione da IP • Assemblarli nel formato della pseudo istruzione • Ricalcolare la somma di controllo Protocolli di trasporto
4 6 1 4 3 7 1 1 4 10 7 10 4 5 2 8 11 2 11 2 5 8 5 7 3 3 12 9 6 6 6 8 3 5 9 12 1 3 4 2 3 5 4 6 7 5 8 6 ACK ACK 9 3 1 2 3 4 5 6 1 1 2 2 TCP: finistre scorrevoli 12 segmenti da trasmettere Il mittente crea una finestra di invio impostata sulla sua massima dimensione (apertura della connessione) Protocolli di trasporto
Considerazioni sulla “sliding window” • Un semplice protocollo con conferma di ricezione spreca un enorma quantità di larghezza di banda perché ritarda l’invio di un nuovo pacchetto finchè non riceve una conferma di ricezione del pacchetto precedente • Un protocollo a finestra di scorrimento mantiene la rete completamente satura di pacchetti ed ottiene una velocità di trasferimento maggiore rispetto ad un protocollo con conferma di ricezione • Quando il mittente fa scorrere la finestra oltrepassa tutti i pacchetti confermati • La finestra del ricevente divide la sequenza di pacchetti in tre insiemi • Quelli a sinistra sono stati trasmessi con successo, ricevuti e la ricezione confermata • Quelli a destra non sono stati ancora inviati • Quelli che sono nella finestra stanno per essere inoltrati Protocolli di trasporto
mittente destinatario invio pacchetto 1 Ricezione pacchetto 1 Invio ACK 1 Ricezione ACK 1 Invio pacchetto 2 Ricezione pacchetto 2 Invio ACK 2 tempo tempo Come garantire l’affidabilità ? • Unica tecnica: Conferma di ricezione positiva con ritrasmissione : • Il ricevente comunica con la sorgente inviando un messaggio ACK (ACKnowledgement) • Il mittente tiene una registrazione per ogni pacchetto che invia e prima di inoltrare il successivo attende una conferma Ricezione ACK 2 Protocolli di trasporto
1 Seg. 1 Seg. 3 Seg. 2 Seg. 4 TCP: sequence number - acknowledgement • Dati suddivisi in unità trasportabili segmenti • Sequence number • esprime un offset in byte che indica la posizione del primo byte ricevuto o spedito • ACK • esprime un offset in byte che indica la posizione del primo byte atteso • Nel protocollo per questi due numeri sono usati 32 bit (0 a 232 - 1 quasi 4 Gbyte) • Usare un offset offre il vantaggio di poter ricostruire nel buffer i segmenti arrivati anche in presenza di buchi • Non tutti i segmenti sono della medesima lunghezza (in telnet ad esempio dipende dall’utente) Protocolli di trasporto
5 2 4 Seg. 2 Seg. 1 Seg. 2 3 6 Ack 5 Ack 2 1 Seg. 3 Seg. 3 Seg. 1 Seg. 3 Seg. 3 Seg. 4 Seg. 4 Seg. 4 Seg. 2 Seg. 4 TCP:consegna garantita Protocolli di trasporto
mittente destinatario Ricezione pacchetto 1 Invio ACK 1 tempo tempo Timeout e ritrasmissione invio pacchetto 1 Avvio del timer Il pacchetto dovrebbe arrivare ACK 1 non ricevuto Timer scade Ritrasmissione pacchetto 1 Avvio del timer Ricezione ACK 1 Annullamento del timer Protocolli di trasporto