TCP: apertura della connessione. Apertura connessione (handshake)

Documenti analoghi
Telematica di Base. IL Livello di Trasporto TCP

Reti di Calcolatori:

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

Parte II: Reti di calcolatori Lezione 13 (37)

Reti di Calcolatori I. Prof. Roberto Canonico Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Programmazione in Rete

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Telematica di Base. Il livello di trasporto

Prestazioni. aumentare l intervallo dei numeri di sequenza dotare sender e receiver di buffer per memorizzare i pacchetti non riscontrati

Prestazioni stop-and-wait. Prestazioni

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 3

Principi di trasferimento affidabile

Lo strato di Trasporto

Principi di trasferimento affidabile

Livello trasporto. Servizi del livello trasporto

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

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Transport Layer & TCP/UDP

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

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

Capitolo 3 Livello di trasporto

Soluzione dell esercizio 2 (TCP) dell esame del 16 giugno 2015

Reti di Calcolatori in Tecnologia IP

IL LIVELLO TRASPORTO Protocolli TCP e UDP

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

RETI DI CALCOLATORI Home Assignment protocolli a finestra scorrevole. Prima parte

Livello di Trasporto

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Parte II: Reti di calcolatori Lezione 14 (38)

Controllo di congestione

Livello di trasporto: meccanismi trasferimento dati affidabile

Livello di trasporto: TCP, controllo flusso, controllo congestione

Programmazione in Rete

TCP: generalità RFCs: 793, 1122, 1323, 2018, 2581

Reti di Calcolatori. IL LIVELLO TRASPORTO Protocolli TCP e UDP

I protocolli UDP e TCP

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

Livello 4 (trasporto): cosa vedremo

Livello di trasporto: meccanismi trasferimento dati affidabile (2), TCP

Reti di Calcolatori e Laboratorio - Compito del 15 Gennaio 2013

Homework assignment #2. Maurizio Bonuccelli. Dipartimento di Informatica Università di Pisa

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

Capitolo 3 - parte 2. Corso Reti ed Applicazioni Mauro Campanella

Lo sniffer. questo sconosciuto! Corso di Reti di Calcolatori Architetture e Servizi A.A. 2010/11. Introduzione allo sniffing TCP

Il Livello Trasporto III 3. Corso di RETI DI CALCOLATORI (9 CFU) a.a II anno / II semestre. Il Livello Trasporto. Il Livello Trasporto

Tesina Metodi Formali nell Ingegneria del Software. Verifica formale del TCP e studio di possibili attacchi usando NuSMV

Parte II: Reti di calcolatori Lezione 14 (38)

TCP e UDP: il livello trasporto dell'architettura TCP/IP. OSI vs. TCP/IP. Transport layer. A.Lioy - Politecnico di Torino ( ) A-1

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

Introduzione (parte III)

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

Implementazioni tipiche del protocollo TCP

API Socket di Berkeley

2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

Capitolo 3 - parte 2. Corso Reti ed Applicazioni Mauro Campanella

Esercitazione #2. Antonio Brogi. Dipartimento di Informatica Università di Pisa

Livello di trasporto e TSAP

Analisi dell avvio del TCP su canali satellitari a larga banda

TCP (1) Protocollo TCP Gestione connessione

RETI DI CALCOLATORI Home Assignment protocollo TCP. Prima parte

Livello trasporto. Controllo del flusso e della congestione

Lezione n.3 LIVELLO TRASPORTO

Reti di Comunicazione e Internet

1) (commutazione pacchetto, prodotto banda-ritardo) 2) (frammentazione, commutazione di pacchetto) 3) (Selective Repeat)

Reti di Calcolatori. Transport

ESERCIZIARIO. Risposte ai quesiti:

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

Parte II: Reti di calcolatori Lezione 12

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

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

Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Reti di Calcolatori e Laboratorio - Compito del 12 Gennaio 2012

Capitolo 3 Livello di trasporto

Corso di Reti di Telecomunicazioni

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

Homework assignment TCP. Maurizio Bonuccelli. Dipartimento di Informatica Università di Pisa

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

Parte II: Reti di calcolatori Lezione 12 (36)

Esercitazione. Livello di Trasporto [Capitolo 3]

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

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

Appunti del corso di PROF. G. BONGIOVANNI

Applicazioni di rete

Il livello trasporto Protocolli TCP e UDP

Lo strato di Trasporto: instaurazione della connessione, controllo del flusso e correzione degli errori

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

Il livello trasporto: controllo di flusso in TCP


Controllo della congestione

Recupero I Prova in itinere - Rete Internet (ing. Giovanni Neglia) Lunedì 25 Giugno 2007

Funzioni del protocollo TCP

Transcript:

TCP: apertura della connessione Prima dello scambio dati, sender e receiver si "stringono la mano": Concordano sull aprire la connessione Concordano su alcuni parametri A livello trasporto, la richiesta del client genera un segmento TCP di richiesta connessione La sottorete di comunicazione può perdere o duplicare i pacchetti Sono necessari protocolli sofisticati per attivare la connessione Apertura connessione (handshake) La richiesta del client è un segmento SYN (SYN bit posto a 1) che indica il numero di sequenza iniziale Se sul server un processo è in attesa di richieste sulla porta destinazione specificata nel segmento il server alloca buffer e variabili per la connessione invia un segmento di controllo SYNACK che contiene SYN bit posto a 1, riscontro per SYN ricevuto, e numero di sequenza iniziale per il server Se non esiste processo in attesa il server invia segmento con RST=1 Il client riceve SYNACK e alloca buffer e variabili per la connessione. Invia ACK con SYN bit posto a 0 (può contenere dati) Ogni segmento con SYN=1 conta come un singolo byte 1

