# UDP



# ๋“ค์–ด๊ฐ€๊ธฐ ์ „

  • # UDP ํ†ต์‹ ์ด๋ž€?

    • User Datagram Protocol์˜ ์•ฝ์ž๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
    • ๋น„์—ฐ๊ฒฐํ˜•, ์‹ ๋ขฐ์„ฑ ์—†๋Š” ์ „์†ก ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
    • ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ๋ฉด์„œ ์ „์†ก์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์†ก ๊ณ„์ธต์ด๋‹ค.
    • Transport layer์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ.

  • # TCP์™€ UDP๋Š” ์™œ ๋‚˜์˜ค๊ฒŒ ๋๋Š”๊ฐ€?

    1. IP์˜ ์—ญํ• ์€ Host to Host (์žฅ์น˜ to ์žฅ์น˜)๋งŒ์„ ์ง€์›ํ•œ๋‹ค. ์žฅ์น˜์—์„œ ์žฅ์น˜๋กœ ์ด๋™์€ IP๋กœ ํ•ด๊ฒฐ๋˜์ง€๋งŒ, ํ•˜๋‚˜์˜ ์žฅ๋น„์•ˆ์—์„œ ์ˆ˜๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ํ†ต์‹ ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” IP๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

    2. ๋˜ํ•œ, IP์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ICMP์—์„œ ์•Œ๋ ค์ค€๋‹ค. ํ•˜์ง€๋งŒ ICMP๋Š” ์•Œ๋ ค์ฃผ๊ธฐ๋งŒ ํ•  ๋ฟ ๋Œ€์ฒ˜๋ฅผ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— IP๋ณด๋‹ค ์œ„์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

    • 1๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋๊ณ , 2๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์œ„ ํ”„๋กœํ† ์ฝœ์ธ TCP์™€ UDP๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

    ICMP : ์ธํ„ฐ๋„ท ์ œ์–ด ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ๋กœ ๋„คํŠธ์›Œํฌ ์ปดํ“จํ„ฐ ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” ์šด์˜์ฒด์ œ์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก๋ฐ›๋Š”๋ฐ ์ฃผ๋กœ ์“ฐ์ž„


  • # ๊ทธ๋ ‡๋‹ค๋ฉด TCP์™€ UDP๊ฐ€ ์–ด๋–ป๊ฒŒ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๊ฐ€?

    • TCP

      ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‹ค, ์ค‘๋ณต, ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€œ ๋“ฑ์„ ์ž๋™์œผ๋กœ ๋ณด์ •ํ•ด์ค˜์„œ ์†ก์ˆ˜์‹  ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•ํ•œ ์ „๋‹ฌ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

    • UDP

      IP๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •๋„์˜ ์ˆ˜์ค€๋งŒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ IP ์ƒ์œ„ ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. TCP์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ๊ณ , ์žฌ์ „์†ก์ด๋‚˜ ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€” ์ˆ˜๋„ ์žˆ์–ด์„œ ์ด ๊ฒฝ์šฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์กด์žฌํ•œ๋‹ค.


  • # UDP๋Š” ์™œ ์‚ฌ์šฉํ• ๊นŒ?

    • UDP์˜ ๊ฒฐ์ •์ ์ธ ์žฅ์ ์€ ๋ฐ์ดํ„ฐ์˜ ์‹ ์†์„ฑ์ด๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ๊ฐ€ TCP๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
    • ์ฃผ๋กœ ์‹ค์‹œ๊ฐ„ ๋ฐฉ์†ก๊ณผ ์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์ด ์•ˆ ์ข‹์„๋•Œ, ๋Š๊ธฐ๋Š” ํ˜„์ƒ์„ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • # DNS(Domain Name Service)์—์„œ UDP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

    • Request์˜ ์–‘์ด ์ž‘์Œ -> UDP Request์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • 3 way handshaking์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. (์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ)
    • Request์— ๋Œ€ํ•œ ์†์‹ค์€ Application Layer์—์„œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • DNS : port 53๋ฒˆ
    • But, TCP๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค! ํฌ๊ธฐ๊ฐ€ 512(UDP ์ œํ•œ)์ด ๋„˜์„ ๋•Œ, TCP๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

