Livello trasporto: TCP / UDP. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35.



Documenti analoghi
Livello Trasporto. Liv. Applic. Liv. Transport. Transport Entity. Liv. Network. Trasporto

Transmission Control Protocol

Il livello trasporto Protocolli TCP e UDP

Standard: OSi vs TCP/IP. Il livello di trasporto. TCP e UDP. TCP: Transmission Control Protocol. TCP: funzionalità

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Livello di Trasporto

IP Internet Protocol

Reti di Telecomunicazione Lezione 8


Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00

Introduzione (parte III)

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Reti di Calcolatori in Tecnologia IP

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

IL LIVELLO TRASPORTO Protocolli TCP e UDP

4 - Il livello di trasporto

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Gestione della Connessione in TCP

I protocolli UDP e TCP

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Reti di Calcolatori. Il software

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

Dal protocollo IP ai livelli superiori

Standard di comunicazione

SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Protocolli di Comunicazione

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Livello Trasporto Protocolli TCP e UDP

L architettura di TCP/IP

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Telecomunicazione Lezione 6

Informatica per la comunicazione" - lezione 8 -

Introduzione alle applicazioni di rete

Uso di UDP per client-server UDP. Porte e multiplexing. TCP e UDP. Connessione TCP (o messaggio UDP) Caratteristiche delle porte TCP e UDP

I canali di comunicazione

Lo scenario: la definizione di Internet

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

MODELLI ISO/OSI e TCP/IP

12.5 UDP (User Datagram Protocol)

ARCHITETTURA DI RETE FOLEGNANI ANDREA

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 1

Transport Layer & TCP/UDP

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Capitolo 1 - parte 1. Corso Reti ed Applicazioni Mauro Campanella

Sicurezza delle reti. Monga. Il livello di trasporto. Problemi di sicurezza intrinseci. Riassunto. Porte. Sicurezza delle reti.

Il livello di Trasporto del TCP/IP

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Venerdì 18 Febbraio 2005, ore 9.30

Livello di Rete. Gaia Maselli

Gestione delle Reti di Telecomunicazioni

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Modulo 11. Il livello trasporto ed il protocollo TCP Indice

Reti diverse: la soluzione nativa

Capitolo 3 Livello di trasporto

Approfondimento di Marco Mulas

Protocolli di rete. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 02 Protocolli - 2/30

Cenni di programmazione distribuita in C++ Mauro Piccolo

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport.

Livello trasporto in Internet

Internet e protocollo TCP/IP

Reti locati e reti globali. Tecnologie: Reti e Protocolli. Topologia reti. Server e client di rete. Server hardware e server software.

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Indice. Prefazione XIII

InterNet: rete di reti

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2

Dipartimento di Ingegneria dell Informazione e Metodi Matematici Laboratorio di Reti Prof. Fabio Martignon

Il livello Data-Link e i suoi protocolli

Indirizzi IP. Indirizzi IP

Apparecchiature di Rete

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

Elementi sull uso dei firewall

Strato trasporto. Per capir meglio la cosa analizziamo il seguente esempio:

Inizializzazione degli Host. BOOTP e DHCP

Corso di Sistemi di Elaborazione delle informazioni

Cos è. Protocollo TCP/IP e indirizzi IP. Cos è. Cos è

Transmission Control Protocol (TCP) Andrea Detti

Reti. Reti e interconnessione di reti - Internetwork WAN 1 WAN 1. Router multiprotocollo (gateway) Terminologia

Modulo 11 Livelli Transport e Application del modello TCP/IP

Il protocollo TCP. Obiettivo. Procedura

Laboratorio di Programmazione in rete

Page 1. Elementi Base del Modello OSI. Il modello di riferimento ISO/OSI OSI: Open Systems Interconnection. Struttura a Livelli.

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

appunti delle lezioni Architetture client/server: applicazioni client

Reti di Calcolatori. Lezione 2

Protocolli applicativi: FTP

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 14 Settembre 2005, ore 9.00

Laurea in INFORMATICA

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 1

DA SA Type Data (IP, ARP, etc.) Padding FCS

Transcript:

Livello trasporto: TCP / UDP Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35 TCP e UDP Internet Protocol (IP) fornisce un servizio non affidabile di trasmissione datagrammi fra host Il protocollo di trasporto fornisce un servizio di consegna punto a punto fra due terminali di una connessione: processi in esecuzione User Datagram Protocol (UDP) fornisce un servizio basato su datagrammi Transmission Control Protocol (TCP) fornisce un servizio di consegna affidabile Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 2/35 1

