Ak sa pripravuješ na certifikáciu CCNA, CCNP alebo CCIE, bez dôkladného porozumenia protokolu TCP (Transmission Control Protocol) sa ďaleko nedostaneš. V tomto článku sa ponoríme do RFC 793, ktoré definuje základný transportný protokol internetu – TCP. Vysvetlíme si 3-way handshake, riadenie prúdenia (flow control), okná, retransmisie aj to, ako sa TCP správa pri stratách paketov.
RFC 793, publikované v septembri 1981, definuje TCP ako spoľahlivý, spojovo-orientovaný protokol pracujúci nad IP. Jeho úlohou je zabezpečiť:
Tieto ciele dosahuje TCP pomocou zložitých mechanizmov, ako sú číslovanie sekvencií, potvrdzovanie (ACK), sliding window, a retransmisie. Poďme sa na ne pozrieť podrobnejšie.
Každé TCP spojenie začína trojstupňovým procesom vytvárania spojenia, tzv. 3-way handshake:
Wireshark – 3-way handshake:
Frame 1: TCP SYN
Flags: SYN
Seq: 0
Frame 2: TCP SYN-ACK
Flags: SYN, ACK
Seq: 0, Ack: 1
Frame 3: TCP ACK
Flags: ACK
Seq: 1, Ack: 1
Tento mechanizmus zabraňuje tomu, aby sa vytvorili „polospojky“, ktoré by zahlcovali systém (ochrana pred SYN flood útokmi – viď TCP backlog).
Každý TCP segment má špecifickú štruktúru hlavičky, ktorá obsahuje:
Príklad výpisu v Wiresharku:
Transmission Control Protocol
Src Port: 443
Dst Port: 53112
Seq: 12345
Ack: 67890
Flags: ACK, PSH
Window: 512
Checksum: 0x9a8b
TCP flow control zabezpečuje, aby vysielajúci host neposielal viac dát, ako prijímajúci dokáže spracovať. Každý ACK segment obsahuje Window Size, ktoré určuje, koľko bajtov môže byť poslaných bez potvrdenia. Tento mechanizmus sa nazýva sliding window.
Príklad:
Ak prijímač zahltený, môže nastaviť okno na 0 a dočasne zastaviť prenos.
TCP zabezpečuje spoľahlivé doručenie cez retransmisie. Ak odosielateľ nedostane včas ACK, po timeout-e znova odošle segment. Timeout sa počíta adaptívne na základe RTT (Round-Trip Time).
Selective Acknowledgment (SACK) je rozšírenie, ktoré umožňuje prijímaču oznámiť, ktoré segmenty mu chýbajú, a znížiť tak zbytočné retransmisie.
Wireshark – Retransmission:
Frame 14: TCP segment
Seq: 2001
[No ACK received]
Frame 18: [TCP Retransmission]
Seq: 2001
TCP na rozdiel od UDP vytvára spojenie, potvrdzuje segmenty a má kontrolu toku a retransmisie. To ho robí vhodným pre aplikácie ako:
UDP je naopak vhodnejší pre reálne-časové aplikácie (VoIP, videostreaming), kde je dôležitejšia rýchlosť ako spoľahlivosť.
TCP podľa RFC 793 je chrbticou spoľahlivej komunikácie na internete. Ak chceš uspieť na skúške CCNA/CCNP/CCIE, alebo len pochopiť, ako funguje web či email, TCP musíš poznať do hĺbky. Od 3-way handshake, cez sliding window až po retransmisie – je to fascinujúci protokol, ktorý stále drží internet pohromade.
Viac informacií preberáme na kurze: