[๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ฌCS ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ] - ๋„คํŠธ์›Œํฌ TCP hand Shack

๊น€์œค์ค€ยท2023๋…„ 12์›” 20์ผ

CS ์Šคํ„ฐ๋””

๋ชฉ๋ก ๋ณด๊ธฐ
9/13
post-thumbnail

TCP 3(and 4) way handshake

ํ•ธ๋“œ์…ฐ์ดํฌ ๊ณผ์ •์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์„ธ์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

์ด ๊ณผ์ •์„ ํ†ตํ•ด ์–‘์ชฝ ํ˜ธ์ŠคํŠธ๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜๊ณ , ์ดˆ๊ธฐ ์‹œํ€€์Šค๋ฅผ ๊ตํ™˜ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์ƒํƒœ๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

TCP 3-way handshake

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—์„œ SYN ํŒจํ‚ท์„ ๋ณด๋ƒ„ sequence : x (ํŒจํ‚ท์— ์ €์žฅ๋œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ)
  2. ์„œ๋ฒ„๊ฐ€ SYN(x)์„ ๋ฐ›๊ณ , ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ›์•˜๋‹ค๋Š” ์‹ ํ˜ธ์ธ ACK์™€ SYN ํŒจํ‚ท์„ ๋ณด๋ƒ„
    • (seqeunce : y, ACK : x+1)
    • ์ž์‹ ์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ y, ํด๋ผ์ด์–ธํŠธ ์‹œํ€€์Šค ๋ฒˆํ˜ธ + 1ํ•œ ๊ฐ’ ACK : x+1
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต์€ ACK(x+1)์™€ SYN(y) ํŒจํ‚ท์œผ๋กœ ๋ฐ›๊ณ , ์„œ๋ฒ„์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ + 1 ๊ฐ’์„
    ACK ํ•„๋“œ์— ์„ค์ •ํ•˜์—ฌ ACK ํŒจํ‚ท์ธ ACK(y+1)์„ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„.

๋‹จ๊ณ„๋กœ ์„ค๋ช…

1๋‹จ๊ณ„ SYN ํŒจํ‚ท ์ •์†ก

2๋‹จ๊ณ„ SYN-ACK ํŒจํ‚ท ์‘๋‹ต

3๋‹จ๊ณ„ ACK ํŒจํ‚ท ์ „์†ก


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

์œ„๋Š” ์‹ค์ œ๋กœ TCP ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด๋กœ, TCP 3-way๋ž‘ ํ˜ผ๋™๋˜๊ธฐ ์‰ฝ๋‹ค.

TCP 3-way handshake๋Š” ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ณผ์ •

TCP 4-way handshake๋Š” ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•œ๋‹ค๋Š” FIN(finish) ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ํŒจํ‚ท์„ ์ „์†กํ•œ๋‹ค.
  2. ์„œ๋ฒ„๋Š” FIN ํŒจํ‚ท์„ ๋ฐ›๊ณ , ํ™•์ธํ–ˆ๋‹ค๋Š” ACK์„ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ธ๋‹ค.
    • ์ด๋•Œ ์„œ๋ฒ„๋Š” CLOSE_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
    • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ข…๋ฃŒ ์š”์ฒญ์„ ์ธ์ง€ํ—€์œผ๋‚˜ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ์ข…๋ฃŒ ์ ˆ์ฐจ๊ฐ€ ์ˆ˜ํ–‰์ค‘์ธ ์ƒํƒœ.
  3. ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ณด๋ƒˆ๋‹ค๋ฉด, ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” FIN ํŒจํ‚ท์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ๋Š” FIN์„ ๋ฐ›๊ณ , ํ™•์ธํ–ˆ๋‹ค๋Š” ACK๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
    • ์ด๋•Œ ์„œ๋ฒ„๊ฐ€ ACK๋ฅผ ๋ฐ›์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” TIME_WAIT ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
    • ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ๋“ฑ์œผ๋กœ ๋ฐ›์ง€๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ์ง€์—ฐํ•˜๋ฉฐ ๊ธฐ๋‹ค๋ฆผ.
  5. ์„œ๋ฒ„๋Š” ACK๋ฅผ ๋ฐ›์€ ์ดํ›„ ์†Œ์ผ“์„ ๋‹ซ๋Š”๋‹ค. (Closed)
  6. TIME_WAIT ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ๋‹ซ๋Š”๋‹ค. (Closed)

0๊ฐœ์˜ ๋Œ“๊ธ€