# TCP์ UDP
written by sohyeon, hyemin ๐ก
# 1. TCP(Transmission Control Protocol)
# TCP๋?
TCP(Transmission Control Protocol)
๋ ์ธํฐ๋ท ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์์ง์ ํํ๋ก ๋ณด๋ด๊ธฐ ์ํด IP์ ํจ๊ป ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ด๋ค.
- TCP์ IP๋ฅผ ํจ๊ป ์ฌ์ฉํ๋๋ฐ, IP๊ฐ
๋ฐ์ดํฐ์ ๋ฐฐ๋ฌ์ ์ฒ๋ฆฌ
ํ๋ค๋ฉด TCP๋ํจํท์ ์ถ์ ๋ฐ ๊ด๋ฆฌ
ํ๋ค.
# TCP์ ํน์ง
- TCP๋
์ ๋ขฐ์ฑ์๋ ๋ฐ์ดํฐ ์ ์ก
์ ์ง์ํ๋์ฐ๊ฒฐ์งํฅํ
ํ๋กํ ์ฝ์ด๋ค. - ๋ฐ์ดํฐ ์ ์ก์ ์ ๋ขฐ์ฑ์ ๋ํ๊ธฐ ์ํด
๋ฐ์ดํฐ๋ฅผ ์ธ๊ทธ๋จผํธ(segment)๋ผ๋ ๋จ์๋ก ๋ถํ
ํ๊ณ ,์ ์ก ์๋๋ฅผ ์กฐ์
ํ๋ฉฐ,๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์ ๋ฌ๋์ง ์์์ ๊ฒฝ์ฐ ์ฌ์ ์ก
์ ํ๊ฒ ๋๋ค. ํ๋ฆ ์ ์ด์ ํผ์ก ์ ์ด๋ฅผ ์ง์
ํ๋ฉฐ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅํ๋ค.- TCP๋ UDP์ ๋นํด ์๋๊ฐ ๋๋ฆฌ๋ค.
- TCP๋ ๊ฐ์ ํ์ ๋ฐฉ์์ ์ ๊ณตํ๋ค.
- ์ก์ ์ธก๊ณผ ์์ ์ธก์ ์ฐ๊ฒฐํ์ฌ ํจํท์ ์ ์กํ๊ธฐ ์ํ
๋ ผ๋ฆฌ์ ๊ฒฝ๋ก
๋ฅผ ๋ฐฐ์ ํ๋ค.
- ์ก์ ์ธก๊ณผ ์์ ์ธก์ ์ฐ๊ฒฐํ์ฌ ํจํท์ ์ ์กํ๊ธฐ ์ํ
- ํ ๋ฉ์์ง๊ฐ ์ฌ๋ฌ ๊ฐ์ ํจํท์ผ๋ก ๋๋์ด์ง ๊ฒฝ์ฐ ๊ฐ ํจํท๋ค์ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ํตํด ์ ๋ฌ๋ ์ ์์ผ๋ฉฐ, ๊ทธ๊ฒ๋ค์ ์ต์ข ๋ชฉ์ ์ง์์ ์ฌ์กฐ๋ฆฝ๋๋ค.
- ์น์ด๋ ์ด๋ฉ์ผ, FTP์ ๊ฐ์ด ์ ํํ ๋ฐ์ดํฐ ์ ๋ฌ์ด ํ์ํ ํต์ ์ ์ฌ์ฉํ๋ค.
# TCP ํค๋์ ๊ตฌ์กฐ
TCP์ ์ธ๊ทธ๋จผํธ๋ ๋ฐ์ดํฐ ๋ณธ์ฒด์ TCP ํค๋๊ฐ ๋ถ์ ํํ๋ก ๊ตฌ์ฑ๋๋ค.
์ผ๋ จ๋ฒํธ(sequence number)
: ์ก์ ํ ๋ฐ์ดํธ ์ํ์ธ ์๋ต ๋ฒํธ(acknowledgement number)
: ์์ ํ ๋ฐ์ดํธ ์๋ฐ์ดํฐ ์ต์ (data offset)
: TCP ํค๋์ ๊ธธ์ด์๋์ฐ ์ฌ์ด์ฆ(windows size)
: ํ ๋ฒ์ ์์ ํ ์ ์๋ ๋ฐ์ดํฐ ํฌ๊ธฐ์ฒดํฌ์ฌ(checksum)
: ๋ฐ์ดํฐ๊ฐ ํผ์๋์๋์ง ํ์ธํ๊ธฐ ์ํ ์ ๋ณด
# ํ๋ฆ ์ ์ด์ ํผ์ก ์ ์ด
ํ๋ฆ ์ ์ด(flow control)
ํ๋ฆ ์ ์ด
๋์ก์ ์ธก(ํธ์คํธ)๊ณผ ์์ ์ธก(ํธ์คํธ)์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด๋ฅผ ์กฐ์
ํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ด๋ค.- ์์ ์ธก์ ๋์ฐฉํ ํจํท๋ค์ ๋ฒํผ์ ์์ ๋๋ ๊ฒ๊ณผ ๋์์ ์ด๋ฏธ ๋ฒํผ์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๊บผ๋ด์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
- ์ด๋ ๋ง์ฝ ์์ ์ธก ์ปดํจํฐ์ ์ฑ๋ฅ์ด ๋ฎ๋ค๋ฉด
๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ์๋๋ณด๋ค ์ฒ๋ฆฌํ๋ ์๋๊ฐ ๋๋ ค์ ธ
๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. - ๊ทธ๋์ ์์ ์ธก์ ์๋ต์ ๋ณด๋ผ ๋
์๋์ฐ ์ฌ์ด์ฆ๋ฅผ ์ค์
ํ์ฌํ์ฌ ์ด๋ ์ ๋๊น์ง ์์ ํ ์ ์๋์ง
๋ฅผ ์์๋ก ์๋ ค์ฃผ๊ฒ ๋๋ค.
ํผ์ก ์ ์ด(congestion control)
ํผ์ก ์ ์ด
๋๋คํธ์ํฌ ๋ด์ ํจํท ์๊ฐ ๋์น๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ๋ฐฉ์ง
ํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ด๋ค.- ์ก์ ์ธก์ ๋ฐ์ดํฐ๋ ์ง์ญ๋ง์ด๋ ์ธํฐ๋ท์ผ๋ก ์ฐ๊ฒฐ๋ ๋ํ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๋ฌ๋๋ค.
- ๋ง์ฝ ํ๋์ ๋ผ์ฐํฐ์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ชฐ๋ฆด ๊ฒฝ์ฐ, ๋ผ์ฐํฐ๋ ์์ ์๊ฒ ์จ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๊ทธ๋ ๊ฒ ๋๋ฉด ํธ์คํธ๋ค์ ๋ ๋ค์ ์ฌ์ ์ก์ ํ๊ฒ ๋๊ณ ๊ฒฐ๊ตญ ํผ์ก์ ๊ฐ์ค์์ผ ์ค๋ฒํ๋ก์ฐ๋ ๋ฐ์ดํฐ ์์ค์ ๋ฐ์์ํจ๋ค.
- ๋ฐ๋ผ์, ์ด๋ฌํ ๋คํธ์ํฌ์ ํผ์ก์ ํผํ๊ธฐ ์ํด ์ก์ ์ธก์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ๊ฐ์ ๋ก ์ค์ด๊ฒ ๋๋ค.
# 2. UDP(User Datagram Protocol)
# UDP๋?
UDP(User Datagram Protocol)
๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ํ๋กํ ์ฝ์ด๋ค.
# UDP์ ํน์ง
- UDP๋ TCP์ ๋ฌ๋ฆฌ
๋น์ฐ๊ฒฐํ
ํ๋กํ ์ฝ์ด๋ค. - ์ฐ๊ฒฐ์ ์ํด ํ ๋น๋๋
๋ ผ๋ฆฌ์ ์ธ ๊ฒฝ๋ก
๊ฐ ์๋ค. - ํต์ ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์์ค์ด ๋ฐ์ํ ์ ์๋ค.
- VoIP์ ๊ฐ์ ์์ฑ ์๋น์ค๋ ๋์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ๋๋ฝ๋๊ฑฐ๋ ์๊ณก๋๋๋ผ๋ ํฐ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ UDP๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- UDP๋ TCP์๋ ๋ฌ๋ฆฌ ๋ฉ์์ง๋ฅผ ํจํท(๋ฐ์ดํฐ๊ทธ๋จ)์ผ๋ก ๋๋์ง๋ง ์ต์ข ๋ชฉ์ ์ง์์ ์ฌ์กฐ๋ฆฝํ์ง ์๋๋ค.
- RTP(Real-Time Protocol), Multicast, ๋ฉํฐ๋ฏธ๋์ด, VoIP, DNS์์ ์ฌ์ฉํ๋ค.
- RTP : ์ฌ์ ์กํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ฏ๋ก UDP ์ฌ์ฉ
- DNS : TCP์ฒ๋ผ Session์ ๋งบ๊ณ ํต์ ์ ํ๋ค๋ฉด ์๋๋ ๋๋ฆฌ๊ณ , ์๋ฒ ๋ฆฌ์์ค๋ ์์ฒญ๋๊ฒ ์๋ชจ๋๋ฏ๋ก UDP ์ฌ์ฉ
# UDP ํค๋ ๊ตฌ์กฐ
UDP์์๋ ํจํท์ ํด๋นํ๋ ๊ฒ์ ๋ฐ์ดํฐ๊ทธ๋จ
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํจํท ๊ธธ์ด(UDP length)
: ํค๋ ๊ธธ์ด์ ๋ฐ์ดํฐ ๊ธธ์ด์ ํฉ๊ณ์ฒดํฌ์ฌ(checksum)
: ๋ฐ์ดํฐ๊ฐ ํผ์๋์๋์ง ํ์ธํ๊ธฐ ์ํ ์ ๋ณด
# ๋ธ๋ก๋์บ์คํธ & ๋ฉํฐ์บ์คํธ
TCP์๋ ์๋ ๊ธฐ๋ฅ์ผ๋ก UDP์๋ ํ๋์ ํจํท์ ์ฌ๋ฌ ์์ ์ง์ ์ ๋ฌํ๋ ๋ธ๋ก๋์บ์คํธ(broadcast)
์ ๋ฉํฐ์บ์คํธ(multicast)
๋ผ๋ ๊ธฐ๋ฅ์ด ์๋ค.
๋ธ๋ก๋์บ์คํธ(broadcast)
- local LAN ์์ ๋ถ์ด์๋ ๋ชจ๋ ๋คํธ์ํฌ ์ฅ๋น๋ค์๊ฒ ๋ณด๋ด๋ ํต์ ์ด๋ค.
- ํต์ ์ ๋์์ด ํน์ ํ ํ ๋คํธ์ํฌ๊ฐ ์๋๋ผ, ๋คํธ์ํฌ ์์ ๋ชจ๋ ์ฅ๋น๋ค์๊ฒ ํต์ ์ ํ๋ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ฉํฐ์บ์คํธ(multicast)
- ๋ณด๋ด๊ณ ์ ํ๋ ์ ๋ณด๋ฅผ ๊ทธ๋ฃน ๋ด์ ์ผ์ ๋คํธ์ํฌ ์ฅ๋น๋ค์๊ฒ๋ง ํ๋ฒ์ ๋ณด๋ผ ์ ์๋ ํต์ ์ด๋ค.
# 3. TCP์ UDP์ ์ฐจ์ด์
TCP | UDP |
---|---|
์ฐ๊ฒฐ์งํฅํ ํ๋กํ ์ฝ | ๋น์ฐ๊ฒฐ์งํฅํ ํ๋กํ ์ฝ |
๋ฐ์ดํธ ์คํธ๋ฆผ์ ํตํ ์ฐ๊ฒฐ | ๋ฉ์์ง ์คํธ๋ฆผ์ ํตํ ์ฐ๊ฒฐ |
ํผ์ก์ ์ด, ํ๋ฆ์ ์ด | ํผ์ก์ ์ด, ํ๋ฆ์ ์ด ์ง์ํ์ง ์์ |
์์ ๋ณด์ฅ, ์๋์ ์ผ๋ก ๋๋ฆผ | ์์ ๋ณด์ฅ๋์ง ์์, ์๋์ ์ผ๋ก ๋น ๋ฆ |
์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก, ์์ ์ | ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ์ง ์์ |
TCP ํจํท์ ์ธ๊ทธ๋จผํธ | UDP ํจํท์ ๋ฐ์ดํฐ๊ทธ๋จ |
HTTP, ์ ์์ฐํธ, ํ์ผ ์ ์ก์์ ์ฌ์ฉ | DNS, Broadcasting |
# Reference & Additional Resources
TCP/IP ์ฝ๊ฒ, ๋ ์ฝ๊ฒ
[๋คํธ์ํฌ ์ฝ๊ฒ ์ดํดํ๊ธฐ 22ํธ] TCP 3 Way-Handshake & 4 Way-Handshake
TCP์ UDP ๊ทธ๋ฆฌ๊ณ TCP/IP