๐ก TCP ์ UDP ๊ฐ์ ๋ฏ ๋ค๋ฅธ ? ๋ค๋ฅธ ๋ฏ ๊ฐ์ ? ์ฐจ์ด๊ฐ ๋ญ๊น?
๋ ธ์ ์์ ๋ณด๊ธฐ
โ๏ธ TCP์ UDP
- TCP์ UDP ๋ TCP/IP ๋ชจ๋ธ์ ์ ์ก ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ
- ์ ์ก๊ณ์ธต : IP ์ ์ํด ์ ๋ฌ๋๋ ํจํท์ ์ค๋ฅ๋ฅผ ๊ฒ์ฌํ๊ณ , ์ฌ์ ์ก ์๊ตฌ ๋ฑ์ ์ ์ด๋ฅผ ๋ด๋นํ๋ ๊ณ์ธต
- ๋ ํ๋กํ ์ฝ์ ๋ชจ๋ ํจํท์ ํ ์ปดํจํฐ์์ → ๋ค๋ฅธ ์ปดํจํฐ๋ก ์ ๋ฌํด์ฃผ๋ **IP ํ๋กํ ์ฝ**์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์์ง๋ง, ์๋ก ๋ค๋ฅธ ํน์ง์ด ์๋ค.
๐๐ป TCP (Transmisstion Control Protocol)
TCP ๋?
- ๋คํธ์ํฌ ๊ณ์ธต ์ค **์ ์ก ๊ณ์ธต**์์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ
- ์ฅ์น๋ค ์ฌ์ด์ ๋ ผ๋ฆฌ์ ์ธ ์ ์์ ์ฑ๋ฆฝํ๊ธฐ ์ํด ์ฐ๊ฒฐ์ ์ค์ ํด → **์ ๋ขฐ์ฑ**์ ๋ณด์ฅํ๋ **์ฐ๊ฒฐํ ์๋น์ค**
- ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ์ผ๋ จ์ ์ฅํ (๋ฐ์ดํฐ, ๋ฉ์์ง, ์ธ๊ทธ๋จผํธ๋ผ๋ ๋ธ๋ก ๋จ์)๋ฅผ **์์ ์ **์ผ๋ก, ์์๋๋ก, ์๋ฌ์์ด ๊ตํ ๊ฐ๋ฅํ๊ฒ ํจ
TCP ํน์ง
1. ์ฐ๊ฒฐํ ์๋น์ค
- ๊ฐ์ ํ์ ๋ฐฉ์์ ์ ๊ณตํ๋ ์ฐ๊ฒฐํ ์๋น์ค
๐ค 3-Way Handshake
- TCP/IP ํ๋กํ ์ฝ์ ์ฌ์ฉํด ํต์ ์ ์งํํ ๋, ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ข ๋จ ๊ฐ ์ ํํ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ๊ธฐ ์ํด “์ฐ๊ฒฐ์ ์ค์ ”
- ํด๋ผ์ด์ธํธ → ์๋ฒ : ์๋ฒ ์ ์ ์์ฒญ **SYN ํจํท**์ ์ ์ก
- ์๋ฒ → ํด๋ผ์ด์ธํธ : ์์ฒญ ์๋ฝ ์๋ต **ACK ํจํท**๊ณผ + ํฌํธ๋ฅผ ์ด์ด๋ฌ๋ผ๋ **SYN ํจํท**์ ์ ์ก
- ํด๋ผ์ด์ธํธ → ์๋ฒ : ํ์ธ ์๋ต์ผ๋ก ACK ํจํท ์ ์ก
- SYN(Synchronize Sequence Number)
- ACK(Acknowlegement)
๐ค 4-Way Handshake
- “์ด๊ฒฐ ์ค์ ํด์ ”
- ํด๋ผ์ด์ธํธ → ์๋ฒ : ์ฐ๊ฒฐ์ ํด์ ํ๊ฒ ๋ค๋ FIN ํจํท ์ ์ก
- ์๋ฒ → ํด๋ผ์ด์ธํธ : ์๋ต์ผ๋ก ACK ํจํท ์ ์ก
- ์๋ฒ → ํด๋ผ์ด์ธํธ : ์ฒ๋ฆฌํด์ผ ํ ๋ชจ๋ ํต์ ์ ๋๋ด๊ณ → ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฒ ๋ค๋ FIN ํจํท ์ ์ก
- ์ด๋, ์๋ฒ๊ฐ FIN ์ ๋ณด๋ด๊ธฐ ์ ์ ๋ณด๋๋ ๋ฐ์ดํฐ๊ฐ FIN ๋ณด๋ค ๋ฆ๊ฒ ๋์ฐฉํ ๊ฒฝ์ฐ?
- ์๋ฒ๋ก๋ถํฐ FIN ์ ์์ ํ๋ค๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ก ์ฐ๊ฒฐ๋ ์์ผ์ ๋ซ์๋ฒ๋ฆฌ๋ฉด ?
- FIN ์ ๋ณด๋ด๊ธฐ ์ ์ ๋ณด๋ธ ํจํท์ ํด๋ผ์ด์ธํธ๊ฐ ์์ ๋ฐ์ ์ ์๊ฒ ๋จ
- ๋ฐ๋ผ์, ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ FIN ์์ฒญ์ ๋ฐ๋๋ผ๋ ์ผ์ ์๊ฐ ์์ผ์ ๋ซ์ง ์๊ณ , ํน์๋, ์์ง ๋์ฐฉํ์ง ์์ ์์ฌ ํจํท์ ๊ธฐ๋ค๋ฆผ ⇒ Time Wait โฑ๏ธ
- ํด๋ผ์ด์ธํธ → ์๋ฒ : ํ์ธ ์๋ต์ผ๋ก ACK ํจํท ์ ์ก
2. ํ๋ฆ์ ์ด(Flow Control)
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์กฐ์ ํด ์์ ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์ง
- ์ก์ ํ๋ ๊ณณ์์ ๊ฐ๋น์ด ์ ๋ ์ ๋๋ก ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ณด๋ด → ์์ ํ๋ ๊ณณ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ง์
- ์์ ์๊ฐ **์๋์ฐ ํฌ๊ธฐ(Window Size)** ๊ฐ์ ํตํด ์์ ๋ ๊ฒฐ์ ๊ฐ๋ฅ
3. ํผ์ก์ ์ด(Congestion Control)
- ๋คํธ์ํฌ ๋ด์ ํจํท ์๊ฐ ๋์น๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ๋ฐฉ์ง
- ์ ๋ณด์ ์ํต๋์ด ๊ณผ๋คํ๋ฉด → ํจํท์ ์กฐ๊ธ๋ง ์ ์กํ์ฌ → ํผ์ก ๋ถ๊ดด ํ์์ด ์ผ์ด๋๋ ๊ฒ์ ๋ฐฉ์ง
์ ๋ขฐ์ฑ ๋์ TCP ์ ์ก ๋ฐฉ์
- Dupack-based retransmission
- ์ ์์ ์ธ ์ํฉ์์๋ ACK ๊ฐ์ด ์ฐ์์ ์ผ๋ก ์ ์ก๋์ด์ผ ํจ
- ๊ทธ๋ฌ๋, ACK ๊ฐ์ด ์ค๋ณต์ผ๋ก ์ฌ ๊ฒฝ์ฐ ํจํท ์ด์์ ๊ฐ์งํ๊ณ → ์ฌ์ ์ก์ ์์ฒญ
- Timeout-based retransmission
- ์ผ์ ์๊ฐ ๋์ ACK ๊ฐ์ด ์์ ์ ํ์ง ๋ชปํ ๊ฒฝ์ฐ ์ฌ์ ์ก์ ์์ฒญ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ FIN ์์ฒญ์ ๋ฐ๋๋ผ๋ ์ผ์ ์๊ฐ ์์ผ์ ๋ซ์ง ์๊ณ , ํน์๋, ์์ง ๋์ฐฉํ์ง ์์ ์์ฌ ํจํท์ ๊ธฐ๋ค๋ฆผ
์ ์ด์ค/์ ๋์ ๋ฐฉ์
- ์ ์ด์ค (Full-Duplex)
- ์ ์ก์ด ์๋ฐฉํฅ์ผ๋ก ๋์์ ์ผ์ด๋ ์ ์์
- ์ ๋์ (Point to Point)
- ๊ฐ ์ฐ๊ฒฐ์ด ์ ํํ 2๊ฐ์ ์ข ๋จ์ (ํด๋ผ์ด์ธํธ, ์๋ฒ)์ ๊ฐ์ง๊ณ ์์
→ ๋ฉํฐ์บ์คํ /๋ธ๋ก๋์บ์คํ ์ ์ง์ํ์ง ์์
๐คท๐ป UDP (User Datagram Protocol)
UDP Header ์ ๋ณด
- UDP ๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํด์ฃผ์ง ์์ง๋ง, ์๋๊ฐ ๋น ๋ฅธ ๊ฒ์ด ํน์ง
- Real Time Protocol(RTP), Multicast, DNS ๊ฐ ํด๋น
๐ฅ TCP Vs UDP ๋น๊ต
๊ณตํต์
- ๋ ํ๋กํ ์ฝ ๋ชจ๋, ํฌํธ ๋ฒํธ๋ฅผ ์ด์ฉํด ์ฃผ์๋ฅผ ์ง์
- ๋ฐ์ดํฐ ์ค๋ฅ ๊ฒ์ฌ๋ฅผ ์ํ ์ฒดํฌ์ฌ(Checksum) ์กด์ฌ
์ฐจ์ด์
- ์ฐ๊ฒฐ ๋ฐฉ์
- ์ฐ๊ฒฐํ ์๋น์ค : ์ฐ๊ฒฐ์ด ์ฑ๊ณตํด์ผ ํต์ ๊ฐ๋ฅ
- ๋น์ฐ๊ฒฐํ ์๋น์ค : ์ฐ๊ฒฐ ์์ด ํต์ ๊ฐ๋ฅ
- ์ ๋ขฐ์ฑ
- ์ ๋ขฐ์ฑ O : ๋ฐ์ดํฐ์ ์ฌ์ ์ก ์กด์ฌ
- ๋น์ ๋ขฐ์ฑ : ๋ฐ์ดํฐ์ ๋์ ์ก ์์
- ๋ฐ์ดํฐ ๊ฒฝ๊ณ ๊ตฌ๋ถ
- TCP : ๋ฐ์ดํฐ ๊ฒฝ๊ณ๋ฅผ ๊ตฌ๋ถํ์ง ์์ (Byte - Stream Service)
- **๋ฐ์ดํธ ์คํธ๋ฆผ(byte stream)**์ ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ๋ฐ์ดํธ๋ก ๋ณด๊ณ , ์ธ๊ทธ๋จผํธ ๋จ์์ ํจํท ์ผ๋ก ์ ์ก
- ํด๋น ์ธ๊ทธ๋จผํธ๋ **์ํ์ค ๋ฒํธ**๋ก ์๋ณ
- UDP : ๋ฐ์ดํฐ ๊ฒฝ๊ณ ๊ตฌ๋ถ(Datagram Service)
- ์์ ์๋ ์ก์ ์๊ฐ ๋ณด๋ธ ๊ทธ๋๋ก์ ํฌ๊ธฐ๋ก ๋ฐ๊ฒ ๋๋ค
- TCP : ๋ฐ์ดํฐ ๊ฒฝ๊ณ๋ฅผ ๊ตฌ๋ถํ์ง ์์ (Byte - Stream Service)
- ํต์ ์ฃผ์ฒด
- TCP : ์ผ ๋ ์ผ(Unicast) ํต์
- UDP : ์ผ ๋ ์ผ, ์ผ ๋ ๋ค (Broadcast), ๋ค ๋ ๋ค(Multicast) ํต์
์ฐธ๊ณ ์๋ฃ
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] HTTP์ HTTPS ์ ์ฐจ์ด๋ ? (0) | 2022.07.10 |
---|---|
[Network] HTTP ๋ ? (0) | 2022.07.09 |
[Network] TCP/IP ๋ ? (0) | 2022.07.09 |
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค(Index) (0) | 2022.07.09 |
[Network] OSI 7๊ณ์ธต(feat.TCP/IP Updated) (0) | 2022.06.21 |