Corso di laurea in INFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Protocolli di trasporto Alberto...
-
Upload
enrico-serafini -
Category
Documents
-
view
220 -
download
0
Transcript of Corso di laurea in INFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Protocolli di trasporto Alberto...
Corso di laureaCorso di laureainin
INFORMATICAINFORMATICA
RETI di CALCOLATORI A.A. 2003/2004Protocolli di trasporto
Alberto [email protected]
Protocolli di trasporto 2Alberto Polzonetti
Reti di calcolatori
TCP & UDPTCP & UDP
Operano tra lo strato applicativo e quello IP Fungono da intermediari tra i programmi applicativi
e le operazioni di rete
APPLICATIVO SMTP FTP DNS ……….
TRASPORTO TCP UDP
RETEICMP
IP ARP RARPIGM
P
COMUNICAZIONE Tecnologia delle LAN e delle WAN sottostantiFISICO
Protocolli di trasporto 3Alberto Polzonetti
Reti di calcolatori
Compiti dello strato di trasportoCompiti 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 ?
I. Il protocollo è sempliceII. Adatto per messaggi
piccoli e poco importantiIII. Non dovendo l’UDP
stabilire prioritariamente una connessione con il destinatario, viene usato quando la consegna tempestiva è importante (SNMP)
Protocolli di trasporto 4Alberto Polzonetti
Reti di calcolatori
UDP: datagramma utenteUDP: datagramma utente
I pacchetti UDP sono chiamati datagramma utente
DATI(0 – 65507)
ChecksumDimensione (in ottetti)
Numero di porta del destinatario
Numero di porta del mittente
16 bit 16 bit
header
Protocolli di trasporto 5Alberto Polzonetti
Reti di calcolatori
Funzionamento del protocollo UDPFunzionamento del protocollo UDP
Servizi senza connessione1. Non esiste nessuna
relazione tra i datagrammi d’utente
2. I processi devono inviare all’UDP richieste di piccole dimensioni che possono essere inserite nel datagramma utente
Protocollo non affidabile1. Non essendoci controllo di
flusso il destinatario potrebbe trovarsi in situazione di congestione
2. 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 6Alberto Polzonetti
Reti di calcolatori
Dati UDPHeaderUDP
Dati IPHeader IP
Dati TRAMAHeader TRAMA
Dati dal processo
processo
Dati al processo
Dati UDPHeaderUDP
Dati IPHeader IP
Dati TRAMAHeader TRAMA
processo
UDP:incapsulamento ed estrazioneUDP:incapsulamento ed estrazione
Protocolli di trasporto 7Alberto Polzonetti
Reti di calcolatori
TCP: Transmission Control ProtocolTCP: 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 8Alberto Polzonetti
Reti di calcolatori
TCP: controllo di flussoTCP: 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 9Alberto Polzonetti
Reti di calcolatori
End to end flow controlEnd to end flow control
E’ composto da due algoritmi Sliding window mechanismSliding 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 EstimateRound Trip Estimate: è il meccanismo che controlla il round trip delay per sapere
quando procedere alla ritrasmissione
Protocolli di trasporto 10Alberto Polzonetti
Reti di calcolatori
Sliding Window Sliding Window
Meccanismo che permette la trasmissione di N dati (N-window) prima che giunga l’acknowledge del primo dato trasmesso
Protocolli di trasporto 11Alberto Polzonetti
Reti di calcolatori
Sliding window [dimensione variabile]Sliding window [dimensione variabile]
1. Deve essere stabilito un valore iniziale (che può essere diverso per Sender e Receiver); viene negoziato all’apertura della connessione
2. 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 12Alberto Polzonetti
Reti di calcolatori
Sliding window [dimensione e forme]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 13Alberto Polzonetti
Reti di calcolatori
Sliding window [simulazione]Sliding window [simulazione]
mittente destinatario
tempotempo
Numero di sequenzaNumero di riscontro Dimensione finestraBuffer
4K
1001 4000
Buffer 4K
5001 0
Buffer 4K
5001 1000
5001 1000
Protocolli di trasporto 14Alberto Polzonetti
Reti di calcolatori
Retrasmission timerRetrasmission timer
1. Tempo limite (soglia massima di tempo che deve intercorrere da quando un pacchetto è inviato a quando si riceve l’ACK)
2. 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
1. All’atto dell’invio di un segmento il mittente gli associa l’orologio2. L’orologio esegue un conto alla rovescia a partire dal tempo limite
fissato3. Quando l’orologio va a zero il mittente rispedisce quel segmento
3. Non essendo obbligatorio confermare tutti i segmenti, basta che un segmento successivo sia stato a sua volta confermato
4. 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 15Alberto Polzonetti
Reti di calcolatori
TCP: orologiTCP: orologi
OROLOGI1. Orologio di ritrasmissione (tempo limite)
Impostato di solito a 2 volte il tempo di andata e ritorno Aggiornato dinamicamente
2. 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
3. Orologio di permanenza in attività Usato per evitare connessioni con periodi troppo lunghi di inattività
(es. crash del client)
4. Orologio tempo di attesa Usato durante le operazioni di chiusura della trasmissione
Protocolli di trasporto 16Alberto Polzonetti
Reti di calcolatori
TCP: segmento rovinatoTCP: segmento rovinatomittente destinatario
tempotempo
1801
1201 200
1401 200
16011601 200
1601 200
OKOK
S
OK
rovinato
Protocolli di trasporto 17Alberto Polzonetti
Reti di calcolatori
TCP: segmento smarritoTCP: segmento smarritomittente destinatario
tempotempo
1801
1201 200
1401 200
16011601 200
1601 200
OKOK
S
OK
Protocolli di trasporto 18Alberto Polzonetti
Reti di calcolatori
TCP: riscontro smarritoTCP: riscontro smarritomittente destinatario
tempotempo
1801
1201 200
1401 200
16011601 200
OKOKOK
Protocolli di trasporto 19Alberto Polzonetti
Reti di calcolatori
Controllo di congestioneControllo 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 20Alberto Polzonetti
Reti di calcolatori
Finestra di congestioneFinestra 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 21Alberto Polzonetti
Reti di calcolatori
Algoritmo slow startAlgoritmo 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 22Alberto Polzonetti
Reti di calcolatori
TCP: segmentoTCP: segmento
Dimensione della finestra (16 bit)
flag(6 bit)
4 byte
Numero di sequenza (32 bit)
Indirizzo di porta del mittente16 bit
Indirizzo di porta del destinatario (16 bit)
Numero di riscontro (32 bit)
Checksum (16 bit)
Opzioni (sino a 40 byte)
Puntatore urgente (16 bit)
HLEN (4 bit)
(6bit)
URG ACK PSH RST SYN FIN
Richiesta di push
Richiesta di
azzeramento
connessione
Urgent Pointer Valido
Protocolli di trasporto 23Alberto Polzonetti
Reti di calcolatori
FINE
Protocolli di trasporto 24Alberto Polzonetti
Reti di calcolatori
Comunicazione processo - processoComunicazione processo - processo
IP si occupa della comunicazione tra dispositivi Il messaggio deve giungere al processo UDP e TCP
p pp p
internet
Dominio del protocollo IP
Dominio dei protocolli UDP e TCP
Protocolli di trasporto 25Alberto Polzonetti
Reti di calcolatori
Indirizzo di portaIndirizzo di porta
Day
time
client
www
internet
Day
time
server
www
Gli host vengono individuati per mezzo del loro indirizzo IPI processi vengono individuati per mezzo del loro indirizzo di porta(Punti di destinazione astratti gestiti dal sistema operativo locale)
193.14.6.23
193.12.8.21
13 25 80
I protocolli TCP/IP usano numeri di porta compresi tra 0 e 65535
Protocolli di trasporto 26Alberto Polzonetti
Reti di calcolatori
Indirizzi effimeri e ben conosciutiIndirizzi effimeri e ben conosciuti
0 – 1023 Indirizzi NOTI
49152 – 65535 Indirizzi effimeri
0 – 1023 Indirizzi NOTI
49152 – 65535 Indirizzi effimeri
Day
time
client
www
internet
Day
time
server
www
13 25 80
Indiriz
ziBen
co
nos
ciu
ti (not
i)
DATI ? ?
TCP/UDP
13 52000
Indiriz
zieffi
mer
i
52000
Protocolli di trasporto 27Alberto Polzonetti
Reti di calcolatori
Indirizzi socketIndirizzi socket
Se due client utilizzano allo stesso tempo lo stesso processo sul server ?
client
192.168.5.2
50000
client
10.235.14.76
50000
Server
172.16.2.1
25
Indirizzo Socket192.168.5.2 50000
192.168.5.2:50000 172.16.2.1 : 25
10.235.14.76:50000
172.16.2.1 : 25
Protocolli di trasporto 28Alberto Polzonetti
Reti di calcolatori
ConnessioniConnessioni
TCP/UDP identificano un “canale” di comunicazione con il nome di connessioneconnessione
Sono identificate dalla quadrupla: <IP client><IP server><Port client><Port Server> | 32 bit | 32 bit | 16 bit | 16 bit |
Questa soluzione permette1. A molti client diversi di accedere allo stesso servizio sullo
stesso server2. 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 29Alberto Polzonetti
Reti di calcolatori
Connessioni multipleConnessioni multiple
Protocolli di trasporto 30Alberto Polzonetti
Reti di calcolatori
Server iterativi e concorrentiServer 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 31Alberto Polzonetti
Reti di calcolatori
Connessioni tra i processi: TCPConnessioni tra i processi: TCP
1. Il processo invia i dati allo strato di trasporto2. TCP del mittente
1. Collega mittente a destinatario2. Suddivide i dati in unità trasportabili (segmenti)3. Numera i segmenti e li trasmette uno a uno
3. TCP del ricevente1. Attende fino alla completa ricezione2. Controlla e filtra i segmenti errati3. Consegna i dati al processo destinatario4. Chiude la connessione
Protocolli di trasporto 32Alberto Polzonetti
Reti di calcolatori
Apertura della connessione (funzionamento Apertura della connessione (funzionamento del protocollo)del protocollo)
Numero di sequenza
Numero di riscontro
ACK SYN FINmittente destinatario
tempotempo
11200
0 1 0
Nu
mero
di se
qu
en
za
inizia
le ra
nd
om
ico
48001201
1 1 0
12014801
1 0 0
Triplice stretta di mani
Protocolli di trasporto 33Alberto Polzonetti
Reti di calcolatori
TRIPLICE STRETTA DI MANITRIPLICE STRETTA DI MANI
Protocolli di trasporto 34Alberto Polzonetti
Reti di calcolatori
Chiusura della connessione della Chiusura della connessione della connessioneconnessione
Numero di sequenza
Numero di riscontro
ACK SYN FINmittente destinatario
tempotempo
12500
0 0 1
70002501
1 0 0
25017002
1 0 0
quadruplice stretta di mani
70012501
0 0 1
Protocolli di trasporto 35Alberto Polzonetti
Reti di calcolatori
Quadruplice stretta di maniQuadruplice stretta di mani
3-way handshake modificato3-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 36Alberto Polzonetti
Reti di calcolatori
Connessioni tra i processi: UDPConnessioni tra i processi: UDP1. UDP non invia messaggi di riscontro per notificare l’avvenuta
ricezione2. UDP fornisce un servizio di consegna non affidabile senza
connessione usando IP per trasportare i messaggi tra le macchine3. UDP introduce in aggiunta la capacità di distingure tra più
destinazioni all’interno di un computer remoto4. Esercita un controllo di errore limitandosi a distruggere i pacchetti in
cui individua l’errore
HEADER
DATI
CHECKSUM
Pseudo - header
Il segmento, pur non avendo subito danni, può finire
nell’host sbagliato
Protocolli di trasporto 37Alberto Polzonetti
Reti di calcolatori
Il CHECKSUM di UDPIl 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
1. Estrarre i campi dell’intestazione da IP2. Assemblarli nel formato della pseudo istruzione3. Ricalcolare la somma di controllo
Protocolli di trasporto 38Alberto Polzonetti
Reti di calcolatori
TCP: finistre scorrevoliTCP: finistre scorrevoli
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 6ACK 3
1 2 3 4 5 6 7 8 9 10 11 12
3 4 5 6 7 8 1 2 3 4 5 61 2
3 4 5 6 7 8ACK 9 1 2
12 segmenti
da trasmetter
e
Protocolli di trasporto 39Alberto Polzonetti
Reti di calcolatori
Considerazioni sulla “sliding window”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 insiemi1. Quelli a sinistra sono stati trasmessi con successo, ricevuti e la
ricezione confermata2. Quelli a destra non sono stati ancora inviati3. Quelli che sono nella finestra stanno per essere inoltrati
Protocolli di trasporto 40Alberto Polzonetti
Reti di calcolatori
Come garantire l’affidabilità ?Come garantire l’affidabilità ? Unica tecnica: Conferma di ricezione positiva con ritrasmissioneConferma di ricezione positiva con ritrasmissione :
Il ricevente comunica con la sorgente inviando un messaggio ACKACK (ACKnowledgementACKnowledgement)
Il mittente tiene una registrazione per ogni pacchetto che invia e prima di inoltrare il successivo attende una conferma
mittente destinatario
tempotempo
Ricezione ACK 2
invio pacchetto 1 Ricezione pacchetto
1
Invio ACK 1Ricezione ACK 1
Invio pacchetto 2
Ricezione pacchetto 2
Invio ACK 2
Protocolli di trasporto 41Alberto Polzonetti
Reti di calcolatori
TCP: sequence number - acknowledgementTCP: sequence number - acknowledgement
Dati suddivisi in unità trasportabili segmenti Sequence numberSequence number
esprime un offset in byte che indica la posizione del primo byte ricevuto o spedito
ACKACK esprime un offset in byte che indica la posizione del primo byte
attesoatteso 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)
1 Seg. 1 Seg. 2 Seg. 3 Seg. 4
Protocolli di trasporto 42Alberto Polzonetti
Reti di calcolatori
TCP:consegna garantitaTCP:consegna garantita
1 Seg. 1 Seg. 2 Seg. 3 Seg. 4
2 Seg. 1 Seg. 3 Seg. 4
3Ack 2
4 Seg. 2 Seg. 3 Seg. 4
6Ack 5
5 Seg. 2 Seg. 3 Seg. 4
Protocolli di trasporto 43Alberto Polzonetti
Reti di calcolatori
Timeout e ritrasmissioneTimeout e ritrasmissione
mittente destinatario
tempotempo
Ritrasmissione pacchetto 1
Avvio del timer
invio pacchetto 1
Avvio del timerIl pacchetto dovrebbe arrivare
ACK 1 non ricevuto
Timer scade
Ricezione pacchetto 1
Invio ACK 1
Ricezione ACK 1
Annullamento del timer