TCP e UDP: il livello trasporto dell'architettura TCP/IP

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

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

Il livello trasporto Protocolli TCP e UDP

Reti di Calcolatori in Tecnologia IP

4 - Il livello di trasporto

Livello di Trasporto

MODELLI ISO/OSI e TCP/IP

Le Reti Informatiche

Progettazione di servizi web e reti di calcolatori. appunti trascritti dagli studenti dell AA (ed integrati dal docente) Antonio Lioy


Il livello trasporto: Introduzione e protocollo UDP

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

TCP. Servizio di Trasporto Affidabile. Transmission Control Protocol. Caratteristiche di TCP 1

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

I protocolli UDP e TCP

IL LIVELLO TRASPORTO Protocolli TCP e UDP

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

Telematica di Base. IL Livello di Trasporto TCP

Transmission Control Protocol

Livello trasporto in Internet

Livello di trasporto e TSAP

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Argomenti: ! Servizi dello strato di trasporto! multiplexing/demultiplexing! Servizio senza connessione: UDP

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

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

Nome e Cognome : Anno di corso Numero di matricola : Como, 7 maggio Quiz a risposta multipla

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP

L architettura di TCP/IP

Livello trasporto. Servizi del livello trasporto

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

Livello trasporto in Internet

Introduzione (parte III)

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete

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

Reti di Calcolatori. IL LIVELLO TRASPORTO Protocolli TCP e UDP

Livello Trasporto Protocolli TCP e UDP

Riferimenti. I protocolli TCP e UDP. Sorgente TCP. Principi Fondamentali. TCP header. Ricevitore TCP

Livello trasporto in Internet

Reti di Calcolatori:

SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

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

Livello trasporto in Internet

L architettura di rete TCP/IP. 1

agenda Transport Layer in Internet protocolli TCP / UDP Scopi TCP - UDP Francesco Dalla Libera

Progettazione di servizi web e reti di calcolatori appunti trascritti dagli studenti (ed integrati dal docente)

Livello trasporto in Internet

TCP: rassegna RFCs: 793, 1122, 1323, 2018, 2581

Esercitazione. Livello di Trasporto [Capitolo 3]

Reti di Telecomunicazioni 1

RETI DI CALCOLATORI. TCP e UDP: Il Livello di Trasporto Internet

Modulo 11 Livelli Transport e Application del modello TCP/IP

Il livello di Trasporto del TCP/IP

MODELLI ISO/OSI e TCP/IP

TCP/IP: elemento unificante

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

Controllo di congestione

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

TCP (1) Protocollo TCP Gestione connessione

Controllo della congestione

Internet (- working). Le basi.

Implementazioni tipiche del protocollo TCP

Introduzione alla rete Internet

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

Il livello di trasporto

Reti di calcolatori. Architettura delle reti. Mezzi trasmissivi

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

RETI TELEMATICHE Lucidi delle Lezioni Capitolo II

Tecnologie di Sviluppo per il Web

Capitolo 3 Livello di trasporto

Configurazione delle interfacce di rete

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

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

- 5 - Controllo a finestra

4 - Il livello di trasporto

Corso di Alfabetizzazione Informatica

Lo strato di applicazione in Internet

Analisi dell avvio del TCP su canali satellitari a larga banda. Candidato Giovanni Verrecchia

Reti di Comunicazione e Internet

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

Livello di trasporto: TCP, controllo flusso, controllo congestione

Collegamento dati per accesso ad Internet. Informatica Generale (CdL in E&C), A.A Informatica Generale (CdL in E&C), A.A.

Internet Protocol Versione 4: aspetti generali

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

Reti di Calcolatori. Lo Stack ISO-OSI

Livello 4 (trasporto): cosa vedremo

Real Time Streaming Protocol. Akshat Sikarwar - Columbia University Traduzione e adattamento di Massimo De Santo, Università di Salerno

Analisi dell avvio del TCP su canali satellitari a larga banda

Protocollo IP. Pacchetto e comandi

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

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

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

