Sobes.tech
Middle

Ką žinote apie TCP langą?

sobes.tech AI

Atsakymas iš AI

TCP langas (arba priėmimo langas) yra srauto valdymo mechanizmas TCP protokole. Jis nustato duomenų kiekį, kurį siuntėjas gali perduoti iki patvirtinimo (ACK) gavimo iš gavėjo. Lango dydis nurodo laisvos vietos kiekį gavėjo priėmimo buferyje.

TCP lango naudojimo tikslai:

  • Atsargumas nuo buferio perpildymo: Gavėjas praneša siuntėjui savo dabartinį priėmimo buferio dydį, užkertant kelią didesnio duomenų kiekio siuntimui, nei jis gali apdoroti.
  • Srauto valdymas: Dinamiškai keičiasi lango dydis leidžia reguliuoti duomenų perdavimo greitį priklausomai nuo tinklo apkrovos ir gavėjo našumo.

Veikimo mechanizmas:

  1. Gavėjas siunčia siuntėjui segmentą su informacija apie savo priėmimo lango dydį (Window Size).
  2. Siuntėjas gali siųsti duomenis, neviršijančius nurodyto lango dydžio.
  3. Priimant duomenis, gavėjas sumažina lango dydį, atspindėdamas laisvos vietos sumažėjimą buferyje.
  4. Gavėjas siunčia ACK segmentus, patvirtinančius duomenų gavimą ir turinčius atnaujintą priėmimo lango dydį.
  5. Siuntėjas, gavęs ACK, gali siųsti kitą duomenų porciją, remdamasis atnaujintu lango dydžiu.

Dinamiškai keičiasi lango dydis leidžia optimizuoti pralaidumą ir išvengti paketų praradimo dėl buferio perpildymo.

Pavyzdys:

Gavėjas praneša apie 65535 baitų langą. Siuntėjas gali siųsti iki 65535 baitų duomenų. Po 10000 baitų priėmimo, gavėjas siunčia ACK, nurodydamas naują 55535 baitų langą.

// Paprastas pavyzdys (ne realus kodas, o principo demonstracija)
struct tcp_header {
    // ... kiti laukai
    uint16_t window_size; // Priėmimo lango dydis baitais
    // ...
};