Sobes.tech
Junior

Hogyan működik a TCP protokoll?

sobes.tech MI

Válasz az MI-től

TCP (Transmission Control Protocol) — ez egy szállítási réteg protokoll, amely megbízható, kapcsolat-orientált adatátvitelt biztosít.

Kulcsfontosságú működési szempontok:

  1. Háromlépcsős kézfogás (Three-way Handshake):

    • A kliens SYN (Synchronize) csomagot küld az inicializáló szekvenciaszámmal (ISN).
    • A szerver megkapja a SYN-t, küld egy SYN-ACK (Synchronize-Acknowledge) csomagot, amely tartalmazza saját ISN-jét és az ACK-t a kliens ISN-jére (acknowledgement number = client ISN + 1).
    • A kliens megkapja a SYN-ACK-et, küld egy ACK-t a szerver ISN-jének megerősítésére (acknowledgement number = server ISN + 1).
    • A kapcsolat létrejött, adatok továbbíthatók.
  2. Áramló adatátvitel: Az adatok folyamként, bájtok folyamaként kerülnek továbbításra, nem külön csomagként. A TCP szegmensekre bontja az adatfolyamot.

  3. Szekvenciaszámok (Sequence Numbers): Minden bájt egyedi számmal rendelkezik. A szegmensek tartalmazzák az első bájt számát (sequence number) és az elismervény számát (acknowledgement number), ami a következő várható bájt számát jelzi.

  4. Elismerések (Acknowledgements - ACK): A fogadó küld egy ACK-t, hogy tájékoztassa a küldőt a sikeresen fogadott adatokról. Ha a küldő nem kap ACK-t egy bizonyos időn belül (timeout), újraküldi a szegmenst.

  5. Hibaellenőrzés (Error Control): Ellenőrző összegeket (checksums) használnak az adatok integritásának ellenőrzésére. Ha a szegmens sérült, elvetik, és a küldő timeout-ot vagy duplikált ACK-t vár a újraküldéshez.

  6. Áramlásvezérlés (Flow Control): Egy mechanizmus, amely megakadályozza a fogadó pufferének túlcsordulását. A fogadó az ACK csomagokban jelzi a fogadási ablak (receive window) méretét. A küldő csak annyi adatot küldhet, amennyi belefér az ablakba.

  7. Hálózati torlódás kezelése (Congestion Control): Egy mechanizmus a hálózat rendelkezésre álló kapacitásának meghatározására és a adatátviteli sebesség dinamikus szabályozására, hogy elkerüljék a hálózati torlódást. Algoritmusokat tartalmaz, mint például slow start, congestion avoidance, fast retransmit és fast recovery.

  8. Kapcsolat lezárása: Általában négy lépéses kézfogással történik:

    • Egy oldal FIN (Finish) csomagot küld.
    • A másik oldal ACK-t küld a FIN-re.
    • A másik oldal küldi saját FIN-jét (a további adatok átadása után).
    • Az első oldal ACK-t küld erre a FIN-re.
    • A kapcsolat lezárul.

TCP szegmens szerkezete:

Mező Méret (byte) Leírás
Forrás port 2 A küldő portja
Cél port 2 A fogadó portja
Szekvenciaszám 4 Az első bájt száma a szegmensben
Elismervény szám 4 A következő várható bájt száma
Adatmódosító/Fejléc hossza 4 bit A TCP fejléc hossza
Fenntartott 6 bit Fenntartva
Jelzők (Control Bits) 6 bit URG, ACK, PSH, RST, SYN, FIN
Ablak mérete 2 A fogadó ablakmérete
Ellenőrző összeg 2 A fejléc és adatok ellenőrző összege
Sürgős mutató 2 Sürgős adatokra utal (ha URG be van állítva)
Opciók Változó További opciók
Kitöltés (Padding) Változó A fejléc igazításához
Adatok Változó Átadott adatok
// Jelzők (Control Bits):
// URG: Sürgős mutató mező jelentős
// ACK: Elismerő mező jelentős
// PSH: Push funkció
// RST: Kapcsolat alaphelyzetbe állítása
// SYN: Számsorozatszámok szinkronizálása
// FIN: Nincs több adat a küldőtől