Nivelul Transport. Fereastra glisantă. Retransmisii
Nivelul transport
O rețea este proiectată cu scopul ca mai multe aplicații de pe host-uri diferite să poată schimba informații între ele. Pentru a garanta că fiecare pachet primit ajunge la aplicația căruia îi este destinat se utilizează conceptul de porturi.
Un port este o entitate virtuală (un număr asignat unei conexiuni) ce face legătura între host și aplicație.
Astfel, la acest nivel are loc procesul de demultiplexare (vezi UDP) care asigură simplul transport al datelor. În plus, mai este necesară o transmitere sigură (să ajungă datele), în ordine și care să se facă o singură dată (vezi TCP).

Ajustarea vitezei de transmisie
Protocolul de transport trebuie să se asigure că:
- transmite cât se poate de repede
- împarte echitabil resursele
- folosește eficient resursele
lungime fir
latența ≃ ───────────────── d = delay (latență)
viteza luminii B = bandwidth (bit/s)
D = dimensiunea fișierului
10 000 km
ex: București-SUA => d = ─────────────── = 1/30s = 33ms
3 000 000 km/s
RTT = 2*33ms = 66ms
▭ - pachet 1Mb
TS = D/B
________________________
B=1 Gbps |______________________| ▭ =>TS = 1Mb/1Gbps = 8ms
________________________
| |
| |
B=10 Gbps | | ▭ =>TS = 1Mb/10Gbps = 0.8ms
| |
|______________________|
TT = TS + d = 33+8 sau 33+0.8 = 41ms sau 33.8ms
Td(D, B, d) = D/B + d
-
Latența (timpul în care semnalul ajunge de la un capăt la celălalt al firului) unei transmisii depinde de lungimea firului (în cazul transmisiei prin fibră optică).
-
Round Trip Time (RTT) este durata de timp necesară transmiterii unui pachet și primirii unui răspuns (dublul latenței).
-
Timpul de serializare (TS) este timpul necesar de a lua un pachet și a-l pune pe fir.
-
Timpul de transfer (TT) este timpul necesar de a transmite un pachet.
-
Timpul de download (Td) este timpul necesar de a descarca un fișier.
Un mecanism prin care ne asigurăm că pachetele sunt transmise în ordine și o singură dată este mecanismul START-STOP. El presupune trimiterea unui pachet, așteptarea unui răspuns și, în funcție de răspuns, retrimiterea pachetului sau trimiterea pachetului următor.
Fereastra glisantă
Fereastră = numărul de pachete aflate în zbor pentru care nu am primit ACK.
ACK = informație de control (acknowledged)
Problema mecanismului start-stop este că de la o transmisie la alta cablul ar fi gol, iar astfel s-ar irosi mult timp. O soluție este să trimitem mai multe pachete pe fir fără a primi un răspuns.

Astfel se poate ajusta cantitatea de date transmisă astfel încât transmisia să se facă în mod optim.
BPD = B * d (Bandwidth Delay Product) = MTU * d / TS(MTU, B)
MTU = Maximum Transmission Unit
d = 20ms |
B = 100 Mbps | => BDP = 100Mbps * 20ms = 250 Kb
d = 20ms |
B = 1 Gbps | => BDP = 2,5 Mb
windowSize = [BPD / datagramSize] , datagramSize <= 1500 bytes
Pentru a asigura o transmisie optimă a datelor (cât mai mult, cât mai rapid, fără pierderi, la fel pentru toți) este necesară o modalitate de a regla dinamic mărimea ferestrei glisante. Vezi capitolul Congestion Control.
Retransmisii
Dat fiind că legăturile de date sunt predispuse să aibă pierderi, sunt necesare mecanisme ce asigură un transfer corect al pachetelor de date (complet și în ordine).
- Cum știi că un pachet s-a pierdut? De obicei, pachetele ce urmează să fie trimise sunt acumulate într-un
sendBuffer, iar atunci când sunt trimise pe fir le este asociat un timer. Dacă timpul de așteptare depășește valoarea RTO (Retransmit TimeOut), atunci pachetul poate fi considerat pierdut pe drum și este necesară retransmiterea lui. - RTO nu poate fi foarte agresiv, căci în cazul unei congestii în rețea durata de transmisie este inevitabil mai lungă decât într-o rețea "goală", iar atunci există șanse ca pachetul să fie fals declarat pierdut.
Mecanismul de retransmisie depinde de capacitatea receiverului de a prelucra informația primită:
- No receive buffer - La receptor, orice pachet care nu este așteptat va fi aruncat. Astfel, pachetele vor fi primite în ordine, dar pachetele neașteptate (care ar trebui să vină după pachetul așteptat, dar ajung înaintea lui) vor fi aruncate până la primirea pachetului așteptat. (GO-BACK-N)

- Receive buffer - La receptor, fiecare pachet este salvat într-un buffer. Astfel, pachetele neașteptate nu vor mai fi aruncate, ci vor fi salvate pe poziția lor corespunzătoare, pachetul așteptat fiind și el salvat ulterior, când este primit, în fața pachetelor ce ar fi trebuit să vină după el.
