Programmazione su Reti

Slides:



Advertisements
Presentazioni simili
Stack TCP/IP - Socket Douglas E. Comer, "Internetworking con TCP/IP, principi, protocolli, architettura.", Gruppo Editoriale Jackson W. Richard. Stevens,
Advertisements

Il livello di trasporto
Italo Losero S tray B ytes strane cose succedono nelle reti....
Corso di laurea in INFORMATICA
Corso di laurea in INFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Messaggi di errore e di controllo Alberto Polzonetti
I protocolli TCP/UDP prof.: Alfio Lombardo.
1 System Call per Comunicazione tra Processi Pipe.
Modello ISO/OSI Un metodo di studio Vallì Rossella Carando 2006 SIS.
I modelli di riferimento OSI e TCP/IP
La rete in dettaglio: rete esterna (edge): applicazioni e host
3-1 User Datagram Protocol: UDP Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All.
2-1 Trasferimento di file: ftp Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All Rights.
Come programmare servizi di rete?
Esercizio 1 Si consideri un canale via satellite della capacità di 2 Mb/s. Considerando che il tempo di propagazione attraverso un satellite geostazionario.
Esercizio 1 Due collegamenti in cascata, AB e BC hanno una velocità rispettivamente di 100 Mb/s e 50 Mb/s e tempi di propagazione pari a 1 ms e 1.2 ms.
Reti di Calcolatori Domande di riepilogo Quarta Esercitazione
Programmazione su Reti
Trasporto affidabile (principi) Di fondamentale importanza negli strati applicativi, di trasporto e di collegamento! Le caratteristiche del canale determinano.
I protocolli TCP/UDP prof.: Alfio Lombardo.
Internet Control Message Protocol rfc. Error Reporting Testing di affidabilità Controllo di congestione Notifica di route-change Misurazione di performance.
Il livello di trasporto
TCP Transmission Control Protocol. Programmazione II: Programmazione su Reti -- Prof. G. Persiano 2 TCP TCP fornisce un servizio di connessione –orientato.
RETI DI CALCOLATORI Parte Settima
Reti di Calcolatori IL LIVELLO RETE.
Concetti introduttivi
Reti di Calcolatori IL LIVELLO RETE.
Reti di Calcolatori IL LIVELLO TRASPORTO Protocolli TCP e UDP.
ICMP - PING - TRACEROUTE
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Corso di Informatica per Giurisprudenza Lezione 7
1 Esercizio 1 Un router riceve da un collegamento A lungo 10 km a 100 Mb/s e instrada i pacchetti ricevuti, lunghi 1000 bit verso una linea duscita B a.
Realizzato da Roberto Savino 3-1 Il livello di trasporto r Dobbiamo assumere di avere a che fare con un canale di comunicazione molto particolare 1. Inaffidabile.
I protocolli TCP/UDP prof.: Alfio Lombardo.
TRASMISSIONE DATI CON MODEM
File system distribuito transazionale con replicazione
Modulo 2 - U.D. 3 - L.4 Ernesto Damiani - Sistemi di eleborazione dell'informazione.
Introduzione al controllo derrore. Introduzione Quando dei dati vengono scambiati tra due host, può accadere che il segnale venga alterato. Il controllo.
Calcolo timeout Modulo 2 - U.D. 5 - Lez. 6
Modulo n – U.D. n – Lez. n Nome Cognome – titolo corso.
Modulo 2 – U.D. 4 – Lez. 5 (parte I)
Corso di Reti di Calcolatori A.A Prof. D. Rosaci
Corso di Laurea in Conservazione e Restauro dei Beni Culturali
L’architettura a strati
Distributed System ( )7 TCP/IP four-layer model.
RETI DI CALCOLATORI Domande di riepilogo Prima Esercitazione.
Reti Stratificazione del Protocollo. 2 Andrea Asta I protocolli oSpecificano e Rendono Comprensibile la comunicazione oNon è necessario conoscere.
Greco Rodolfo 2002 Application Trasport Network Phisic HTTP IP UDPTCP DNS SNAP MAC ARP L’utente fa una richiesta di pagina.
Livello di trasporto Protocolli TCP e UDP.
1 Sistemi e Tecnologie della Comunicazione Lezione 22: transport layer: introduzione, funzionalita’
1 Sistemi e Tecnologie della Comunicazione Lezione 13: data link layer: protocolli go-back-n e selective reject; esempi: HDLC, PPP.
Configurazione IP4a-1 Configurazione IP Reti II Stefano Leonardi.
Consuntivo corso Reti diCalcolatori Reti di Calcolatori (F1I063) Docente Luigi Vetrano Durata Ore di lezione56 di cui, ore di.
Complementi sul controllo d’errore (parte I). Introduzione Lo schema di gestione d’errore Idle RQ garantisce che i pacchetti: – arrivino non corrotti.
Flusso e congestione TCP
Flusso TCP (parte II). Trasferimento di grandi quantità di dati (1) Spesso il mittente deve inviare grandi quantità di dati. Genera un numero elevato.
Fast Retransmit. Fast Retransmit (1) Altri indizi di perdite oltre il timeout: possiamo interpretare il verificarsi di sequenze di 4 ACK per lo stesso.
Sistemi di elaborazione dell’informazione Modulo 2 -Protocolli di rete TCP/IP Unità didattica 6 -User Datagram Protocol Ernesto Damiani Lezione 1 – UDP.
Controllo di congestione avanzato. Controllo della congestione TCP Prima del 1988, solo controllo del flusso! TCP Tahoe 1988 − TCP con Slow Start, Congestion.
Controllo di flusso TCP. Elementi base del flusso TCP (1) Comunicazione punto-punto Un mittente, un destinatario. Flusso di byte affidabile Flusso suddiviso.
1 Sistemi e Tecnologie della Comunicazione Lezione 23: transport layer: TCP e UDP.
Sistemi e Tecnologie della Comunicazione
1 Sistemi e Tecnologie della Comunicazione Lezione 12: data link layer: controllo di flusso, protocolli stop-and-wait e sliding window.
Software di Packet-Filtering e Port-Filtering su reti TCP/IP Come filtrare il traffico di rete in transito sulle interfacce presenti, frapponendosi tra.
Applicazione Presentazione Sessione Trasporto Rete Data link Fisico OSI Processo / Applicazione Trasporto Rete- Internet Interfaccia di.
INTERNET PROTOCOL SUITE FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni Docente: Prof. Pasquale Daponte Tutor:
Prof. Guido Russo 1 Il livello di trasporto prof. G. Russo
1 Il livello transport. Concetti fondamentali - Canale logico e canale fisico 2 Quando un segnale deve essere trasmesso, viene inviato su un Canale, cioè.
Prof. G.Mastronardi1 IL PROBLEMA DEL “DENIAL of SERVICE” Politecnico di Bari – Sicurezza dei Sistemi Informatici -
II PROVA Svolgimento tramite protocollo ISO/OSI. I LIVELLO : LIVELLO FISICO Scelta del mezzo fisico; tenere conto degli standard IEEE Procedura di codifica.
Raccogliere informazioni ALCUNE DOMANDE FONDAMENTALI È stato modificato qualche componente HW o SW? Il sintomo si presenta regolarmente o ad intermittenza?
Transcript della presentazione:

