# [TCP] 3 way handshake & 4 way handshake



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


# 3 way handshake - ์—ฐ๊ฒฐ ์„ฑ๋ฆฝ

TCP๋Š” ์ •ํ™•ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ†ต์‹ ํ•˜๊ธฐ์— ์•ž์„œ, ๋…ผ๋ฆฌ์ ์ธ ์ ‘์†์„ ์„ฑ๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด 3 way handshake ๊ณผ์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ SYN ํŒจํ‚ท์„ ๋ณด๋ƒ„ (sequence : x)

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

  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต์€ ACK(x+1)์™€ SYN(y) ํŒจํ‚ท์„ ๋ฐ›๊ณ , ACK(y+1)๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„


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



# 4 way handshake - ์—ฐ๊ฒฐ ํ•ด์ œ

์—ฐ๊ฒฐ ์„ฑ๋ฆฝ ํ›„, ๋ชจ๋“  ํ†ต์‹ ์ด ๋๋‚ฌ๋‹ค๋ฉด ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค.



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

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

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

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

  • ์„œ๋ฒ„๋Š” ACK๋ฅผ ๋ฐ›์€ ์ดํ›„ ์†Œ์ผ“์„ ๋‹ซ๋Š”๋‹ค (Closed)

  • TIME_WAIT ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ๋‹ซ๋Š”๋‹ค (Closed)


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



# [์ฐธ๊ณ  ์ž๋ฃŒ]

์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM