TCP nebo Transmission Control Protocol je standardní protokol transportní vrstvy, který internet používá k přenosu dat. Request For Comments (RFC) 793 definuje TCP jako spolehlivý a na připojení orientovaný protokol. Vzhledem k tomu, že je orientovaný na připojení, je třeba před přenosem dat vytvořit cestu nebo připojení. TCP používá k navázání spojení mezi dvěma zařízeními mechanismus třícestného podání ruky. V této příručce uvidíme, jak funguje mechanismus třícestného podání ruky. Nejprve se podívejme na problémy s modelem obousměrného potřesení rukou.
Problémy s modelem obousměrného podání ruky
Obousměrný model handshake selhal kvůli problému se starými duplicitními pakety. Předpokládejme, že starý duplicitní paket dorazí na serverový počítač. Tento starý paket dorazil z dříve uzavřeného připojení a obsahuje pořadové číslo „z“. V určitém okamžiku během nového připojení server přijímá paket se pořadovým číslem 'z'. Když přijme tento starý paket se stejným pořadovým číslem 'z', nevědomky přijme tento starý paket a zahodí skutečný paket z nového připojení.
Ve výše uvedeném případě, pokud připojení mezi klientem a serverem neprobíhá, příchod starého paketu požadavku na duplicitní připojení stále způsobuje problémy. Pokud server obdrží takový paket, odpoví zpět paketem SYN + ACK. Tento paket bude klientem zahozen, protože se nezamýšlel připojit. Server ale vstoupí do stavu zablokování a čeká, až klient odešle data.
Dalším problémem je, že pokud hostitel C pošle požadavek na připojení k serveru vydáním se za klienta, server odpoví zpět s ACK klientovi. Klient zahodí tento paket „ACK“ a řekne serveru, aby ukončil připojení. Během tohoto intervalu událostí může hostitel C zahájit spoofingový útok zasláním spousty paketů.
Třícestný model HandShake v TCP / IP
Třícestný model podání ruky je velmi důležitý. Pokud jej nepoužíváme a začneme přímo odesílat data, může přijímající aplikace začít přijímat duplicitní pakety. Útočník může dostat šanci zahájit útoky (například DDoS) mezi spojením. Postup třícestného podání ruky zahájí jeden stroj a druhá strana na něj reaguje. K vysvětlení tohoto postupu se používá následující konvence:
„Pokud web přijme paket s pořadovým číslem 'x', odpoví ACK číslem 'x + 1'.“
Shrňme kroky provedené při třícestném handshake mezi klientským počítačem a serverovým strojem:
Krok 1. Při prvním navázání spojení klient odešle na server paket požadavku na připojení SYN s náhodným počátečním pořadovým číslem („x“) na server.
Krok 2. Při druhém navázání spojení server odpoví paketem SYN, který má náhodné pořadové číslo („y“), a paketem ACK s pořadovým číslem („x + 1“), aby potvrdil počáteční pořadové číslo („x“) odeslané klientem.
Krok 3. Ve třetím handshake klient pošle ACK paket se pořadovým číslem („y + 1“) na server pro potvrzení paketu SYN („y“) odeslaného serverem.
Krok 4. Oba konce jsou nyní synchronizovány a mohou začít přenášet data nezávisle. [1]
Procedura třícestného handshake TCP je stále platná, pokud obě strany současně zahájí proces inicializace. V takové situaci obdrží každý stroj po odeslání paketu „SYN“ segment „SYN“ bez potvrzení. Pokud k přijímači dorazí starý duplicitní paket „SYN“, může se přijímači zdát, že probíhá proces iniciace připojení současně. K odstranění této nejednoznačnosti můžeme použít pakety „reset“.
Ukončení připojení TCP
Kterákoli ze dvou stran může ukončit připojení TCP. K tomu může kterákoli strana vysílat segment TCP se sadou bitů FIN. To znamená, že odesílající strana nemá k odeslání žádná další data. Přijímající strana potvrdí tento paket FIN zasláním potvrzovacího paketu. Tím se uzavře spojení z jedné strany (strana odesílatele). Přijímač nyní použije stejné kroky k ukončení připojení jeho jménem. Tím se připojení úplně uzavře.
Problémy s modelem třícestného podání ruky
V případě, že dojde ke ztrátě nebo zablokování ACK z klienta na server ve třetí fázi handshake, klient nebude o této situaci vědět. Klient bude předpokládat, že je připojení navázáno, a začne odesílat data. Server stále čeká na ACK, který již byl ztracen, takže zahodí data přijatá od klienta. [2]
Závěr
V této příručce jsme se dozvěděli o postupech připojení TCP pomocí třícestného potřesení rukou. Také jsme viděli problém duplicitních paketů spojených s postupem obousměrného podání ruky a jak byl vyřešen pomocí modelu obousměrného podání ruky. Mnoho vědců přispělo různými výzkumnými pracemi ke zlepšení modelu třícestného potřesení rukou a překonání problémů s ním spojených.
Reference
- Hsu, F., Hwang, Y., Tsai, C., Cai, W., Lee, C., & Chang, K. (2016). TRAP: Třícestný handshake server pro navázání připojení TCP. Applied Sciences, 6 (11), 358. https: // doi.org / 10.3390 / app6110358
- Qin-Min Ma, Shou-Yin Liu, Xiao-jun Wen. (2016). TCP třícestný handshake protokol založený na kvantovém zapletení. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004