Handshaking
Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye. |
|
Ez a szócikk vagy szakasz lektorálásra, tartalmi javításokra szorul. |
A handshaking (szó szerint: kézrázás) 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:
- Kulcscsere módszere: Diffie-Hellmann, RSA
- Nyilvános kulcs algoritmus: RSA, El-Gamal, DELP
- 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.
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.
SYN – SENT: 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.