Parte II: Reti di calcolatori Lezione 12

Prova completa - Rete Internet (ing. Giovanni Neglia) Lunedì 25 Giugno 2007

Architettura delle reti. Versione del 4 marzo 2004

Strato di Trasporto Multiplazione a livello di trasporto

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

Corso di Sistemi di Elaborazione delle informazioni

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

TCP/IP. Principali caratteristiche

Transcript:

TCP e UDP: il livello trasporto dell'architettura TCP/IP Antonio Lioy < lioy@polito.it > Politecnico di Torino Dip. Automatica e Informatica OSI vs. TCP/IP 7 6 5 application presentation session process (DNS, HTTP, SMTP, ) 4 transport transport (TCP, UDP) 3 network packet network (IP) 2 1 data link physical frame V, I, γ unspecified A.Lioy - Politecnico di Torino (2013-17) A-1

Transport layer canale logico end-to-end utile per gli sviluppatori applicativi che altrimenti dovrebbero risolversi da soli i problemi di IP (es. dimensione limitata, pacchetti persi, duplicati, fuori sequenza) multiplexing/demultiplexing uso di un solo indirizzo di rete per inviare/ricevere da parte dei diversi processi applicativi di un host controllo di flusso il mittente cerca di non intasare il ricevente controllo di congestione il mittente cerca di non intasare la rete Transport layer offre una API standard (socket) il livello trasporto (L4) fa comunicare processi il livello rete (L3) fa comunicare nodi di rete due protocolli più usati: TCP privilegia l'affidabilità risolve (o almeno affronta) tutti i problemi UDP privilegia la latenza risolve solo alcuni dei problemi, lasciando gli altri agli sviluppatori applicativi ed ai gestori di rete A.Lioy - Politecnico di Torino (2013-17) A-2

Velocità, latenza e troughput velocità di rete V = massima quantità di dati per unità di tempo trasmissibili es. Ethernet 10M = 10 Mbps banda B = frazione di V dedicata ad uno specifico flusso di rete B V latenza L = tempo che intercorre tra gli istanti di invio e ricezione di un dato L = t R t S throughput T = quantità di dati trasmessa nell'unità di tempo T = dati / ( t R t S ) = D / L Cosa misuriamo? interessa il payload quindi T e L misurati ai vari livelli dello stack differiscono (a causa dell'overhead introdotto dagli header) es. invio file 100kB su rete Ethernet a 10 Mbps in teoria L = 100 x 1024 x 8 / 10 M = 82 ms ma ci sono 14 B di header Ethernet se invio payload da 16 B per volta 100 x 1024 / 16 = 6,400 pacchetti 6,400 x (16 + 14) = 192,000 B inviati L = 192,000 * 8 / 10 M = 154 ms se invio payload da 128 B per volta allora L = 91 ms (ragionevole, spreco circa il 10% della banda teorica) A.Lioy - Politecnico di Torino (2013-17) A-3

TCP Transmission Control Protocol canale logico end-to-end API come file sequenziale forward-only (read, write) stream bi-direzionale simultaneo di byte tra due componenti distribuite protocollo affidabile ma lento buffering sia in trasmissione sia in ricezione disaccoppia la velocità computazionale il più usato dalle applicazioni Internet web, posta elettronica, trasferimento file,... Uso di TCP per client-server client application presentation session server application presentation session transport TCP channel input stream (request) output stream (response) transport A.Lioy - Politecnico di Torino (2013-17) A-4

TCP buffering sender (es. webserver) receiver (es. browser) network buffer (trasmissione) buffer (ricezione) YouTube smartphone UDP User Datagram Protocol permette alle componenti di scambiarsi messaggi (datagrammi) contenenti un insieme di byte API a messaggi (sendto, recvfrom) la componente destinataria è identificata internamente al messaggio protocollo inaffidabile ma veloce limitata lunghezza del messaggio (max 64 kb) accodamento al destinatario rischio di "over-run" o "out-of-space" usato per applicazioni in cui la ritrasmissione o perdita non è un problema (es. DNS, NTP) A.Lioy - Politecnico di Torino (2013-17) A-5

