Esercizi di teoria.
Lista di formule generali per risolvere gli esercizi.
Legenda
B W Banda (bps) B W s → d Banda dalla sorgente alla destinazione (bps) B W d → s Banda dalla destinazione alla sorgente (bps) B W e Banda effettiva (bps) \begin{array}{ll}
BW & \text{Banda (bps)}
\newline
BW_{s \to d} & \text{Banda dalla sorgente alla destinazione (bps)}
\newline
BW_{d \to s} & \text{Banda dalla destinazione alla sorgente (bps)}
\newline
BW_e & \text{Banda effettiva (bps)}
\end{array} B W B W s → d B W d → s B W e Banda (bps) Banda dalla sorgente alla destinazione (bps) Banda dalla destinazione alla sorgente (bps) Banda effettiva (bps)
Legenda
T p Ritardo di propagazione (s) T t f Ritardo di trasmissione frame (s) T t a Ritardo di trasmissione ACK (s) T e Ritardo dovuto ad errori (s) R T T Round Trip Time (s) T t Tempo totale \begin{array}{ll}
T_p & \text{Ritardo di propagazione (s)}
\newline
T_{tf} & \text{Ritardo di trasmissione frame (s)}
\newline
T_{ta} & \text{Ritardo di trasmissione ACK (s)}
\newline
T_{e} & \text{Ritardo dovuto ad errori (s)}
\newline
RTT & \text{Round Trip Time (s)}
\newline
T_{t} & \text{Tempo totale}
\end{array} T p T t f T t a T e RTT T t Ritardo di propagazione (s) Ritardo di trasmissione frame (s) Ritardo di trasmissione ACK (s) Ritardo dovuto ad errori (s) Round Trip Time (s) Tempo totale
Legenda
I Intestazione (bit) P Payload (bit) L Perdita (percentuale) t Timer (s) W Finestra (pacchetti) N f Numero di frame effettivo in una finestra (pacchetti) \begin{array}{ll}
I & \text{Intestazione (bit)}
\newline
P & \text{Payload (bit)}
\newline
L & \text{Perdita (percentuale)}
\newline
t & \text{Timer (s)}
\newline
W & \text{Finestra (pacchetti)}
\newline
N_f & \text{Numero di frame effettivo in una finestra (pacchetti)}
\end{array} I P L t W N f Intestazione (bit) Payload (bit) Perdita (percentuale) Timer (s) Finestra (pacchetti) Numero di frame effettivo in una finestra (pacchetti)
Tempi senza errori
T p = Lunghezza da percorrere Velocit a ˋ del segnale T t f = I + P B W s → d T t a = I B W d → s R T T = 2 ⋅ T p T t = R T T + T t f + T t a T_p = \frac{\text{Lunghezza da percorrere}}{\text{Velocità del segnale}}
\newline \space
\newline
T_{tf} = \frac{I + P}{BW_{s \to d}}
\qquad
T_{ta} = \frac{I}{BW_{d \to s}}
\newline \space
\newline
RTT = 2 \cdot T_p
\newline \space
\newline
T_{t} = RTT + T_{tf} + T_{ta} T p = Velocit a ˋ del segnale Lunghezza da percorrere T t f = B W s → d I + P T t a = B W d → s I RTT = 2 ⋅ T p T t = RTT + T t f + T t a
Tempi in presenza di errori
T e = 2 ⋅ L ⋅ t T t = R T T + T t f + T t a + T e \begin{array}{ll}
T_e = 2 \cdot L \cdot t
\newline \space
\newline
T_{t} = RTT + T_{tf} + T_{ta} + T_e
\end{array} T e = 2 ⋅ L ⋅ t T t = RTT + T t f + T t a + T e
Banda effettiva
B W e = P T t B W e = P R T T + T t f + T t a + T e B W e = P 2 ⋅ T p + I + P B W s → d + I B W d → s + 2 ⋅ L ⋅ t BW_e = \frac{P}{T_t}
\newline \space
\newline
BW_e = \frac{P}{RTT + T_{tf} + T_{ta} + T_e}
\newline \space
\newline
BW_e = \frac{P}{2 \cdot T_p + \frac{I + P}{BW_{s \to d}} + \frac{I}{BW_{d \to s}} + 2 \cdot L \cdot t} B W e = T t P B W e = RTT + T t f + T t a + T e P B W e = 2 ⋅ T p + B W s → d I + P + B W d → s I + 2 ⋅ L ⋅ t P
Banda effettiva con finestra (Go-Back-N)
N f = R T T T t f { B W e = W ⋅ P T t se W ≤ N f B W e = ⌊ N f ⌋ ⋅ P T t se W > N f \begin{array}{ll}
N_f = \frac{RTT}{T_{tf}}
\end{array}
\newline \space
\newline
\begin{cases}
BW_e = \frac{W \cdot P}{T_t} & \text{se } W \leq N_f
\newline \space
\newline
BW_e = \frac{\lfloor N_f \rfloor \cdot P}{T_t} & \text{se } W > N_f
\end{cases} N f = T t f RTT ⎩ ⎨ ⎧ B W e = T t W ⋅ P B W e = T t ⌊ N f ⌋ ⋅ P se W ≤ N f se W > N f
Protocollo stop-and-wait
Un protocollo stop-and-wait è un protocollo di comunicazione che prevede che il mittente invii un pacchetto e attenda la ricezione di un ACK prima di inviare il pacchetto successivo.
Schema
Loading diagram...
Esercizio 1
Banda ( B W ) = 8 Mbps = 8 ⋅ 1 0 6 bps Ritardo di propagazione ( T p ) = 10 ms = 1 0 − 2 s Intestazione ( I ) = 10 byte = 80 bit Banda effettiva ( B W e ) = 5 Mbps = 5 ⋅ 1 0 6 bps Timer ( t ) = 100 ms = 1 0 − 1 s Perdita ( L ) = 0.01 \begin{array}{lll}
\text{Banda}(BW) &= 8 \text{ Mbps} &= 8 \cdot 10^6 \text{ bps}
\newline
\text{Ritardo di propagazione}(T_p) &= 10 \text{ ms} &= 10^{-2} \text{ s}
\newline
\text{Intestazione}(I) &= 10 \text{ byte} &= 80 \text{ bit}
\newline
\text{Banda effettiva}(BW_e) &= 5 \text{ Mbps} &= 5 \cdot 10^6 \text{ bps}
\newline
\text{Timer}(t) &= 100 \text{ ms} &= 10^{-1} \text{ s}
\newline
\text{Perdita}(L) &= 0.01
\end{array} Banda ( B W ) Ritardo di propagazione ( T p ) Intestazione ( I ) Banda effettiva ( B W e ) Timer ( t ) Perdita ( L ) = 8 Mbps = 10 ms = 10 byte = 5 Mbps = 100 ms = 0.01 = 8 ⋅ 1 0 6 bps = 1 0 − 2 s = 80 bit = 5 ⋅ 1 0 6 bps = 1 0 − 1 s
Ritardo di trasmissione frame ( T t f ) = ? Ritardo di trasmissione ACK ( T t a ) = ? Dimensione Payload ( P ) = ? \begin{array}{ll}
\text{Ritardo di trasmissione frame}(T_{tf}) &= \text{ ?}
\newline
\text{Ritardo di trasmissione ACK}(T_{ta}) &= \text{ ?}
\newline
\text{Dimensione Payload}(P) &= \text{ ?}
\end{array} Ritardo di trasmissione frame ( T t f ) Ritardo di trasmissione ACK ( T t a ) Dimensione Payload ( P ) = ? = ? = ?
B W e = = P R T T + T t f + T t a + L ⋅ 2 ⋅ t = = P 2 ⋅ T p + I + P B W + I B W + L ⋅ 2 ⋅ t \begin{array}{lll}
& BW_e &=
\newline
\newline
=& \frac{P}{RTT + T_{tf} + T_{ta} + L \cdot 2 \cdot t} &=
\newline
\newline
=& \frac{P}{2 \cdot T_p + \frac{I + P}{BW} + \frac{I}{BW} + L \cdot 2 \cdot t}
\end{array} = = B W e RTT + T t f + T t a + L ⋅ 2 ⋅ t P 2 ⋅ T p + B W I + P + B W I + L ⋅ 2 ⋅ t P = =
Ricavare P
B W e ( 2 ⋅ T p + I + P B W + I B W + L ⋅ 2 ⋅ t ) = P B W e ⋅ B W ( 2 ⋅ T p + I + P B W + I B W + L ⋅ 2 ⋅ t ) = B W ⋅ P B W e ( B W ⋅ 2 ⋅ T p + I + P + I + B W ⋅ L ⋅ 2 ⋅ t ) = B W ⋅ P B W e ⋅ P + 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) = B W ⋅ P 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) = B W ⋅ P − B W e ⋅ P 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) = ( B W − B W e ) ⋅ P 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) B W − B W e = P 10 ⋅ 1 0 6 ( 8 ⋅ 1 0 4 + 80 + 8 ⋅ 1 0 3 ) 3 ⋅ 1 0 6 = P \begin{array}{ll}
BW_e(2 \cdot T_p + \frac{I + P}{BW} + \frac{I}{BW} + L \cdot 2 \cdot t) &= P
\newline
BW_e \cdot BW(2 \cdot T_p + \frac{I + P}{BW} + \frac{I}{BW} + L \cdot 2 \cdot t) &= BW \cdot P
\newline
BW_e ( BW \cdot 2 \cdot T_p + I + P + I + BW \cdot L \cdot 2 \cdot t) &= BW \cdot P
\newline
BW_e \cdot P + 2 \cdot BW_e ( BW \cdot T_p + I + BW \cdot L \cdot t) &= BW \cdot P
\newline
2 \cdot BW_e ( BW \cdot T_p + I + BW \cdot L \cdot t) &= BW \cdot P - BW_e \cdot P
\newline
2 \cdot BW_e ( BW \cdot T_p + I + BW \cdot L \cdot t) &= (BW - BW_e) \cdot P
\newline
\frac{2 \cdot BW_e ( BW \cdot T_p + I + BW \cdot L \cdot t)}{BW - BW_e} &= P
\newline
\frac{10 \cdot 10^6 ( 8 \cdot 10^4 + 80 + 8 \cdot 10^3)}{3 \cdot 10^6} &= P
\end{array} B W e ( 2 ⋅ T p + B W I + P + B W I + L ⋅ 2 ⋅ t ) B W e ⋅ B W ( 2 ⋅ T p + B W I + P + B W I + L ⋅ 2 ⋅ t ) B W e ( B W ⋅ 2 ⋅ T p + I + P + I + B W ⋅ L ⋅ 2 ⋅ t ) B W e ⋅ P + 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) B W − B W e 2 ⋅ B W e ( B W ⋅ T p + I + B W ⋅ L ⋅ t ) 3 ⋅ 1 0 6 10 ⋅ 1 0 6 ( 8 ⋅ 1 0 4 + 80 + 8 ⋅ 1 0 3 ) = P = B W ⋅ P = B W ⋅ P = B W ⋅ P = B W ⋅ P − B W e ⋅ P = ( B W − B W e ) ⋅ P = P = P
P = 293600 bit P = 36700 byte P = 293600 \text{ bit}
\newline
P = 36700 \text{ byte} P = 293600 bit P = 36700 byte
Esercizio 2
Banda ( B W ) = 80 Mbps = 8 ⋅ 1 0 7 bps Ritardo di propagazione ( T p ) = 10 ms = 1 0 − 2 s Intestazione ( I ) = 100 byte = 800 bit Payload ( P ) = 900 byte = 7200 bit ACK ( A ) = 200 byte = 1600 bit Timer ( t ) = 200 ms = 2 ⋅ 1 0 − 1 s Perdita andata ( L s → d ) = 0.01 Perdita ritorno ( L d → s ) = 0.02 \begin{array}{lll}
\text{Banda}(BW) &= 80 \text{ Mbps} &= 8 \cdot 10^7 \text{ bps}
\newline
\text{Ritardo di propagazione}(T_p) &= 10 \text{ ms} &= 10^{-2} \text{ s}
\newline
\text{Intestazione}(I) &= 100 \text{ byte} &= 800 \text{ bit}
\newline
\text{Payload}(P) &= 900 \text{ byte} &= 7200 \text{ bit}
\newline
\text{ACK}(A) &= 200 \text{ byte} &= 1600 \text{ bit}
\newline
\text{Timer}(t) &= 200 \text{ ms} &= 2 \cdot 10^{-1} \text{ s}
\newline
\text{Perdita andata}(L_{s \to d}) &= 0.01
\newline
\text{Perdita ritorno}(L_{d \to s}) &= 0.02
\end{array} Banda ( B W ) Ritardo di propagazione ( T p ) Intestazione ( I ) Payload ( P ) ACK ( A ) Timer ( t ) Perdita andata ( L s → d ) Perdita ritorno ( L d → s ) = 80 Mbps = 10 ms = 100 byte = 900 byte = 200 byte = 200 ms = 0.01 = 0.02 = 8 ⋅ 1 0 7 bps = 1 0 − 2 s = 800 bit = 7200 bit = 1600 bit = 2 ⋅ 1 0 − 1 s
Banda effettiva ( B W e ) = ? \begin{array}{ll}
\text{Banda effettiva}(BW_e) &= \text{ ?}
\end{array} Banda effettiva ( B W e ) = ?
T e = ( L s → d + L d → s ) ⋅ t = ( 0.01 + 0.02 ) ⋅ 2 ⋅ 1 0 − 1 = 6 ⋅ 1 0 − 3 s T t = R T T + T t f + T t a + T e = 2 ⋅ T p + I + P B W + I + A B W + T e = ( 20 + 6 ) ⋅ 1 0 − 3 + 800 + 7200 + 800 + 1600 8 ⋅ 1 0 7 = 2.613 ⋅ 1 0 − 2 s \begin{array}{llll}
T_e &= (L_{s \to d} + L_{d \to s}) \cdot t &= (0.01 + 0.02) \cdot 2 \cdot 10^{-1} &= 6 \cdot 10^{-3} \text{ s}
\newline
\newline
T_t &= RTT + T_{tf} + T_{ta} + T_e &= 2 \cdot T_p + \frac{I + P}{BW} + \frac{I + A}{BW} + T_e
\newline
&= (20 + 6) \cdot 10^{-3} + \frac{800 + 7200 + 800 + 1600}{8 \cdot 10^7} &= 2.613 \cdot 10^{-2} \text{ s}
\end{array} T e T t = ( L s → d + L d → s ) ⋅ t = RTT + T t f + T t a + T e = ( 20 + 6 ) ⋅ 1 0 − 3 + 8 ⋅ 1 0 7 800 + 7200 + 800 + 1600 = ( 0.01 + 0.02 ) ⋅ 2 ⋅ 1 0 − 1 = 2 ⋅ T p + B W I + P + B W I + A + T e = 2.613 ⋅ 1 0 − 2 s = 6 ⋅ 1 0 − 3 s
Ricavare BWe
B W e = P T t B W e = 7200 2.613 ⋅ 1 0 − 2 B W e ≈ 2.76 ⋅ 1 0 5 bps = 276 Kbps \begin{array}{ll}
BW_e &= \frac{P}{T_t}
\newline
\newline
BW_e &= \frac{7200}{2.613 \cdot 10^{-2}}
\newline
\newline
BW_e &\approx 2.76 \cdot 10^5 \text{ bps} &= 276 \text{ Kbps}
\end{array} B W e B W e B W e = T t P = 2.613 ⋅ 1 0 − 2 7200 ≈ 2.76 ⋅ 1 0 5 bps = 276 Kbps
Protocollo go back n
Un protocollo go back n è un protocollo di comunicazione che prevede che il mittente invii un pacchetto certo numero di pacchetti e attenda la ricezione di un ACK prima di inviarne un altro. In caso di perdita di un pacchetto, il mittente invia nuovamente tutti i pacchetti successivi a quello perso.
Schema
Loading diagram...
Esercizio 1
Ritardo di propagazione ( T p ) = 10 ms = 1 0 − 2 s Banda ( B W ) = 100 Mbps = 1 0 8 bps Intestazione ( I ) = 100 byte = 800 bit Dimensione payload ( P ) = 1000 byte = 8000 bit Window ( W ) = 20 \begin{array}{lll}
\text{Ritardo di propagazione}(T_p) &= 10 \text{ ms} &= 10^{-2} \text{ s}
\newline
\text{Banda}(BW) &= 100 \text{ Mbps} &= 10^8 \text{ bps}
\newline
\text{Intestazione}(I) &= 100 \text{ byte} &= 800 \text{ bit}
\newline
\text{Dimensione payload}(P) &= 1000 \text{ byte} &= 8000 \text{ bit}
\newline
\text{Window}(W) &= 20
\end{array} Ritardo di propagazione ( T p ) Banda ( B W ) Intestazione ( I ) Dimensione payload ( P ) Window ( W ) = 10 ms = 100 Mbps = 100 byte = 1000 byte = 20 = 1 0 − 2 s = 1 0 8 bps = 800 bit = 8000 bit
Lunghezza di banda effettiva ( B W e ) = ? \text{Lunghezza di banda effettiva}(BW_e) = \text{ ?} Lunghezza di banda effettiva ( B W e ) = ?
Trasferimento frame ( T t f ) = I + P B W = 800 + 8000 1 0 8 = 8.8 ⋅ 1 0 − 5 s Trasferimento ACK ( T t a ) = I B W = 800 1 0 8 = 8 ⋅ 1 0 − 6 s Numero di frame in R T T = 2 ⋅ T p T f = 2 ⋅ 1 0 − 2 8.8 ⋅ 1 0 − 5 ≈ 227.27 \begin{array}{lll}
\text{Trasferimento frame}(T_{tf}) &= \frac{I + P}{BW} &= \frac{800 + 8000}{10^8} &= 8.8 \cdot 10^{-5} \text{ s}
\newline
\newline
\text{Trasferimento ACK}(T_{ta}) &= \frac{I}{BW} &= \frac{800}{10^8} &= 8 \cdot 10^{-6} \text{ s}
\newline
\newline
\text{Numero di frame in } RTT &= \frac{2 \cdot T_p}{T_f} &= \frac{2 \cdot 10^{-2}}{8.8 \cdot 10^{-5}} &\approx 227.27
\end{array} Trasferimento frame ( T t f ) Trasferimento ACK ( T t a ) Numero di frame in RTT = B W I + P = B W I = T f 2 ⋅ T p = 1 0 8 800 + 8000 = 1 0 8 800 = 8.8 ⋅ 1 0 − 5 2 ⋅ 1 0 − 2 = 8.8 ⋅ 1 0 − 5 s = 8 ⋅ 1 0 − 6 s ≈ 227.27
Ricavare BWe
Poiché il numero di frame che sarebbe possibile inviare nell'RTT è maggiore o uguale alla finestra massima stabilita, prendiamo in considerazione quella: 20.
B W e = P ⋅ W T t = P ⋅ W 2 ⋅ T p + T t f + T t a B W e = 8000 ⋅ 20 2 ⋅ 1 0 − 2 + 8.8 ⋅ 1 0 − 5 + 8 ⋅ 1 0 − 6 B W e ≈ 8 ⋅ 1 0 6 bps = 8 Mbps \begin{array}{lll}
BW_e &= \frac{P \cdot W}{T_t} &= \frac{P \cdot W}{2 \cdot T_p + T_{tf} + T_{ta}}
\newline
\newline
BW_e &= \frac{8000 \cdot 20}{2 \cdot 10^{-2} + 8.8 \cdot 10^{-5} + 8 \cdot 10^{-6}}
\newline
\newline
BW_e &\approx 8 \cdot 10^6 \text{ bps} &= 8 \text{ Mbps}
\end{array} B W e B W e B W e = T t P ⋅ W = 2 ⋅ 1 0 − 2 + 8.8 ⋅ 1 0 − 5 + 8 ⋅ 1 0 − 6 8000 ⋅ 20 ≈ 8 ⋅ 1 0 6 bps = 2 ⋅ T p + T t f + T t a P ⋅ W = 8 Mbps
Esercizio 2
Window ( W ) = 5 Band Width ( B W ) = 12 Mbit/s = 12 ⋅ 1 0 6 bit/s Intestazione ( I ) = 100 byte = 800 bit PayLoad ( P ) = 900 byte = 7200 bit Lunghezza canale ( L ) = 100 km = 1 0 5 m Velocit a ˋ del segnale ( V ) = 200000 km/s = 2 ⋅ 1 0 8 m/s \begin{array}{lll}
\text{Window}(W) &= 5
\newline
\text{Band Width}(BW) &= 12 \text{ Mbit/s} &= 12 \cdot 10^6 \text{ bit/s}
\newline
\text{Intestazione}(I) &= 100 \text{ byte} &= 800 \text{ bit}
\newline
\text{PayLoad}(P) &= 900 \text{ byte} &= 7200 \text{ bit}
\newline
\text{Lunghezza canale}(L) &= 100 \text{ km} &= 10^5 \text{ m}
\newline
\text{Velocità del segnale}(V) &= 200000 \text{ km/s} &= 2 \cdot 10^8 \text{ m/s}
\end{array} Window ( W ) Band Width ( B W ) Intestazione ( I ) PayLoad ( P ) Lunghezza canale ( L ) Velocit a ˋ del segnale ( V ) = 5 = 12 Mbit/s = 100 byte = 900 byte = 100 km = 200000 km/s = 12 ⋅ 1 0 6 bit/s = 800 bit = 7200 bit = 1 0 5 m = 2 ⋅ 1 0 8 m/s
Lunghezza di banda effettiva ( B W e ) = ? \text{Lunghezza di banda effettiva}(BW_e) = \text{ ?} Lunghezza di banda effettiva ( B W e ) = ?
T p = L V = 1 0 5 2 ⋅ 1 0 8 = 5 ⋅ 1 0 − 4 s T t f = I + P B W = 800 + 7200 12 ⋅ 1 0 6 ≈ 6 ⋅ 1 0 − 4 s T t a = I B W = 800 12 ⋅ 1 0 6 ≈ 6 ⋅ 1 0 − 5 s T t = 2 ⋅ T p + T t g + T t a = 1 0 − 3 + 6.6 ⋅ 1 0 − 4 = 1.66 ⋅ 1 0 − 3 s N f = ⌊ 2 ⋅ T p T t f ⌋ = ⌊ 1 0 − 3 6 ⋅ 1 0 − 4 ⌋ ≈ ⌊ 1.6 ⌋ = 1 \begin{array}{llll}
T_p &= \frac{L}{V} &= \frac{10^5}{2 \cdot 10^8} &= 5 \cdot 10^{-4} \text{ s}
\newline
\newline
T_{tf} &= \frac{I + P}{BW} &= \frac{800 + 7200}{12 \cdot 10^6} &\approx 6 \cdot 10^{-4} \text{ s}
\newline
\newline
T_{ta} &= \frac{I}{BW} &= \frac{800}{12 \cdot 10^6} &\approx 6 \cdot 10^{-5} \text{ s}
\newline
\newline
T_t &= 2 \cdot T_p + T_{tg} + T_{ta} &= 10^{-3} + 6.6 \cdot 10^{-4} &= 1.66 \cdot 10^{-3} \text{ s}
\newline
\newline
N_f &= \left\lfloor \frac{2 \cdot T_p}{T_{tf}} \right\rfloor &= \left\lfloor \frac{10^{-3}}{6 \cdot 10^{-4}} \right\rfloor &\approx \lfloor 1.6 \rfloor = 1
\end{array} T p T t f T t a T t N f = V L = B W I + P = B W I = 2 ⋅ T p + T t g + T t a = ⌊ T t f 2 ⋅ T p ⌋ = 2 ⋅ 1 0 8 1 0 5 = 12 ⋅ 1 0 6 800 + 7200 = 12 ⋅ 1 0 6 800 = 1 0 − 3 + 6.6 ⋅ 1 0 − 4 = ⌊ 6 ⋅ 1 0 − 4 1 0 − 3 ⌋ = 5 ⋅ 1 0 − 4 s ≈ 6 ⋅ 1 0 − 4 s ≈ 6 ⋅ 1 0 − 5 s = 1.66 ⋅ 1 0 − 3 s ≈ ⌊ 1.6 ⌋ = 1
Ricavare BWe
Poiché il numero di frame che è possibile inviare nell'RTT è minore della finestra massima stabilita, prendiamo in considerazione il più piccolo: 1.
B W e = P ⋅ 1 T t B W e = 7200 ⋅ 1 1.66 ⋅ 1 0 − 3 B W e ≈ 4.33 ⋅ 1 0 6 bps = 4.33 Mbps \begin{array}{lll}
BW_e &= \frac{P \cdot 1}{T_t}
\newline
\newline
BW_e &= \frac{7200 \cdot 1}{1.66 \cdot 10^{-3}}
\newline
\newline
BW_e &\approx 4.33 \cdot 10^6 \text{ bps} &= 4.33 \text{ Mbps}
\end{array} B W e B W e B W e = T t P ⋅ 1 = 1.66 ⋅ 1 0 − 3 7200 ⋅ 1 ≈ 4.33 ⋅ 1 0 6 bps = 4.33 Mbps
Esercizio 3
Ritardo di propagazione ( T p ) = 100 ms = 1 0 − 1 s Band Width andata ( B W s → d ) = 1 Mbit/s = 1 0 6 bit/s Band Width ritorno ( B W d → s ) = 10 Kbit/s = 1 0 4 bit/s Intestazione ( I ) = 1000 byte = 8000 bit PayLoad ( P ) = 9000 byte = 72000 bit ACK ( A ) = 100 byte = 800 bit \begin{array}{lll}
\text{Ritardo di propagazione}(T_p) &= 100 \text{ ms} &= 10^{-1} \text{ s}
\newline
\text{Band Width andata}(BW_{s \to d}) &= 1 \text{ Mbit/s} &= 10^6 \text{ bit/s}
\newline
\text{Band Width ritorno}(BW_{d \to s}) &= 10 \text{ Kbit/s} &= 10^4 \text{ bit/s}
\newline
\text{Intestazione}(I) &= 1000 \text{ byte} &= 8000 \text{ bit}
\newline
\text{PayLoad}(P) &= 9000 \text{ byte} &= 72000 \text{ bit}
\newline
\text{ACK}(A) &= 100 \text{ byte} &= 800 \text{ bit}
\end{array} Ritardo di propagazione ( T p ) Band Width andata ( B W s → d ) Band Width ritorno ( B W d → s ) Intestazione ( I ) PayLoad ( P ) ACK ( A ) = 100 ms = 1 Mbit/s = 10 Kbit/s = 1000 byte = 9000 byte = 100 byte = 1 0 − 1 s = 1 0 6 bit/s = 1 0 4 bit/s = 8000 bit = 72000 bit = 800 bit
Con la condizione che la banda minima a livello superiore sia maggiore di 500 Kbps (500000 bps), calcolare la finestra di trasmissione.
Window ( W ) = ? \text{Window}(W) = \text{ ?} Window ( W ) = ?
T t f = I + P B W s → d = 8000 + 72000 1 0 6 = 0.08 s T t a = I + A B W d → s = 8000 + 800 1 0 4 = 0.88 s T t = 2 ⋅ T p + T t f + T t a = 0.2 + 0.08 + 0.88 = 1.16 s \begin{array}{llll}
T_{tf} &= \frac{I + P}{BW_{s \to d}} &= \frac{8000 + 72000}{10^6} &= 0.08 \text{ s}
\newline
\newline
T_{ta} &= \frac{I + A}{BW_{d \to s}} &= \frac{8000 + 800}{10^4} &= 0.88 \text{ s}
\newline
\newline
T_t &= 2 \cdot T_p + T_{tf} + T_{ta} &= 0.2 + 0.08 + 0.88 &= 1.16 \text{ s}
\end{array} T t f T t a T t = B W s → d I + P = B W d → s I + A = 2 ⋅ T p + T t f + T t a = 1 0 6 8000 + 72000 = 1 0 4 8000 + 800 = 0.2 + 0.08 + 0.88 = 0.08 s = 0.88 s = 1.16 s
Ricavare W
B W e = W ⋅ P T t ≥ 500000 W ≥ ⌈ 500000 ⋅ T t P ⌉ W ≥ ⌈ 500000 ⋅ 1.16 72000 ⌉ = 9 \begin{array}{lll}
BW_e &= \frac{W \cdot P}{T_t} &\ge 500000
\newline
\newline
W &\ge \left\lceil \frac{500000 \cdot T_t}{P} \right\rceil
\newline
\newline
W &\ge \left\lceil \frac{500000 \cdot 1.16}{72000} \right\rceil &= 9
\end{array} B W e W W = T t W ⋅ P ≥ ⌈ P 500000 ⋅ T t ⌉ ≥ ⌈ 72000 500000 ⋅ 1.16 ⌉ ≥ 500000 = 9
Cyclic Redundancy Check (CRC)
Il CRC è un codice di controllo a ridondanza ciclica che permette di rilevare errori di trasmissione.
Il CRC viene calcolato dal mittente e viene inviato insieme al messaggio.
Il destinatario calcola il CRC del messaggio ricevuto e lo confronta con quello ricevuto.
Se i due CRC coincidono, il messaggio è stato trasmesso correttamente.
Esercizio 1
M = 101101 G = 1101 ∣ G ∣ − 1 = 4 − 1 = 3 M = 101101 \quad G = 1101 \quad |G| - 1 = 4 - 1 = 3 M = 101101 G = 1101 ∣ G ∣ − 1 = 4 − 1 = 3
Calcolare il CRC.
101101 000 1101 011001 000 1101 000011 000 11 01 000000 010 ⏟ resto \begin{array}{ll}
101101 \space 000
\newline
1101
\newline
011001 \space 000
\newline
\space\space 1101
\newline
000011 \space 000
\newline
\space\space \space\space \space\space \space\space 11 \space 01
\newline
000000 \space \underbrace{010}_{\text{resto}}
\end{array} 101101 000 1101 011001 000 1101 000011 000 11 01 000000 resto 010
Esercizio 2
M = 1101101 G = 11010 ∣ G ∣ − 1 = 4 M = 1101101 \qquad G = 11010 \qquad |G| - 1 = 4 M = 1101101 G = 11010 ∣ G ∣ − 1 = 4
Calcolare il CRC.
1101101 0000 11010 0000101 0000 110 10 0000011 1000 11 010 0000000 1100 ⏟ resto \begin{array}{ll}
1101101 \space 0000
\newline
11010
\newline
0000101 \space 0000
\newline
\space\space \space\space \space\space \space\space 110 \space 10
\newline
0000011 \space 1000
\newline
\space\space \space\space \space\space \space\space \space\space 11 \space 010
\newline
0000000 \space \underbrace{1100}_{\text{resto}}
\end{array} 1101101 0000 11010 0000101 0000 110 10 0000011 1000 11 010 0000000 resto 1100
Esercizio 3
M = 101001 011 G = 1001 ∣ G ∣ − 1 = 3 M = 101001 \space 011 \qquad G = 1001 \qquad |G| - 1 = 3 M = 101001 011 G = 1001 ∣ G ∣ − 1 = 3
Verificare se il messaggio è stato trasmesso correttamente.
101001 011 1001 001101 011 1001 000100 011 100 1 000000 111 ≠ 0 → errore \begin{array}{ll}
101001 \space 011
\newline
1001
\newline
001101 \space 011
\newline
\space\space \space\space 1001
\newline
000100 \space 011
\newline
\space\space \space\space \space\space 100 \space 1
\newline
000000 \space 111 & \ne 0 \to \text{errore}
\end{array} 101001 011 1001 001101 011 1001 000100 011 100 1 000000 111 = 0 → errore
Esercizio 4
M = 101101 0000 G = 11011 ∣ G ∣ − 1 = 4 M = 101101 \space 0000 \qquad G = 11011 \qquad |G| - 1 = 4 M = 101101 0000 G = 11011 ∣ G ∣ − 1 = 4
Verificare se il messaggio è stato trasmesso correttamente.
101101 0000 11011 011011 0000 11011 000000 0000 = 0 → corretto \begin{array}{ll}
101101 \space 0000
\newline
11011
\newline
011011 \space 0000
\newline
\space\space 11011
\newline
000000 \space 0000 & = 0 \to \text{corretto}
\end{array} 101101 0000 11011 011011 0000 11011 000000 0000 = 0 → corretto
Esercizio 5
M = 1001 110 G = 1011 ∣ G ∣ − 1 = 3 M = 1001 \space 110 \qquad G = 1011 \qquad |G| - 1 = 3 M = 1001 110 G = 1011 ∣ G ∣ − 1 = 3
Verificare se il messaggio è stato trasmesso correttamente.
1001 110 1011 0010 110 10 11 0000 000 = 0 → corretto \begin{array}{ll}
1001 \space 110
\newline
1011
\newline
0010 \space 110
\newline
\space\space \space\space 10 \space 11
\newline
0000 \space 000 & = 0 \to \text{corretto}
\end{array} 1001 110 1011 0010 110 10 11 0000 000 = 0 → corretto
Codifica di Hamming
La codifica di Hamming è un codice di correzione degli errori che permette di correggere errori su un singolo bit e di rilevare quelli su due.
Esercizio 1
Sia data la seguente word:
10001011010111101 10001011010111101 10001011010111101
Sapendo che vi sono state aggiunte la ridondanza CRC4 e successivamente la ridondanza della codifica di Hamming per la correzione di un singolo bit, descrivere l’operazione che il ricevente andrà fare per determinare se la word ricevuta sia corretta o, in caso di un singolo errore, correggerlo.
Il generatore utilizzato è x 4 + x 3 + 1 x^4 + x^3 + 1 x 4 + x 3 + 1 .
Per la codifica di Hamming i bit vanno considerati da sinistra verso destra.
10 0 0 101 1 0101111 0 1 b 1 = d 3 ⊕ d 5 ⊕ d 7 ⊕ d 9 ⊕ d 11 ⊕ d 13 ⊕ d 15 ⊕ d 17 = = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 b 2 = d 3 ⊕ d 6 ⊕ d 7 ⊕ d 10 ⊕ d 11 ⊕ d 14 ⊕ d 15 = = 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 = 0 b 3 = d 5 ⊕ d 6 ⊕ d 7 ⊕ d 12 ⊕ d 13 ⊕ d 14 ⊕ d 15 = = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0 b 4 = d 9 ⊕ d 10 ⊕ d 11 ⊕ d 12 ⊕ d 13 ⊕ d 14 ⊕ d 15 = = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 1 b 5 = d 17 = 1 {\color{blue} 10}0{\color{blue} 0}101 {\color{blue} 1}0101111{\color{blue} 0}1
\newline
\begin{array}{ll}
\newline
b_1 &=
d_3 \oplus d_5 \oplus d_7 \oplus d_9 \oplus d_{11} \oplus d_{13} \oplus d_{15} \oplus d_{17} =
\newline
&=0 \oplus 1 \oplus 1 \oplus 0 \oplus 0 \oplus 1 \oplus 1 \oplus 1 = {\color{green} 1}
\newline
b_2 &= d_3 \oplus d_6 \oplus d_7 \oplus d_{10} \oplus d_{11} \oplus d_{14} \oplus d_{15} =
\newline
&= 0 \oplus 0 \oplus 1 \oplus 1 \oplus 0 \oplus 1 \oplus 1 = {\color{green} 0}
\newline
b_3 &= d_5 \oplus d_6 \oplus d_7 \oplus d_{12} \oplus d_{13} \oplus d_{14} \oplus d_{15} =
\newline
&= 1 \oplus 0 \oplus 1 \oplus 1 \oplus 1 \oplus 1 \oplus 1 = {\color{green} 0}
\newline
b_4 &= d_9 \oplus d_{10} \oplus d_{11} \oplus d_{12} \oplus d_{13} \oplus d_{14} \oplus d_{15} =
\newline
&= 0 \oplus 1 \oplus 0 \oplus 1 \oplus 1 \oplus 1 \oplus 1 = {\color{green} 1}
\newline
b_5 &= d_{17} = {\color{red} 1}
\end{array} 10 0 0 101 1 0101111 0 1 b 1 b 2 b 3 b 4 b 5 = d 3 ⊕ d 5 ⊕ d 7 ⊕ d 9 ⊕ d 11 ⊕ d 13 ⊕ d 15 ⊕ d 17 = = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 = d 3 ⊕ d 6 ⊕ d 7 ⊕ d 10 ⊕ d 11 ⊕ d 14 ⊕ d 15 = = 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 = 0 = d 5 ⊕ d 6 ⊕ d 7 ⊕ d 12 ⊕ d 13 ⊕ d 14 ⊕ d 15 = = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0 = d 9 ⊕ d 10 ⊕ d 11 ⊕ d 12 ⊕ d 13 ⊕ d 14 ⊕ d 15 = = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 1 = d 17 = 1
Esercizio 1
Il codice di hamming indica che è avvenuto un errore nel bit 16, che però è un bit di ridondanza.
L'errore non può essere il bit 17 in quanto è "coperto" anche dal bit di controllo 1.
Rimuoviamo quindi tutti i bit aggiunti dalla codifica.
Rimane la word:
010101011111 010101011111 010101011111
Applichiamo quindi il CRC4 per verificare se ci sono stati errori di trasmissione con il generatore x 4 + x 3 + 1 x^4 + x^3 + 1 x 4 + x 3 + 1 .
11001 11001 11001
Esercizio 1
M = 01010101 1111 G = 11001 ∣ G ∣ − 1 = 4 M = 01010101 \space 1111 \qquad G = 11001 \qquad |G| - 1 = 4 M = 01010101 1111 G = 11001 ∣ G ∣ − 1 = 4
01010101 1111 11001 00110001 1111 11001 00000011 1111 11 001 00000000 1101 ≠ 0 → errore \begin{array}{ll}
01010101 \space 1111
\newline
\space\space 11001
\newline
00110001 \space 1111
\newline
\space\space \space\space 11001
\newline
00000011 \space 1111
\newline
\space\space \space\space \space\space \space\space \space\space \space\space 11 \space 001
\newline
00000000 \space 1101 & \ne 0 \to \text{errore}
\end{array} 01010101 1111 11001 00110001 1111 11001 00000011 1111 11 001 00000000 1101 = 0 → errore
Distanza di Hamming
La distanza di Hamming è la distanza tra due parole di uguale lunghezza, definita come il numero di posizioni in cui le due parole differiscono.
Esercizio 1
Fanno parte del dizionario tutte le parole di 3 bit dove i primi 2 vengono usati per trasferire i dati e l'ultimo viene usato per il controllo di parità.
Parole valide Parole non valide 000 001 011 010 101 100 110 111 \begin{array}{ll}
\text{Parole valide} & \text{Parole non valide}
\newline
000 & 001
\newline
011 & 010
\newline
101 & 100
\newline
110 & 111
\end{array} Parole valide 000 011 101 110 Parole non valide 001 010 100 111
Distanza minima
La distanza minima è la distanza più piccola tra tutte le coppie di parole diverse del dizionario.
[ 000 011 101 110 000 0 2 2 2 011 2 0 2 2 101 2 2 0 2 110 2 2 2 0 ] \begin{bmatrix}
& 000 & 011 & 101 & 110
\newline
000 & 0 & 2 & 2 & 2
\newline
011 & 2 & 0 & 2 & 2
\newline
101 & 2 & 2 & 0 & 2
\newline
110 & 2 & 2 & 2 & 0
\end{bmatrix} 000 011 101 110 000 0 2 2 2 011 2 0 2 2 101 2 2 0 2 110 2 2 2 0
La distanza più piccola fra parole diverse è 2, quindi la distanza minima è 2.