Síťování

Jaké jsou kroky při handshake protokolu TCP?

Jaké jsou kroky při handshake protokolu TCP?

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

  1. 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
  1. 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
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...
Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...