Livello trasporto Gestisce una conversazione diretta fra sorgente e destinazione il software di livello trasporto è presente solo sugli host e non sui router della sottorete di comunicazione I servizi principali offerti ai livelli superiori sono vari tipi di trasporto delle informazioni fra una transport entity su un host e la sua peer entity su un altro host Servizi affidabili orientati alla connessione (tipici di questo livello) Servizi a datagramma Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 3/35 Livello di servizio Possibile specifica del QoS (Quality of Service) desiderato, per servizi con connessione: Massimo ritardo per l'attivazione della connessione Throughput richiesto Massimo ritardo di transito ammesso Tasso d'errore tollerato Tipo di protezione da accessi non autorizzati ai dati in transito Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 4/35 2

TCP/UDP Il livello trasporto di Internet è basato su due protocolli: TCP (Transmission Control Protocol) UDP (User Data Protocol) TCP è stato progettato per fornire un flusso di byte affidabile, da sorgente a destinazione, su una rete non affidabile. Offre un servizio affidabile e orientato alla connessione. Si occupa di: Accettare dati dal livello applicazione Spezzarli in segmenti (nome dei TPDU, max 64 Kbyte) Consegnarli al livello rete, eventualmente ritrasmettendoli Ricevere segmenti dal livello rete Rimetterli in ordine, eliminando buchi e doppioni Consegnare i dati, in ordine, al livello applicazione Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 5/35 User Datagram Protocol UDP consegna messaggi indipendenti, chiamati datagrammi, fra applicazioni o processi residenti su host Consegna "best effort'' - i datagrammi possono essere persi, disordinati,... La checksum (opzionale) garantisce l'integrità dei dati I terminali di una comunicazione UDP sono chiamati porte Ogni trasmissione UDP specifica l'indirizzo IP e il numero di porta di sorgente e destinazione del messaggio Le porte origine e destinazione possono essere diverse. Applicazione Trasporto UDP, TCP Internet (IP) Data link - MAC Hardware Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 6/35 3

Header UDP Aggiunge due funzionalità a quelle di IP: multiplexing delle informazioni tra le varie applicazioni (tramite il numero di porta) checksum (opzionale) per verificare l integrità dei dati L'header UDP é molto semplice: Numeri di porta Lunghezza del messaggio Checksum (può essere disattivata, nel caso di traffico realtime voce o video) UDP source port UDP message length UDP destination port UDP checksum Data Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 7/35 Scelta dei numeri di porta I processi in comunicazione devono concordare un numero di porta Il Server apre la porta specificata e aspetta messaggi in ingresso Il Client sceglie la porta locale e invia i messaggi alla porta I servizi forniti da molti computer usano dei numeri riservati, detti wellknown port numbers Gli altri servizi usano numeri di porta assegnati dinamicamente Porta Nome Descrizione 7 Echo Echo input back to sender 9 Discard Discard input 11 Systat System statistics 13 Daytime Time of day (ASCII) 20 FTP Ftp (control) 21 FTP Ftp (data) 23 Telnet Telnet 53 domain DNS 25 Smtp Simple mail transfer protocol 80 Http Http 110 Pop Pop versione 3 Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 8/35 4

TCP Transmission Control Protocol (TCP) é il protocollo di trasporto più utilizzato Fornisce un servizio di consegna affidabile basandosi sul servizio inaffidabile fornito da IP Recupera perdite, ritardi, duplicazione e altri problemi che possono insorgere a livello IP La consegna affidabile diventa il servizio di alto livello utilizzato nella progettazione delle applicazioni Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 9/35 Caratteristiche di TCP Orientato alla connessione: l'applicazione prima chiede di aprire una connessione, poi la usa per trasferire dati Punto a punto: una connessione TCP ha due terminali Affidabilità: TCP garantisce che i dati siano consegnati senza perdite, duplicazioni o errori trasmissivi Full duplex: I terminali di una connessione TCP possono scambiarsi dati in entrambe le direzioni simultaneamente Interfaccia a stream: le applicazioni passano i dati a TCP come uno stream, senza confini fra i record; TCP non garantisce che i dati vengano ricevuti negli stessi blocchi in cui erano stati trasmessi Affidabile attivazione della connessione: il meccanismo three-way handshake garantisce una attivazione affidabile e sincronizzata fra i terminali Chiusura "graceful" della connessione: TCP garantisce la consegna di tutti i dati, anche quelli in viaggio dopo lo shutdown di una applicazione Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 10/35 5

IP per la consegna dei dati TCP utilizza IP (come UDP) per la consegna dei dati I terminali sono identificati da porte (come in UDP) sono permesse connessioni multiple su ogni host le porte sono associate a processi IP considera TCP come dati e non interpreta il contenuto del messaggio TCP I router guardano solo gli header IP per inoltrare i datagrammi Solo il TCP alla destinazione interpreta i messaggi TCP Host A Sistema di comunicazione visto da TCP Host B Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 11/35 Consegna affidabile con TCP TCP é in grado di recuperare errori dovuti a: pacchetti persi pacchetti duplicati pacchetti ritardati dati rovinati inconsistenze nelle velocità trasmissive congestione riavvii di un sistema TCP segmenta e riassembla i dati secondo le sue necessità: non garantisce nessuna relazione tra il numero di read e quello di write. Il TCP remoto deve fornire un acknowledge dei dati, normalmente tramite piggybacking. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 12/35 6

Pacchetti persi TCP utilizza il riscontro positivo con ritrasmissione (positive acknowledgment with retransmission) per garantire una trasmissione affidabile Il ricevente invia un messaggio di riscontro (acknowledgment, ACK) al mittente per confermare la ricezione corretta dei dati Il mittente imposta un timer quando trasmette un messaggio; se il tempo finisce prima di ricevere il relativo riscontro il mittente ritrasmette i dati (reimpostando il timer) Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 13/35 TCP: segmenti e numeri di sequenza L'applicazione invia a TCP quantità arbitrariamente grosse di dati come stream. TCP suddivide i dati in segmenti, ognuno dei quali viene inserito in un datagramma IP. Lo stream originale é numerato in byte. Ogni segmento contiene il numero di sequenza dei byte dei dati. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 14/35 7

Acknowledgment Il ricevente invia un messaggio con il numero di sequenza dei dati (non dei segmenti) ricevuti correttamente Un ACK può essere riscontro di molti segmenti Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 15/35 Timeout Un timeout male impostato può degradare le prestazioni: Troppo lungo - il mittente aspetta troppo prima di ritrasmettere Troppo corto - il mittente genera del traffico non necessario Il timeout deve essere diverso per ogni connessione e impostato dinamicamente Gli host su una stessa LAN devono avere un timeout più corto di host distanti più di venti nodi Il tempo di consegna su internet varia con l'ora, il timeout deve considerare queste variazioni Il timeout deve essere basato sul round trip time (RTT) Il mittente non può conoscere il RTT di un pacchetto prima della sua trasmissione Il mittente sceglie il retransmission timeout (RTO) sulla base degli RTT precedenti Il metodo specifico é detto adaptive retransmission algorithm Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 16/35 8

Calcolo di RTT e di RTO Media pesata per RTT: RTT nuovo = (α * RTT vecchio ) + ((1 - α)*rtt campione )) Calcolo dell' RTO: RTO = β * RTTnuovo Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 17/35 Misura dell'rtt RTT viene misurato osservando la differenza fra tempo di trasmissione e arrivo del riscontro Il riscontro non contiene l'informazione su quale pacchetto é confermato Il mittente non può determinare se il riscontro é per il pacchetto originale o una ritrasmissione l'originale può sovrastimare l'rtt la ritrasmissione può sottostimare l'rtt Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 18/35 9

Algoritmo di Karn L'algoritmo di Karn permette di ignorare gli RTT per i segmenti ritrasmessi sulla base dell'osservazione che RTO é scollegato da RTT quando si ritrasmette. L'RTO raddoppia per ogni nuovo messaggio finché non arriva l'ack senza ritrasmissione. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 19/35 Controllo della congestione Un traffico eccessivo può causare perdita di pacchetti Il protocollo di trasporto reagisce con la ritrasmissione Un eccesso di ritrasmissioni può causare un collasso per congestione TCP interpreta la perdita di pacchetti come un indicatore di congestione Il mittente utilizza il meccanismo TCP di controllo della congestione e rallenta l'invio di pacchetti Invia pacchetti singoli Se arriva un ACK senza perdite, invia due pacchetti Quando si arriva a inviare la metà della finestra, il tasso di crescita cala Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 20/35 10

Controllo del flusso Se il mittente trasmette più velocemente di quanto il ricevitore possa elaborare, si verifica un data overrun I protocolli usano un controllo del flusso dati per permettere al ricevitore di controllare la velocità della trasmissione dati. Due meccanismi principali: Stop-and-go Sliding window Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 21/35 Controllo flusso Differenze fra livello 2 e 4 Il livello 2 non ha nessun servizio di appoggio, il livello 4 usa i servizi del livello 3 (poco affidabili) Il numero di connessioni data link è relativamente piccolo e stabile nel tempo, mentre le connessioni trasporto possono essere molte e in numero molto variabile nel tempo Le dimensioni dei frame sono stabili, quelle dei TPDU molto più variabili Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 22/35 11

Controllo stop-and-go Il ricevitore invia piccoli pacchetti di controllo quando é pronto per il pacchetto successivo Il mittente aspetta il pacchetto di controllo prima di inviare il pacchetto successivo Può essere molto inefficiente se il tempo di consegna é lungo Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 23/35 Sliding window Permette al mittente di inviare più pacchetti prima di ricevere un riscontro Il numero di pacchetti che può essere inviato é definito dal protocollo ed é chiamato window Quando arrivano dei riscontri dal ricevitore, la window si sposta in avanti, da qui il nome "sliding window'' Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 24/35 12

Stop-and-go e sliding window Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 25/35 Tempi di trasmissione Con stop-and-go, ogni pacchetto richiede un tempo 2L per arrivare (dove L éla latenza, o tempo di consegna della rete) La sliding window può migliorare di un fattore pari al numero di pacchetti nella window: T w = T g * W (T w sliding window throughput, T g stop-and-go throughput) Il tempo di trasmissione é anche limitato dal rate trasmissivo della rete: T w = min(b, T g * W) (B é la banda passante della rete) Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 26/35 13

TCP sliding window TCP usa una sliding window per il controllo del flusso Il ricevitore specifica la finestra (window advertisement) Specifica quanti byte dello stream dati possono essere inviati Inserisce questa informazione nell'ack Il mittente può trasmettere i byte in segmenti di qualsiasi dimensione, successivi all'ultimo byte verificato e all'interno della dimensione della finestra Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 27/35 Esempio di sliding window Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 28/35 14

Sliding window con riscontro Eventi al mittente Eventi al ricevitore Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 29/35 Header TCP Stesso formato dell'header in entrambe le direzioni I segmenti possono trasportare sia dati che riscontri Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 30/35 15

Campi header Sequence number num. del primo byte nel campo dati Ack. Number num. del prossimo byte aspettato TCP header length quante parole di 32 bit nell'header URG 1 se urgent pointer è usato, 0 altrimenti ACK 1 se l'ack number è valido, 0 altrimenti PSH dati urgenti (pushed data) RST richiesta di reset SYN setup della connessione SYN=1 ACK=0 richiesta connessione SYN=1 ACK=1 accettata connessione FIN per rilasciare una connessione Window size num. byte spedibili a partire dall ultimo confermato con ack Checksum simile a IP Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 31/35 Three-way handshake TCP usa lo three-way handshake per l'attivazione e il rilascio affidabile della connessione Host 1 invia un segmento con il bit SYN a 1 e un numero di sequenza casuale Host 2 risponde con un segmento con il bit SYN a 1, ACK a host 1 e un numero di sequenza casuale Host 1 risponde con un ACK TCP ritrasmette i segmenti persi I numeri di sequenza casuali assicurano la sincronizzazione fra i terminali Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 32/35 16

Chiusura di una connessione Eventi all host 1 Eventi all host 2 Invia FIN + ACK riceve FIN + ACK invia ACK riceve FIN + ACK invia FIN + ACK riceve ACK Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 33/35 Primitive di trasporto Definiscono il modo di accedere ai servizi: connect() Cerca di stabilire una connessione accept() Si blocca finché qualcuno cerca di connettersi send() Invia dati receive() Si blocca finché arriva un TPDU close() richiesta di disconnessione Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 34/35 17

Sommario UDP fornisce una consegna punto a punto di tipo best-effort IP per la consegna all'host di destinazione Le porte individuano le applicazioni di destinazione TCP fornisce una consegna punto a punto affidabile come stream di byte IP per la consegna all'host di destinazione Le porte individuano le applicazioni di destinazione Tecniche addizionali sovrimposte a IP per garantire l'affidabilità Riscontro positivo con ritrasmissione I numeri di sequenza individuano dati mancanti, duplicati o fuori ordine Controllo del flusso a finestra mobile Three-way handshake Controllo della congestione Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 35/35 18