Uso di UDP per client-server client application presentation session request datagrams server application presentation session transport transport response datagrams TCP e UDP due protocolli di trasporto alternativi realizzano funzionalità comuni a tutti gli applicativi usabili simultaneamente da applicativi diversi per distinguere i dati generati da / destinati ad una specifica applicazione su un determinato nodo si usa il concetto di porta (multiplexing) ad esempio un browser che voglia connettersi ad un server web deve indicare: l indirizzo IP del server web il protocollo di trasporto (TCP) il numero della porta associata al servizio web (80) A.Lioy - Politecnico di Torino (2013-17) A-6

Porte e multiplexing process mail server SMTP web server HTTP name server DNS name client DNS transport network 1... 25... 80...... 1... 23... 1030 TCP UDP indirizzo IP... Caratteristiche delle porte TCP e UDP identificate da un numero intero su 16 bit 0... 1023 = porte privilegiate usabili solo da processi di sistema 1024... 65535 = porte utente usabili da qualunque processo porte statiche quelle dove un server è in ascolto porte dinamiche quelle usate per completare una richiesta di connessione e svolgere un lavoro A.Lioy - Politecnico di Torino (2013-17) A-7

Connessione TCP (o messaggio UDP) rappresentate da una quintupla: protocollo (TCP o UDP) indirizzo IP (32 bit) e porta (16 bit) del client indirizzo IP (32 bit) e porta (16 bit) del server ad esempio, per un collegamento HTTP: (TCP, 14.2.20.3, 1040, 130.192.3.27, 80) client 14.2.20.3 130.192.3.27 1040 TCP 80 server UDP: User Datagram Protocol un protocollo di trasporto: orientato ai messaggi non connesso stato del destinatario ignoto nessun accordo preliminare non affidabile datagrammi persi, duplicati, fuori sequenza aggiunge due funzionalità a quelle di IP: multiplexing delle informazioni tra le varie applicazioni tramite il concetto di porta checksum (opzionale) per verificare l integrità dei dati (utile contro errori di trasmissione, non attacchi) A.Lioy - Politecnico di Torino (2013-17) A-8

UDP: PDU (datagram) 0 15 16 31 source port message length destination port checksum data Campi dell'header UDP source port (16 bit) destination port (16 bit) message length (16 bit) lunghezza totale della PDU (header + payload) payload massimo teorico = 64 kb (massima lunghezza PDU IP)... 8 B (header UDP)... 20 B (minimo header IP) = 65,507 B checksum (16 bit, tutti zero se non usata) protegge header e payload (da errori, non attacchi!) A.Lioy - Politecnico di Torino (2013-17) A-9

utile quando: UDP: applicabilità si opera su rete affidabile (es. LAN o punto-punto) singola PDU può contenere tutti i dati applicativi non importa che tutti i dati arrivino a destinazione l applicazione gestisce meccanismi di ritrasmissione maggior problema di UDP = il controllo di congestione mittente mantiene il proprio tasso di trasmissione (elevato) anche se la rete è intasata, contribuendo ad intasarla maggiormente proposto DCCP (Datagram Congestion Control Protocol) UDP: applicazioni Le principali applicazioni che usano UDP sono: DNS (Domain Name System) traduzioni nomi indirizzi IP NFS (Network File System) dischi di rete (in ambiente Unix) SNMP (Simple Network Management Protocol) gestione apparecchiature di rete (router, switch, ) molte applicazioni di streaming audio e video è importante la bassa latenza è accettabile la perdita di alcuni dati A.Lioy - Politecnico di Torino (2013-17) A-10

