# UDP
# ๋ค์ด๊ฐ๊ธฐ ์
# UDP ํต์ ์ด๋?
- User Datagram Protocol์ ์ฝ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ํ๋กํ ์ฝ์ด๋ค.
- ๋น์ฐ๊ฒฐํ, ์ ๋ขฐ์ฑ ์๋ ์ ์ก ํ๋กํ ์ฝ์ด๋ค.
- ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ์ชผ๊ฐ๋ฉด์ ์ ์ก์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์ ์ก ๊ณ์ธต์ด๋ค.
- Transport layer์์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ.
# TCP์ UDP๋ ์ ๋์ค๊ฒ ๋๋๊ฐ?
IP์ ์ญํ ์ Host to Host (์ฅ์น to ์ฅ์น)๋ง์ ์ง์ํ๋ค. ์ฅ์น์์ ์ฅ์น๋ก ์ด๋์ IP๋ก ํด๊ฒฐ๋์ง๋ง, ํ๋์ ์ฅ๋น์์์ ์๋ง์ ํ๋ก๊ทธ๋จ๋ค์ด ํต์ ์ ํ ๊ฒฝ์ฐ์๋ IP๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์๋ค.
๋ํ, 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๋ฅผ ์ฌ์ฉํ ๊น?
# ์ฌ์ฉํ๋ ์ด์
TCP๊ฐ 3-way handshake๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ฉด, UDP๋ connection ์ ์ ์งํ ํ์๊ฐ ์์.
DNS request๋ UDP segment์ ๊ผญ ๋ค์ด๊ฐ ์ ๋๋ก ์์.
DNS query๋ single UDP request์ server๋ก๋ถํฐ์ single UDP reply๋ก ๊ตฌ์ฑ๋์ด ์์.
UDP๋ not reliable์ด๋, reliability๋ application layer์ ์ถ๊ฐ๋ ์ ์์. (Timeout ์ถ๊ฐ๋, resend ์์ ์ ํตํด)
DNS๋ UDP๋ฅผ 53๋ฒ port์์ ์ฌ์ฉํจ.
๊ทธ๋ฌ๋ TCP๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์.
Zone transfer ์ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ์๋ TCP๋ฅผ ์ฌ์ฉํด์ผ ํจ.
(Zone Transfer : DNS ์๋ฒ ๊ฐ์ ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ transfer)
๋ง์ฝ์ ๋ฐ์ดํฐ๊ฐ 512 bytes๋ฅผ ๋๊ฑฐ๋, ์๋ต์ ๋ชป๋ฐ์ ๊ฒฝ์ฐ TCP๋ก ํจ.