TCP, UDP ํํ ํต์ ํ๋กํ ์ฝ์ ๋ ๊ฐ์๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ด ๋์ ์ฐจ์ด๋ฅผ ๋ฌํํ๊ฒ ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- UDP : ์๋ฌด๊ฒ๋ ์ํ๋ ์
- TCP : ๊ฑฐ์ ๋ค ํ๋ ์
3, 4๊ณ์ธต์์ ์ด๋ฃจ์ด์ง๋ ๊ณต์ ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด ๋ ๊ฐ์ host ๋ค ์ฌ์ด์์ datagram์ ์ก์์ ํ๋ ๋จ๊ณ๋ก, ์ด ์ก์์ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ๋ณต๊ตฌํ๋ ๊ณ์ธต์ด ๋ฐ๋ก Transport layer, 4๊ณ์ธต์ด๋ค. (๋ฌผ๋ก 4๊ณ์ธต์์๋ ๋ ์ค์ํ ์์ ์ด ์๊ธด ํ๋ค.)
๊ทธ๋ฆฌ๊ณ 3๊ณ์ธต๊ณผ 4๊ณ์ธต์์ ์ด๋ฃจ์ด์ง๋ '์ด๋ค ํ๋ก์ธ์ค'๋ฅผ ์ํํ๋๋ฐ ์์ด ํ์ํ ํต์ ํ๋กํ ์ฝ์ด ๋ฐ๋ก TCP, UDP๋ค.
โก๏ธ 3๊ณ์ธต : ์ปดํจํฐ์ ์ปดํจํฐ ์ฌ์ด์ ๋ ผ๋ฆฌ์ ์ธ ์ค์ ์ฐ๊ฒฐํ๋ ๊ฒ. (๋ผ์ฐํฐ๋ฅผ ๊ฐ์ด๋ฐ์ ์์น์ํค๊ณ ๋ ๊ฐ์ ์ค์ ๊ฐ๋๋ค. But ๊ทธ๋ ๋ค๊ณ 2๊ฐ์ IP address๋ฅผ ๊ฐ๋๋? ๊ทธ๊ฑด ์๋.)
โก๏ธ 4๊ณ์ธต : ์๋ฌ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ ๊ณ์ธต + ์ปดํจํฐ์ ์ปดํจํฐ ๊ฐ์ ํ๋ก์ธ์ค, ์ฃผ๊ณ ๋ฐ๋ ์ ๋ณด(ex. Port Number) ์์ฒด๊ฐ ๋ ์ค์.
- IP address + ํ๋ก๊ทธ๋จ(ํ๋ก์ธ์ฑ ์ค)์ ์๋ณ ๋ฒํธ = port ๋ฒํธ.
๐ TCP
4๊ณ์ธต(Tranport Layer)์์๋ ์์ 1, 2, 3 ๊ณ์ธต์์ ์ก์๋ด์ง ๋ชปํ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ๋ณต๊ตฌํ๋ ์ญํ ์ ํ๋ค. ์ด ๋ TCP ๋ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ ์ฌ์ฉ๋๋ ํต์ ํ๋กํ ์ฝ๋ก, ํต์ ๋ฉ์์ง๋ก ๋ถ๋ฆฌ๋ ์ ๋ณด๋ก ์ก์์ ํ์ง ์๋๋ค. ๋์ byte๋ฅผ packet ํํ๋ก ๋ชจ์ Segment๋ผ๋ ๋จ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
์ด๋ C++ ์ stream ํํ์ ๊ต์ฅํ ์ ์ฌํ๋ฐ, ๋ง ๊ทธ๋๋ก ๋ฌผ์ด ํ๋ฅด๋ฏ ์ ๋ ค~ ํ๊ฒ byte ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์ด๋ฅผ ๋๊ณ TCP๋ฅผ Stream-Oriented Protocol ์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, ์ด segment ์ ๋ณด๋ ์ก์ ๊ณผ์ ์์ ์ฌ๋ผ์ง๊ฑฐ๋, ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ธฐ๋ ํ๋ค.
์์ ๊ณผ ์ก์ ๊ณผ์ ์์ ์ ๋ณด๋ ํญ์ ๊ฐ์ ์๋๋ก ๊ฐ์ง ์๋๋ค. ๊ทธ๋์ TCP๋ ์ ๋ณด์ ์์ ์ ์ฅ์ ์ํ ๊ณต๊ฐ์ธ ๋ฒํผ๋ฅผ ํ์๋ก ํ๋ค. ์ด ๋ฒํผ์ ํ ๊ฐ์ง ๋ฐฉ์์ด ์ฐ๋ฆฌ๊ฐ 'ํ'์์ ํํ ๋ณด๋ ์ํ ํ๋ค.
๊ทธ๋ผ ์ด Byte ์ ๋ณด๋ก ์ด๋ฃจ์ด์ง TCP segment ์ format ๊ฐ์ด๋ฐ header ํ๋๋ฅผ ํ ๋ฒ ์ดํด๋ณด์. ์ฐ์ Header๋ผ๊ณ ํ๋ ์์ญ์๋ ์๋์ฐ ์ฌ์ด์ฆ(์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋ ์ ์ฅ ์์ญ)๊ฐ ์ ์ฒด byte ์ ๋ณด์ ์ผ๋ถ(16bit)๋ฅผ ์ฐจ์งํ๊ณ ์์ผ๋ฉฐ, ๋ณด๋ด๋ ์ชฝ์ port address์ ๋ฐ๋ ์ชฝ์ port address๋ ์๋ค. ์ด์ธ์๋ ์ ๋ณด๋ฅผ ์ ์์ ํ๋ค๋ ํต์ ์ ๋ณด Ack๋ ์์ผ๋ฉฐ, ์ด ๋ด๋ถ byte ์ ๋ณด๋ค์ ํตํด TCP๋ ์๋ฌ ๊ฒ์ถ ์ธ์๋ ์ฌ๋ฌ ์์ ์ ์ํํ๋ค.
1๏ธโฃ Flow control (ํ๋ฆ ์ ์ด)
TCP ํค๋์ ํ๋ ๊ฐ์ด๋ฐ ์๋์ฐ ์ฌ์ด์ฆ(rwnd)๊ฐ ์ ์ฒด byte ์ ๋ณด์ ์ผ์ ๋ถ๋ถ์ ์ฐจ์งํ๊ณ ์๋๋ฐ, ์ด ์๋์ฐ ์ฌ์ด์ฆ๋ ์์ ์(๋ฐ๋ ์ชฝ)๊ฐ ๋ฐ์ ์ ์๋ ์์ ๋ฒํผ์ ๊ฐ์ฉ ์ฌ์ด์ฆ๋ฅผ ์๋ฏธํ๋ค.
→ ์ด ๋ TCP ํ๋ฆ ์ ์ด ๋์(flow control)์์๋ ‘๋ฐ๋ ์(receiver)'์ ์ ์ฅ์ด ๊ต์ฅํ ์ค์ํ๋ค. ํด๋ผ์ด์ธํธ๋ ์ ๋ณด๋ฅผ ๋ณด๋ด๊ณ , ์๋ฒ๋ ์ ๋ณด๋ฅผ ๋ฐ๊ฒ ๋๋๋ฐ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋ ์๋ฒ์ ๋ฆฌ์๋ธ ๋ฒํผ ํฌ๊ธฐ๋ ์ ํด์ ธ ์๊ณ , ์ผ๋จ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์์ํ๋ฉด ๊ฐ์ฉํ ๋ฒํผ์ ์ฉ๋์ ์ง์์ ์ผ๋ก ๊ฐ์ํ๊ฒ ๋๋ค.
์ด๋ ์์ ์๋(์๋ฒ) ๋ฐ์ ์ ์๋ ์ ๋ณด์ ์ฌ์ด์ฆ๋ฅผ rwnd ๊ฐ์ ํตํด ๊ณ์ ์๋ ค์ฃผ๊ณ , ๋ณด๋ด๋ ์ชฝ(ํด๋ผ์ด์ธํธ)์์๋ ์ด๋ฅผ ๋์ด๊ฐ์ง ์๋๋ก ์กฐ์ ์ ํ๋๋ฐ, ์ด๊ฒ์ด ๋ฐ๋ก TCP์ 'flow control(ํ๋ฆ์ ์ด ๋์)'์ด๋ค.
2๏ธโฃ Error control (์๋ฌ ์ ์ด)
TCP๋ฟ ๋ง์ด ์๋๊ณ , ๋ชจ๋ ํต์ ๊ธฐ๊ธฐ๋ค์ ๊ฐ๊ฐ์ ๋ชฉ์ ๊ณผ ์๋์ ๋ฐ๋ผ ์ ๋ณด๋ฅผ ์ก์ ํ๊ณ , ์์ ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ์ด ๋ TCP๋ ๊ทธ ์ ๋ณด๋ค ๊ฐ์ ์ธ๊ณผ๊ด๊ณ๋ ๋ฐฐ์ ํ ์ฑ, ์ ๋ณด ์ก์์ ๊ณผ์ ์์ ๋ฐ์ํ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ๋ณต๊ตฌํ๋ ํ๋ก์ธ์ค๋ฅผ ํ๋ค.
→ ์๋ฅผ ๋ค์ด 1, 2, 3, 4๋ผ๋ ์ด๋ฆ์ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค๊ณ ํ ๋, ์ด ์ ๋ณด๋ค์ Router๋ผ๋ ํต์ ๊ธฐ๊ธฐ๋ฅผ ๊ฑฐ์น๋ฉด์ ์์๊ฐ ๋ค๋ฐ๋๊ฑฐ๋ ์ข ์ข ์ฌ๋ผ์ง๊ธฐ๋ ํ๋ค. ๊ทธ๋ผ TCP๋ ๋์ฐฉํ ์ ๋ณด๋ค์ ์์๋ฅผ ์ฌ์กฐํฉํ๊ณ , ์ค๊ฐ์ ์์ด๋ฒ๋ฆฐ ์ ๋ณด๋ค์ ๋ค์ ๋ผ์๋ง์ถ๋ค. ์ด ๋ TCP(Transmission Control Process)๋ ์๋ ๋ค๋ฅธ ๊ณต์ ๊ณผ ํจ๊ป ๊ทธ ์์ ์ ์ํํ๋ค.
3๏ธโฃ Congestion control (ํผ์ก ์ ์ด)
ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์๋ ๋คํธ์ํฌ์์ ๋์ํ๋ ํผ์ก ์ ์ด ๋จ๊ณ๋ก, ์ต์ด์ ์ธํฐ๋ท๊ณผ ํ์ฌ ๋คํธ์ํฌ์๋ ํ์ ํ ์ฐจ์ด๊ฐ ์๋ค. ์ต์ด์ ์ธํฐ๋ท์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ ์ฌ์ด์์ ์ด๋ฃจ์ด์ง๋ ๊ณต์ ์ด์๊ณ , ํ์ฌ๋ ๋ฐ์ดํฐ ์ผํฐ ๋ด์ ์๋ ์๋ฒ to ์๋ฒ, ์ฆ ๊ฐ๊น์ด์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ด๊ณ์์ ์ด ํผ์ก ์ ์ด์ ๋ํ ์ธ์์ด ๋๋๋ฌ์ก๋ค.
⇒ 2๊ณ์ธต์ IP ๋คํธ์ํฌ์์ ํน์ ๋งํฌ๋ ์ฅ์น์ ํธ๋ํฝ์ด ์์๊ฐ์ ๋ชจ์ด๊ฒ ๋๋ฉด, ํธ๋ํฝ๋ค์ด ์ง๋์น๊ฒ ๋ชจ์ด๊ฒ ๋๋๋ฐ ์ด๋ฌํ ํ์์ ๋๊ณ ‘Conjestion(ํผ์ก)’์ด๋ผ ๋ถ๋ฅธ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ TCP๋ ๋ ๊ฐ์ง ๋ฐฉ์์ ์ ์ํ๋ค.
- slow-start
- exponential increase+) additive increase : ๋ ๋ฐฐ๊ฐ ์๋๊ณ 1์ฉ ๋์ด๋จ. ๋ฑ๋ฑ
→ ํ๋ก๊ทธ๋จ ์ต์ด ์คํ ์ cwnd(congestion window)๋ ๋ฌด์กฐ๊ฑด 1์ด๋ค. TCP๋ ๋ณด๋ผ ์ ์๋ ์ต์ด์ ํธ๋ํฝ์ 1๋ก ์์ํด์ ack๊ฐ ์ ์ค๋ฉด, 2๋ก ์ฆ๊ฐํ๊ณ , ๋ค์ ์ ์๋ต์ด ์ค๋ฉด 2๋ฅผ ๋ ๊ณฑํ๋ค. ์ฆ ์ ๊ณฑ์ ํํ(exponential increase)๋ฅผ ๋๊ณ ์๋ค.
#๏ธโฃ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ฉด?
TCP๋ piggybacking ๊ณผ full-duplex๋ผ๋ ๋์์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํ๊ณ ์ฃผ๊ณ ๋ฐ๋ ํจํท์ ์ฒ๋ฆฌํ๋ค. ํ์ง๋ง 1970๋ ๋ ์ด๊ธฐ ๊ตฐ์ฌ ๋ชฉ์ ์ผ๋ก ์์๋ TCP์๊ฒ ์ด๋ฌํ ๋์(segment ์ก์์ , ack ์ฃผ๊ณ ๋ฐ๊ธฐ, ํผ์ก ์ ์ด ๋ฑ๋ฑ)์ ํ๋์ ์ด๋ฅด๋ฌ ๊ทธ ์๋์ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ฐ๋ชฉ์ ์ก๊ฒ ๋์๋ค.
โฉ ๋ชจ๋ TCP๋ ์์ํ ๋ ๋ค ๋๋ฌด ๋๋ฆฌ๋ค. (ํผ์ก ์ ์ด, slow-start ๊ธฐ๋ฅ ๋๋ฌธ์ ๋๋ฌด ๋๋ฆผ)
โฉ ์๋๋ฐฉ์ ์์ ์ ๋ณด์ Ack ๋ฅผ ์ผ์ผ์ด ํ์ธํ๊ณ ์ค์ ์ง์ฐ์ ์ง์์ ์ผ๋ก ํ์ ํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
๐ UDP
TCP ์๋ ๋ฌ๋ฆฌ UDP ๋ ๊ฐ์ฅ ํฐ ํน์ง์ผ๋ก 4๊ณ์ธต์์ ์๋ฌ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ ์์ ์ ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ค. 3๊ณ์ธต๊น์ง์ ์๋ฌ์ ๋ํด์ ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์๋๋ค๋ ๋ง๊ณผ ๊ฐ๋ค. ํํ ์งํ์ฒ ์ด๋ ์จ๋ฆฌ๋ฒ ์ดํฐ์์ ์ ํ๊ฐ ์์ฃผ ๋๊ธฐ๊ณ ํ์ง ์๋๊ฐ (์ฌ์ค ์กฐ๊ธ ๋ ๋ณต์กํ ๊ฐ๋ ์ด๊ธด ํ์ง๋ง..)
์ฌํผ ๊ทธ๋ฌ๋ฉด ์ UDP๋ฅผ ์ฌ๋๋ค์ด ๊ณ์ ์ฐ๋ ๊ฑธ๊น?? ๊ทธ ์ด์ ๋ ๋ฐ๋ก ๋ณด๋ด๋ ์ ๋ณด์ ํฌ๊ธฐ์ ์ค์๋์ ์๋ค. ๋ง ๊ทธ๋๋ก ์์ด๋ฒ๋ ค๋ ํฌ๊ฒ ์ค์ํ์ง ์์ ์ ๋ณด๋ค์ ๋ณด๋ผ ๋ UDP๋ฅผ ์ฌ์ฉํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก UDP์ header ํ๋๋ฅผ ํ ๋ฒ ์ดํด๋ณด์.
๋ณด๋ค์ํผ, TCP์ header์ ๋นํด ํจ์ฌ ํฌ๊ธฐ๋ ์๊ณ ๋ค์ด์๋ ์ ๋ณด๋ ์๋ค. ์์ชฝ์์ ์ก์์ ๋๋ ์ ๋ณด๋ค์ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ํํ๋ก ์์ง์ด๋ฉด์ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ง ์ฃ๊ณ ๋๋ฅธ๋ค. ์ด๋ฌํ ํน์ง ๋๋ฌธ์, UDP๋ Connectionless Service ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ฉฐ, ์์ ์ธ๊ธํ๋ฏ ์๋ฌ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ ์์ ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ , Unreliable ํ ํต์ ํ๋กํ ์ฝ์ด๋ค.
1๏ธโฃ Connection-less , Unreliable
2๏ธโฃ No Error control.
๋ค์์ ๊ณ์..!
'Network > ๐ค Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP / HTTP 1.1 [Network] (0) | 2024.04.18 |
---|---|
OSI 7 Layer [๋คํธ์ํฌ] (2) | 2024.03.14 |
ํต์ ํ๋กํ ์ฝ๊ณผ ๋คํธ์ํฌ [๋คํธ์ํฌ] (0) | 2024.03.09 |