TCP: Transmission Control Protocol un protocollo di trasporto: byte-stream-oriented connesso affidabile usato da applicativi che richiedono la trasmissione affidabile dell informazione: telnet = terminale virtuale FTP (File Transfer Protocol) = trasferimento file SMTP (Simple Mail Transfer Protocol) = trasmissione e-mail HTTP (Hyper-Text Transfer Protocol) = scambio dati tra browser e server web funzionalità TCP: TCP: funzionalità supporto della connessione tramite circuiti virtuali controllo di errore controllo di flusso multiplazione e demultiplazione controllo di stato e di sincronizzazione TCP garantisce la consegna del pacchetto, UDP no! A.Lioy - Politecnico di Torino (2013-17) A-11

TCP: caratteristiche come UDP ha il concetto di porta il TCP di un nodo, quando deve comunicare con il TCP di un altro nodo, crea un circuito virtuale al circuito virtuale è associato un protocollo full-duplex acknowledge controllo di flusso segmenta e riassembla i dati secondo necessità: nessuna relazione tra il numero di read e di write usa sliding window, timeout e ritrasmissione TCP richiede più banda e più CPU di UDP TCP: PDU (segment) 0 4 8 15 16 31 source port destination port sequence number acknowledgment number data offset res control window size checksum options urgent pointer padding data A.Lioy - Politecnico di Torino (2013-17) A-12

Campi dell'header TCP (I) source port (16 bit) destination port (16 bit) sequence number (32 bit) (SYN=1) valore iniziale (SYN=0) posizione nello stream del primo data byte acknowledgment number (32 bit) (ACK=1) posizione nello stream del primo data byte da ricevere (tutti quelli precedenti sono OK) (ACK=0) non significativo checksum (16 bit, tutti zero se non usata) protegge sia header sia payload Campi dell'header TCP (II) data offset (4 bit) lunghezza dell'header TCP in word da 32 bit valore 5...15 (20...60 B, con max 40 B di opzioni) control (9 bit) = insieme di flag SYN = sincronizzare i Sequence Number ACK = campo Acknowledgment Number valido FIN = non verranno trasmessi altri dati RST = reset della connessione PSH = inviare i dati nel buffer all'applicazione URG = campo Urgent Pointer valido NS, CWR, ECE (controllo avanzato di congestione) A.Lioy - Politecnico di Torino (2013-17) A-13

Campi dell'header TCP (III) window size (16 bit) spazio ancora disponibile nella receive window il mittente può mandare al massimo questi byte prima di attendere un ACK ed una nuova WIN... oppure lo scadere del timeout! options (0-320 bit, in multipli di byte) opzioni varie es. Timestamp, Selective Acknowledgment padding byte a zero per rendere l'header multiplo di 32 bit TCP Selective Acknowledgment anche detto SACK definito in RFC-2018 utile quando viene perso un segmento ma ricevuti correttamente quelli successivi l'opzione indica un intervallo di byte ricevuti aggiuntiva rispetto ad ACK A.Lioy - Politecnico di Torino (2013-17) A-14

Esempio SACK 50 byte 50 byte 50 byte 50 byte ricevuti persi ricevuti ricevuti (normale) ACK=50 sender ritrasmette 51-200 (ossia 150 byte) (con SACK) ACK=50, SACK=101-200 sender ritrasmette 51-100 (ossia 50 byte) TCP: Urgent Pointer con URG=1, indica che nel segmento ci sono uno o più byte "urgenti" tipicamente associati ad eventi asincroni: interrupt byte da trattare prima di quelli già ricevuti ma ancora nel buffer è un meccanismo per "saltare la coda" sul ricevente ma non ha effetto sulle code in rete quindi è praticamente inutile! A.Lioy - Politecnico di Torino (2013-17) A-15

TCP: three-way handshake active open (client) passive open (server) CLOSED LISTEN R T T SYN_SENT SYN_RECEIVED R T T ESTABLISHED ESTABLISHED active close (client) TCP: four-way teardown passive close(server) ESTABLISHED ESTABLISHED FIN m FIN_WAIT1 CLOSE_WAIT FIN_WAIT2 LAST_ACK ACK n+1 TIME_WAIT CLOSED A.Lioy - Politecnico di Torino (2013-17) A-16

