Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Tp• D: Tempo di propagazione da trasmettitore e ricevitore• : Tempo di elaborazione del pacchettoTep• : Tempo di propagazione dell’acknowledgeTack• : Tempo di elaborazione dell’acknowledge.Teack
La comunicazione ha un’efficienza che è legata al rapporto fra il tempo di propagazione del pacchetto e il tempo complessivo per fare tutte le operazioni legate al pacchetto. Nell’ipotesi che il tempo di elaborazione sia trascurabile e che l’ack sia molto piccolo l’efficienza può essere approssimata a . Finchè sono nelle brevi distanze Stop and Wait funziona con un’elevata pT +2D efficienza ma se sono su un canale veloce e molto lungo l’efficienza cala molto perchè il RTT (2D) diventa molto significativo rispetto al Tp23.3 Go back N
Per migliorare l’efficienza di Stop and wait si utilizza il protocollo Go back N che trasmette più pacchetti prima di fermarsi ad aspettare la conferma.
numero di pacchetti che trasmetto è dato dalla finestra di trasmissione (W). Dato che trasmetto più pacchetti prima di ricevere l'ack devo tenere in memoria tutti i pacchetti trasmessi, quindi la finestra di trasmissione definisce anche la grandezza della memoria dove allocare i pacchetti. Oltre alla finestra di trasmissione c'è la finestra di ricezione (W), anche questa varia in base alla memoria allocata in ricezione. Le finestre sono delle viste sullo spazio di numerazione, finestra di trasmissione: Finestra di ricezione unitaria (dalla parte del ricevitore): 23.3.1 Come opera Go back N Trasmettitore: - Invia fino a n = PDU, mantenendone salvata una copia nella finestra W - Attiva un solo clock per tutte le n PDU - Si pone in attesa dell'ack - Se scade il timeout prima dell'arrivo dell'ultimo ack ripete la trasmissione di tutte le PDU non ancora confermate. Ricevitore: - Controlla la correttezza della PDU - Controlla il numero disequenza• Se la PDU è corretta invia l'ack• Se la PDU contiene il primo numero di sequenza non ancora ricevuto viene consegnata al livello superiore. 3923.4 Semantica degli ackLa semantica associata all'ack può essere diversa in base al protocollo utilizzato, quindi il trasmettitore e il ricevitore devono mettersi d'accordo preventivamente sulla semantica degli ack.• si notifica la corretta ricezione di tutti i pacchetti con un numero di Ack cumulativo: sequenza inferiore a quello specificato dall'ack (ack(n) significa "ho ricevuto tutto in sequenza fino ad n escluso")• si notifica la corretta ricezione di un singolo pacchetto (ack(n) significa "ho Ack selettivo: ricevuto il pacchetto n")• si notifica la ritrasmissione di un singolo pacchetto (nak(n) significa "ri-Ack negativo: trasmetti il pacchetto n").23.4.1 PiggybackingNelle comunicazioni bidirezionali molto spesso succede che
L'informazione degli ack viene trasportata insieme all'informazione dei dati nei pacchetti che viaggiano in direzione opposta, in alcuni casi l'ack non viene inviato subito ma si aspetta di avere dei dati che viaggiano in direzione opposta.
23.5 Selective repeat
Il protocollo selective repeat usa una finestra di trasmissione e ricezione di dimensioni maggiori di 1 in modo da migliorare le prestazioni, il ricevitore esegue le stesse operazioni che fa con Goback N mentre il ricevitore è più complicato perché deve controllare che la PDU sia corretta e in sequenza, se lo è invia un ack relativo all'ultima PDU ricevuta in sequenza.
Casi di arrivo delle PDU:
- Se è corretta e in sequenza la invia al livello superiore
- Se è corretta, non in sequenza e dentro la finestra la memorizza
- Se è corretta, non in sequenza e fuori dalla finestra la scarta.
Chapter 24
Transmission Control Protocol(TCP)
TCP è il
Il protocollo livello rete più utilizzato con il 95% delle comunicazioni basate su di esso.
Caratteristiche:
- Affidabile
- È un protocollo, cioè prevede che ci siano un trasmettitore e un ricevitore point-to-point
- Trasferimento di dati basato su un flusso di byte
- È di tipo pipeline, cioè con una finestra di dimensione maggiore di 1 e che varia nel tempo. La dimensione è controllata da: fa in modo di non trasmettere più dati di quelli che il ricevitore è disposto a ricevere, dipende dalla finestra di ricezione che in questo caso è dinamica e cambia dinamicamente la finestra di congestione in base a quelle che sono le capacità della rete
- Offre un canale che permette al trasmettitore e al ricevitore di scambiare messaggi contemporaneamente
- È di tipo full duplex, cioè richiede che ci sia un coordinamento tra
trasmetti-connection-oriented, tore e ricevitore, questo è ottenuto tramite una procedura chiamata handshaking che consiste nello scambiare messaggi di controllo prima di iniziare la comunicazione.
Maximum Segment Size, quantità massima di dati che posso mettere in un segmento, è MSS: comunicata all'inizio della comunicazione ed è legata alla (Maximum Transfer Unit), che è MTU la dimensione delle unità dati a livello rete e collegamento.
24.1 Segmento TCP
I segmenti TCP hanno un'intestazione con una grandezza che varia da 20 a 60 byte e che comprende:
- 16 bit per porta sorgente e 16 per porta destinazione
- Numeri di porta: 32 bit
- Numero di sequenza: 32 bit
- Numero di sequenza dell'ack: 4 bit per indicare la lunghezza dell'header in double word, 4 Informazioni di controllo: bit non utilizzati, 6 bit per i flag
- Indica la grandezza della finestra del ricevitore (16 bit)
Finestra di ricezione: 16
bitChecksum:
- 16 bit per eventuali dati urgenti (quasi mai usato).
Flag:
- indica se il campo urg è utilizzato
- U: bit di ack, quando è settato il campo acknowledgement number ha significato (sempre A: settato tranne nel primo pacchetto trasmesso)
- push, dice che il ricevitore deve mandare i dati al livello superiore il prima possibile
- P: reset, dice di resettare la comunicazione e ricominciare da capo
- R: bit di apertura della comunicazione
- S: bit di chiusura della comunicazione.
Il timeout deve essere della giusta durata per non rallentare la comunicazione, TCP utilizza una stima del RTT per decidere il valore ottimale di timeout da utilizzare; Un è una sampleRTT stima di tempo da quando invio un pacchetto a quando ricevo l'ack corrispondente in uno scenario di non ritrasmissione.
Per scegliere il timeout migliore si utilizza la formula: (24.1) -
- EstimatedRTT = (1 - α) EstimatedRTT + α sampleRTT
In TCP se α è vicino a 1 do molto peso agli ultimi valori mentre se è piccolo do molto peso al passato; la formula è una media esponenziale pesata mobile, si usa per ridurre l'effetto dei disturbi sui campioni raccolti, infatti se i pacchetti utilizzati per calcolare l'RTT subiscono delle anomalie potrebbero impiegare più tempo del normale e quindi non devono esser presi in considerazione per calcolare il timeout.
Il timeout non corrisponde al RTT ma è uguale a EstimatedRTT + 4·DevRTT. DevRTT è un margine di sicurezza.
24.3 TCP fast retransmit
TCP non gestisce le trasmissioni solo in base al timeout ma implementa un meccanismo che fa uso degli ack duplicati per ritrasmettere i dati prima del timeout; questo meccanismo anticipa il timeout quando il trasmettitore riceve 3 ack duplicati ritrasmettendo il segmento con il numero
La sequenza più basso.24.4 Controllo di flusso
Il controllo di flusso fa in modo che il trasmettitore non mandi troppi dati al ricevitore per evitare di riempirgli lo spazio che ha a disposizione.
24.5 Handshake
È la fase all'inizio della comunicazione in cui il trasmettitore e il ricevitore si mettono d'accordo su che numeri di sequenza usare e la mMSS. L'handshake di TCP è chiamato handshake a tre vie perché utilizza tre messaggi per essere sicuri sui parametri di comunicazione.
4324.6 Chiusura connessione
La chiusura della connessione viene gestita separatamente, ovvero sia il trasmettitore che il ricevitore possono chiudere il proprio lato della connessione quando non hanno più dati da inviare, ma possono comunque riceverne.
24.7 Controllo di congestione
Il controllo di congestione coinvolge tutta la rete e controlla che non vengano inviati più dati di quelli che la rete può gestire; TCP usa un controllo della congestione di
tipo additive increase fa aumentare lentamente il traffico fino a che non arriva ad un opp-multiplicative decrease, portuno punto di lavoro, e se qualcosa va storto lo riduce velocemente. La finestra di congestione deve avere sempre una dimensione maggiore o uguale alla finestra di trasmissione, viene gestita attraverso tre fasi:- Il trasmettitore comincia con una finestra di trasmissione piccola (1 MSS) e la Slow Start: fa aumentare velocemente per farla arrivare al punto di lavoro ottimale, ogni ack ricevuto la finestra aumenta di 1 MSS; quando si ottiene la prima perdita imposto la finestra a 1 MSS, una variabile pari alla grandezza della finestra più grande che ho raggiunto e una variabile pari alla metà di quella finestra; da qua la finestra aumenta di nuovo ssthresh esponenzialmente fino al valore di ssthresh
- Quando la finestra raggiunge quel valore si passa allo stato di Congestion Avoidance: la finestra non aumenta più esponenzialmente ma
Aumenta di una frazione di MSS ad ogni ack, continua a crescere fino ad un'altra perdita, e poi si ripete tutto. È un meccanismo che permette, quando si ha una perdita rilevata con ackFast Recovery:duplicati, di ripartire dalla soglia si ssthresh e non da 1, così da non avere accelerazioni frenate brusche; mentre se ho una perdita per colpa del timeout riparto da 1 in slow start.
Equità di TCP
Per equità si intende che se in una rete ci sono N utenti ognuno prende della risorsa, TCP1/N garantisce l'equità di banda per ogni connessione, quindi se due host utilizzano l