Handshaking

A Wikipédiából, a szabad enciklopédiából

A handshaking kapcsolatfelvételi protokoll, az SSL (Secure Socket Layer) egyik rétege, amely alapvetően három szakaszra bontható.


Az összeköttetés létrehozásának első lépéseként a kezdeményező gazdagép, a példa esetében a kliens egy TCP csomagot küld a szervernek. A csomag fejlécében a SYN bit értékét egyesre állítja, és a sorszám értékét egy véletlen számmal inicializálja (és egy úgynevezett chiper suit-et. A random szám egy 32 bites időbélyeg plusz egy 28 bites véletlenszám. A cipher suite pedig azon információk együttese, hogy a kliens milyen algoritmusokat kíván használni a későbbiekben. Ezek a következőekre vonatkoznak:

  1. Kulcscsere módszere: Diffie-Hellmann, RSA
  2. Nyilvános kulcs algoritmus: RSA, El-Gamal, DELP
  3. Hash függvény: MD5, SHA-1 )

A példa esetében x értékre. Forrás portként megjelöl egy szabad portot 1024 felett. A célport értékét pedig a távoli gép azon port számára állítja ahol a keresett szolgáltatást véli. Amennyiben a fogadó szerver elfogadja a kapcsolatteremtést válasz csomagot küld ahol az ACK és SYN bitet egyesre állítja. A válaszcsomag sorszám mezeje véletlen értéket kap. A példa esetében az érték y. A Nyugta értéke pedig x+1. A harmadik lépésben az összeköttetést kezdeményező kliens gép TCP csomagot küld ahol az ACK bit értéke egy a sorszám értéke x+1 a nyugta értéke pedig y+1. A folyamat eredményeként a két gazdagép két portja között kialakul egy duplex átvitelt lehetővé tevő kapcsolat. Az összeköttetés létrehozásának e módja háromutas kézfogás technikának nevezik. A kapcsolat bontására hasonló eljárás használható mint a kapcsolat létrehozására azzal a különbséggel, hogy a kapcsolatot mindkét irányban le kell bontani.

handshaking létrehozása
handshaking bontása

A TCP összeköttetésének állapotai:

CLOSED: Jelzi, hogy nincs összeköttetés. Véges állapotú gép esetében ez az állapot a kezdő állapot. Minden összeköttetés ebből az állapotból indul.

LISTEN: A gazdagépen futó szerverprogram várakozó állapotban van. Vár egy összeköttetést kezdeményező hívásra.

SYNSENT: A gazdagépen futó alkalmazás összeköttetés létesítését kezdeményezte.

SYN-RECEIVED: Összeköttetés kérés érkezett. A kapcsolat nyugtázásra vár.

ESTABLISHED: A normális adatátvitel állapota. Nyitott kapcsolatot jelez a két port között.

FINWAIT1: A portot kezelő alkalmazás bejelentette, hogy nincs szüksége tovább a kapcsolatra.

FINWAIT2: A másik fél beleegyezett a kapcsolat bontásába.

TIMED WAIT: A kapcsolat vár, hogy az összes csomag ki nem hal.

CLOSING: Mindkét fél egyszerre próbálta bontani a kapcsolatot.

CLOSE WAIT: A kapcsolat a TCP architektúra magasabb szintjén lévő alkalmazástól várja a kapcsolat bontását.

LASTACK: Vár, míg az összes csomag ki nem hal.