Lo stato TIME_WAIT dallo stato TIME_WAIT si esce solo per timeout: durata pari a 2 x MSL (Max Segment Lifetime) MSL = 2 minuti (RFC-1122), 30 secondi (BSD) quindi timeout 1 4 minuti esiste per risolvere due problemi: implementare la chiusura TCP full-duplex l ultimo ACK potrebbe venir perso ed il client ricevere un nuovo FIN permettere a pacchetti duplicati di spirare potrebbero essere interpretati come parte di una nuova incarnazione della stessa connessione Come si creano i segmenti TCP? TCP riceve un byte-stream dal livello superiore quando invia un segmento? con quanti byte? invia quando è pieno un segmento massimo (MSS) invia alla scadenza di un timeout (200 ms) invia quando si riceve un comando esplicito (flush) dal livello superiore invia non appena ci sono dati disponibili (se la connessione è marcata TCP_NODELAY) segmenti grossi: maggiore latenza, migliore throughput (viceversa per segmenti piccoli) es. download vs. on-line gaming A.Lioy - Politecnico di Torino (2013-17) A-17

TCP Maximum Segment Size (MSS) massima quantità di dati (payload) presenti in un segmento TCP: 576 B (max pacchetto IP trattabile da tutti)... 20 B (min header IP)... 20 B (min header TCP) = 536 B TCP sequence number SEQ = posizione primo byte inviato ACK = posizione primo byte libero nel buffer di ricezione A.Lioy - Politecnico di Torino (2013-17) A-18

TCP: sliding window il ricevente ha un buffer limitato lo spazio disponibile varia in base a: ACK inviati dati prelevati dall'applicazione non manda ACK per singoli byte ma cerca di raggruppare più byte ricevuti usare "piggyback" su dati da inviare receiver buffer dati ricevuti ACK inviato mandati all'app dati ricevuti ACK inviato non mandati all'app dati ricevuti ACK non inviato dati ricevibili TCP: sliding window il mittente deve autolimitarsi per non intasare il ricevente invia al massimo CWND byte e poi aspetta gli ACK per RTT quindi (senza ritrasmissione) T ~ CWND / RTT spazio dei sequence number dati inviati ACK ricevuto OK all'app dati inviati ACK non ricevuto (in-flight data) dati inviabili non usabili congestion window (CWND) A.Lioy - Politecnico di Torino (2013-17) A-19

TCP: slow start le prime versioni di TCP quando andavano in timeout ritrasmettevano l intera window questo poteva causare gravi congestioni della rete: nell ottobre 1986 Arpanet fu bloccata da una congestione (da 32 kbps a 40 bps) inizio: CWND = 1 MSS CWND raddoppia ogni RTT realizzato facendo CWND += 1 MSS per ogni ACK ricevuto TCP parte piano ma accelera velocemente TCP: ritrasmissione problema rilevante per le connessioni wireless, più soggette a timeout di quelle cablate quando TCP non riceve ACK entro il timeout TCP Tahoe CWND = 1 poi cresce esponenzialmente (x2) sino al limite poi cresce linearmente (+1) fino a nuovo timeout TCP Reno CWND = ½ ultima CWND valida poi cresce linearmente (+1) fino a nuovo timeout A.Lioy - Politecnico di Torino (2013-17) A-20

TCP slow start + ritrasmissione 18 16 X = segmento, Y = CWND TCP Tahoe TCP Reno finestra "giusta" 14 12 10 8 6 4 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Equità di trattamento in TCP (fairness) col meccanismo di ritrasmissione adottato, se N flussi condividono la medesima banda B, ciascun flusso ne userà una frazione B/N esempio su un link con banda totale B: 9 processi con un flusso a testa, ognuno usa B/9 nuovo processo apre 11 flussi questo processo ottiene non 0.1*B ma 0.55*B (perché usa 11 flussi su 20 totali) trucco fatto da molti browser per avere più banda applicazioni multimediali non usano TCP perché non vogliono che il throughput vari, ma usano UDP inviando dati a velocità costante ed accettando delle perdite A.Lioy - Politecnico di Torino (2013-17) A-21