Reti di Calcolatori IL LIVELLO TRASPORTO Protocolli TCP e UDP.

Slides:



Advertisements
Presentazioni simili
Prof. Carla Fanchin – L.S. Tron
Advertisements

Stack TCP/IP - Socket Douglas E. Comer, "Internetworking con TCP/IP, principi, protocolli, architettura.", Gruppo Editoriale Jackson W. Richard. Stevens,
Il livello di trasporto
Socket Java Alberto Ferrari.
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
Programmazione con socket
I protocolli TCP/UDP prof.: Alfio Lombardo.
Modello ISO/OSI Un metodo di studio Vallì Rossella Carando 2006 SIS.
Programmazione socket
4-1 Il Livello di Rete Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All Rights Reserved)
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.
Come programmare servizi di rete?
Programmazione su Reti
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.
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 MODELLI ISO/OSI e TCP/IP.
ICMP - PING - TRACEROUTE
Reti di Calcolatori1 Il modello Client/Server La comunicazione Se sintetizziamo uno scenario completo possiamo identificare diverse interfacce.
Corso di Informatica per Giurisprudenza Lezione 7
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.
Modulo 2 – U.D. 1 – Lez. 2 Ernesto Damiani – Sistemi di elaborazione dell'informazione.
I protocolli TCP/UDP prof.: Alfio Lombardo.
Il modello di riferimento OSI
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.
Efficienza e controllo derrore. Introduzione Come abbiamo visto il controllo derrore, necessario per ottenere un trasporto affidabile, si basa su: somme.
Modulo 2 – U.D. 4 – Lez. 5 (parte I)
TCP/IP.
Corso di Reti di Calcolatori A.A Prof. D. Rosaci
L’architettura a strati
Distributed System ( )7 TCP/IP four-layer model.
FTP File Transfer Protocol
A cura di Stefano Scarpellini
RETI DI CALCOLATORI Domande di riepilogo Prima Esercitazione.
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: Introduction1 Stratificazione protocollare (Protocol “Layering”) Le reti sono complesse! r Molti elementi: m host m router m link fisici dalle caratteristiche.
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.
Sistemi di elaborazione dell’informazione Modulo 2 -Protocolli di rete TCP/IP Unità didattica 6 -User Datagram Protocol Ernesto Damiani Lezione 1 – UDP.
Servizi Internet Claudia Raibulet
Controllo di flusso TCP. Elementi base del flusso TCP (1) Comunicazione punto-punto Un mittente, un destinatario. Flusso di byte affidabile Flusso suddiviso.
Sistemi di elaborazione dell’informazione Modulo 2 -Protocolli di rete TCP/IP Unità didattica 6 -User Datagram Protocol Ernesto Damiani Lezione 2 – UDP.
Strato di accesso alla rete (network access layer); comprende le funzioni che nel modello OSI sono comprese negli strati fisico, di collegamento e parte.
1 Sistemi e Tecnologie della Comunicazione Lezione 23: transport layer: TCP e UDP.
Sistemi e Tecnologie della Comunicazione
Sistemi e Tecnologie della Comunicazione Lezione 2: architettura delle reti e modello OSI.
1 Sistemi e Tecnologie della Comunicazione Lezione 12: data link layer: controllo di flusso, protocolli stop-and-wait e sliding window.
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è.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
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?
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Slide #: 1/232 Internet - Architettura, principali protocolli e linee evolutive Nicola Blefari Melazzi Copyright © 2005 – The McGraw-Hill Companies srl.
Il Livello di Trasporto
Transcript della presentazione:

Reti di Calcolatori IL LIVELLO TRASPORTO Protocolli TCP e UDP

Il Livello Trasporto Servizi e primitive Indirizzamento Protocolli di Trasporto Livello Trasporto in Internet UDP TCP

Livello TRASPORTO Funzionalità Controllo di flusso Host-to-Network Internet (IP) Controllo di flusso Controllo delle connessioni Controllo degli errori Ordinamento Multiplexing sulle applicazioni Controllo della congestione Trasporto

Servizi di Trasporto Servizi efficienti ed affidabili per le applicazioni di rete. Il software o l’hardware che fornisce i servizi di trasporto è detto Entità di Trasporto. Host 1 Host 2 Livello Applicazione o Sessione Livello Trasporto Livello Rete SAP di Trasporto SAP di Trasporto Interfaccia Applicazione/Trasporto TPDU Entità di Trasporto Entità di Trasporto Interfaccia Trasporto/Rete SAP di Rete SAP di Rete

Protocolli di Trasporto Sono protocolli end-to-end. Gestiscono le connessioni (apertura e chiusura), l’indirizzamento, il controllo di flusso, il multiplexing, l’ordinamento, il controllo degli errori per un collegamento attraverso una rete. La situazione da gestire è più complessa del caso del livello Data Link, perché c’è la rete in mezzo! Host Router Router Sottorete Canale fisico di comunicazione Livello Data Link Livello Trasporto

