Corso di laurea in INFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Protocolli di trasporto Alberto Polzonetti alberto.polzonetti@unicam.it
Tecnologia delle LAN e delle WAN sottostanti Protocolli di trasporto TCP & UDP APPLICATIVO SMTP FTP DNS ………. TRASPORTO TCP UDP RETE ICMP IP ARP RARP IGMP COMUNICAZIONE Tecnologia delle LAN e delle WAN sottostanti FISICO Operano tra lo strato applicativo e quello IP Fungono da intermediari tra i programmi applicativi e le operazioni di rete Protocolli di trasporto
Compiti dello strato 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) Protocolli di trasporto
UDP: datagramma utente I pacchetti UDP sono chiamati datagramma utente DATI (0 – 65507) Checksum Dimensione (in ottetti) Numero di porta del destinatario Numero di porta del mittente 16 bit header Protocolli di trasporto
Funzionamento del protocollo UDP 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 Protocolli di trasporto
UDP:incapsulamento ed estrazione Dati dal processo processo Dati al processo Dati UDP HeaderUDP Dati IP Header IP Dati TRAMA Header TRAMA processo Dati UDP HeaderUDP Dati IP Header IP Dati TRAMA Header TRAMA 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
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
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
Sliding window [simulazione] Buffer 4K Buffer 4K Buffer 4K Numero di sequenza Numero di riscontro Dimensione finestra mittente destinatario tempo 1001 4000 5001 5001 1000 5001 1000 Protocolli di trasporto
Protocolli di trasporto Retrasmission timer 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) Protocolli di trasporto
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
TCP: segmento rovinato mittente destinatario tempo 1201 200 1401 200 1601 200 S OK rovinato 1601 200 OK 1801 Protocolli di trasporto
TCP: segmento smarrito mittente destinatario tempo 1201 200 1401 200 1601 200 S OK 1601 200 OK 1801 Protocolli di trasporto
TCP: riscontro smarrito mittente destinatario tempo 1201 200 1401 200 1601 200 OK 1801 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
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
Indirizzo di porta del mittente Indirizzo di porta del destinatario TCP: segmento URG ACK PSH RST SYN FIN Richiesta di azzeramento connessione 4 byte Numero di sequenza (32 bit) Indirizzo di porta del mittente 16 bit Indirizzo di porta del destinatario (16 bit) Numero di riscontro Richiesta di push Urgent Pointer Valido HLEN (4 bit) (6bit) flag (6 bit) Dimensione della finestra (16 bit) Checksum (16 bit) Puntatore urgente (16 bit) Opzioni (sino a 40 byte) Protocolli di trasporto
Protocolli di trasporto FINE Protocolli di trasporto
Comunicazione processo - processo IP si occupa della comunicazione tra dispositivi Il messaggio deve giungere al processo UDP e TCP p internet Dominio dei protocolli UDP e TCP Dominio del protocollo IP Protocolli di trasporto
Protocolli di trasporto Indirizzo di porta 13 25 80 Day time mail client www internet server 193.14.6.23 193.12.8.21 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
Indirizzi effimeri e ben conosciuti Day time mail client www internet server 13 25 80 Indirizzi Ben conosciuti (noti) Indirizzi effimeri 52000 0 – 1023 Indirizzi NOTI 49152 – 65535 Indirizzi effimeri DATI ? TCP/UDP 13 52000 Protocolli di trasporto
Protocolli di trasporto Indirizzi socket Se due client utilizzano allo stesso tempo lo stesso processo sul server ? 192.168.5.2 50000 Indirizzo Socket mail client 192.168.5.2 50000 10.235.14.76 Server 172.16.2.1 25 192.168.5.2:50000 172.16.2.1 : 25 10.235.14.76:50000 172.16.2.1 : 25 Protocolli di trasporto
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
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
Apertura della connessione (funzionamento del protocollo) Numero di sequenza Numero di riscontro ACK SYN FIN Triplice stretta di mani mittente destinatario tempo Numero di sequenza iniziale randomico 1 1200 4800 1201 1 1201 4801 1 Protocolli di trasporto
TRIPLICE STRETTA DI MANI Protocolli di trasporto
Chiusura della connessione della connessione Numero di sequenza Numero di riscontro ACK SYN FIN quadruplice stretta di mani mittente destinatario tempo 1 2500 7000 2501 1 7001 2501 1 2501 7002 1 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
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 HEADER DATI CHECKSUM Protocolli di trasporto
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
TCP: finistre scorrevoli 12 segmenti da trasmettere 1 2 3 4 5 6 7 8 9 10 11 12 Il mittente crea una finestra di invio impostata sulla sua massima dimensione (apertura della connessione) 1 2 3 4 5 6 1 2 3 4 5 6 ACK 1 2 3 4 5 6 7 8 9 10 11 12 3 4 5 6 7 8 1 2 3 4 5 6 7 8 ACK 9 1 2 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
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 mittente destinatario tempo invio pacchetto 1 Ricezione pacchetto 1 Invio ACK 1 Ricezione ACK 1 Invio pacchetto 2 Ricezione pacchetto 2 Invio ACK 2 Ricezione ACK 2 Protocolli di trasporto
TCP: sequence number - acknowledgement 1 Seg. 1 Seg. 2 Seg. 3 Seg. 4 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
TCP:consegna garantita 5 Seg. 2 Seg. 3 Seg. 4 2 Seg. 1 Seg. 3 Seg. 4 6 Ack 5 3 Ack 2 1 Seg. 1 Seg. 2 Seg. 3 Seg. 4 4 Seg. 2 Seg. 3 Seg. 4 Protocolli di trasporto
Timeout e ritrasmissione mittente destinatario tempo invio pacchetto 1 Avvio del timer Il pacchetto dovrebbe arrivare ACK 1 non ricevuto Timer scade Ritrasmissione pacchetto 1 Avvio del timer Ricezione pacchetto 1 Invio ACK 1 Ricezione ACK 1 Annullamento del timer Protocolli di trasporto