SlideShare a Scribd company logo
1 of 47
Trasporto affidabile (principi) ,[object Object],[object Object]
Trasferimento affidabile (generalità) Mittente (sender) Ricevente (receiver) rdt_send():   chiamata da  “ sopra”, (es.  app.). Dati da inviare udt_send():   chiamata da rdt per trasferire i dati sul canale non affidabile rdt_rcv():   chiamata quando un pacchetto arriva al lato ricezione del canale deliver_data():   invocata da  rdt  per consegnare i dati
Generalità (2) ,[object Object],[object Object],[object Object],[object Object],Evento che causa una transizione Azioni corrispondenti  Stato:  se in questo “stato”, lo stato successivo è determinato solo da evento Stato 1 Stato 2 Evento Azioni
Rdt1.0:  canale affidabile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Rdt2.0:  canale con errori sui bit  (no perdita pacchetti) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
rdt2.0: specifica della FSM FSM mittente FSM ricevente
rdt2.0 in azione (no errori) sender FSM receiver FSM
rdt2.0 in azione (errori) sender FSM receiver FSM
rdt2.0 ha un difetto (flaw) fatale! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Il mittente invia un  pacchetto e aspetta la risposta stop and wait
rdt2.1:(mittente): gestione errori negli ACK/NAK
rdt2.1 (ricevente): gestione errori negli ACK/NAK
rdt2.1: osservazioni ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
rdt2.2: protocollo privo di NAK (NAK-free) ,[object Object],[object Object],[object Object],[object Object],FSM  mittente !
rdt3.0:  canale con errori  e  perdita ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
rdt3.0 mittente Nota:  le ritrasmissioni avvengono alla frequenza del timer
rdt3.0 in azione
rdt3.0 in azione (cont.)
Prestazioni di rdt3.0 ,[object Object],[object Object],[object Object],[object Object],T trasm = 8Kb/pkt 10^9 b/sec = 8 microsec Fatt. Uso  = U =  = 8 microsec 30.016 msec % di tempo mitt.  occupato (busy) = 0.00015
Protocolli con pipeline (pipelined) ,[object Object],[object Object],[object Object],[object Object]
Go-Back-N ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GBN: FSM estesa (mittente) Nota:  timer associato alla variabile  base
GBN: FSM estesa (ricevente) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GBN in azione
Selective Repeat ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Selective repeat: finestre sender, receiver
Selective repeat (cont.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Mittente Ricevente
Selective repeat in azione
Selective repeat:  dilemma ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP: generalità  RFCs: 793, 1122, 1323, 2018, 2581 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Struttura dei segmenti TCP URG: dati urgnti  (di solito non usato) ACK: # ACK valido PSH: push data now (di solito non usato) RST, SYN, FIN: Controllo conness. (comandi di inst.,  abbattimento) # byte  rcvr disposto ad accettare Si contano i byte  di dati (non i segmenti!) Internet checksum (come in UDP) source port # dest port # 32 bit Dati  (lunghezza variabile) sequence number acknowledgement number rcvr window size ptr urgent data checksum F S R P A U head len not used Opzioni (lunghezza variabile)
# seq. e ACK in TCP  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Host A Host B Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80 L’utente digita ‘ C’ host dà ACK di  ricezione host dà ACK di  ricezione, trasmette ‘ C’ Semplice scenario telnet Tempo
TCP: trasferimento affidabile Versione semplificata del sender, assumendo: wait for  event Attesa evento evento:  dati da  applicazione evento:  timeout per il  segmento con # seq y evento:  ricevuto ACK, con # ACK y Crea, invia segmento Ritrasmetti il segmento Processamento ACK ,[object Object],[object Object]
TCP – generazione degli ACK  [RFC 1122, RFC 2581] Evento Arrivo segmento in ordine,  nessun buco, tutti i segmenti  precedeni confermati Arrivo segmento in ordine,  nessun buco, un ACK ritardato in attesa Arrivo segmento fuori ordine, # seq maggiore di quello atteso, individuato buco Arrivo segmento che riempie un buco parzialmente o totalmente Azione del ricevente ACK ritardato. Attendi il prossimo  segmento per al più 500ms.  Se non arriva invia ACK Manda subito un ACK cumulativo Manda ACK duplicato, con numero sequenza del prossimo byte atteso ACK immediato se il segmento inizia all’estremità inferiore del buco
TCP: possibili casi di ritrasmissione Host A Seq=100, 20 bytes data ACK=100 Seq=92 timeout Scenario2: timeout  prematuro, ACK cumulativi Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=100 timeout ACK=120 Host A Seq=92, 8 bytes data ACK=100 loss timeout Tempo Scenario 1: ACK perso Host B X Seq=92, 8 bytes data ACK=100 Tempo
TCP: Controllo del flusso ,[object Object],[object Object],[object Object],Mitt. non riempie i buffer del ricevente inviando troppi dati troppo velocemente Buffering in ricezione RcvBuffer   = dim. del buffer di ricezione TCP RcvWindow  = spazio disponibile (spare) nel Buffer   Controllo di flusso
TCP: Round Trip Time e Timeout ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Generalità sul Controllo della Congestione ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cause/costi della congestione: scenario 1   ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cause/costi della congestione: scenario 2 ,[object Object],[object Object]
Cause/costi della congestione: scenario 2   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object], in  out =  in  out >  in  out
Cause/costi congestione: scenario 3   ,[object Object],[object Object],[object Object],D:   che succede se il traffico offerto da B cresce a dismisura?
Cause/costi congestione: scenario 3  (cont.) ,[object Object],[object Object]
Controllo della congestione in TCP ,[object Object],[object Object],[object Object],Congwin throughput =   w * MSS   RTT   Byte/sec
Controllo della congestione in TCP (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP: Slow start ,[object Object],[object Object],Iniz.: Congwin = 1 for (each segment ACKed) Congwin=Congwin++ until (loss event OR CongWin > threshold) Host A Un segmento RTT Host B Due segmenti Quattro segmenti Algoritmo Slowstart Tempo
TCP: controllo della congestione /* slowstart is over  */  /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart Controllo congestione 1 1: TCP Reno non fa slowstart dopo Ricezione di tre ACK duplicati
perché TCP è equo? ,[object Object],[object Object],[object Object],R R Suddivisione equa della banda Throughput connessione 1 Throughput connessione 2 Controllo congestione: incremento additivo Perdita: decr. Finestra di un fattore 2 Controllo congestione: incremento additivo Perdita: decr. Finestra di un fattore 2

More Related Content

Similar to Tcp

Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp IpLumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp IpLuca Astori
 
3 Livello Trasporto
3 Livello Trasporto3 Livello Trasporto
3 Livello Trasportoacapone
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile TeoriaMajong DevJfu
 
13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network ComandiMauro Ferrigno
 
4 Protocollo Ip
4 Protocollo Ip4 Protocollo Ip
4 Protocollo Ipacapone
 
Il protocollo can e l'integrazione con vnt™
Il protocollo can e l'integrazione con vnt™Il protocollo can e l'integrazione con vnt™
Il protocollo can e l'integrazione con vnt™Antonio Mangiardi
 
5 Protocolli Trasporto Parte2
5 Protocolli Trasporto Parte25 Protocolli Trasporto Parte2
5 Protocolli Trasporto Parte2Majong DevJfu
 
Clink
ClinkClink
Clinkh4f
 
Gsm control
Gsm controlGsm control
Gsm controlaaa bbbb
 
10 Reti Accesso
10 Reti Accesso10 Reti Accesso
10 Reti Accessoacapone
 

Similar to Tcp (16)

Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp IpLumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
 
3 Livello Trasporto
3 Livello Trasporto3 Livello Trasporto
3 Livello Trasporto
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria
 
13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network Comandi
 
Elaborato
ElaboratoElaborato
Elaborato
 
4 Protocollo Ip
4 Protocollo Ip4 Protocollo Ip
4 Protocollo Ip
 
Il protocollo can e l'integrazione con vnt™
Il protocollo can e l'integrazione con vnt™Il protocollo can e l'integrazione con vnt™
Il protocollo can e l'integrazione con vnt™
 
5 Protocolli Trasporto Parte2
5 Protocolli Trasporto Parte25 Protocolli Trasporto Parte2
5 Protocolli Trasporto Parte2
 
Clink
ClinkClink
Clink
 
DataLink LAN
DataLink LANDataLink LAN
DataLink LAN
 
Gsm control
Gsm controlGsm control
Gsm control
 
10 Reti Accesso
10 Reti Accesso10 Reti Accesso
10 Reti Accesso
 
IsoOsi
IsoOsiIsoOsi
IsoOsi
 
Car accident detector
Car accident detectorCar accident detector
Car accident detector
 
Heartbleed - OpenSSL Bug
Heartbleed - OpenSSL BugHeartbleed - OpenSSL Bug
Heartbleed - OpenSSL Bug
 
Kasiski
KasiskiKasiski
Kasiski
 

Recently uploaded

Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
San Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptxSan Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptxMartin M Flynn
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.giuliofiorerm
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 

Recently uploaded (8)

Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
San Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptxSan Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptx
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 

Tcp

  • 1.
  • 2. Trasferimento affidabile (generalità) Mittente (sender) Ricevente (receiver) rdt_send(): chiamata da “ sopra”, (es. app.). Dati da inviare udt_send(): chiamata da rdt per trasferire i dati sul canale non affidabile rdt_rcv(): chiamata quando un pacchetto arriva al lato ricezione del canale deliver_data(): invocata da rdt per consegnare i dati
  • 3.
  • 4.
  • 5.
  • 6. rdt2.0: specifica della FSM FSM mittente FSM ricevente
  • 7. rdt2.0 in azione (no errori) sender FSM receiver FSM
  • 8. rdt2.0 in azione (errori) sender FSM receiver FSM
  • 9.
  • 11. rdt2.1 (ricevente): gestione errori negli ACK/NAK
  • 12.
  • 13.
  • 14.
  • 15. rdt3.0 mittente Nota: le ritrasmissioni avvengono alla frequenza del timer
  • 17. rdt3.0 in azione (cont.)
  • 18.
  • 19.
  • 20.
  • 21. GBN: FSM estesa (mittente) Nota: timer associato alla variabile base
  • 22.
  • 24.
  • 25. Selective repeat: finestre sender, receiver
  • 26.
  • 28.
  • 29.
  • 30. Struttura dei segmenti TCP URG: dati urgnti (di solito non usato) ACK: # ACK valido PSH: push data now (di solito non usato) RST, SYN, FIN: Controllo conness. (comandi di inst., abbattimento) # byte rcvr disposto ad accettare Si contano i byte di dati (non i segmenti!) Internet checksum (come in UDP) source port # dest port # 32 bit Dati (lunghezza variabile) sequence number acknowledgement number rcvr window size ptr urgent data checksum F S R P A U head len not used Opzioni (lunghezza variabile)
  • 31.
  • 32.
  • 33. TCP – generazione degli ACK [RFC 1122, RFC 2581] Evento Arrivo segmento in ordine, nessun buco, tutti i segmenti precedeni confermati Arrivo segmento in ordine, nessun buco, un ACK ritardato in attesa Arrivo segmento fuori ordine, # seq maggiore di quello atteso, individuato buco Arrivo segmento che riempie un buco parzialmente o totalmente Azione del ricevente ACK ritardato. Attendi il prossimo segmento per al più 500ms. Se non arriva invia ACK Manda subito un ACK cumulativo Manda ACK duplicato, con numero sequenza del prossimo byte atteso ACK immediato se il segmento inizia all’estremità inferiore del buco
  • 34. TCP: possibili casi di ritrasmissione Host A Seq=100, 20 bytes data ACK=100 Seq=92 timeout Scenario2: timeout prematuro, ACK cumulativi Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=100 timeout ACK=120 Host A Seq=92, 8 bytes data ACK=100 loss timeout Tempo Scenario 1: ACK perso Host B X Seq=92, 8 bytes data ACK=100 Tempo
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46. TCP: controllo della congestione /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart Controllo congestione 1 1: TCP Reno non fa slowstart dopo Ricezione di tre ACK duplicati
  • 47.