Transmission Control Protocol je velmi důležitý protokol v transportní vrstvě pro OSI nebo TCP/IP model. TCP má mnoho výhod, např.
- TCP provede opakovaný přenos, pokud některá odeslaná data nejsou během určité doby potvrzena příjemcem.
- TCP naváže nějaké spojení před odesláním dat. Tomuto spojení říkáme 3-way handshake.
- TCP má mechanismus řízení přetížení.
- TCP může detekovat chybu pomocí některých metod.
Učme se hlavně na TCP 3-way handshake. Pojďme se také dozvědět o důležitých polích ve Wiresharku pro třícestné podání ruky.
3-way Handshake
Existují tři výměny rámců, ke kterým dochází v 3cestném handshake:
První rámec je vždy odeslán klientem na server. Pojďme to pochopit z jednoduchého diagramu:
'KLIENT-SERVER'
Frame1: Klient odešle SYN rámec na server-----------------------------------><------------------------------------------- Server odešle rámec SYN+ACK klientovi: Frame2
Frame3: Klient odešle ACK rámec na server ----------------------------------->
Tyto tři snímky můžeme vidět ve Wiresharku. Filtr „tcp“ lze ve Wiresharku použít k zobrazení všech rámců TCP. Zde je snímek obrazovky pro tři snímky:
Pojďme nyní podrobně porozumět všem třem rámcům:
SYN
Tento rámec obsahuje mnoho informací o schopnostech klienta informovat server. Následující snímek obrazovky ukazuje všechna důležitá pole rámce SYN:
Zde jsou důležitá pole pro rámec SYN:
Zdrojový port: 50602Cílový přístav: 80
Pořadové číslo: 0
Číslo potvrzení: 0
Délka záhlaví: 32 bajtů
Příznaky: 0x002 (SYN):
Potvrzení: Nenastaveno
Push: Nenastaveno
Reset: Nenastaveno
Syn: Set -----> Tento bit je nastaven, protože se jedná o rámec SYN.
Fin: Nenastaveno
Okno: 65535
Naléhavý ukazatel: 0
Možnost TCP - Maximální velikost segmentu: 1460 bajtů
Možnost TCP – měřítko okna: 3 (vynásobte 8)
Možnost TCP - SACK povolen
VIEW+ACK
Tento rámec obsahuje mnoho informací o schopnostech serveru informovat klienta. Následující snímek obrazovky ukazuje všechna důležitá pole rámce SYN+ACK:
Tento rámec také potvrzuje rámec SYN odeslaný klientem.
Zde jsou důležitá pole pro rámec SYN+ACK:
Zdrojový port: 80Cílový port: 50602
Pořadové číslo: 0
Číslo potvrzení: 1
Délka záhlaví: 32 bajtů (8)
Příznaky: 0x012 (SYN, ACK)
Potvrzení: Set
Push: Nenastaveno
Reset: Nenastaveno
Jeho: Set
Fin: Nenastaveno
Okno: 29200
Naléhavý ukazatel: 0
Možnost TCP – Maximální velikost segmentu: 1412 bajtů
Možnost TCP - SACK povolen
Možnost TCP – měřítko okna: 7 (vynásobte 128)
Vidíme, že v tomto rámci jsou nastaveny bity „Acknowledge“ a „SYN“. Je to proto, že tento rámec je SYN+ACK.
ACK
Tento snímek je posledním snímkem 3-cestného podání ruky a také potvrzením SYN+ACK klientem. Následující snímek obrazovky ukazuje všechna důležitá pole rámce ACK:
Zde jsou důležitá pole pro ACK rámec:
Zdrojový port: 50602Cílový přístav: 80
Pořadové číslo: 1
Číslo potvrzení: 1
Délka záhlaví: 20 bajtů (5)
Příznaky: 0x010 (ACK)
Naléhavé: Nenastaveno
Potvrzení: Set
Push: Nenastaveno
Reset: Nenastaveno
Syn: Nenastaveno
Fin: Nenastaveno
Okno: 32768
Zde je nastaven pouze bit „Acknowledge“, protože se jedná o ACK rámec.
Vysvětlení některých důležitých společných polí
Port 80 : V tomto tutoriálu jsme pozorovali jeden pevný port 80. Je to proto, že se jedná o zachycení HTTP a port 80 je pevný (na straně serveru) pro komunikaci HTTP.
pořadové číslo : Pořadové číslo tohoto snímku. Sync je první snímek, takže máme 0 jako pořadové číslo.
Příznaky TCP:
Potvrzení – Tento bit je nastaven, pokud je rámcem ACK. Příklad: SYN+ACK, ACK snímek.
SYN – Tento bit je nastaven, pokud je snímek SYN. Příklad: SYN.
Okno : Toto pole sdílí maximální velikost okna odesílatele v režimu příjmu. Příklad: V rámci SYN máme velikost okna 65535 bajtů. To znamená, že přijímač může v kterémkoli okamžiku přijímat maximální data TCP 65535 bajtů.
SACK Povoleno : Tento bit je nastaven, pokud odesílání podporuje SACK [selektivní potvrzení].
Maximální velikost segmentu : Můžeme tomu také říkat MSS. To definuje maximální datový rámec, který může odesílatel přijmout. Příklad: Dostaneme MSS jako 1460 bajtů v rámci SYN.
Závěr
Dozvěděli jsme se o TCP 3-way handshake a všech užitečných polích pro rámce SYN, SYN+ACK a ACK. Pokud se chcete dozvědět více o TCP, můžete sledovat tento odkaz RFC https://tools.ietf.org/html/rfc793 .