Search
Duplicate

TCP 3 way handshake & 4 way handshake

์ƒ์„ฑ์ผ
2023/02/22 06:09
ํƒœ๊ทธ
Network

TCP 3 way handshake & 4 way handshake

Handshake

ํ•ธ๋“œ์‰์ดํฌ(handshake)๋Š” ๋ณธ ํ†ต์‹ ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์—, ๋‘ ๊ฐœ์ฒด(Client, Server ๋“ฑ)๊ฐ„์˜ ํ†ต์‹  ์—ฐ๊ฒฐ ํ”„๋กœํ† ์ฝœ ํ™•๋ฆฝ์„ ์œ„ํ•œ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์ž๋™ํ™”๋œ ํ˜‘์ƒ ๊ณผ์ •์ด๋‹ค.
โ€ข
Transport Layer ์˜ TCP(Transmission Control Protocol)๋Š” ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ ์ด๋ฉฐ TCP ์—์„œ ํ†ต์‹ ์„ ์—ฐ๊ฒฐํ•  ๋•Œ์—๋Š” 3 way handshake ๋ฅผ ์—ฐ๊ฒฐ ํ•ด์ œํ•  ๋•Œ์—๋Š” 4 way handshake ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
โ€ข
์•”ํ˜ธํ™” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ธ SSL (Secure Sockets Layer), TSL (Transport Layer Security)๋Š” TTL/SSL Handshake๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

TCP Control Flag

โ€ข
TCP ํ—ค๋”๋Š” 6bit์˜ Control Flag ํ•„๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค. ๊ฐ ํ”Œ๋ž˜๊ทธ์˜ ์‚ฌ์šฉ์„ 0 ๊ณผ 1 ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
โ€ข
ex) SYN/ACK ๋Š” 010010 .
โ€ข
Acknowledge Number ๋Š” ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ๋ฐ›์•„์•ผ ํ•  ํŒจํ‚ท์˜ ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
โ€ข
Sequence Number ์™€ Acknowledge Number ๋ฅผ ํ†ตํ•ด ํ†ต์‹  ์ˆœ์„œ๋ฅผ ํ™•์ธํ•œ๋‹ค.
*์„ธ๊ทธ๋จผํŠธ๋Š” 4๊ณ„์ธต์˜ ํŒจํ‚ท์„ ์˜๋ฏธํ•œ๋‹ค. ๊ณ„์ธต๋ณ„ ํŒจํ‚ท ๊ตฌ๋ถ„์„ ์œ„ํ•ด 4๊ณ„์ธต์€ ์„ธ๊ทธ๋จผํŠธ , 3๊ณ„์ธต์€ ํŒจํ‚ท , 2๊ณ„์ธต์€ ํ”„๋ ˆ์ž„ ์ด๋ผ๊ณ  ์นญํ•œ๋‹ค.
SYN (Synchronize)
์—ฐ๊ฒฐ ์š”์ฒญ
ํ†ต์‹  ์‹œ์ž‘์„ ์œ„ํ•ด ๊ฐ€์žฅ ๋จผ์ € ๋ณด๋‚ด๋Š” ํŒจํ‚ท ์ž„์˜์˜ ์ดˆ๊ธฐ Sequence Number ๋ฅผ ๋ณด๋‚ธ๋‹ค.
ACK (Acknowledgement)
์‘๋‹ต ํ”Œ๋ž˜๊ทธ
์†ก์‹ ์ธก์œผ๋กœ๋ถ€ํ„ฐ ํŒจํ‚ท์„ ๋ฐ›์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ํ”Œ๋ž˜๊ทธ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ›์€ Sequence + 1 ํ•˜์—ฌ ์‘๋‹ตํ•œ๋‹ค.
Fin (Finish)
์—ฐ๊ฒฐ ์ข…๋ฃŒ
๋‚จ์€ ์ „์†ก ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์„ธ์…˜ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ํ”Œ๋ž˜๊ทธ
RST (Reset)
์žฌ์—ฐ๊ฒฐ
๋น„์ •์ƒ์ ์ธ ์„ธ์…˜์„ ๋Š๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ์„ ์žฌ์„ค์ •ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ
PSH (Push)
๋ฐ€์–ด ๋„ฃ๊ธฐ)
๋น ๋ฅธ ์‘๋‹ต์„ ์œ„ํ•ด ๋ฒ„ํผ๋ง ์—†์ด OSI 7 Layer์˜ Application ๊ณ„์ธต์œผ๋กœ ๋ฐ”๋กœ ์ „๋‹ฌํ•˜๋„๋ก ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ
URG (Urgent)
๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ
๊ธด๊ธ‰ํ•˜๊ฒŒ ์ „ํ•ด์•ผ ํ•  ๋‚ด์šฉ์ด ์žˆ์„ ๊ฒฝ์šฐ, ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋ž˜๊ทธ
์•„๋ž˜์™€ ๊ฐ™์ด 3 way handshake ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ , 4 way handshake ๋ฅผ ํ†ตํ•ด ํ•ด์ œํ•œ๋‹ค.

3 way handshake

TCP 3 way handshake๋Š” ์ „์†ก์˜ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ†ต์‹  ์ด์ „์— ์„ธ์…˜์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์–‘์ชฝ ๋ชจ๋‘ ํ†ต์‹  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ, ์„œ๋กœ์˜ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
1.
Client ๊ฐ€ ์ ‘์†์„ ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค.
โ€ข
Client ๋Š” SYN_SENT ์ƒํƒœ๊ฐ€ ๋˜์–ด, SYN/ACK ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
2.
Server ๊ฐ€ ์š”์ฒญ์„ ์Šน์ธํ•˜๋Š” SYN/ACK ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค.
โ€ข
Server ๋Š” SYN_RECEIVED ์ƒํƒœ๊ฐ€ ๋˜์–ด ACK ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
3.
Client ๋Š” ACK ๋ฅผ ๋ณด๋‚ด๊ณ , ์ด ํ›„๋กœ๋ถ€ํ„ฐ๋Š” ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
โ€ข
Client ์™€ Server ๋Š” ESTABLISHED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

4 way handshake

1.
Client ๊ฐ€ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ณด๋‚ธ๋‹ค.
โ€ข
Client ๋Š” FIN_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
2.
Server ๊ฐ€ FIN ์„ ๋ฐ›๊ณ  ํ™•์ธํ–ˆ๋‹ค๋Š” ACK ๋ฅผ ๋ณด๋‚ธ๋‹ค.
โ€ข
Server ๋Š” CLOSE_WAIT ์ƒํƒœ๊ฐ€ ๋˜์–ด ์ž์‹ ์—๊ฒŒ ๋‚จ์€ ํ†ต์‹ ์ด ๋๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
3.
Server ๊ฐ€ ์—ฐ๊ฒฐ ํ•ด์ง€ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ๋กœ FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ณด๋‚ธ๋‹ค.
โ€ข
Server ๋Š” LAST_ACK ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
4.
Client ๊ฐ€ FIN ์„ ๋ฐ›๊ณ  ํ™•์ธํ–ˆ๋‹ค๋Š” ACK ๋ฅผ ๋ณด๋‚ธ๋‹ค.
โ€ข
Client ๋Š” ๋ฐ”๋กœ ์„ธ์…˜์„ ์ข…๋ฃŒ์‹œํ‚ค์ง€ ์•Š๊ณ , TIME_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. Server ๊ฐ€ FIN ํŒจํ‚ท๋ณด๋‹ค ๋จผ์ € ๋ณด๋ƒˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋กœ ์ƒํ™ฉ์œผ๋กœ ๋Šฆ๊ฒŒ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž‰์—ฌ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. (default 240์ดˆ)
โ€ข
Client ์™€ Server ๊ฐ€ CLOSE ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
FIN ํ”Œ๋ž˜๊ทธ๋กœ ์ข…๋ฃŒ๋ฅผ ์š”์ฒญํ•˜๋Š” ์‹œ์ ์—, Client๊ฐ€ ์—ฐ๊ฒฐ์„ ๋ฐ”๋กœ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ , ๋‚จ์€ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ Half-Close ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

ref)