Apertura della connessione client state LISTEN SYNSENT choose init seq num, x send TCP SYN msg received SYNACK(x) indicates server is live; send ACK for SYNACK; this segment may contain client-to-server data SYNbit=1, Seq=x SYNbit=1, Seq=y ACKbit=1; ACKnum=x+1 ACKbit=1, ACKnum=y+1 choose init seq num, y send TCP SYNACK msg, acking SYN received ACK(y) indicates client is live server state LISTEN SYN RCVD TCP 3-way handshake: FSM closed Socket connectionsocket = welcomesocket.accept(); SYN(x) SYNACK(seq=y,ACKnum=x+1) create new socket for communication back to client L listen Socket clientsocket = newsocket("hostname","port number"); SYN(seq=x) SYN rcvd SYN sent ACK(ACKnum=y+1) L SYNACK(seq=y,ACKnum=x+1) ACK(ACKnum=y+1) 2

Chiusura connessione Rilascio asimmetrico: dati in transito potrebbero essere persi Chiusura della connessione Rilascio simmetrico: le due entità devono concordare prima di rilasciare l intera connessione Da A a B: io sono pronto a chiudere, e tu? Da B a A: anch io sono pronto. Da A a B: ok, arrivederci Ogni direzione è rilasciata indipendentemente dall altra: una entità continua a ricevere dati anche dopo aver chiesto la chiusura 3

Chiusura connessione Three way handshake con timeout; non è infallibile ma considerato adeguato Client (chi chiude la connessione) invia segmento di controllo FIN, con FIN bit posto a 1: entra in stato d attesa per ACK (FIN_WAIT_1) ricevuto ACK, rilascia la connessione ed entra in stato d attesa per FIN (FIN_WAIT_2) ricevuto FIN invia ACK ed entra in stato TIME_WAIT Server riceve FIN e risponde con ACK Invia FIN a client e fa partire timer (CLOSE_WAIT) riceve ACK, rilascia la connessione TCP: chiusura connessione client state server state FIN_WAIT_1 FIN_WAIT_2 clientsocket.close() can no longer send but can receive data wait for server close FINbit=1, seq=x ACKbit=1; ACKnum=x+1 can still send data CLOSE_WAIT TIME_WAIT timed wait for 2*max segment lifetime FINbit=1, seq=y ACKbit=1; ACKnum=y+1 can no longer send data LAST_ACK CLOSED CLOSED 4

State CLOSED LISTEN SYN RCVD SYN SENT LISHED FIN WAIT 1 FIN WAIT 2 TIME WAIT CLOSING CLOSE WAIT LAST ACK Description No connection is active or pending The server is waiting for an incoming call A connection request has arrived; wait for ACK The application has started to open a connection The normal data transfer state The application has said it is finished The other side has agreed to release Wait for all packets to die off Both sides have tried to close simultaneously The other side has initiated a release Wait for all packets to die off The states used in the TCP connection management finite state machine. TCP trasferimento affidabile Pipelining dei segmenti ACK cumulativi Timer unico per la ritrasmissione (RFC 6298) Il receiver invia un ACK, che può essere a piggyback di un segmento contenente anche dati Ritrasmissione in seguito a: timeout ACK duplicati 5

Receiver TCP (RFC 1122, RFC 5681) Arrivo di un segmento in ordine, tutti i segmenti già riscontrati: attesa massima di 500 ms di un altro segmento in ordine e invio di ACK (delayed ACK) Arrivo di un segmento in ordine, con numero di sequenza atteso e un segmento in attesa di trasmissione di ACK: invio ACK cumulativo Arrivo di segmento fuori ordine: invio ACK duplicato. Il segmento non viene scartato Arrivo di segmento che chiude un buco nella sequenza dei dati ricevuti, alla base della finestra: invio immediato di ACK cumulativo Sender TCP semplificato No ACK duplicati, no controllo flusso, no controllo congestione Eventi: dati passati dal livello applicativo: TCP crea segmento, lo passa a livello IP. Se non attivo, il timer viene avviato timeout: il TCP ritrasmette il segmento che ha causato l evento di timeout e riavvia il timer arrivo di un riscontro: un riscontro conferma tutti i byte precedenti il byte di riscontro. Se ci sono segmenti non riscontrati, riavvia il timer 6

Sender TCP (semplificato) L NextSeqNum = InitialSeqNum SendBase = InitialSeqNum wait for event ACK received, with ACK field value y data received from application above create segment, seq. #: NextSeqNum pass segment to IP (udt_send) NextSeqNum = NextSeqNum + length(data) if (timer currently not running) start timer timeout if (y > SendBase) { SendBase = y /* SendBase 1: last cumulatively ACKed byte */ if (there are currently not-yet-acked segments) start timer else stop timer } retransmit not-yet-acked segment with smallest seq. # start timer Sender TCP - Ritrasmissione veloce La perdita di segmenti viene dedotta da ACK duplicati: Il sender spesso invia tanti segmenti Se un segmento è perso, ci saranno molti ACK duplicati Al terzo ACK duplicato per lo stesso segmento, il sender deduce che il segmento successivo è andato perso ritrasmissione veloce (fast retransmit): ritrasmissione del segmento prima del timeout 7