 
                
Pokud se připravuješ na certifikaci CCNA, CCNP nebo CCIE, bez důkladného pochopení protokolu TCP (Transmission Control Protocol) se daleko nedostaneš. V tomto článku se ponoříme do RFC 793, které definuje základní transportní protokol internetu – TCP. Vysvětlíme si 3-way handshake, řízení toku (flow control), okna, retransmise i to, jak se TCP chová při ztrátách paketů.
RFC 793, publikované v září 1981, definuje TCP jako spolehlivý, spojově orientovaný protokol fungující nad IP. Jeho úkolem je zajistit:
Těchto cílů TCP dosahuje pomocí sofistikovaných mechanismů, jako je číslování sekvencí, potvrzení (ACK), sliding window a retransmise. Podívejme se na ně podrobněji.
Každé TCP spojení začíná třífázovým procesem vytváření spojení, 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 mechanismus zabraňuje vytváření tzv. „polospojení“, která by zahlcovala systém (ochrana proti SYN flood útokům – viz TCP backlog).
Každý TCP segment má specifickou strukturu hlavičky, která obsahuje:
Příklad výpisu ve Wiresharku:
Transmission Control Protocol
  Src Port: 443
  Dst Port: 53112
  Seq: 12345
  Ack: 67890
  Flags: ACK, PSH
  Window: 512
  Checksum: 0x9a8bTCP flow control zajišťuje, aby odesílající host neposílal více dat, než příjemce zvládne zpracovat. Každý ACK segment obsahuje Window Size, které určuje, kolik bajtů může být odesláno bez potvrzení. Tento mechanismus se nazývá sliding window.
Příklad:
Pokud je příjemce zahlcený, může nastavit okno na 0 a dočasně zastavit přenos.
TCP zajišťuje spolehlivé doručení pomocí retransmisí. Pokud odesílatel neobdrží ACK včas, po timeoutu znovu odešle segment. Timeout se počítá adaptivně na základě RTT (Round-Trip Time).
Selective Acknowledgment (SACK) je rozšíření, které umožňuje příjemci oznámit, které segmenty mu chybí, a snížit tak zbytečné retransmise.
Wireshark – Retransmission:
Frame 14: TCP segment
  Seq: 2001
  [No ACK received]
Frame 18: [TCP Retransmission]
  Seq: 2001
TCP na rozdíl od UDP vytváří spojení, potvrzuje segmenty a má kontrolu toku i retransmise. Je vhodný pro aplikace jako:
UDP je naopak vhodnější pro real-time aplikace (VoIP, streamování videa), kde je důležitější rychlost než spolehlivost.
TCP podle RFC 793 je páteří spolehlivé komunikace na internetu. Pokud chceš uspět u zkoušky CCNA/CCNP/CCIE, nebo jen pochopit, jak funguje web nebo email, TCP musíš znát do hloubky. Od 3-way handshake, přes sliding window až po retransmise – je to fascinující protokol, který stále drží internet pohromadě.
Viac informacií preberáme na kurze:
