Handshake
Handshake (v překladu „potřesení rukou“) je v informatice, telekomunikacích a příbuzných oborech automatizované vyjednávání, jehož úkolem je nastavit parametry komunikačního kanálu mezi dvěma subjekty před zahájením vlastní komunikace.
Handshake je například používán v Internetu pro otevření TCP spojení (tzv. „třícestný handshake“, tj. výměna tří datagramů) a teprve poté následuje vlastní přenos dat. Handshake je používán pro vyjednání nejlepšího možného spojení ve Wi-Fi sítích nebo při telefonování mobilním telefonem v GSM síti, kde zajistí nejlepší možné parametry komunikace mezi oběma stranami (tj. v rámci handshake je nalezen nejlepší možný způsob přenosu dat, který umí obě strany komunikace).
Charakteristika
Handshake proces obvykle probíhá s cílem stanovit pravidla pro komunikaci, které se nastavuje při navazování kontaktu s neznámým zařízením. Pokud počítač komunikuje s jiným zařízením jako je například modem, tiskárna, nebo síťový server, je potřeba provést handshake, aby mohlo být spojení navázáno.
Handshake může vyjednávat parametry, které jsou přijatelné pro zařízení a systémy na obou koncích komunikačního kanálu, včetně ale bez omezení na informační přenosovou rychlost, typu kódování, paritě, přerušení zařízení a další funkce protokolu nebo hardwaru. Jedná se o techniku komunikace mezi dvěma entitami. V rámci protokolů z rodiny TCP/IP je používán termín handshake ve spojitosti s třícestným otevřením TCP spojení. Termín handshake není používán v RFC týkajících se protokolů FTP nebo SMTP. Výjimkou je TLS (Transport Layer Security).
Jednoduchý handshake protokol by mohl zahrnovat pouze přijímač, který posílá zprávu „Dostal jsem vaši poslední zprávu a jsem připraven na vaši další zprávu“. Složitější protokol může povolit odesílateli se zeptat, zde je připraven přijímat. Záporná nebo žádná odpověď znamená nové odeslání určitých dat.
Příklady
TLS handshake
TLS handshake protokol je používán k vyjednání bezpečných atributů pro spojení, kde obě strany mohou poskytovat různé šifrovací protokoly, různá zabezpečení dat nebo různé hashe. Cílem handshake je pak vybrat nejlepší možný (nejbezpečnější) způsob komunikace, který zvládají obě strany.
TCP handshake
K navázání TCP spojení jsou požadovány tři oddělené kroky (třícestný handshake):
- Strana zahajující spojení (klient) vyšle TCP segment s nastaveným příznakem SYN.
- Strana přijímající spojení (server) odpoví TCP segmentem s nastavenými příznaky SYN+ACK.
- Klient odpoví TCP segmentem s nastaveným příznakem ACK
Další TCP segmenty mají již nastaven pouze příznak ACK.
Reference
V tomto článku byl použit překlad textu z článku Handshaking na anglické Wikipedii.
Média použitá na této stránce
Autor: Guojunzheng, Licence: CC BY-SA 3.0
Detailed example about the process of three way handshaking