Multiplexing/Demultiplexing๊ณผ ์ ๋ขฐ์ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ
Multiplexing / Demultiplexing
์ ์ก ๊ณ์ธต์ ์์ ๊ณ์ธต์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์์ ์์ผ์ ์ฌ์ฉํด ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผย ์ธ๊ทธ๋จผํธ๋ก ๋ง๋ ๋ค. ์ฌ๋ฌ ์์ผ์์ ๊ฐ์์ ๋ฉ์์ง๋ฅผ ์ ์ก ๊ณ์ธต์ผ๋ก ์ ๋ฌํ๋ฉด ๊ทธ๊ฑธย ํ๋์ ์ธ๊ทธ๋จผํธ๋ก ๋ฌถ๋๋ค๋ ์๋ฏธ์์ย multiplexing์ด๋ผ๊ณ ํ๋ค.
๋ฐ๋๋กย Demultiplexing์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ก๋ฐ๋ ์ ์ก ๊ณ์ธต์์ ์ํํ๋ ๊ฒ์ผ๋ก, ์ธ๊ทธ๋จผํธ์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ์๋ง๋ ์์ผ์ ๊ฐ์ ์ ๋ฌํด์ฃผ๋ ๊ฒ์ด๋ค.
์ด๋ป๊ฒ?
์ธ๊ทธ๋จผํธ๋ย ํค๋์ย ๋ฐ์ดํฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ํค๋๋ ์ฌ๋ฌย ํ๋๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ ๊ทธ ์ค์ย source port์ย dest portย ๋ฑ์ ํ๋๋ฅผ ํตํด ๋๋ฉํฐํ๋ ์ฑ์ ํ ์ ์๊ฒ ๋๋ค.
UDP vs TCP์ ๋๋ฉํฐํ๋ ์ฑ
UDP: dest IP์ dest port ๋ ๊ฐ๋ฅผ ์ฌ์ฉํด์ ๋๋ฉํฐํ๋ ์ฑํ๋ค.
TCP: UDP๊ฐ ์ฌ์ฉํ๋ ๋ ๊ฐ์ ๋๋ถ์ด source port์ source IP๊น์ง ํฌํจํด์ ์ด ๋ค ๊ฐ์ ํ๋๋ฅผ ์ฌ์ฉํด์ ๋๋ฉํฐํ๋ ์ฑ์ ํ๋ค.
(์ ํํ ๋งํ๋ฉด IP์ ๋ํ ํ๋๋ ์ ์ก ๊ณ์ธต์ ํค๋๊ฐ ์๋ย ๋คํธ์ํฌ ๊ณ์ธต์ 'ํจํท'์ ํค๋์ ์๋ค.)
- UDP: dest IP, dest port ๋ ํ๋๊ฐ ๊ฐ์ผ๋ฉด ๊ฐ์ ์์ผ์ผ๋ก ๊ฐ๋ค
- TCP: dest IP, dest port๊ฐ ๊ฐ์๋ source IP๋ source port๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์์ผ์ผ๋ก ์ฌ๋ฆฐ๋ค
์ ์กํ๋ ์ปดํจํฐ์ IP๋ ๋ฌผ๋ก ์์ผ๋ง๋ค ๋ฐ๋ ์ปดํจํฐ์๊ฒ๋ 1:1 ๋์ํ๋ ์์ผ์ ๊ฐ์ง๋ ๊ฒ์ด๋ค. ๊ทธ๋์ TCP์์์ ๊ฒฝ์ฐ๋ฅผย Connection-orientedย demux๋ผ๊ณ ํ๋ค.
์ฐธ๊ณ : ์ฌ๊ธฐ์ ๊ถ๊ธํ ์ ์ด, dest port๊ฐ ๊ฐ์๋ฐ ์ด๋ป๊ฒ ๊ฐ์ ๋ค๋ฅธ ์์ผ์ผ๋ก ์ฐ๊ฒฐํ๋ค๋ ๋ง์ด์ง? ํฌํธ๋ฒํธ๋ ์์ผ์ ๋ถ์ฌ๋๋ ๊ฒ ์๋๋ผ ํ๋ก์ธ์ค์ ๋ถ์ฌ๋๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค.
UDP์ ์ธ๊ทธ๋จผํธ ํค๋
ํ๋๋ ๋ค ๊ฐ๊ฐ ์๋ค:
- source port
- dest port
- length
- checksum: ์ ์ก ๊ณผ์ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ ์ ์๋ ํ๋. ์๋ฌ๊ฐ ์์ผ๋ฉด ์์ผ์ผ๋ก ์ ๋ฌํ์ง ์๊ณ ๋๋ํ๋ค.
UDP๋ ์ต์ํ 1) ๋ฉํฐํ๋ ์ฑ/๋๋ฉํฐํ๋ ์ฑ๊ณผ 2) ์๋ฌ ํ์ธ ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ค๋ค.
์ ๋ขฐ์ ๋ฐ์ดํฐ ์ ์ก (Reliable Data Transfer)
Reliable: ๋ฐ์ดํฐ๊ฐ ์ ์ค๋์ง ์๊ณ ์ ๋ถ ์ ์ก๋๋ค๋ ์๋ฏธ๋ค.
TCP๋ ์์ ๋ณธ ๊ฒ์ฒ๋ผ ์์ผ๋ผ๋ฆฌ 1:1 ์ฐ๊ฒฐ์ ์ ๊ณตํ๋ฉด์ reliableํ ์ฐ๊ฒฐ์ ๋ณด์ฅํ๋ ๊ฒ ๊ฐ์ด ๋ณด์ด์ง๋ง, ์ค์ ๋ก TCP ํต์ ๋ ๋งค์ฐ ๋ถ์์ ํ๋ค๊ณ ํ๋ค. packet error, packet loss๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋์ ์์ ์ ์ธ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ์ ๊ณ ์ํด๋ณด์.
ํ์ํ ๋ฉ์ปค๋์ฆ๋ค
1. ์๋ฌ ๊ฐ์ง (checksum)
์ ์ก ๊ณผ์ ์์ ๋ฐ์ํ ๋นํธ ์๋ฌ๋ฅผ ๊ฐ์งํ๋ค.
2. ํผ๋๋ฐฑ
- Acknowledgements (ACKs) : ์์ ์๊ฐ ๋ฐ์ ์์๊ฒ ํจํท์ด ์ ๋๋ก ๋์ฐฉํ์์ ๋ช ์์ ์ผ๋ก ์๋ ค์ฃผ๋ ๋ฐฉ๋ฒ
- Negative Acknowledgements (NAKs) : ์์ ์๊ฐ ๋ฐ์ ์์๊ฒ ํจํท์ ์๋ฌ๊ฐ ์์์์ ๋ช ์์ ์ผ๋ก ์๋ ค์ฃผ๋ ๋ฐฉ๋ฒ
3. ์ฌ์ ์ก
- NAK ์์๋ ํด๋น ํจํท์ ๋ค์ ์ ์กํ๋ค
- ๋ฐ์ ์๋ ์์ ์๋ก๋ถํฐ ACK๊ฐ ์ค๋ฉด ๋ค์ ํจํท์ ์ ์กํ๋ค
์์ ์ธ ๋ฉ์ปค๋์ฆ๋ค๋ก ์ธ๋ป ๋ณด๋ฉด ์ถฉ๋ถํ ๊น?
4. ์ํ์ค ๋ฒํธ
๋ง์ฝ ์์ ์๊ฐ ์ ์กํ๋ ํผ๋๋ฐฑ(ACK, NAK)์ ์๋ฌ๊ฐ ์๋ค๋ฉด? ํผ๋๋ฐฑ์ ๋ฐ์๋์ง์ ๋ํ ํผ๋๋ฐฑ์ ๋ ์ ์กํด์ผ ๋๋? ๊ทธ๋ผ ๊ทธ ํผ๋๋ฐฑ์์ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด? ๊ทธ๋์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก๋ ํด๊ฒฐํ ์ ์๋ค.
๊ทธ๋์ ํผ๋๋ฐฑ์ ์๋ฌ๊ฐ ์์ผ๋ฉด ๋ฐ์ ์๋ NAK์ผ ์ ์์ผ๋ ํด๋น ํจํท์ ๋ฌด์กฐ๊ฑด ๋ค์ ์ ์กํ๋ค. ๊ทธ๋ฌ๋ฉด ์์ ์ ์ธก์์๋ ์ด ํจํท์ด ์๋ก์ด ํจํท์ธ์ง ์๋๋ฉด ์ด์ ์ ๋ฐ์ ํจํท์ด ์ค๋ณต๋ ๊ฒ์ธ์ง ์ด๋ป๊ฒ ์ ์ ์์๊น?
๊ทธ๋์ ๊ฐย ํจํท๋ณ๋ก ๋ฒํธ(์ํ์ค)๋ฅผ ๋ถ์ฌ ํด๊ฒฐํ๋ค.
๊ทธ๋ฐ๋ฐ ์ํ์ค๋ฅผ 0,1,2, ... ์ด๋ ๊ฒ ๊ณ์ ๋ฌดํ๋๋ก ๋ถ์ฌ๋๊ฐ์ผ ํ๋? ๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ ์ด ํ๋กํ ์ฝ์์๋ ํ ๋ฒ์ ํ๋์ ํจํท์ ์์ฐจ์ ์ผ๋ก ์ ์กํ๋ค. ๊ทธ๋์ 0๊ณผ 1 ๋ ๊ฐ๋ฅผ ๋๋ ค์ฐ๋ฉด ๋๋ค (ํจํท์ ๊ฐ์ mod 2).
NAK-free ๋ฐฉ์
์ํ์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด NAK๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด์ ๊ตฌํํ ์ ์๋ค. ์์ ์๋ ํจํท ๋ฒํธ๋ฅผ ๋ด์ ACK๋ฅผ ๋ณด๋ธ๋ค. ์๋ฌ๊ฐ ์๋ ํจํท์ ๋ฐ์ผ๋ฉด ์ด์ ํจํท์ ACK๋ฅผ ๋ณด๋ธ๋ค. ๊ทธ๋ฌ๋ฉด ๋ฐ์ ์๋ ํจํท์ ๋ค์ ์ ์กํ๋ค.
5. ํ์ด๋จธ
๋ง์ฝ์ ํจํท์ด ์ ์ค๋์ด ์์ ๋์ฐฉํ์ง ์์๋ค๋ฉด, ์์ํ ํผ๋๋ฐฑ์ ๊ธฐ๋ค๋ฆด ์ ์์ผ๋ ํ์ด๋จธ๋ฅผ ์ค์ ํ๊ณ ์ ํด์ง ์๊ฐ ์์ ํผ๋๋ฐฑ์ด ์ค์ง ์์ผ๋ฉด ์ ์ค๋ก ๊ฐ์ฃผํ๊ณ ์ฌ์ ์กํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ํ์ด๋จธ์ ์๊ฐ์ ์ด๋ป๊ฒ ์ ํด์ผ ๋ ๊น?
- ํ์ด๋จธ์ ์๊ฐ์ดย ๋๋ฌด ์งง์ผ๋ฉด: ๋คํธ์ํฌ ์ฌ์ฉ๋์ด ๋ง๋ค๋ ๋จ์ (premature timeout ๊ฒฝ์ฐ)์ด ์๋ค
- ํ์ด๋จธ์ ์๊ฐ์ดย ๋๋ฌด ๊ธธ๋ฉด: ๋คํธ์ํฌ ์ฌ์ฉ๋์ด ์ค์ง๋ง ๋ฐ์ดํฐ ์ ์ก ๊ณผ์ ์์ฒด์ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์๋ค๋ ๋จ์ ์ด ์๋ค
Pipelined Protocols
์ด๋ ๊ฒ 5๊ฐ์ง ๋ฉ์ปค๋์ฆ (์๋ฌ ๊ฐ์ง, ํผ๋๋ฐฑ, ์ฌ์ ์ก, ์ํ์ค, ํ์ด๋จธ)์ ์ฌ์ฉํด์ ํจํท์ ์์ฐจ์ ์ผ๋ก ํ๋์ฉ ์ ์กํ๋ ํ๋กํ ์ฝ์ ๊ณ ์ํด๋ดค๋๋ฐ, ์ค์ ๋ก TCP๋ ์ด์ ์ ์ฌํ ๋ฐฉ์(๊ท์น์ ๋๊ฐ๋ค)์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฐ๋ฐ ์ง๊ธ ๊ณ ์ํ ํ๋กํ ์ฝ์ ๋๋ฌด ๋จ์ํ๊ณ , ๊ทธ๋์ ๋นํจ์จ์ ์ด๋ค. ํ ๋ฒ์ ํ๋์ ํจํท์ ์ ์กํ๋ฉด ์์ ์ ์ด์ง๋ง ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค.
Go-Back-N (GBN)
์ด ํ๋กํ ์ฝ์ '์๋์ฐ(window)'๋ผ๋ ๋จ์๋ก ํ ๋ฒ์ ์ฌ๋ฌ ํจํท์ ๋ณด๋ธ๋ค.
์๋ฅผ ๋ค์ด ์๋์ฐ ์ฌ์ด์ฆ๊ฐ 5๋ผ๋ฉด, ํ ๋ฒ์ 0,1,2,3,4๋ฒ ํจํท์ ์ ์กํ๋ค. ์์ ์ ์ธก์์๋ ๋ง๊ฒ ์์ ํ ํจํท ๋ฒํธ๋ณ๋ก ACK๋ฅผ ๋ณด๋ธ๋ค. 3๋ฒ ํจํท์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ACK2๊น์ง ํผ๋๋ฐฑ์ ๋ณด๋ธ๋ค (cumulative ACK๋ผ๊ณ ํ๋ค).
๊ทธ๋ฌ๋ฉด ๋ฐ์ ์๋ ๋ค์ 3๋ฒ๋ถํฐ ์๋์ฐ ์ฌ์ด์ฆ์ ๋ง๊ฒ 5๊ฐ์ ํจํท 3,4,5,6,7์ ๋ณด๋ธ๋ค.
์ด ๋ฐฉ์์ ์์์ ๊ณ ์ํ ํ๋กํ ์ฝ๋ณด๋ค ๋ ํจ์จ์ ์ผ ์ ์์ง๋ง ๊ทธ๋๋ ์ค๋ณต๋๋ ํจํท์ ์ฌ๋ฌ ๋ฒ ์ ์กํด์ผ ๋ ์ ์๋ค๋ ์ ์์ ์์ง๋ ๋ง์ด ๋นํจ์จ์ ์ด๋ค.
Selective Repeat (SR)
์ด ๋ฐฉ์์์๋ cumulative ACK๊ฐ ์๋๋ผ ๋ชจ๋ ํจํท์ ๋ํด ACK๋ฅผ ๋ณด๋ธ๋ค. 0,1,2,3,4 ์ค์์ 3๋ฒ ํจํท์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ผ๋ฉด ACK๋ 0,1,2,4๋ฒ๋ง ๋ณด๋ธ๋ค.
์ํ์ค ๋ฒํธ๋?
๊ทธ๋ฐ๋ฐ ์์ ๋ฐฉ๋ฒ์์ ๋ฌธ์ ๊ฐ ํจํท ๋ฒํธ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ๋๋์ง์ ๋ํ ๋ฌธ์ ๊ฐ ๋จ๋๋ค. ์๋์ฐ ์ฌ์ด์ฆ๊ฐ 5๋ผ๊ณ ํ๋ฉด ์ํ์ค ๋ฒํธ ๋ช ๊ฐ๋ฅผ ์จ์ผ ํ ๊น?
๋ฌธ์ ์ํฉ ์์:
์๋์ฐ ์ฌ์ด์ฆ๊ฐ 3์ด๊ณ ํจํท ๋ฒํธ๋ฅผ 0,1,2,3 ์ด๋ ๊ฒ ๋ค ๊ฐ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
- ์ฒ์์ 0,1,2๋ฅผ ์ ์กํ๊ณ ์์ ์๋ ๋ชจ๋ ์ ์ ๋ฌ๋ฐ์์ ACK๋ฅผ ์ ์กํ์ง๋ง ๊ทธ ํผ๋๋ฐฑ๋ค์ด ๋ชจ๋ ์ ์ค๋์๋ค๊ณ ํ์
- ๊ทธ๋ฌ๋ฉด ๋ฐ์ ์๋ timeout๋๋ ๋ค์ ๋ชจ๋ ํจํท์ ์ฌ์ ์ก
- ์์ ์๋ 3,0,1์ ๊ธฐ๋ค๋ฆฌ๋๋ฐ ๋์ฐฉํ 0,1,2 ์ค์ 0๊ณผ 1์ด ์ค๋ณต๋ ํจํท์ธ๊ฑธ ์์๋ด์ง ๋ชปํ๋ค
ํด๊ฒฐ ๋ฐฉ๋ฒ:
์ด๊ฑธ ํด๊ฒฐํ๋ ๊ฒ์ ๊ฐ๋จํ๋ฐ ์ํ์ค ๋ฒํธ๋ฅผ ๋๋ฆฌ๋ฉด ๋๋ ๊ฒ์ด๋ค.ย ์๋์ฐ ์ฌ์ด์ฆ์ 2๋ฐฐ ๊ฐ์์ ์ํ์ค ๋ฒํธ๋ฅผ ์ฌ์ฉํ๋ฉดย ๊ฒน์น ์ผ์ด ์๋ค.
N๊ฐ๋ฅผ ๋ณด๋์ ๋ a๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ฉด N+a๊ฐ์ ์ํ์ค ๋ฒํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๋ฐ, N๊ฐ ์์์ ๋ฐ์ํ ์ ์๋ ํจํท ์ค๋ฅ์ ์๋ N์ด๋๊น N+N์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
Selective Repeat์ด ๊ทธ๋ฌ๋ฉด ์ต์ ์ผ๊น?
์ด์ ์ํ์ค ๋ฒํธ ๋ฌธ์ ๋ ํด๊ฒฐ๋๋๋ฐ ๊ทธ๋ฌ๋ฉด ์ด ๋ฐฉ๋ฒ์ด ์ต์ ์ผ๊น? ์ง๊ธ ์ฌ์ฉ๋๊ณ ์๋ TCP๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๊น?
๊ตฌํ์ ๋น์ฉ์ด ๋๋ฌด ๋ง์ด ๋ ๋ค๊ณ ํ๋ค (๋น์ฉ์ด๋ผ ํจ์ ์ปดํจํ ์์์ ์๋ชจ๊ฐ ํฌ๋ค๋ ๋ง). ๊ทธ๋์ ์ค์ ๋ก TCP์์๋ Go-Back-N๊ณผ Selective Repeat์ ์ฅ์ ์ ์ ์์ด์ ์ฌ์ฉ ์ค์ด๋ผ๊ณ ํ๋ค.
๊ฐ ๋ฐฉ์์ ์ฅ๋จ์ :
- GBN์ ์ฅ์ : Selective Repeat ๋ฐฉ์์ฒ๋ผย ๋ณต์กํ ๊ด๋ฆฌ๊ฐ ํ์ํ์ง ์๋ค๋ ์
- Selective Repeat์ ์ฅ์ : GBN์ฒ๋ผย ์ค๋ณต๋ ํจํท์ ์ฌ๋ฌ ๋ฒ ์ฌ์ ์กํ ํ์๊ฐ ์๋ค๋ ์
์ด๋ฐ ์ฅ์ ๋ค์ด ์๋ ๊ฒ ๊ฐ์๋ฐ ์ด๋ค์ ์ด๋ป๊ฒ ์์๋ค๋ ๊ฑธ๊น? TCP๋ ๊ธฐ๋ณธ์ ์ผ๋ก GBN์ cumulative ACK ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด์, Fast Retransmit ๊ฐ์ ๊ธฐ๋ฒ์ผ๋ก Selective Repeat์ ์ฅ์ ์ ์ผ๋ถ ๊ฐ์ ธ์จ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ ๋ฆฌ
์ ๋ขฐ์ ๋ฐ์ดํฐ ์ ์ก์ ์ํด์๋ ๋ค์ 5๊ฐ์ง ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค:
- ์๋ฌ ๊ฐ์งย (checksum)
- ํผ๋๋ฐฑย (ACK/NAK)
- ์ฌ์ ์ก
- ์ํ์ค ๋ฒํธ
- ํ์ด๋จธ
๊ทธ๋ฆฌ๊ณ ํจ์จ์ฑ์ ์ํด pipelining์ ๋์ ํ๋ฉด์ Go-Back-N๊ณผ Selective Repeat ๊ฐ์ ํ๋กํ ์ฝ์ด ๋ฑ์ฅํ๊ณ , ์ค์ TCP๋ ์ด๋ค์ ์ฅ์ ์ ์กฐํฉํด์ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ด๋ค.