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:
-
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.
-
Á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.
-
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.
-
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.
-
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.
-
Á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.
-
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.
-
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