• Non ci sono risultati.

Transport Layer & TCP/UDP

N/A
N/A
Protected

Academic year: 2021

Condividi "Transport Layer & TCP/UDP"

Copied!
35
0
0

Testo completo

(1)

Transport Layer & TCP/UDP

80 34565

34571

47352

195.7.34.45 136.45.127.12

128.30.52.45

httpd

(2)

Transport Layer Reti di calcolatori

2

Rete Coll. Dati

Fisico

Rete Coll. Dati

Fisico

Interfaccia 3-2 Interfaccia 2-1

Interf. 3-2 Interf. 2-1

p2p (l 3) p2p (l 2)

Rete Coll. Dati

Fisico

Interfaccia 3-2 Interfaccia 2-1

p2p (l 3) p2p (l 2)

router

Trasporto

Interfaccia 4-3

Trasporto

Interfaccia 4-3

p2p (l 4)

(3)

Transport Layer Reti di calcolatori

3

(4)

Transport Layer Reti di calcolatori

4

(5)

Transport Layer Reti di calcolatori

5

(6)

Transport Layer Reti di calcolatori

6

(7)

sd=socket(..)

ripeti

sendto(sd,..)

recvfrom(sd,..)

close(sd) elabora dati

crea dati

sd=socket(..)

ripeti bind(sd,..)

recvfrom(sd,..)

elabora dati

sendto(sd,..)

richieste

risposte

client

server

le richieste sono accodate e servite

in sequenza

Transport Layer

7 Reti di calcolatori

il client deve gestire esplicitamente il fallimento della richiesta dovuto alla perdita del datagram di richiesta o risposta

(8)

sd=socket(..)

ripeti

write(sd,..)

read(sd,..)

close(sd) elabora dati

sd=socket(..)

ripeti bind(sd,..)

sc=accept(sd,..) elabora dati

fork(..)

richieste

risposte

client

server parent

connect(sd,..)

listen(sd,..)

read(sc,..)

write(sc,..) ripeti

close(sc)

server child

Transport Layer

8 Reti di calcolatori

(9)

Transport Layer Reti di calcolatori

9

(10)

Transport Layer Reti di calcolatori

10

  TCP implementa un trasferimento affidabile di un flusso dati

  Il flusso è scomposto in datagram

  I datagram sono inviati al destinatario usando un servizio di rete non affidabile

  I datagram possono essere persi

  I datagram posso arrivare in un ordine diverso da quello di spedizione

  Il contenuto dei datagram si può corrompere

3 4

2 1 3 4 5

Network layer

write(sd,databuf,numbytes)!

send buffer

Transport layer 2

1 2

Network layer

read(sd,databuf,maxbytes)!

receive buffer Transport layer 1

(11)

Transport Layer Reti di calcolatori

11

(12)

Source port Destination port Sequence number

Acnowledgement number

checksum Urgent pointer Window size

Options (0 o più parole a 32 bit) dati (opzionale)

header TCP lenght

F I N Y S N R S T P S H U R G

A C K

max=65535-20-20 Identificano

la connessione

Lunghezza dell’header in parole a 32 bit

(5-15)

0 8 16 24 31

Transport Layer

12 Reti di calcolatori

(13)

Transport Layer Reti di calcolatori

13

(14)

Transport Layer Reti di calcolatori

14

(15)

Transport Layer Reti di calcolatori

15

te m po

host 1 host 2

SYN (SEQ= x )

SYN (SEQ= y ,ACK=x+1) (ACK=y+1)

Initial Sequence Number (host1) Initial Sequence Number (host2)

client server

(16)

Transport Layer Reti di calcolatori

16

  Connessione Telnet fra da 10.6.1.9 a 10.6.1.2 catturata con tcpdump *

  porta client 4548 - porta server 23 (telnet)

* tcpdump -S -n -t \(dst 10.6.1.2 and src 10.6.1.9\) or \(dst 10.6.1.9 and src 10.6.1.2\)

opzioni da negoziare

(es. Max Segment Size MSS) pacchetti senza dati

(17)

Transport Layer Reti di calcolatori

17

(18)

Transport Layer Reti di calcolatori

18

  La connessione è full-duplex e le due direzioni devono essere chiuse indipendentemente

  Se l’ack di un messaggio FIN si perde, l’host mittente chiude comunque la connessione dopo un timeout

te m po

host 1 host 2

FIN (SEQ=x,ACK=z)

(ACK=x+1)

(ACK=v+1)

FIN (SEQ=v,ACK=w)

Chiusura da host1 a host2

Chiusura da host2 a host1

Host 2 può ancora

inviare dati a host1

(19)

Transport Layer Reti di calcolatori

19

  Chiusura Telnet da 10.6.1.9

porta client 4548 - porta server 23 (telnet)

(20)

Transport Layer Reti di calcolatori

20

(21)

Transport Layer Reti di calcolatori

21

(22)

Transport Layer Reti di calcolatori

22

  Quando l’utente batte un tasto in una sessione telnet

  Segmento dal client col carattere battuto

  20IP+20TCP+1byte = 41byte

  Segmento di ack dal server al client

  20IP+20TCP = 40 byte

  Segmento di echo dal server

  20IP+20TCP+1byte = 41byte

  Segmento di ack dal client

  20IP+20TCP = 40 byte

  In totale si userebbero 162 (122) byte in 4 (3) segmenti TCP per 1 carattere!!

si possono unire...

(23)

Transport Layer Reti di calcolatori

23

PSH 0:0 (1) ack 1 PSH 1:1 (1) ack 1

ack 2 PSH 1:1 (1) PSH 2:2 (1) ack 2

ack 3

ack ritardati

I dati di echo sono disponibili velocemente (si riesce a fare piggyback)

host 1 host 2

numeri di sequenza e ack sono relativi

scade il timeout prima che un dato

sia disponibile

200ms

200ms

(24)

Transport Layer Reti di calcolatori

24

PSH 6:6 (1) ack 48 PSH 48:48 (1) ack 7

host 1 host 2

PSH 9:9 (1) ack 51

echo 2 caratteri

disponibili

(25)

Transport Layer Reti di calcolatori

25

1 2 3 4 5 6 7 8 9 10 11 12

offered window (advertized by receiver)

usable window

sent and

ack’ed sent

not ack’ed can send can’t send until

window moves

(26)

Transport Layer Reti di calcolatori

26

vuoto

buffer del ricevente 2k - seq=0 4K

2k

Pieno

2k

2k 1k

ack=2048 win=2048

2k - seq=2048 ack=4096 win=0

ack=4096 win=2048 1k - seq=4096

0 4096

Finestra del mittente

2048 4096

4096

4096 6144

5120 6144

(27)

Transport Layer Reti di calcolatori

27

  Connessione Telnet fra da 10.6.1.9 a 10.6.1.2 catturata con tcpdump porta client 4548 - porta server 23 (telnet)

 

La finestra offerta è di circa 32k e pari alla dimensione del buffer di ricezione

(28)

Transport Layer Reti di calcolatori

28

  Il mittente ha un timeout di attesa dell’ack per i pacchetti spediti

  Se il timeout scade il pacchetto viene ritrasmesso

  Permette di gestire la perdita di pacchetti (non arrivati o arrivati con errori)

errore nel pacchetto viene scartato

seq=1201,200 byte seq=1401,200 byte seq=1601,200 byte

ack=1601

seq=1601,200 byte seq=1801,200 byte

ack=2001

timers

(29)

Transport Layer Reti di calcolatori

29

  TCP utilizza un timeout di attesa dell’ack dopo di che provvede alla ritrasmissione dei dati

  Il problema è determinare il valore del timeout migliore (i ritardi possono essere molto variabili nel tempo sulla

rete)

  Se il timeout è troppo piccolo si fanno ritrasmissioni inutili

  Se il timeout è troppo elevato si avranno ritardi di trasmissione

  Si utilizza un algoritmo di stima del migliore timeout basato sulla

misura del Round-Trip Time (RTT)

(30)

Transport Layer Reti di calcolatori

30

  Per ogni connessione si tiene una stima di RTT, aggiornandola per ogni pacchetto con

  Si stima poi la deviazione media

  E si sceglie

  Ci sono altre soluzioni (es. algoritmo di Karn – nella stima si usano solo i pacchetti non ritrasmessi)

RTT

i

= α RTT

i-1

+(1- α) T

rtt

(pkt

i

) D

i

= α D

i-1

+(1- α) |RTT

i

-T

rtt

(pkt

i

)|

timeout = RTT+4*D

(31)

Transport Layer Reti di calcolatori

31

(32)

Transport Layer Reti di calcolatori

32

  La dimensione della finestra di congestione è adattata dinamicamente

  Cresce se non scade il timeout di trasmissione

  Viene ridotta se scade il timeout di ritrasmissione

trasmissioni dimensione

finestra

soglia timeout

x 2

+ 1

(33)

Transport Layer Reti di calcolatori

33

IP

header UDP

header UDP data 20 bytes 8 bytes

IP datagram

UDP datagram

(34)

Transport Layer Reti di calcolatori

34

Porta sorgente Porta destinazione Lunghezza checksum

dati

16 bit 16 bit

(35)

Transport Layer Reti di calcolatori

35

Riferimenti

Documenti correlati

Interpretando x,y,z come coordinate si dica qual è la mutua posizione dei 3 piani rappresentati dalle equazioni del sistema al variare di k reale. In tal caso il sistema è

[r]

Corso di Laurea Specialistica in Ingegneria Civile Anno Accademico 2010/2011..

Per risolverla osserviamo che la funzione identicamente nulla ` e soluzione dell’equazione ma non del problema di Cauchy.. Corso di Laurea in Ingegneria

segment structure reliable data transfer flow controlX.

segment structure reliable data transfer flow control..

I E possibile utilizzare costanti di tipo stringa (stringhe letterali) scritte ` tra doppio apice e senza scrivere esplicitamente il carattere di fine stringa... Lettura

Numero di porta del destinatario nel segmento inviato dal client al server corrisponde al numero di porta del servizio richiesto (ad es. 80 per HTTP). Numero di porta del mittente