Programmazione su Reti Il livello trasporto di TCP/IP: TCP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di Salerno http://www.dia.unisa.it/~giuper Fig. 18.3 18.5 18.10 19.3 19.4 19.6 19.8 (fino a nagle)

TCP: Transmission Control Protocol Orientato allo stream: non avendo una dimensione di segmento fissa, trasmette alla destinazione la sequenza identica (stream) di byte che il mittente ha fornito a TCP nella macchina di provenienza. Stream non strutturato: In TCP non è necessario nessun tipo di formattazione specifica della stream, quindi è demandata agli applicativi la corretta estrazione dei dati dai segmenti ricevuti. Simile ad un file del sistema Unix Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

TCP: Caratteristiche Connessione di circuito virtuale: La connessione è vista dagli applicativi come un circuito fisico dedicato, quindi TCP è capace di fornire servizi del tipo Connection Oriented mentre il protocollo IP su cui appoggia, è in grado di fornire servizi Connection Less. Connessione Full Duplex: TCP consente il trasferimento simultaneo in entrambe le direzioni per ogni connessione. Questo permette la trasmissione parallela di segmenti di dati in un senso e di segmenti di acknowledgement nell'altro. TCP richiede più banda e più CPU di UDP Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Bufferizzazione TCP suddivide lo stream in segmenti indipendenti dal programma applicativo che li ha generati. Dispone di un buffer dove immagazzinare la sequenza di byte. Al verificarsi di certe condizioni alcuni dei dati sono trasmessi attraverso la rete. La bufferizzazione consente una riduzione del traffico sulla rete "ottimizzando" in qualche modo il numero di segmenti da trasmettere. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Header TCP 4 10 16 19 24 32 Source Port Destination Port 4 10 16 19 24 32 Source Port Destination Port Sequence Number Acknowledgement Number TCP header length U R G A C K E O M R S T S Y N F I N Reserved Window Checksum Urgent Pointer Options Padding Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Header di TCP Flag: Per identificare il tipo di informazione contenuta nel segmento vengono impiegati i 6 bit di codice: URG (11): Il campo puntatore urgente è valido ACK (12): Il campo riscontro è valido PSH (13): Questo segmento richiede una “spinta” RST (14): Effettua il reset della connessione SYN (15): Sincronizza i numeri di sequenza FIN (16): Il trasmettitore ha raggiunto la fine della sua stream di byte Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Campi dell’header TCP HLEN: Porta (provenienza/destinazione): Contiene un numero intero che indica la lunghezza dell'intestazione TCP del datagramma. Questa informazione è necessaria perché il campo opzioni è di lunghezza variabile. Porta (provenienza/destinazione): Contengono i numeri di porta di protocollo TCP che identificano gli applicativi alle estremità della connessione. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Campi dell’header TCP Numero sequenziale: Numero di riscontro: questo campo identifica, nello stream di byte del trasmettitore, la posizione dei dati nel segmento. Questo valore è riferito alla stream che fluisce nella medesima direzione del segmento, mentre il Numero di Riscontro si riferisce alla stream che fluisce nella direzione opposta. Numero di riscontro: Contiene il numero sequenziale del byte successivo a quello correttamente ricevuto dalla destinazione. Tale campo è valido solo nei segmenti di riscontro, o nei segmenti utilizzanti la tecnica trasmissiva Piggy-backing, e fa riferimento allo stream di dati che fluisce nella direzione opposta a tale segmento. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Campi dell’header di TCP Nel datagramma di riscontro la destinazione comunica quale byte dello stream si aspetta di ricevere successivamente: I riscontri specificano sempre il numero sequenziale del primo byte non ancora ricevuto. Esempio: in uno stream di 1000 byte segmentato in blocchi di 100 byte, il primo riscontro conterrà il numero sequenziale 101. Questo metodo di riscontro cumulativo si ha il vantaggio che la perdita di un riscontro non blocca la trasmissione se confermato dal riscontro successivo. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Campi dell’header di TCP Nel datagramma di riscontro la destinazione comunica quale byte dello stream si aspetta di ricevere successivamente: I riscontri specificano sempre il numero sequenziale del primo byte non ancora ricevuto. Esempio: in uno stream di 1000 byte segmentato in blocchi di 100 byte, il primo riscontro conterrà il numero sequenziale 101. Questo metodo di riscontro cumulativo si ha il vantaggio che la perdita di un riscontro non blocca la trasmissione se confermato dal riscontro successivo. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Campi dell’header TCP Finestra: Puntatore urgente: Numero intero senza segno di 16 bit che specifica la dimensione del buffer che il TCP ha a disposizione per immagazzinare dati in arrivo. È utilizzato per la gestione dinamica della dimensione della finestra scorrevole. Puntatore urgente: Il TCP permette la trasmissione fuori banda di dati informativi ad alta priorità. Questi devono essere trasmessi il prima possibile, indipendentemente dalla loro posizione nella stream. Questo campo, se valido, conterrà un puntatore alla posizione nella stream, dei dati urgenti. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Campi dell’header TCP Checksum: Campo di 16 bit contenente un valore intero utilizzato dal TCP della macchina host di destinazione, per verificare l'integrità dei dati e la correttezza dell'intestazione. Questa informazione è di essenziale importanza perché il protocollo IP non prevede nessun controllo di errore sulla parte dati del frame. Per il calcolo del valore checksum il TCP ha bisogno di aggiungere una pseudointestazione al datagramma, per effettuare così un controllo anche sugli indirizzi IP di destinazione e provenienza. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

