๐ŸŒ TCP/UDP ๋™์ž‘ ์›๋ฆฌ ์™„์ „ ์ •๋ณต

๋„๋‘๋งจยท2025๋…„ 7์›” 4์ผ

๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
22/23

์น™์ด‰์˜ TCP/UDP๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


โ“ ์™œ ์•Œ์•„์•ผ ํ• ๊นŒ?

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ์‹ ๋ขฐ์„ฑ ํ™•๋ณด๋ฅผ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

  • ๐Ÿ“ฆ ๋ฐ์ดํ„ฐ์˜ ์†Œ์‹ค ๋ฐฉ์ง€
  • ๐Ÿ“ ์ˆœ์„œ ๋ณด์žฅ
  • ๐Ÿš€ HTTP 3.0์—์„œ ์‚ฌ์šฉ๋˜๋Š” QUIC๋„ UDP ๊ธฐ๋ฐ˜

๐Ÿ“š TCP/IP 4๊ณ„์ธต ๋ชจ๋ธ

๊ณ„์ธต์„ค๋ช…
Application๋ธŒ๋ผ์šฐ์ €, ๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ ๋“ฑ
TransportTCP, UDP - ์˜ค๋Š˜์˜ ์ฃผ์ œ!
InternetIP (๋ผ์šฐํŒ…)
Network Access์ด๋”๋„ท ๋“ฑ

๐Ÿ” TCP ๋™์ž‘ ๊ณผ์ •

1๏ธโƒฃ ์†Œ์ผ“ ์ƒ์„ฑ

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋„๋ฉ”์ธ๊ณผ TCP ํƒ€์ž…์œผ๋กœ ์†Œ์ผ“ ์š”์ฒญ
  • OS์˜ ํ”„๋กœํ† ์ฝœ ์Šคํƒ์ด ์†Œ์ผ“ ์ƒ์„ฑ โ†’ ์†Œ์ผ“ ๋””์Šคํฌ๋ฆฝํ„ฐ ๋ฐ˜ํ™˜
  • ๋””์Šคํฌ๋ฆฝํ„ฐ = ์†Œ์ผ“์˜ ๋ฒˆํ˜ธํ‘œ

์†Œ์ผ“ ์ƒ์„ฑ


2๏ธโƒฃ 3-Way Handshake (์—ฐ๊ฒฐ ์„ค์ •)

3-way handshake

  • ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋””์Šคํฌ๋ฆฝํ„ฐ + ์„œ๋ฒ„ IP ์ฃผ์†Œ + ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์–ด์„œ ํ˜ธ์ถœ
  • ํ”„๋กœํ† ์ฝœ ์Šคํƒ์ด ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์›น์„œ๋ฒ„๋กœ ์š”์ฒญ ์ „๋‹ฌ

  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์ดˆ๊ธฐํ™”
  • ์ดˆ๊ธฐํ™”ํ•œ ๋ฒˆํ˜ธ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ SYN์„ ์„ค์ •ํ•ด์„œ ์„œ๋ฒ„๋กœ ์ „์†ก
  • SYN: ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ๊ณต์œ ํ•จ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ปจํŠธ๋กค ๋น„ํŠธ

์ดˆ๊ธฐ Sequence Number๋Š” ๋‚œ์ˆ˜๋กœ ์„ค์ •๋˜์–ด ์žฌ์ „์†ก ์ถฉ๋Œ ๋ฐฉ์ง€

  • ์„œ๋ฒ„์—์„œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์„œ ๊ณต์œ 
  • ์‹œํ€€์Šค ๋ฒˆํ˜ธ ์ˆ˜์‹ ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ACK ๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ์ดํ„ฐ ์†ก์‹ 

  • ํด๋ผ์ด์–ธํŠธ์—์„œ ACK๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ด์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์†ก์‹ 

์ด๋Ÿฐ ๊ณผ์ •์„ ๊ฑฐ์ณ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋จ!!!


3๏ธโƒฃ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 

๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ํ๋ฆ„

  • ํด๋ผ์ด์–ธํŠธ๋Š” write()๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

  • ์„œ๋ฒ„๋Š” read()๋กœ ์ˆ˜์‹  ํ›„ write()๋กœ ์‘๋‹ต

  • ํด๋ผ์ด์–ธํŠธ๋Š” read()๋กœ ์ˆ˜์‹ 

๐Ÿ“› ํŒจํ‚ท ์†Œ์‹ค ์‹œ:

  • ์žฌ์ „์†ก ์ˆ˜ํ–‰
  • ์žฌ์‹œ๋„ ์‹คํŒจ ์‹œ ์˜ค๋ฅ˜ ๋ฐ˜ํ™˜

4๏ธโƒฃ 4-Way Handshake (์—ฐ๊ฒฐ ์ข…๋ฃŒ)

  • ํด๋ผ์ด์–ธํŠธ์—์„œ close ํ˜ธ์ถœ
  • FIN์„ ์„ค์ •ํ•ด์„œ ์„œ๋ฒ„๋กœ ์†ก์‹ 

  • ACK๋ฅผ ์„ค์ •ํ•ด์„œ ์‘๋‹ต
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ FIN ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ

  • ์„œ๋ฒ„์—์„œ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด closeํ˜ธ์ถœ
  • FIN์„ ์„ค์ •ํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ์†ก์‹ 

  • ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์ˆ˜์‹ ์˜ ์˜๋ฏธ๋กœ ACK๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ด์„œ ์„œ๋ฒ„๋กœ ์ „์†ก
  • ํด๋ผ์ด์–ธํŠธ์˜ ์†Œ์ผ“์ด ๋ง์†Œ๋˜๊ณ  ์—ฐ๊ฒฐ์ด ๋Š๊น€

๐Ÿ“Œ ์†Œ์ผ“์€ ๋ฐ”๋กœ ๋ง์†Œ๋˜์ง€ ์•Š๊ณ  ์ผ์ • ์‹œ๊ฐ„ ์œ ์ง€ (TIME_WAIT ์„œ๋ฒ„๊ฐ€ ACKํŒจํ‚ท์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์— ๋‹ค์‹œ ์žฌ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—)


๐Ÿ“„ TCP ์ฃผ์š” ํ•„๋“œ ์š”์•ฝ

ํ•„๋“œ์„ค๋ช…
SYN์—ฐ๊ฒฐ ์‹œ์ž‘
ACK์ˆ˜์‹  ํ™•์ธ
FIN์—ฐ๊ฒฐ ์ข…๋ฃŒ
Seq Numberํ˜„์žฌ ํŒจํ‚ท์˜ ์œ„์น˜
ACK Number๋ช‡ ๋ฐ”์ดํŠธ๊นŒ์ง€ ๋ฐ›์•˜๋Š”์ง€

โšก UDP ๋™์ž‘ ๊ณผ์ •

  • ์†Œ์ผ“ ์ƒ์„ฑ ์‹œ TCP ๋Œ€์‹  UDP ํƒ€์ž… ์ง€์ •

UDP ๋™์ž‘

  • sendto()๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

  • recvfrom()์œผ๋กœ ์ˆ˜์‹ 
  • ํ•ธ๋“œ์…ฐ์ดํฌ ์—†์Œ, ์ˆœ์„œ/์žฌ์ „์†ก ์—†์Œ

๐Ÿ“‰ ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ์‹ ๋ขฐ์„ฑ ๋‚ฎ์Œ โ†’ ์ฃผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ/๊ฒŒ์ž„์— ์‚ฌ์šฉ


๐Ÿงพ TCP vs UDP ๋น„๊ต ์ •๋ฆฌ

ํ•ญ๋ชฉTCPUDP
์—ฐ๊ฒฐ ๋ฐฉ์‹3/4-Way Handshake์—ฐ๊ฒฐ ์—†์Œ
์‹ ๋ขฐ์„ฑ๋†’์Œ๋‚ฎ์Œ
์ „์†ก ์ˆœ์„œ ๋ณด์žฅOX
ํŒจํ‚ท ์†Œ์‹ค ์‹œ์žฌ์ „์†ก๋ฌด์‹œ
์†๋„๋А๋ฆผ๋น ๋ฆ„
์šฉ๋„์›น, ํŒŒ์ผ ์ „์†ก์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ, ๊ฒŒ์ž„

โœจ ๋งˆ๋ฌด๋ฆฌ

  • TCP: ์ •ํ™•์„ฑ ์šฐ์„ 
  • UDP: ์†๋„ ์šฐ์„ 
  • ๋„คํŠธ์›Œํฌ ์„ค๊ณ„ ๋ฐ ์„œ๋น„์Šค ๋ชฉ์ ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํ”„๋กœํ† ์ฝœ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

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