๐Ÿ”ABOUT TCP

SUUUIยท2025๋…„ 5์›” 7์ผ

๋„คํŠธ์›Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
5/8

์•ž์„œ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ์ธ OSI 7๊ณ„์ธต์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋‹ค.
์ด๋ฒˆ์—” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์ค‘ 4๋ฒˆ์งธ ๊ณ„์ธต์ธ '์ „์†ก๊ณ„์ธต' ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณผ๊ฑด๋ฐ
์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๋ดค์„๋ฒ•ํ•œ TCP , UDP ๊ฐ€ ํ•ด๋‹น ๊ณ„์ธต์— ์†ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

OSI 7๊ณ„์ธต ๋ชจ๋ธ์—์„œ ์ „์†ก ๊ณ„์ธต (Transport layer) ๋Š”
์•ˆ์ •์ ์ธ ์ „์†ก๋กœ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•œ๋‹ค.
์˜ค๋ฅ˜๊ฐ€ ํ™•์ธ๋˜๋ฉด ์žฌ์ „์†ก์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜, ๋ณต๊ตฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์ „์†ก ์ ˆ์ฐจ๋Š” TCP ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ๊ธด ํŠน์ง•์ด๋‹ค.

์ „์†ก ๊ณ„์ธต์—์„œ์˜ ๋ฐ์ดํ„ฐ ๋‹จ์œ„๋Š” ์„ธ๊ทธ๋จผํŠธ(Segment) ์ด๋ฉฐ ,
TCP , UDP ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋ˆ„์–ด ์ˆœ์„œ ๋ฒˆํ˜ธ , ์ˆ˜์‹ ์ธก ์ฃผ์†Œ , ์—๋Ÿฌ ๊ฒ€์ถœ ์ฝ”๋“œ ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.
๋˜ํ•œ ํ•˜์œ„๊ณ„์ธต์—์„œ ์ „๋‹ฌ ๋ฐ›์€ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์›๋ž˜์˜ ๋ฉ”์„ธ์ง€๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค

TCP(Trancemission Control Protocol)

TCP๋Š” Trancemission Control Protocol์˜ ์•ฝ์ž์ด๋‹ค.

โ–ถ๏ธ ์†ก์‹ ์ธก TCP ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒจํ‚ท์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ผ๋ จ๋ฒˆํ˜ธ , ์ˆ˜์‹  ์ธก ์ฃผ์†Œ, ์—๋Ÿฌ ๊ฒ€์ถœ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค

โ–ถ๏ธ ์ˆ˜์‹ ์ธก ๋„์ฐฉ ์‹œ ํŒจํ‚ท์„ ์ˆœ์„œ๋Œ€๋กœ ์žฌ์กฐ์ •ํ•˜๊ณ  , ์—๋Ÿฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์†ก์‹ ์ธก์— ์žฌ์ „์†ก์„ ์š”์ฒญํ•œ๋‹ค
์ด๋•Œ ์ˆ˜์‹ ์ธก์˜ ์ธ์ฆ์ด ํ•„์š”ํ•˜๋‹ค

โ–ถ๏ธ ์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ์ธํ•ด ์•ˆ์ •์ ์ธ ์ „์†ก๋กœ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ , ์‹ ๋ขฐ์„ฑ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ–ถ๏ธ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(Byte Stream) ์„œ๋น„์Šค: TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†๋œ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ „์†กํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ํฌ๊ธฐ์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋ˆ„์–ด ์ „์†กํ•˜๋ฉฐ, ์ˆ˜์‹ ์ธก์—์„œ๋Š” ์ด๋ฅผ ๋‹ค์‹œ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•œ๋‹ค.

โ–ถ๏ธ ์ „์ด์ค‘(Full-duplex) ํ†ต์‹ : ๋ฐ์ดํ„ฐ๊ฐ€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— ์ „์†ก๋  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์–‘์ชฝ ๋๋‹จ์—์„œ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

โ–ถ๏ธ ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ํ•ด์ œ: 3-way handshake๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ ์„ค์ •๊ณผ 4-way handshake๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •์„ ๊ฐ€์ง„๋‹ค.

โ–ถ๏ธ ํ๋ฆ„ ์ œ์–ด(Flow Control):

์ˆ˜์‹  ๋ฒ„ํผ์˜ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆ(๋™์  ๋ณ€ํ™˜)ํ•˜์—ฌ ์†ก์‹ ์ž์˜ ์ „์†ก ์†๋„๋ฅผ ์ œ์–ดํ•œ๋‹ค(sliding windows) , ๋˜ํ•œ ์ˆ˜์‹  ๋ฒ„ํผ์— ๋”ฐ๋ผ ์†ก์‹ ์„ ์ œ์–ดํ•˜๋Š” XON/XOFF ๊ธฐ๋ฒ• ์„ ์ œ๊ณตํ•œ๋‹ค .

โ–ถ๏ธ ํ˜ผ์žก ์ œ์–ด(Congestion Control):

๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก ์ƒํƒœ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ์Šฌ๋กœ์šฐ ์Šคํƒ€ํŠธ, ํ˜ผ์žก ํšŒํ”ผ, ๋น ๋ฅธ ์žฌ์ „์†ก, ๋น ๋ฅธ ํšŒ๋ณต ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

โ–ถ๏ธ ์ˆœ์„œ ๋ณด์žฅ: ์„ธ๊ทธ๋จผํŠธ์— ์ผ๋ จ๋ฒˆํ˜ธ(Sequence Number)๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค.

โ–ถ๏ธ ์˜ค๋ฅ˜ ๊ฒ€์ถœ ๋ฐ ๋ณต๊ตฌ: ์ฒดํฌ์„ฌ(Checksum)์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ๊ฒ€์ถœ๊ณผ ์žฌ์ „์†ก์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ Stop and Wait(๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ํ™•์ธ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค) ์„ ์ œ๊ณตํ•œ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์€ tcp ์˜ ํ—ค๋”์— ๊ด€ํ•œ ๊ทธ๋ฆผ์ด๋‹ค.

โ–ถ๏ธํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ž€ ?
TCP ํ—ค๋”์˜ ํ”Œ๋ž˜๊ทธ๋Š” TCP ์„ธ๊ทธ๋จผํŠธ์˜ ํŠน์„ฑ๊ณผ ๋ชฉ์ ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค. ๊ฐ ํ”Œ๋ž˜๊ทธ๋Š” 1๋น„ํŠธ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ํ™œ์„ฑํ™” ์‹œ ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฒŒ ๋œ๋‹ค.

3way handshake

TCP๋Š” ์—ฐ๊ฒฐํ˜•(๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ) ์„œ๋น„์Šค ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
3-way handshake ๋Š” ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ํ™•๋ฆฝํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ์ ˆ์ฐจ์ด๋‹ค.

  1. SYN(์—ฐ๊ฒฐ์š”์ฒญ)
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค
  • ํด๋ผ์ด์–ธํŠธ๋Š” SYN ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ(์ „์†ก๊ณ„์ธต์˜ ๋ฐ์ดํ„ฐ ๋‹จ์œ„)๋ฅผ ์ „์†กํ•œ๋‹ค
  • ์ด ์„ธ๊ทธ๋จผํŠธ์—๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ดˆ๊ธฐ ์‹œํ€€์Šค ๋ฒˆํ˜ธ(ISN)๊ฐ€ ํฌํ•จ๋œ๋‹ค
  1. SYN-ACK (์—ฐ๊ฒฐ ์š”์ฒญ ์ˆ˜๋ฝ):
  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•œ๋‹ค
  • ์„œ๋ฒ„๋Š” SYN๊ณผ ACK ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ชจ๋‘ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค
  • ์ด ์„ธ๊ทธ๋จผํŠธ์—๋Š” ์„œ๋ฒ„์˜ ์ดˆ๊ธฐ ์‹œํ€€์Šค ๋ฒˆํ˜ธ์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ+1(ํ™•์ธ์‘๋‹ต)์ด ํฌํ•จ๋œ๋‹ค
  1. ACK (์—ฐ๊ฒฐ ํ™•๋ฆฝ):
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ํ™•์ธํ•œ๋‹ค
  • ํด๋ผ์ด์–ธํŠธ๋Š” ACK ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค
  • ์ด ์„ธ๊ทธ๋จผํŠธ์—๋Š” ์„œ๋ฒ„์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ+1(ํ™•์ธ์‘๋‹ต)์ด ํฌํ•จ๋œ๋‹ค

