TCP 3-Way Handshake

๋ฐ•๋ณ‘์šฑยท2025๋…„ 4์›” 16์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
2/11
post-thumbnail

๐Ÿ“ฆ TCP (Transmission Control Protocol)

TCP๋Š” ์ „์†ก ๊ณ„์ธต(Transport Layer)์˜ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœํ† ์ฝœ๋กœ,
๋ฐ์ดํ„ฐ๋ฅผ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ, ์ˆœ์„œ๋Œ€๋กœ, ์˜ค๋ฅ˜ ์—†์ด ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

ย 

โœ… TCP์˜ 3๊ฐ€์ง€ ํ•ต์‹ฌ ํŠน์ง•

  1. ์—ฐ๊ฒฐ์ง€ํ–ฅ(Connection-Oriented): TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— ๋จผ์ € ์—ฐ๊ฒฐ๋ถ€ํ„ฐ ์„ค์ •ํ•œ๋‹ค. ์ด๋ฅผ 3-way handshake๋ผ๊ณ  ํ•œ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์žฅ(Reliable Delivery): ์ „์†ก ์ค‘ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜๋”๋ผ๋„, ์†ก์‹ ์ž๊ฐ€ ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์žฌ์ „์†กํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆ˜์‹ ์ž๋Š” ๋ˆ„๋ฝ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  3. ์ˆœ์„œ ๋ณด์žฅ(Ordering): TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค. ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€ ํŒจํ‚ท์€ ๋ฒ„ํผ์— ์ €์žฅ๋œ ํ›„ ์žฌ์ •๋ ฌ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง•๋“ค ๋•๋ถ„์— TCP๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ๋กœ, ์›น ๋ธŒ๋ผ์šฐ์ง•, ์ด๋ฉ”์ผ, ํŒŒ์ผ ์ „์†ก ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

ย 

โšก 3-Way Handshake๋ž€?

TCP/IP๋กœ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๋•Œ๋Š” โ€œ3๋‹จ๊ณ„ ์ ˆ์ฐจ(3-Way Handshake)โ€ ๋ฅผ ๊ฑฐ์ณ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์„œ๋กœ๋ฅผ โ€œ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœโ€ ๋ผ๊ณ  ํ™•์ธํ•œ ๋‹ค์Œ์—์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.

โ€œSYNโ€ : "์—ฐ๊ฒฐ ์š”์ฒญ", โ€œACKโ€ : "์‘๋‹ต ํ™•์ธโ€

ย 

1๋‹จ๊ณ„: ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„

: ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ SYN ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด ์„ธ๊ทธ๋จผํŠธ์—๋Š” ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ(Sequence Number)์™€ ์œˆ๋„์šฐ ํฌ๊ธฐ(Window Size) ์ •๋ณด๊ฐ€ ๋‹ด๊ธด๋‹ค.

์˜ˆ: SYN=1, Seq=100

ย 

2๋‹จ๊ณ„: ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๋ฉฐ SYN๊ณผ ACK ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋™์‹œ์— ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

SYN=1, ACK=1, Seq=300, ACK=101

์ฆ‰, ์„œ๋ฒ„๋Š” ์ž์‹ ์˜ ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ(300)๋ฅผ ๋ณด๋‚ด๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ๋ฒˆํ˜ธ(100)๋ฅผ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ์‘๋‹ต(Ack=101)๋„ ํ•จ๊ป˜ ๋ณด๋‚ธ๋‹ค.

ย 

3๋‹จ๊ณ„: ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ํ™•์ธํ•˜๊ณ , ACK ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ธ๋‹ค.

์˜ˆ: ACK=1, Seq=101, Ack=301

์ด ๊ณผ์ •์„ ํ†ตํ•ด ์–‘์ชฝ์€ ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜๊ณ , ์‹œํ€€์Šค ๋ฒˆํ˜ธ ๋™๊ธฐํ™”๋„ ์™„๋ฃŒํ•œ๋‹ค. ์ด์ œ ๋ณธ๊ฒฉ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

ย 

