[CS] UDP๋ž€?

giggleยท2023๋…„ 8์›” 7์ผ
0
post-custom-banner

๐Ÿ“Œ UDP๋ž€?

UDP(User Datagram Protocol)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์—ฐ๊ฒฐ์ ์ด๊ณ  ์‹ ์†ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. UDP๋Š” ์—ฐ๊ฒฐ ์„ค์ •๊ณผ ์ข…๋ฃŒ ๊ณผ์ •์ด ์—†์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์ˆœ์„œ์™€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋‹จ์ˆœํ•˜๊ณ  ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์›ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

๋น„์—ฐ๊ฒฐ์„ฑ: UDP๋Š” ์—ฐ๊ฒฐ ์„ค์ •์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ „์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ์ „์†ก ํ›„์— ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹ ์†ํ•œ ์ „์†ก: UDP๋Š” ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์ด ์—†๊ณ , ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ˆœ์„œ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ: UDP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒจํ‚ท์ด ์ˆ˜์‹ ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ๋ขฐ์„ฑ ๋ถ€์กฑ: UDP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ํŒจํ‚ท ์†์‹ค์ด๋‚˜ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž‘์€ ํ—ค๋” ํฌ๊ธฐ: TCP์— ๋น„ํ•ด UDP ํ—ค๋” ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค.

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

UDP Header


Source port : ์‹œ์ž‘ ํฌํŠธ
Destination port : ๋„์ฐฉ์ง€ ํฌํŠธ
Length : ๊ธธ์ด
Checksum : ์˜ค๋ฅ˜ ๊ฒ€์ถœ

  • ์ค‘๋ณต ๊ฒ€์‚ฌ์˜ ํ•œ ํ˜•ํƒœ๋กœ, ์˜ค๋ฅ˜ ์ •์ •์„ ํ†ตํ•ด ๊ณต๊ฐ„์ด๋‚˜ ์‹œ๊ฐ„ ์†์—์„œ ์†ก์‹ ๋œ ์ž๋ฃŒ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•

UDP์™€ DNS

DNS๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, IP ์ฃผ์†Œ๋ฅผ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ์ธํ„ฐ๋„ท์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. DNS๋Š” UDP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

DNS ํŠน์ง•

๋น ๋ฅธ ์‘๋‹ต: DNS๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งค์šฐ ๋น ๋ฅธ ์‘๋‹ต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. UDP์˜ ๋น„์—ฐ๊ฒฐ์„ฑ๊ณผ ๋‚ฎ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ด๋Ÿฌํ•œ ๋น ๋ฅธ ์‘๋‹ต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ์กฐํšŒ: DNS ์กฐํšŒ(Query)๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. TCP์™€ ๊ฐ™์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๋น ๋ฅด๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด UDP๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ๋™์‹œ ์š”์ฒญ: DNS ์„œ๋ฒ„๋Š” ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋™์‹œ์— ์กฐํšŒ ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. UDP๋Š” ์—ฐ๊ฒฐ ์„ค์ •๊ณผ ํ•ด์ œ์— ๋“œ๋Š” ์‹œ๊ฐ„์ด ์—†์œผ๋ฏ€๋กœ, ๋™์‹œ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ TCP๊ฐ€ ์•„๋‹ˆ๋ผ 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 ์ž‘์—…์„ ํ†ตํ•ด)


์ฐธ๊ณ 

profile
๋ฐฐ์›€์„ ๊ธ€๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.
post-custom-banner

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