Navázání spojení v TCP
Aby se mohla vysílat data pomocí TCP protokolu, je nejprve třeba vytvořit spojení. Pro navázání spojení se používá třícestný handshake (potřesení ruky). V průběhu navazování spojení se obě strany dohodnou na čísle sekvence (sequence number). Číslo sekvence a odpovědi (sequence, acknowledgement number) jsou 32bitové hodnoty uváděné v TCP hlavičce. Pro navázání spojení se posílá TCP segment, který má nastaveny příznaky (flags) v TCP hlavičce. Jedná se o 8 bitových hodnot CWR
(Congestion Window Reduced), ECE
(ECN-Echo), URG
(Urgent), ACK
(Acknowledgement), PSH
(Push), RST
(Reset), SYN
(Synchronize), FIN
.
Navázání spojení probíhá ve třech krocích:
- klient pošle
SYN
packet s uvedeným číslem sekvence (x), číslo odpovědi 0 - druhá strana si uloží číslo sekvence (x) a odpoví
SYN-ACK
, jako číslo sekvence nastaví svoje číslo (y) a do čísla odpovědi vloží (x+1) - další očekávanou hodnotu - klient odpoví
ACK
, číslo sekvence (x+1), číslo odpovědi (y+1)
Ukončení spojení v TCP
Principy při ukončení spojení jsou podobné jako při jeho navazování. Nejčastěji se používá čtyřcestný handshake, kdy každá strana samostatně uzavře spojení. Zde se používá sekvence FIN
s odpovědí ACK
.
Clanok fajn, ale prilis strucny.
Co by som privital:
1) Popis jednotlivych stavov spojenia - t.j. to co mi vypise netstat - TIME_WAIT, FIN_WAIT, SYN_SENT, SYN_RECV a pod. To by sa mohlo pridat k tym obrazkom.
2) Zacal si so sekvencnymi cislami... tak by sa mohlo doplnit nieco o syn food a ochrane syn cookies...
odpověď na [1]Marki: Děkuji za připomínky. Já se však pokouším sepsat základní informace o sítích, aby člověk získal obecný přehled a neodradilo ho to od čtení. Podrobných informací se dá na netu dohledat spousta, když už člověk ví co chce.
Bezpečnosti a útokům se také nevěnuji, jestli jsem pochopil dobře bod 2 a jedná se o Syn Flood.
Možná někdy později ;-) ...
odpověď na [2]Samuraj: Komu by to nestačilo najít přes Google, tak synflood je útok na paměť daného stroje, jelikož pro každé navázané spojení se vytváří v paměti místo, pamatuje se. Tedy až se paměť stroje vyčerpá, nemůže vůbec komunikovat.
Obrana proti tomu je více úrovňová, teď z hlavu mne napadá počet spojení (omezení) za daný časový interval a z dané ajpiny. Případně se předřazuje firewall, který je kapacitně odolnější.
Syncookies jsou efektivni ochrana proti syn floodu.
cr.yp.to/syncookies.html
btw pri takovejch utocich bejva vetsinou zdrojova ip nahodne generovana, tou se ridit nemuzes.
a co třeba :
- jak fungují sekvenční čísla a jaký k nim má vztah Acknowledge number
- změny Window size
- Jaké příznakové bity jsou nastaveny
diky moc..
@trivate napis ked vies... Su to pomerne zakladne veci aj ked sa musim priznat, ze ked som nasiel tuto stranku nemal som o nich ani sajn
zdravim, po jake dobe necinnosti mohu zjistit za jak dlouho se ukonci TCP spojeni? Ma to kazdy server jinak nastaven? Pokud ano tak jak a kde to zjistim?
Dekuji secik
Uvítal by som aj nejaké praktické ukážky, napríklad skript na ukladanie výpisu TCP spojení a ukončení.