[Daily morning study] TCP์˜ 3-way handshake์™€ 4-way handshake (ํ•„์ˆ˜)

#daily morning study

Image


TCP์˜ 3-way Handshake์™€ 4-way Handshake

TCP(Transmission Control Protocol)๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ, ์—ฐ๊ฒฐ ์ง€ํ–ฅ์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ์ค‘์š”ํ•œ ๊ณผ์ •์ด 3-way handshake์™€ 4-way handshake์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ•™์Šต์—์„œ๋Š” ์ด ๋‘ ๊ฐ€์ง€ ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. 3-way Handshake

3-way handshake๋Š” TCP ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด ์„ธ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

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

  1. SYN: ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์œ„ํ•ด SYN ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•ด ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    Client โ†’ Server : SYN (seq = x)
    
  2. SYN-ACK: ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ SYN์„ ์ˆ˜์‹ ํ•œ ํ›„, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์— ๋Œ€ํ•œ ์Šน์ธ ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•œ SYN-ACK ํŒจํ‚ท์„ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์„œ๋ฒ„๋„ ์ž์‹ ์˜ ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    Server โ†’ Client : SYN-ACK (seq = y, ack = x + 1)
    
  3. ACK: ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ SYN-ACK์„ ์ˆ˜์‹ ํ•œ ํ›„, ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ์œผ๋กœ ACK ํŒจํ‚ท์„ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    Client โ†’ Server : ACK (seq = x + 1, ack = y + 1)
    

์ด ๊ณผ์ •์ด ๋๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ TCP ์—ฐ๊ฒฐ์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

์•„๋ž˜๋Š” 3-way handshake์˜ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ธ ๊ฐ„๋‹จํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

Client              Server
   |                     |
   | -------- SYN ------>|
   |                     |
   | <----- SYN-ACK ---- |
   |                     |
   | -------- ACK ------>|
   |                     |

2. 4-way Handshake

4-way handshake๋Š” TCP ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ๋„ค ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

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

  1. FIN: ํด๋ผ์ด์–ธํŠธ(๋˜๋Š” ์„œ๋ฒ„)๋Š” ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด FIN ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    Client โ†’ Server : FIN (seq = x)
    
  2. ACK: ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ FIN ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•œ ํ›„, ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ์— ๋Œ€ํ•œ ํ™•์ธ์œผ๋กœ ACK ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    Server โ†’ Client : ACK (seq = y, ack = x + 1)
    
  3. FIN: ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋„ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด FIN ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    Server โ†’ Client : FIN (seq = y)
    
  4. ACK: ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ FIN ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•œ ํ›„, ๋งˆ์ง€๋ง‰์œผ๋กœ ACK ํŒจํ‚ท์„ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    Client โ†’ Server : ACK (seq = x + 1, ack = y + 1)
    

์ด ๊ณผ์ •์„ ๋ชจ๋‘ ๋งˆ์น˜๋ฉด TCP ์—ฐ๊ฒฐ์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

์•„๋ž˜๋Š” 4-way handshake์˜ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ธ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

Client              Server
   |                     |
   | -------- FIN ----->|
   |                     |
   | <----- ACK --------|
   |                     |
   | <----- FIN --------|
   |                     |
   | -------- ACK ----->|
   |                     |

3. ์ค‘๊ฐ„ ์š”์•ฝ

  • 3-way handshake: TCP ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„ธ ๋ฒˆ์˜ ํŒจํ‚ท ๊ตํ™˜์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • 4-way handshake: TCP ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋„ค ๋ฒˆ์˜ ํŒจํ‚ท ๊ตํ™˜์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

4. ์š”์•ฝ

TCP ํ”„๋กœํ† ์ฝœ์€ ์•ˆ์ •์ ์ธ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ 3-way์™€ 4-way handshake ๊ณผ์ •์„ ํ•„์ˆ˜์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. 3-way handshake๋Š” ๋ฐ์ดํ„ฐ ํ†ต์‹  ์ „์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ , 4-way handshake๋Š” ํ†ต์‹  ์ข…๋ฃŒ ํ›„ ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ์ดํ•ดํ•จ์œผ๋กœ์จ TCP์˜ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์„ ๋”์šฑ ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.