TCP: Protocollo di Connessione La parte richiedente (client) invia un segmento SYN e specifica la porta del server e il proprio initial sequence number (ISN). RFC793 specifica che ISN viene incrementato ogni 4 ms Il server risponde con un segmento contenente il proprio SYN e dà l’ack (riscontro) del SYN del client ponendo l’ack al valore dell’ ISN del client + 1 Il cliente dà riscontro al SYN del server spedendo un ACK per l’ISN del server + 1. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

TCP: Opzione MSS Il segmento di SYN contiene l’opzione Maximum Segment Size ogni parte annuncia la taglia del più grande segmento che si aspetta di ricevere una grossa MSS aumenta il throughput ma corre il rischio di frammentazione a livello IP. per connessioni locali MSS è sempre minore della MTU dell’interfaccia di uscita meno la lunghezza dell’header di TCP (1460 per Ethernet) per connessioni non locali MSS normalmente è posto uguale a 536 Figura 18.3, 18.5 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Opzione Reset Segmento con bit Reset posto 1 è inviato in situazioni di errore richiesta di connessione a porta con nessuna applicazione legata (bind con i socket di Berkeley) il segmento di reset porta l’ack del ISN UDP usa ICMP port unreachable abortive release dati in buffer sono scartati La controparte riceve il segmento di reset e non deve farne l’ack Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Esempio di half-close E’ possibile per una delle due parti di una connessione TCP chiudere il proprio canale di output e ricevere dati sull’altro canale. La API dei socket di Berkeley prevede la system call shutdown Esempio: rsh remote_host sort < datafile Fig. 18.10 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Esempio di half-close rsh bsdi sort < datafile rsh apre una connessione con il processo che esegue il sort sull’host bsdi. datafile è copiato sulla connesione. l’output della connessione è dato in output. sort non può iniziare fino a quando non sono arrivati tutti i dati. rsh effettua una half-close per segnalare la fine dei dati. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

TCP: Calcolo del checksum di TCP Lo pseudoheader viene creato e posto in testa al segmento TCP e sono aggiunti byte necessari per raggiungere un multiplo di 16 bit. Successivamente viene calcolata un checksum su tutto il messaggio così formato. Lo pseudoheader viene eliminato prima del passaggio a TCP. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Diagramma di transizione degli stati di TCP Figura tratta da: TCP/IP illustrated vol. 1 di Richard W. Stevens Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Stato TIME_WAIT MSL (maximum segment life) è la durata massima della vita di un segmento RFC793 raccomanda MSL = 2 minuti Quando TCP effettua una chiusura attiva, la connessione resta nello stato TIME_WAUT per una durata doppia all’MSL. Ciò per permettere di rispedire l’ack finale da inviare all’altra parte. Se ciò accade l’altra parte va in timeout e re-invia il FIN. Nell’API Berkeley Socket, una porta locale non può essere usata se la connessione è in TIME_WAIT opzione SO_REUSEADDR Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Opzioni TCP Campo opzioni in header TCP Opzione MSS 1 byte kind (MSS ha kind=2) 1 byte len 4 2 byte MSS Opzione End 1 byte kind=0 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

TCP: Protocollo di terminazione Ogni connessione TCP è full-duplex i dati viaggiano nelle due direzioni indipendentemente e ciascuna deve essere chiusa indipendentemente Per chiudere una direzione di flusso viene spedito un segmento con bit di FIN ciò indica solo che non arriveranno più dati lungo questa direzione Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Riscontro e ritrasmissione Consiste nella ritrasmissione di un segmento se non è giunta conferma entro un tempo massimo (time-out). Time-Out: Al momento della trasmissione di ogni segmento, il TCP attiva una timer. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Time Out Time-Out: tempo massimo entro cui un segmento trasmesso deve avere riscontro. Se questo non avviene, si procede alla ritrasmissione. TCP, per stimare efficientemente il TIME-OUT di ogni connessione, utilizza l'algoritmo di Karn. È un algoritmo adattivo, ovvero al variare delle prestazioni della connessione corregge opportunamente il valore stimato in precedenza. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Retransmission TimeOut value TCP misura il tempo di andata e ritorno M per ogni pacchetto Calcola stima di andata e ritorno (Round Trip Time) R=a R + (1-a)M valore di a raccomandato .9 Il valore di timeout è posto RTO=bR valore di b raccomandato 2 Non riesce a gestire le fluttuazioni di velocità della connessione Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Algoritmo di Jacobson Per ogni segmento calcoliamo una stima del RTT otteniamo una misurazione del RTT RTO tiene conto di media e varianza Err = M - A (A stima del RTT -- M valore misurato) A = A + g Err (g=.125) D = D + h(|Err| - D) (h=.25) RTO = A + 4D Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Algoritmo di Karn Problema dell’ambiguità di ritrasmissione Le stime di RTT non sono aggiornate quando arriva l’ACK di dati ritrasmessi. Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Flusso di dati interattivi in TCP Esempi tipici di applicazioni interattive: RLOGIN, TELNET Ogni carattere viene inviato dal client al server un byte per volta. Inoltre ogni carattere viene normalmente re-inviato dal server al client per la visualizzazione. Quindi un byte genera 4 segmenti: byte di dati ack del byte echo del byte per visulalizzazione ack dell’echo Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Riscontro ritardato (delayed ack) Normalmente TCP non invia ACK subito dopo aver ricevuto un segmento. L’ack viene ritardato nella speranza che vi siano dei dati che viaggiano nella stessa direzione. La maggioranza delle implementazioni utilizza un ritardo di 200 ms. Fig. 19.3 200ms relativamente al kernel solo da un lato svr4 ha sempre dati pronti da inviare Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Algoritmo di Nagle In connessione interattive possiamo avere dei segmenti che contengono un solo byte di dati. L’overhead che paghiamo è di 40 byte (20 per IP + 20 per TCP) Algoritmo di Nagle una connessione TCP non può avere più di un segmento piccolo di cui non si è ricevuto l’ACK. Segmento piccolo di taglia minore di MSS Fig. 19.4 segmento 12 è un delayed ack non porta dati (il server di rlogin era busy) segmento 14-15 sembrano in contraddizione con nagle ma sono in risposta ad ack differenti: 14 in risposta a 12 e 15 in risposta a 13 ultimi due segmenti 17 e 18: 3 byte da c->s 1 byte da s->c ma ack di 3 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.

Algoritmo di Nagle: Pro e Contro Self-clocking su una connessione veloce vengono inviati molti tinygram una connessione lenta invia pochi segmenti ciascuno con più byte di dati. Problemi con applicazioni molto interattive Esempio: function keys Disabilitato con opzione TCP_NODELAY Fig. 19.6 escape è echoed come due byte Fig. 19.8 un segmento si è perso spiegare come ce ne accorgiamo Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.