๐Ÿ“–TCP

๐Ÿ“–TCP ๋™์ž‘ ๊ณผ์ •

  • TCP๋Š” ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ฒฐ ์„ค์ •/ํ•ด์ œ ๊ณผ์ •์ด ํ•„์š” โ†’ handshake ๊ณผ์ •

๐Ÿ“–3 way handshake

TCP ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •

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

๐Ÿ“Ž3 way handshake ๊ณผ์ •

1. client๋Š” server์— ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท์„ ์ „์†ก

  • SYN ํŒจํ‚ท : ์‹œํ€€์Šค ๋„˜๋ฒ„+SYN ํ”Œ๋ž˜๊ทธ
  • client๋Š” SYN/ACK ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” SYN_SENT ์ƒํƒœ๊ฐ€ ๋จ

2. server๋Š” SYN ์š”์ฒญ์„ ๋ฐ›๊ณ  client์— ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๋Š” ACK ํŒจํ‚ท์„ ์ „์†ก

  • ACK ํŒจํ‚ท : ์‹œํ€€์Šค ๋„˜๋ฒ„+ACK ๋„˜๋ฒ„+SYN+ACK ํ”Œ๋ž˜๊ทธ
  • server๋Š” SYN_RECEIVED ์ƒํƒœ๊ฐ€ ๋จ

3. client๊ฐ€ server์—๊ฒŒ ACK์„ ์ „์†ก

  • server๋Š” ESTABLISHED ์ƒํƒœ๊ฐ€ ๋จ

4. ์—ฐ๊ฒฐ ์„ฑ๊ณต

๐Ÿ“–๋ฐ์ดํ„ฐ ๊ตํ™˜ ๊ณผ์ •

์„œ๋กœ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•œ ACK ๋„˜๋ฒ„๋ฅผ ์ „์†ก ์ด ๋•Œ, ๊ฐ์ž ์ƒ๋Œ€๋ฐฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‹œํ€€์Šค ๋„˜๋ฒ„์— 1์„ ๋”ํ•ด ์ „์†ก โ†’ ์ด ๊ฐ’์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ์†์‹ค ํŒŒ์•… ๊ฐ€๋Šฅ

1. client์—์„œ server๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

  • ๋ฐ์ดํ„ฐ : ์‹œํ€€์Šค ๋„˜๋ฒ„+ACK ํ”Œ๋ž˜๊ทธ

2. server์—์„œ client๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

  • ๋ฐ์ดํ„ฐ : ์‹œํ€€์Šค ๋„˜๋ฒ„+ACK ๋„˜๋ฒ„+ACK ํ”Œ๋ž˜๊ทธ

๐Ÿ“–4 way handshake

TCP ํ†ต์‹ ์—์„œ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •

  • ์ผ๋ฐฉ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์ƒ๋Œ€๋Š” ์—ฐ๊ฒฐ์ด ์ง€์†๋˜๊ณ  ์žˆ๋Š”์ง€ ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ๋Š”์ง€๋ฅผ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜์ ์ธ ๊ณผ์ •

๐Ÿ“Ž4 way handshake ๊ณผ์ •

1. client๊ฐ€ server์— ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ฒ ๋‹ค๋Š” FIN ํŒจํ‚ท์„ ์ „์†ก

  • client๋Š” FIN_WAIT_1 ์ƒํƒœ๊ฐ€ ๋จ

2. server๋Š” ์ผ๋‹จ ํ™•์ธ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ์ž์‹ ์˜ ํ†ต์‹ ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ

  • server๋Š” CLOSE_WAIT ์ƒํƒœ๊ฐ€ ๋จ
  • client๊ฐ€ ํŒจํ‚ท์„ ๋ฐ›๋Š”๋‹ค๋ฉด FIN_WAIT_2 ์ƒํƒœ๊ฐ€ ๋จ

3. ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด, ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด client์—๊ฒŒ FIN ํŒจํ‚ท์„ ์ „์†ก

  • server๋Š” ESTABLISHED ์ƒํƒœ๊ฐ€ ๋จ

4. client๊ฐ€ server์—๊ฒŒ ํ™•์ธํ–ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€ ๋ณด๋ƒ„

  • client๋Š” TIME_WAIT ์ƒํƒœ๊ฐ€ ๋จ
  • server๊ฐ€ ํŒจํ‚ท์„ ๋ฐ›๋Š”๋‹ค๋ฉด CLOSED ์ƒํƒœ๊ฐ€ ๋จ

5. ์—ฐ๊ฒฐ ์ข…๋ฃŒ

  • client๋Š” ์–ด๋А ์ •๋„์˜ ์‹œ๊ฐ„์„ ๋Œ€๊ธฐ ํ•œ ํ›„(TIME_WAIT) client์™€ server์˜ ๋ชจ๋“  ์ž์›์˜ ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋จ

FIN ํŒจํ‚ท๋ณด๋‹ค ๋Šฆ๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด?

client๋Š” ์ด๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด FIN ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๋”๋ผ๋„ ์ผ์ •์‹œ๊ฐ„๋™์•ˆ ์„ธ์…˜์„ ๋‚จ๊ฒจ๋†“์Œ

์ด ๊ณผ์ •์„ TIME_WAIT์ด๋ผ๊ณ  ํ•จ

๐Ÿ”–ย ๋ฐ์ดํ„ฐ๊ฐ€ ๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋Š” ์ƒํ™ฉ

  • Routing ์ง€์—ฐ
  • ํŒจํ‚ท ์œ ์‹ค๋กœ ์ธํ•œ ์žฌ์ „์†ก