TPDU La TPDU (Transport Protocol Data Unit), spesso denominata anche segmento, è l’unità di dati scambiata dal protocollo di trasporto. CONTENUTO DEL TPDU Header TPDU Header Pacchetto Header Frame

Indirizzamento e Connessioni Un indirizzo di trasporto identifica l’host e la specifica connessione sull’host: Transport Service Access Point (TSAP). HOST 1 HOST 2 HOST 3 TSAP processo server Trasporto Rete Data Link Fisico rete 1 rete 2 applicazione Indirizzi Rete Il process server resta in attesa di richieste di connessione, e crea i server che le gestiscono singolarmente.

Protocolli Trasporto di Internet: TCP e UDP Protocolli di trasporto definiti su rete Internet (su IP) Trasmission Control Protocol (TCP) definisce un protocollo di trasporto orientato alla connessione progettato per fornire un flusso affidabile end-to-end su una internet inaffidabile (best effort). User Data Protocol (UDP) definisce un protocollo senza connessione permette di inviare datagram IP senza stabilire una connessione si usa per connessioni real-time o per comunicazioni che prevedono solo una richiesta ed una risposta.

TCP/IP TCP è un protocollo end-to-end (come tutti i protocolli di trasporto) L’entità TCP su un computer usa IP per comunicare con l’entità TCP di un altro computer.

Caratteristiche di TCP Orientamento alla connessione Comunicazione punto-punto (no multicast) Totale affidabilità (senza perdite, duplicazioni, inversioni) Comunicazione full-duplex Trasmissione di flussi di byte (informazioni non strutturate) Instaurazione affidabile della connessione (sulla rete potrebbero viaggiare duplicati di richieste di connessioni) Rimozione non traumatica della connessione (consegna di tutti i dati inviati prima della chiusura) Controllo di flusso (non sommergere il ricevitore!) Controllo della congestione

Funzionamento di TCP Trasmissione Ricezione Riceve un flusso di dati dall’applicazione. Li organizza in unità lunghe al massimo 64KB. Spedisce segmenti di dati incapsulandoli in datagrammi IP. Ricezione Estrae i segmenti dai datagrammi IP. Ricostruisce il flusso di byte originale nella sequenza corretta. E’ necessaria la ritrasmissione dei dati non ricevuti ed il riordinamento dei dati pervenuti in ordine errato.

Le Porte: i TSAP del TCP Per connettersi ad un servizio specifico su un server si deve conoscere il numero di porta su cui il processo server accetta le connessioni. Le porte da 0 a 1023 sono dette porte ben note (well-known ports) e corrispondono a servizi standard. Ad esempio: la porta 21 di TCP corrisponde al servizio FTP (File Transfer Protocol). la porta 80 di TCP corrisponde al servizio HTTP (Hypertext Transfer Protocol) utilizzato per il Web per la lista completa http://www.iana.org/assignments/port-numbers un servizio “standard” può anche essere attivato su una porta diversa (es. HTTPS sulla porta 443). In Unix la lista dei servizi e delle porte è nel file /etc/services.

Le Porte del Client Il client definisce la porta di ogni sua connessione utilizzando numeri in genere elevati e scelti in modo da essere unici sull’host. Ad esempio nella richiesta di connessione ad un server HTTP si può avere: client port 18426 server port 80 Le connessioni TCP sono punto-a-punto e full duplex.

Il Segmento TCP Ogni segmento TCP ha un header fisso di 20 byte più eventuali dati opzionali seguiti da 0 o più byte di dati. dim max del segmento = 65535-20(header TCP)-20(header IP) bytes 32 bit Porte: identificano la connessione Source port Destination port Numero di sequenza del primo byte trasmesso Sequence number Prossimo byte atteso (vale come ack per i precedenti) Acnowledgement number Lunghezza dell’header in parole di 32 bit TCP header lenght U R G A C K P S H R S T S Y N F I N Window size checksum Urgent pointer Numero di byte che è possibile accettare Options (0 o più parole a 32 bit) Dati (opzionale)

I Flag TCP Nel segmento TCP sono presenti 6 bit di flag URG Se il bit URG è 1, Urgent Pointer indica la posizione, a partire dal numero di sequenza attuale, dei dati urgenti (es. pressione di CTRL-C per interrompere il programma remoto). ACK Indica se il campo Acknowledgement number è valido. PSH Indica dati di tipo PUSH, ovvero si richiede di consegnare subito i dati senza bufferizzarli. RST Richiesta di re-inizializzazione di una connessione diventata instabile. Viene anche usato per rifiutare un segmento non valido o l’apertura di una connessione.

I Flag TCP SYN Viene utilizzato per creare connessioni. La richiesta di connessione è caratterizzata da SYN=1 e ACK=0. La risposta di connessione contiene un ack e quindi ha SYN=1 e ACK=1. Corrispondono alle primitive astratte CONNECTION REQUEST e CONNECTION ACCEPTED. FIN Viene utilizzato per chiudere una connessione (il mittente non ha altri dati da spedire).

Apertura della Connessione Si utilizza un protocollo 3-way handshake Le due parti devono riconoscere i rispettivi numeri di sequenza host 1 host 2 SYN (SEQ=x) SYN (SEQ=y, ACK=x+1) tempo SYN(SEQ=x+1, ACK=y+1) Se il TCP ricevente non verifica la presenza di un processo in attesa sulla porta destinazione manda un segmento di rifiuto della connessione (RST).

Gestione dei Pacchetti Duplicati I pacchetti (nello specifico le richieste di connessione) possono essere “memorizzati” e ricomparire nella rete. host 1 host 2 SYN (SEQ=x) Pacchetto duplicato tempo L’host 1 non stava attendendo l’ack, quindi invia un messaggio di errore SYN (SEQ=y, ACK=x+1) RST (ACK=y+1) La numerazione è fatta con un orologio locale (tick=4 s) L’intervallo dei numeri di sequenza (32 bit) garantisce che non venga riutilizzato lo stesso numero di sequenza prima di qualche ora A causa del time to live dei pacchetti IP, segmenti con lo stesso numero non possono coesistere sulla rete

Chiusura della Connessione La connessione è full-duplex e le due direzioni devono essere chiuse indipendentemente. host 1 host 2 FIN (SEQ=x, ACK=z) tempo Chiusura da host 1 a host 2 (ACK=x+1) host 2 può ancora inviare dati a host 1 FIN (SEQ=v, ACK=w) Chiusura da host 2 a host 1 (ACK=v+1) Se l’ack di un messaggio FIN si perde l’host mittente chiude comunque la connessione dopo un timeout.

TCP: ack e ritrasmissioni TCP deve garantire la consegna dei dati ed il loro corretto ordinamento. A tal scopo, i dati sono ordinati tramite numeri di sequenza. Dopo aver inviato un segmento di dati, il trasmittente attende un ack da parte del ricevente. Viene utilizzato un timeout per limitare l’attesa dell’ack: se il timeout scade, il trasmittente provvede alla ritrasmissione dei dati. Il ricevente ha il compito di riordinare i dati; per poter accettare dati non in ordine, mantiene un apposito buffer. La ricezione di un ack avente un dato numero di sequenza vale come “ricevuta” per tutti i dati con numero di sequenza inferiore trasmessi in precedenza.

TCP: timeout Il problema è determinare il valore del timeout migliore (i ritardi possono essere molto variabili nel tempo sulla rete) Se il timeout è troppo piccolo si faranno ritrasmissioni inutili Se il timeout è troppo elevato si avranno ritardi di ritrasmissione eccessivi Si utilizza un algoritmo di stima del migliore timeout basato sulla misura del Round-Trip Time (RTT).

UDP: Trasporto senza Connessione Ogni datagramma UDP è incapsulato in un pacchetto IP. IP header UDP dati 20 bytes 8 bytes datagramma IP datagramma UDP UDP non garantisce affidabilità di consegna. Viene utilizzato da: Applicazioni real time Applicazioni request-response (es. interrogazione di un database) Applicazioni di monitoring …

Header UDP Header di un datagramma UDP: soli 8 byte, dimensione fissa. 32 bit Source port Destination port UDP length UDP checksum Dati Le porte UDP sono indipendenti da quelle TCP. La lunghezza in byte comprende sia i dati che l’header. Il checksum controlla la correttezza dei dati: non sempre conviene usarlo.

Socket Il concetto di socket è stato introdotto su UNIX BSD (Berkeley). Ogni socket è caratterizzato da un indirizzo composto dall’indirizzo IP dell’host e da un numero locale a 16 bit (porta) Per ottenere un servizio TCP si deve creare esplicitamente una connessione fra un socket della macchina richiedente (client) ed un socket della macchina ricevente (server). Una volta attivato, un socket è utilizzato come un file: la send corrisponde ad una scrittura su uno stream, la receive ad una lettura. Le connessioni sono identificate tramite gli identificatori dei socket sui due lati.

Primitive Socket Sono utilizzate dai programmi per aprire e chiudere connessioni, e per inviare i dati. Sotto: Primitive Socket di UNIX BSD Primitiva Significato Uso sul SOCKET Crea un socket e restituisce il suo descrittore C / S BIND Assegna una porta locale al socket Server LISTEN Il socket si mette in attesa di richieste di connessione; a tal scopo gestisce una coda ACCEPT Se la coda è vuota, attende una richiesta di connessione; altrimenti gestisce la prima richiesta in coda CONNECT Richiede una connessione alla controparte Client SEND Invia dati alla controparte RECEIVE Riceve dati dalla controparte CLOSE Rilascia la connessione

Sequenze di primitive socket Client Socket Connect (Send / Receive)* Close Server semplice Socket Bind Listen Accept (Send / Receive)* Close Server “multiplo” Socket Bind Listen Accept Fork (Send / Receive)* Close Exit Attenzione: i metodi java delle classi Socket e ServerSocket sono definiti ad un livello di astrazione superiore