๐Ÿค” ๋…ผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ์ด๋ผ๋Š” ์ 

์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ–ˆ๋‹ค ํ•˜๋”๋ผ๋„, ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” ์ˆ˜๋งŽ์€ ๋…ธ๋“œ(๋ผ์šฐํ„ฐ, ์Šค์œ„์น˜ ๋“ฑ)๋ฅผ ๊ฑฐ์นœ๋‹ค. ์ด ์ค‘๊ฐ„ ๋…ธ๋“œ๋“ค์€ TCP ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์—ฐ๊ฒฐ์€ ์–ด๋””๊นŒ์ง€๋‚˜ โ€œ์ข…๋‹จ ๊ฐ„(end-to-end)์˜ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐโ€ ์ผ ๋ฟ์ด๋‹ค.

ย 

๐Ÿ™‚ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์ฆ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ, ๋‹จ์ˆœํžˆ "๋ณด๋ƒˆ๋‹ค" ๊ณ  ๋๋‚˜์ง€ ์•Š๋Š”๋‹ค. TCP๋Š” ๋ฐ˜๋“œ์‹œ โ€œ์ˆ˜์‹ ์ž๋กœ๋ถ€ํ„ฐ ํ™•์ธ ์‘๋‹ต(ACK)โ€ ์„ ๋ฐ›์•„์•ผ๋งŒ ์ „์†ก์ด ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

๋งŒ์•ฝ ์‘๋‹ต์ด ์—†๊ฑฐ๋‚˜ ์†์‹ค๋˜๋ฉด?

: ์žฌ์ „์†ก ํƒ€์ด๋จธ๊ฐ€ ๋™์ž‘ํ•ด ์ž๋™์œผ๋กœ ํŒจํ‚ท์„ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ์‹ ๋•๋ถ„์—, TCP๋Š” ์†์‹ค ์—†์ด ์™„์ „ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ๋ณด์žฅํ•œ๋‹ค.

ย 

๐Ÿ”ค ์ˆœ์„œ ๋ณด์žฅ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒจํ‚ท์„ 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ ์ˆœ์„œ๋กœ ๋ณด๋ƒˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋Š” ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ 1๋ฒˆ, 3๋ฒˆ, 2๋ฒˆ ์ˆœ์„œ๋กœ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋Ÿด ๋•Œ TCP๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค:

  • ๋„์ฐฉํ•œ ํŒจํ‚ท์€ ์ผ๋‹จ ๋ฒ„ํผ์— ์ €์žฅํ•œ๋‹ค.
  • ์•„์ง ๋„์ฐฉํ•˜์ง€ ์•Š์€ ํŒจํ‚ท์ด ์˜ค๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ, ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ „๋‹ฌํ•œ๋‹ค.
  • ์ผ์ • ์‹œ๊ฐ„ ๋‚ด์— ์•ˆ ์˜ค๋ฉด ์†ก์‹ ์ž์—๊ฒŒ ์žฌ์ „์†ก ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.

ย 

โœจ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

TCP๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ ํ˜ธ๋œ๋‹ค:

  • ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ํ†ต์‹  ์ƒ๋Œ€๋ฅผ ํ™•์ธํ•˜๊ณ ,
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋น ์ง€์ง€ ์•Š๊ณ  ๋„์ฐฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉฐ,
  • ์ˆœ์„œ๋„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์‹ ๋ขฐ์„ฑ์˜ ๋Œ€๊ฐ€๋Š” ์žˆ๋‹ค. โ€์˜ค๋ฒ„ํ—ค๋“œ์™€ ์ง€์—ฐ(latency)โ€ ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์‹ค์‹œ๊ฐ„์„ฑ์ด ์ค‘์š”ํ•œ ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ์ด๋‚˜ ์˜จ๋ผ์ธ ๊ฒŒ์ž„ ๋“ฑ์—์„œ๋Š” UDP๊ฐ€ ์“ฐ์ด๊ธฐ๋„ ํ•œ๋‹ค.

profile
๋„๋ฉ”์ธ์„ ์ดํ•ดํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž(feat. OOP)

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