๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

CS

[Network] TCP ์™€ UDP ์˜ ์ฐจ์ด ?

 ๐Ÿ’ก TCP ์™€ UDP ๊ฐ™์€ ๋“ฏ ๋‹ค๋ฅธ ? ๋‹ค๋ฅธ ๋“ฏ ๊ฐ™์€ ? ์ฐจ์ด๊ฐ€ ๋ญ˜๊นŒ?

  ๋…ธ์…˜์—์„œ ๋ณด๊ธฐ

 

 

โš’๏ธ TCP์™€ UDP

 

  • TCP์™€ UDP ๋Š” TCP/IP ๋ชจ๋ธ์˜ ์ „์†ก ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ
    • ์ „์†ก๊ณ„์ธต : IP ์— ์˜ํ•ด ์ „๋‹ฌ๋˜๋Š” ํŒจํ‚ท์˜ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ , ์žฌ์ „์†ก ์š”๊ตฌ ๋“ฑ์˜ ์ œ์–ด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ณ„์ธต
  • ๋‘ ํ”„๋กœํ† ์ฝœ์€ ๋ชจ๋‘ ํŒจํ‚ท์„ ํ•œ ์ปดํ“จํ„ฐ์—์„œ → ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” **IP ํ”„๋กœํ† ์ฝœ**์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์ง•์ด ์žˆ๋‹ค.

 

๐Ÿ‘Œ๐Ÿป TCP (Transmisstion Control Protocol)

 

TCP ํ†ต์‹  ๋ฐฉ์‹

 

TCP ๋ž€?

  • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ์ค‘ **์ „์†ก ๊ณ„์ธต**์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ
  • ์žฅ์น˜๋“ค ์‚ฌ์ด์— ๋…ผ๋ฆฌ์ ์ธ ์ ‘์†์„ ์„ฑ๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด → **์‹ ๋ขฐ์„ฑ**์„ ๋ณด์žฅํ•˜๋Š” **์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค**
  • ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์ผ๋ จ์˜ ์˜ฅํ…Ÿ(๋ฐ์ดํ„ฐ, ๋ฉ”์‹œ์ง€, ์„ธ๊ทธ๋จผํŠธ๋ผ๋Š” ๋ธ”๋ก ๋‹จ์œ„)๋ฅผ **์•ˆ์ •์ **์œผ๋กœ, ์ˆœ์„œ๋Œ€๋กœ, ์—๋Ÿฌ์—†์ด ๊ตํ™˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

 

TCP ํŠน์ง•

 

1. ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค

 

  • ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋Š” ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค

๐Ÿค 3-Way Handshake

  • TCP/IP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ํ†ต์‹ ์„ ์ง„ํ–‰ํ•  ๋•Œ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์ข…๋‹จ ๊ฐ„ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด “์—ฐ๊ฒฐ์„ ์„ค์ •”
  1. ํด๋ผ์ด์–ธํŠธ์„œ๋ฒ„ : ์„œ๋ฒ„ ์ ‘์† ์š”์ฒญ **SYN ํŒจํ‚ท**์„ ์ „์†ก
  2. ์„œ๋ฒ„ํด๋ผ์ด์–ธํŠธ : ์š”์ฒญ ์ˆ˜๋ฝ ์‘๋‹ต **ACK ํŒจํ‚ท**๊ณผ + ํฌํŠธ๋ฅผ ์—ด์–ด๋‹ฌ๋ผ๋Š” **SYN ํŒจํ‚ท**์„ ์ „์†ก
  3. ํด๋ผ์ด์–ธํŠธ์„œ๋ฒ„ : ํ™•์ธ ์‘๋‹ต์œผ๋กœ ACK ํŒจํ‚ท ์ „์†ก
  • SYN(Synchronize Sequence Number)
  • ACK(Acknowlegement)

 

๐Ÿค 4-Way Handshake

  • “์—ด๊ฒฐ ์„ค์ • ํ•ด์ œ”
  1. ํด๋ผ์ด์–ธํŠธ์„œ๋ฒ„ : ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๊ฒ ๋‹ค๋Š” FIN ํŒจํ‚ท ์ „์†ก
  2. ์„œ๋ฒ„ํด๋ผ์ด์–ธํŠธ : ์‘๋‹ต์œผ๋กœ ACK ํŒจํ‚ท ์ „์†ก
  3. ์„œ๋ฒ„ํด๋ผ์ด์–ธํŠธ : ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ชจ๋“  ํ†ต์‹ ์„ ๋๋‚ด๊ณ  → ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ฒ ๋‹ค๋Š” FIN ํŒจํ‚ท ์ „์†ก
    • ์ด๋•Œ, ์„œ๋ฒ„๊ฐ€ FIN ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ๋ณด๋ƒˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ FIN ๋ณด๋‹ค ๋Šฆ๊ฒŒ ๋„์ฐฉํ•  ๊ฒฝ์šฐ?
    • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ FIN ์„ ์ˆ˜์‹ ํ–ˆ๋‹ค๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ”๋กœ ์—ฐ๊ฒฐ๋œ ์†Œ์ผ“์„ ๋‹ซ์•„๋ฒ„๋ฆฌ๋ฉด ?
    • FIN ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ๋ณด๋‚ธ ํŒจํ‚ท์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์˜์˜ ๋ฐ›์„ ์ˆ˜ ์—†๊ฒŒ ๋จ
    • ๋”ฐ๋ผ์„œ, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ FIN ์š”์ฒญ์„ ๋ฐ›๋”๋ผ๋„ ์ผ์ •์‹œ๊ฐ„ ์†Œ์ผ“์„ ๋‹ซ์ง€ ์•Š๊ณ , ํ˜น์‹œ๋‚˜, ์•„์ง ๋„์ฐฉํ•˜์ง€ ์•Š์€ ์ž‰์—ฌ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆผ ⇒ Time Wait โฑ๏ธ
  4. ํด๋ผ์ด์–ธํŠธ์„œ๋ฒ„ : ํ™•์ธ ์‘๋‹ต์œผ๋กœ ACK ํŒจํ‚ท ์ „์†ก

 

 

2. ํ๋ฆ„์ œ์–ด(Flow Control)

  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์กฐ์ ˆํ•ด ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€
    • ์†ก์‹ ํ•˜๋Š” ๊ณณ์—์„œ ๊ฐ๋‹น์ด ์•ˆ ๋  ์ •๋„๋กœ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ณด๋‚ด → ์ˆ˜์‹ ํ•˜๋Š” ๊ณณ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง์Œ
    • ์ˆ˜์‹ ์ž๊ฐ€ **์œˆ๋„์šฐ ํฌ๊ธฐ(Window Size)** ๊ฐ’์„ ํ†ตํ•ด ์ˆ˜์‹ ๋Ÿ‰ ๊ฒฐ์ • ๊ฐ€๋Šฅ

 

3. ํ˜ผ์žก์ œ์–ด(Congestion Control)

  • ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ํŒจํ‚ท ์ˆ˜๊ฐ€ ๋„˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€
    • ์ •๋ณด์˜ ์†Œํ†ต๋Ÿ‰์ด ๊ณผ๋‹คํ•˜๋ฉด → ํŒจํ‚ท์„ ์กฐ๊ธˆ๋งŒ ์ „์†กํ•˜์—ฌ → ํ˜ผ์žก ๋ถ•๊ดด ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€

 

์‹ ๋ขฐ์„ฑ ๋†’์€ TCP ์ „์†ก ๋ฐฉ์‹

  1. Dupack-based retransmission
  • ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ACK ๊ฐ’์ด ์—ฐ์†์ ์œผ๋กœ ์ „์†ก๋˜์–ด์•ผ ํ•จ
  • ๊ทธ๋Ÿฌ๋‚˜, ACK ๊ฐ’์ด ์ค‘๋ณต์œผ๋กœ ์˜ฌ ๊ฒฝ์šฐ ํŒจํ‚ท ์ด์ƒ์„ ๊ฐ์ง€ํ•˜๊ณ  → ์žฌ์ „์†ก์„ ์š”์ฒญ
  1. Timeout-based retransmission
  • ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ACK ๊ฐ’์ด ์ˆ˜์‹ ์„ ํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ ์žฌ์ „์†ก์„ ์š”์ฒญ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ FIN ์š”์ฒญ์„ ๋ฐ›๋”๋ผ๋„ ์ผ์ •์‹œ๊ฐ„ ์†Œ์ผ“์„ ๋‹ซ์ง€ ์•Š๊ณ , ํ˜น์‹œ๋‚˜, ์•„์ง ๋„์ฐฉํ•˜์ง€ ์•Š์€ ์ž‰์—ฌ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆผ

์ „์ด์ค‘/์ ๋Œ€์  ๋ฐฉ์‹

  1. ์ „์ด์ค‘ (Full-Duplex)
  • ์ „์†ก์ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ
  1. ์ ๋Œ€์  (Point to Point)
  • ๊ฐ ์—ฐ๊ฒฐ์ด ์ •ํ™•ํžˆ 2๊ฐœ์˜ ์ข…๋‹จ์ (ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

๋ฉ€ํ‹ฐ์บ์ŠคํŒ…/๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ

 

 

๐Ÿคท๐Ÿป UDP (User Datagram Protocol)

 

UDP ํ†ต์‹  ๋ฐฉ์‹

 

UDP Header ์ •๋ณด

 

 

  • UDP ๋Š” ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•ด์ฃผ์ง€ ์•Š์ง€๋งŒ, ์†๋„๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์ด ํŠน์ง•
  • Real Time Protocol(RTP), Multicast, DNS ๊ฐ€ ํ•ด๋‹น

 

๐Ÿ’ฅ TCP Vs UDP ๋น„๊ต

 

๊ณตํ†ต์ 

  • ๋‘ ํ”„๋กœํ† ์ฝœ ๋ชจ๋‘, ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ฃผ์†Œ๋ฅผ ์ง€์ •
  • ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ์ฒดํฌ์„ฌ(Checksum) ์กด์žฌ

 

 

์ฐจ์ด์ 

  • ์—ฐ๊ฒฐ ๋ฐฉ์‹
    • ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค : ์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ•ด์•ผ ํ†ต์‹  ๊ฐ€๋Šฅ
    • ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค : ์—ฐ๊ฒฐ ์—†์ด ํ†ต์‹  ๊ฐ€๋Šฅ
  • ์‹ ๋ขฐ์„ฑ
    • ์‹ ๋ขฐ์„ฑ O : ๋ฐ์ดํ„ฐ์˜ ์žฌ์ „์†ก ์กด์žฌ
    • ๋น„์‹ ๋ขฐ์„ฑ : ๋ฐ์ดํ„ฐ์˜ ๋Œ€์ „์†ก ์—†์Œ
  • ๋ฐ์ดํ„ฐ ๊ฒฝ๊ณ„ ๊ตฌ๋ถ„
    • TCP : ๋ฐ์ดํ„ฐ ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ (Byte - Stream Service)
      • **๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(byte stream)**์„ ์‚ฌ์šฉ
      • ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์ธ ๋ฐ”์ดํŠธ๋กœ ๋ณด๊ณ , ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์˜ ํŒจํ‚ท ์œผ๋กœ ์ „์†ก
      • ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋Š” **์‹œํ€€์Šค ๋ฒˆํ˜ธ**๋กœ ์‹๋ณ„
    • UDP : ๋ฐ์ดํ„ฐ ๊ฒฝ๊ณ„ ๊ตฌ๋ถ„(Datagram Service)
      • ์ˆ˜์‹ ์ž๋Š” ์†ก์‹ ์ž๊ฐ€ ๋ณด๋‚ธ ๊ทธ๋Œ€๋กœ์˜ ํฌ๊ธฐ๋กœ ๋ฐ›๊ฒŒ ๋œ๋‹ค
  • ํ†ต์‹  ์ฃผ์ฒด
    • TCP : ์ผ ๋Œ€ ์ผ(Unicast) ํ†ต์‹ 
    • UDP : ์ผ ๋Œ€ ์ผ, ์ผ ๋Œ€ ๋‹ค (Broadcast), ๋‹ค ๋Œ€ ๋‹ค(Multicast) ํ†ต์‹ 

 

์ฐธ๊ณ ์ž๋ฃŒ