# 1. UDP Header

  • Source port : ์‹œ์ž‘ ํฌํŠธ
  • Destination port : ๋„์ฐฉ์ง€ ํฌํŠธ
  • Length : ๊ธธ์ด
  • Checksum : ์˜ค๋ฅ˜ ๊ฒ€์ถœ
    • ์ค‘๋ณต ๊ฒ€์‚ฌ์˜ ํ•œ ํ˜•ํƒœ๋กœ, ์˜ค๋ฅ˜ ์ •์ •์„ ํ†ตํ•ด ๊ณต๊ฐ„์ด๋‚˜ ์‹œ๊ฐ„ ์†์—์„œ ์†ก์‹ ๋œ ์ž๋ฃŒ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ, TCP ๋ณด๋‹ค ์šฉ๋Ÿ‰์ด ๊ฐ€๋ณ๊ณ  ์†ก์‹  ์†๋„๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ž‘๋™๋จ.

๊ทธ๋Ÿฌ๋‚˜ ํ™•์ธ ์‘๋‹ต์„ ๋ชปํ•˜๋ฏ€๋กœ, TCP๋ณด๋‹ค ์‹ ๋ขฐ๋„๊ฐ€ ๋–จ์–ด์ง.

UDP๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ, TCP๋Š” ์—ฐ๊ฒฐ์„ฑ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ.



# DNS๊ณผ UDP ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉ

DNS๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋‹ค.

์ด๋•Œ, TCP๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•  ๋•Œ๊นŒ์ง€ ์„ธ์…˜ ํ™•๋ฆฝ์„ ์œ„ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , ์†ก์‹ ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ๋Š”์ง€ ์ ๊ฒ€ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, Protocol overhead๊ฐ€ UDP์— ๋น„ํ•ด์„œ ํผ.



DNS๋Š” Application layer protocol์ž„.

๋ชจ๋“  Application layer protocol์€ TCP, UDP ์ค‘ ํ•˜๋‚˜์˜ Transport layer protocol์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.

(TCP๋Š” reliable, UDP๋Š” not reliable์ž„)


DNS๋Š” reliableํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์€๋ฐ ์™œ UDP๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?

# ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. TCP๊ฐ€ 3-way handshake๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, UDP๋Š” connection ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Œ.

  2. DNS request๋Š” UDP segment์— ๊ผญ ๋“ค์–ด๊ฐˆ ์ •๋„๋กœ ์ž‘์Œ.

    DNS query๋Š” single UDP request์™€ server๋กœ๋ถ€ํ„ฐ์˜ single UDP reply๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ.

  3. UDP๋Š” not reliable์ด๋‚˜, reliability๋Š” application layer์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Œ. (Timeout ์ถ”๊ฐ€๋‚˜, resend ์ž‘์—…์„ ํ†ตํ•ด)

DNS๋Š” UDP๋ฅผ 53๋ฒˆ port์—์„œ ์‚ฌ์šฉํ•จ.



๊ทธ๋Ÿฌ๋‚˜ TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ.

Zone transfer ์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.

(Zone Transfer : DNS ์„œ๋ฒ„ ๊ฐ„์˜ ์š”์ฒญ์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋–„ ์‚ฌ์šฉํ•˜๋Š” transfer)

๋งŒ์•ฝ์— ๋ฐ์ดํ„ฐ๊ฐ€ 512 bytes๋ฅผ ๋„˜๊ฑฐ๋‚˜, ์‘๋‹ต์„ ๋ชป๋ฐ›์€ ๊ฒฝ์šฐ TCP๋กœ ํ•จ.



# [์ฐธ๊ณ ์ž๋ฃŒ]

์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM