A TCP (Transmission Control Protocol) az Internet Protocol Suite egyik fő protokollja. A TCP az internet által használt népszerű "TCP/IP" kombináció része. Az internetprotokoll vagy IP gondoskodik arról, hogy az interneten az adatok a megfelelő helyre jussanak. Ezután a TCP gondoskodik arról, hogy az adatok a megfelelő sorrendbe kerüljenek, és semmi se hiányozzon belőlük. A TCP segít az internet forgalmának szabályozásában is, hogy az ne legyen túlterhelt. Ezeket a protokollokat, amelyek olyanok, mint a számítógépek által használt nyelvek, úgy tervezték, hogy bármely számítógép és bármely program (például webböngésző vagy e-mail kliens) képes legyen használni őket.
Mire jó a TCP?
A TCP egy megbízható, kapcsolat-orientált protokoll, amely biztosítja, hogy a forrás és cél közötti adatok hibamentesen, sorrendben és hiánytalanul érkezzenek meg. Tipikus felhasználási területek: weboldalak (HTTP/HTTPS), e‑mail (SMTP/IMAP), fájlátvitel (FTP), távoli terminálok (SSH) és egyéb olyan alkalmazások, amelyeknek fontos a megbízhatóság és a sorrendiség.
Hogyan működik (egyszerűen)
- Kapcsolat felépítése: TCP kapcsolat létrehozása háromlépéses kézfogással (three‑way handshake): SYN → SYN/ACK → ACK.
- Adatátvitel: Az adatokat TCP "szegmensekben" küldi, minden szegmenshez sorozatszám (sequence number) és visszaigazolás (ACK) tartozik.
- Visszaigazolás és újraküldés: Ha a küldő nem kap visszaigazolást egy bizonyos időn belül, újraküldi a szegmenst (retransmission).
- Kapcsolat bontása: A kapcsolat lezárása FIN/ACK üzenetekkel történik; hiba vagy azonnali megszakítás esetén RST (reset) jelzést használhatnak.
Megbízhatóság és sorrendiség
A TCP garantálja, hogy az adatok sorrendben és hiánytalanul érkezzenek meg az alábbi elemekkel:
- Sequence number: minden bájt pozícióját követi.
- Ack (visszaigazolás): a fogadó jelzi, hogy melyik bájtig érkezett meg helyesen.
- Retransmission: időkorlát (timeout) és újraküldés a vesztett szegmensek pótlására.
- Checksum: a TCP fejléc és az adatok integritásának ellenőrzése.
Forgalomszabályozás és csúszó ablak (flow control)
A fogadó meghatározza, mekkora pufferrel rendelkezik, ezt a TCP window mezője közli. A küldő a csúszó ablak (sliding window) mechanizmus alapján küld annyi bájtot, amennyi az aktuális ablakba belefér, ez megakadályozza, hogy a fogadó túlterhelődjön.
Torlaszkezelés (congestion control)
A TCP felelős az internetes hálózatok túlterhelésének csökkentéséért is. Tipikus algoritmusok:
- Slow Start: a küldési sebesség gyors növelése egy kezdeti kis küszöbből.
- Congestion Avoidance: lassabb, óvatos növelés, ha a hálózat közelít a túlterheltséghez.
- Fast Retransmit és Fast Recovery: gyors újraküldés több duplikált ACK után és a küszöb intelligens csökkentése/helyreállítása.
Ezek az algoritmusok dinamikusan állítják be, mennyi adatot küldhet a forrás úgy, hogy közben minimalizálják a csomagvesztést és a késleltetést.
TCP fejléc fontos mezői és lehetőségek
- Forrás- és célport (source/destination port) — a szolgáltatások multiplexelése.
- Sequence number és Acknowledgment number.
- Állapotbitek (SYN, ACK, FIN, RST, PSH, URG).
- Window size — a fogadó által engedélyezett ablakméret.
- Checksum — hibadetektálás.
- Options — pl. Maximum Segment Size (MSS), SACK (Selective ACK), Timestamp, Window scaling (nagy ablakok támogatásához).
Teljesítményfinomítások és gyakori viselkedések
- Nagle algoritmus: kis csomagok egyesítése a hálózati forgalom csökkentésére, de késleltetést okozhat interaktív alkalmazásoknál.
- Delayed ACK: a fogadó késleltetheti a visszaigazolást rövid ideig, hogy csökkentse a kis csomagok számát.
- Window scaling: lehetővé teszi nagy ablakméretek használatát nagy sávszélesség/késleltetés pároknál.
- SACK: hatékonyabb újraküldést tesz lehetővé, mert a fogadó pontosan megmondja, mely blokkok hiányoznak.
Hogyan különbözik a UDP-től?
A TCP megbízható és kapcsolat-orientált; sorrendet és hibajavítást biztosít. A UDP (User Datagram Protocol) egyszerűbb, kapcsolat nélküli és nem garantálja az átvitel megbízhatóságát vagy sorrendjét. Alkalmazások, amelyek kis késleltetést és tolerálható veszteséget igényelnek (pl. valós idejű hang- és videóátvitel, játékok), gyakran a UDP-t választják, míg a fájlátvitelhez és weboldalakhoz általában a TCP a megfelelő választás.
Biztonság
A TCP önmagában nem titkosítja az adatokat. A biztonságos kommunikációhoz gyakran TLS (Transport Layer Security) használatos a TCP fölött (például HTTPS). Emellett TCP kapcsolatokat érintheti port-szkennelés, SYN flood támadások (DoS) és egyéb hálózati fenyegetések, amelyek ellen tűzfalak és egyéb védekezések szükségesek.
Gyakorlati tudnivalók és eszközök
- Hálózati diagnosztika: netstat, ss (sockets), tcpdump, Wireshark.
- Ismert portok: 80 (HTTP), 443 (HTTPS), 25 (SMTP), 21 (FTP), 22 (SSH) — ezek a szolgáltatások gyakran TCP-t használnak.
- Teljesítmény tuning: MTU/MSS beállítások, window scaling, Nagle ki-/bekapcsolása, SACK engedélyezése.
Összefoglalás
A TCP az internet gerincét képező protokollok egyike: megbízható, sorrendet biztosító és forgalomszabályozó mechanizmusokat nyújt, amelyek lehetővé teszik, hogy az alkalmazások stabil és hibamentes kommunikációt folytassanak az IP hálózaton keresztül. Bár komplex algoritmusokat (például torlaszkezelés és újraküldés) tartalmaz, a cél egyszerű: biztosítani, hogy a felhasználók adatai biztonságosan és hatékonyan jussanak el a célhoz.