TCP 3 way handshake & 4 way handshake

์—ฐ๊ฒฐ์„ ์„ฑ๋ฆฝํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

3 way handshake

TCP๋Š” ์žฅ์น˜๋“ค ์‚ฌ์ด์— ๋…ผ๋ฆฌ์ ์ธ ์ ‘์†์„ ์„ฑ๋ฆฝ์‹œํ‚ค๊ธฐ ์œ„ํ•ด 3 way handshake๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

TCP 3 way handshake(์ดํ•˜ 3way)๋Š” TCP/IP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด์„œ ํ†ต์‹ ์„ ํ•˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด

๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ •ํ™•ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋Œ€๋ฐฉ ์ปดํ“จํ„ฐ์™€ ์‚ฌ์ „์— ์„ธ์…˜์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.

TCP ํ†ต์‹ ์€ PAR(Positive Acknowledgement with Re-transmission)์„ ํ†ตํ•ด ์‹ ๋ขฐ์ ์ธ ํ†ต์‹ ์„ ์ œ๊ณตํ•œ๋‹ค.

PAR์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ธฐ๋Š” ack์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋ฐ์ดํ„ฐ ์œ ๋‹›์„ ์žฌ์ „์†กํ•œ๋‹ค.

์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ์ดํ„ฐ ์œ ๋‹›(์„ธ๊ทธ๋จผํŠธ)์ด ์†์ƒ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์—†์•ค๋‹ค.

๊ทธ๋Ÿฌ๋ฉด sender๋Š” positive ack์ด ์˜ค์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์œ ๋‹›์„ ๋‹ค์‹œ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

์ž‘๋™๋ฐฉ์‹

HOST P์™€ HOST Q๊ฐ€ ์žˆ์„ ๋•Œ, HOST P๊ฐ€ ํด๋ผ์ด์–ธํŠธ, HOST Q๊ฐ€ ์„œ๋ฒ„ ๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ SYN ํŒจํ‚ท์„ ๋ณด๋ƒ„.Client > Server : TCP SYN

  2. ์„œ๋ฒ„๊ฐ€ SYN(x)์„ ๋ฐ›๊ณ  ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ›์•˜๋‹ค๋Š” ์‹ ํ˜ธ ACK(x + 1)์™€ SYN(y)ํŒจํ‚ท์„ ๋ณด๋ƒ„.Server > Client : TCP SYN, ACK

  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต(ACK(x+1), SYN(y))์„ ๋ฐ›๊ณ , ACK(y+1)๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„.Client > Server : TCP ACK

  • SYN : 'Synchronize sequence numbers', ์—ฐ๊ฒฐ ์š”์ฒญ. ์„ธ์…˜์„ ์„ค์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ์ดˆ๊ธฐ์— ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ณด๋ƒ„.

  • ACK : 'Acknowledgement', ๋ณด๋‚ธ ์‹œํ€€์Šค ๋ฒˆํ˜ธ์— TCP ๊ณ„์ธต์—์„œ์˜ ๊ธธ์ด ๋˜๋Š” ์–‘์„ ๋”ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ACK์— ํฌํ•จํ•˜์—ฌ ์ „์†ก.

๋™๊ธฐํ™” ์š”์ฒญ์— ๋Œ€ํ•œ ๋‹ต๋ณ€: Client์˜ Sequence Number + 1์„ ํ•˜์—ฌ ACK๋กœ ๋Œ๋ ค์ค€๋‹ค.

์ด๋ ‡๊ฒŒ 3๋ฒˆ์˜ ํ†ต์‹ ์ด ์™„๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋œ๋‹ค.

SYN์„ ๋ณด๋‚ด๋ฉด ACK๋ฅผ ๋ฐ›์„ ๋•Œ ๊นŒ์ง€ ์žฌ์ „์†กํ•œ๋‹ค. ACK๊ฐ€ ์™€์•ผ ์™„๋ฃŒ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ด๋Ÿฌํ•œ ํ–‰์œ„๋กœ ์–‘์ชฝ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ณ ,

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํ•œ์ชฝ์ด ๋‹ค๋ฅธ ์ชฝ์ด ์ค€๋น„๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.


4 way handshake

4 way handshake๋Š” ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ด์šฉํ•œ๋‹ค.

  • FIN : ์„ธ์…˜์„ ์ข…๋ฃŒ์‹œํ‚ค๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋” ์ด์ƒ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

Termination์˜ ์ข…๋ฅ˜

TCP๋Š” ๋‘ ๊ฐ€์ง€ ์—ฐ๊ฒฐ ํ•ด์ œ ๋ฐฉ์‹์ด ์žˆ๋‹ค.

  1. Graceful connection release(์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ ํ•ด์ œ)

์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ ํ•ด์ œ์—์„œ๋Š” ์–‘์ชฝ์ด ์ปค๋„ฅ์…˜์„ ๋ชจ๋‘ ๋‹ซ์„ ๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.

  1. Abrupt connection release(๊ฐ‘์ž‘์Šค๋Ÿฐ ์—ฐ๊ฒฐ ํ•ด์ œ)

    1. ๊ฐ‘์ž๊ธฐ ํ•œ TCP ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ๋‹ซ๋Š” ๊ฒฝ์šฐ

    2. ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋‘ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉํ–ฅ์„ ๋ชจ๋‘ ๋‹ซ๋Š” ๊ฒฝ์šฐ

Abrupt

RST(TCP reset) ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ „์†ก๋˜๋ฉด ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์—ฐ๊ฒฐ ํ•ด์ œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”๋ฐ, RST ์„ธ๊ทธ๋จผํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ „์†ก๋œ๋‹ค.

  1. ์กด์žฌํ•˜์ง€ ์•Š๋Š” TCP ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด ๋น„ SYN ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ˆ˜์‹ ๋œ ๊ฒฝ์šฐ

  2. ์—ด๋ฆฐ ์ปค๋„ฅ์…˜์—์„œ ์ผ๋ถ€ TCP ๊ตฌํ˜„์ด ์ž˜๋ชป๋œ ํ—ค๋”๊ฐ€ ์žˆ๋Š” ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ˆ˜์‹ ๋œ ๊ฒฝ์šฐ

    • RST ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด, ํ•ด๋‹น ์ปค๋„ฅ์…˜์„ ๋‹ซ์•„ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

  3. ์ผ๋ถ€ ๊ตฌํ˜„์—์„œ ๊ธฐ์กด TCP ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

Graceful

์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ ์—ญ์‹œ, ์š”์ฒญ์„ ๋จผ์ € ์‹œ๋„ํ•œ ์š”์ฒญ์ž๋ฅผ Client๋กœ, ์š”์ฒญ์„ ๋ฐ›์€ ์ˆ˜์‹ ์ž๋ฅผ Server ์ชฝ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•œ๋‹ค๋Š” FIN ํ”Œ๋ž˜๊ทธ ๋ณด๋ƒ„.

  2. ์„œ๋ฒ„๋Š” FIN์„ ๋ฐ›๊ณ , ํ™•์ธํ–ˆ๋‹ค๋Š” ACK๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. ์ด ๋•Œ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด CLOSE_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

  3. ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ณด๋ƒˆ๋‹ค๋ฉด, ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.

  4. ํด๋ผ์ด์–ธํŠธ๋Š” FIN์„ ๋ฐ›๊ณ , ํ™•์ธํ–ˆ๋‹ค๋Š” ACK๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. ์ด ๋•Œ ์•„์ง ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ TIME_WAIT์„ ํ†ตํ•ด ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

    1. ์„œ๋ฒ„๋Š” ACK๋ฅผ ๋ฐ›๊ณ , ์†Œ์ผ“์„ ๋‹ซ๋Š”๋‹ค(Closed)

    2. TIME_WAIT ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ๋‹ซ๋Š”๋‹ค (Closed) => ์˜๋„์น˜ ์•Š์€ ์—๋Ÿฌ๋กœ ์—ฐ๊ฒฐ์ด ๋ฐ๋“œ๋ฝ์œผ๋กœ ๋น ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ 4๋ฒˆ์˜ ํ†ต์‹ ์ด ์™„๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋œ๋‹ค.

Last updated