์ด ๊ณผ์ •์„ ํ†ตํ•ด ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ์ฑ„๋„์ด ์„ค์ •๋˜๊ณ , ๋‘ ํ˜ธ์ŠคํŠธ๋Š” ์„œ๋กœ์˜ ์ดˆ๊ธฐ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์ธ์‹ํ•˜๊ฒŒ ๋œ๋‹ค. 3-way handshake๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์‹œ์ž‘๋  ์ˆ˜ ์žˆ๋‹ค.

4way handshake

4-way handshake๋Š” TCP ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ์ด๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

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

  1. FIN (+ACK)(์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ):
  • ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์›ํ•˜๋Š” ์ธก(ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„)์ด FIN ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค
  • ์ด ๋‹จ๊ณ„ ์ดํ›„ FIN์„ ๋ณด๋‚ธ ์ธก์€ ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๋Š”๋‹ค (์ผ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ์ข…๋ฃŒ)
    ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜๋Š” ์žˆ๋‹ค. ์ด๋•Œ ์—ฐ๊ฒฐ์„ ๋ฐ˜๋งŒ ์ข…๋ฃŒ๋˜๊ฒŒ ๋œ๋‹ค (Half-Close ๊ธฐ๋ฒ•)
  1. ACK (์ข…๋ฃŒ ์š”์ฒญ ํ™•์ธ):
  • ์ƒ๋Œ€๋ฐฉ์€ FIN์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ACK ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค
    ์ด๋Š” FIN์„ ์ˆ˜์‹ ํ–ˆ๊ณ  ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ์„ ์ธ์‹ํ–ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค
  • ์ด ๋‹จ๊ณ„ ์ดํ›„์—๋„ ์ƒ๋Œ€๋ฐฉ์€ ์•„์ง ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค
  1. FIN (์ƒ๋Œ€๋ฐฉ์˜ ์—ฐ๊ฒฐ ์ข…๋ฃŒ):
  • ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋งˆ์นœ ์ƒ๋Œ€๋ฐฉ๋„ FIN ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค
  • ์ด์ œ ์ƒ๋Œ€๋ฐฉ๋„ ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค
    ์ด๋กœ์จ ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๋ชจ๋‘ ์ข…๋ฃŒ๋œ๋‹ค
  1. ACK (์ข…๋ฃŒ ์™„๋ฃŒ):
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ดˆ๊ธฐ์— ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์š”์ฒญํ•œ ์ธก์ด ACK๋ฅผ ๋ณด๋‚ด ์ƒ๋Œ€๋ฐฉ์˜ FIN์„ ํ™•์ธํ•œ๋‹ค
  • ์ด ACK ์ดํ›„ ์„œ๋ฒ„๋Š” ์†Œ์ผ“์„ ์ข…๋ฃŒํ•˜๊ฒŒ ๋˜๊ณ  , ์ผ์ • ์‹œ๊ฐ„(TIME_WAIT) ๋™์•ˆ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•œ ๋’ค ์™„์ „ํžˆ ์ข…๋ฃŒํ•œ๋‹ค
  • TIME_WAIT๋Š” ๋„คํŠธ์›Œํฌ์— ์ง€์—ฐ๋œ ํŒจํ‚ท์ด ์žˆ์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์ด๋‹ค. TIME_WAIT๊ฐ€ ๋๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ์ข…๋ฃŒ๋œ๋‹ค

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

profile
๊ฐ„๋‹จํ•œ ๊ฐœ๋ฐœ ๊ธฐ๋ก

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