โ TCP์ ๊ธฐ๋ฅ
- ์ฌ์ ์ก์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์ค๋ฅ๋ฅผ ์ ์ด
- ํ๋ฆ ์ ์ด๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์์ ๋งํผ์ ๋ฐ์ดํฐ ์ก์์
- ํผ์ก ์ ์ด๋ฅผ ํตํด ๋คํธ์ํฌ๊ฐ ํผ์กํ ์ ๋์ ๋ฐ๋ผ ์ ์ก๋ ์กฐ์
TCP๊ฐ ์ ๋ขฐ์ฑ์ ์ ๋๋ก ๋ณด์ฅํ๋ ค๋ฉด
- ์ก์ ํธ์คํธ๊ฐ ์ก์ ํ ์ธ๊ทธ๋จผํธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ ์ธ์งํ ์ ์์ด์ผ ํจ
- ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ฒ ๋๋ฉด ํด๋น ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ ์กํ ์ ์์ด์ผ ํจ
TCP๋ ์ธ์ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๊ณ ์ฌ์ ์กํ ๊น?
1) ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ์ ๋
2) ํ์์์์ด ๋ฐ์ํ์ ๋
- ํธ์คํธ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ๋๋ง๋ค ์ฌ์ ์ก ํ์ด๋จธ(retransmission timer) ์์
- ํ์์์์ด ๋ฐ์ํ ๋๊น์ง ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ฉด ์ฌ์ ์ก
์ฌ์ ์ก ๊ธฐ๋ฐ ์ค๋ฅ ์ ์ด
โ ์ฌ์ ์ก ๊ธฐ๋ฒ: ARQ(Automatic Repeat Request, ์๋ ์ฌ์ ์ก ์๊ตฌ)
- ์์ ํธ์คํธ์ ๋ต๋ณ(ACK)์ ํ์์์์ ํ ๋๋ก ๋ฌธ์ ๋ฅผ ์ง๋จํ๊ณ , ๋ฌธ์ ๊ฐ ์๊ธด ๋ฉ์์ง๋ฅผ ์ฌ์ ์กํจ์ผ๋ก์จ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๋ ๋ฐฉ์
ARQ์ ๋ํ์ ์ธ ์ธ ๊ฐ์ง ๋ฐฉ์
- Stop-and-Wait ARQ
- Go-Back-N ARQ
- Selective Repeat ARQ
โ Stop-and-Wait ARQ
- ์ ๋๋ก ์ ๋ฌํ์์ ํ์ธํ๊ธฐ ์ ๊น์ง ์๋ก์ด ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ง ์๋ ๋ฐฉ์
- ์ก์ - ํ์ธ - ์ก์ - ํ์ธ
- [์ฅ์ ] ๋จ์ํ์ง๋ง ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅ
[๋จ์ ] ๋คํธ์ํฌ์ ์ด์ฉ ํจ์จ์ด ๋ฎ์์ง๊ณ ์ฑ๋ฅ์ด ์ ํ๋จ
์ก์ ํธ์คํธ: ํ์ธ ์๋ต์ ๋ฐ๊ธฐ ์ ์๋ ๋ ๋ณด๋ด๊ณ ์ถ์ด๋ ๋ชป ๋ณด๋
์์ ํธ์คํธ: ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด๋ ํ๋์ฉ๋ง ํ์ธ ์๋ต
Stop-and-Wait ARQ์ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๊ฐ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๊ฐ ๋์ฐฉํ๊ธฐ ์ ์ด๋๋ผ๋ ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ผ ์ ์์ด์ผ ํจ
- ํ์ดํ๋ผ์ด๋(pipelining): ์ฐ์ํด์ ๋ฉ์์ง๋ฅผ ์ ์กํ ์ ์๋ ๊ธฐ์
โ Go-Back-N ARQ
- ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฐ ARQ ์ผ์ข
- ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ ์ ์ก ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ธ๊ทธ๋จผํธ๋ถํฐ ์ ๋ถ ์ฌ์ ์ก
์์ ๋ฒํธ n๋ฒ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ 'n๋ฒ๋ง์' ํ์ธ ์๋ต์ด ์๋ 'n๋ฒ๊น์ง์ ๋์ ํ์ธ ์๋ต'
*๋์ ํ์ธ ์๋ต(CACK, Cumulative Acknowledgment)
[์ฐธ๊ณ ] ๋น ๋ฅธ ์ฌ์ ์ก (fast retransmit)
- ์ฌ์ ์ก ํ์ด๋จธ๊ฐ ๋ง๋ฃ๋๊ธฐ ์ ์ด๋ผ๋ ์ธ ๋ฒ์ ๋์ผํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์๋ค๋ฉด ๊ณง๋ฐ๋ก ์ฌ์ ์ก
- ํ์ด๋จธ๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ค์ผ ์ ์์
- ์ค๋๋ TCP์์ ๋๋ถ๋ถ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ
โ Selective Repeat ARQ
- ์ ํ์ ์ผ๋ก ์ฌ์ ์ก: ๊ฐ๊ฐ์ ํจํท๋ค์ ๋ํด ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์
- Go-Back-N ARQ์ ACK ์ธ๊ทธ๋จผํธ๊ฐ ๋์ ํ์ธ ์๋ต์ด๋ผ๋ฉด, Selective Repeat ARQ์ ACK ์ธ๊ทธ๋จผํธ๋ ๊ฐ๋ณ ํ์ธ ์๋ต(Selective Acknowledgment)
- ์ค๋๋ ๋๋ถ๋ถ์ ํธ์คํธ๋ Selective Repeat ARQ ์ง์
- Selective Repeat ARQ๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ Go-Back-N ARQ๋ก ๋์
TCP์ ํ๋ฆ ์ ์ด
- ์ก์ ํธ์คํธ๊ฐ ์์ ํธ์คํธ์ ์ฒ๋ฆฌ ์๋๋ฅผ ๊ณ ๋ คํ๋ฉฐ ์ก์์ ์๋๋ฅผ ๊ท ์ผํ๊ฒ ์ ์งํ๋ ๊ธฐ๋ฅ
- Stop-and-Wait ARQ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋์ ํ๋ฆ ์ ์ด ํ์ X
- ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฐ์ Go-Back-N ARQ์ Selective Repeat ARQ์์๋ ํ๋ฆ ์ ์ด๊ฐ ํ์ํจ
โ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(sliding window): TCP ํ๋ฆ ์ ์ด ๊ธฐ๋ฒ
- ์๋์ฐ(window): ์ก์ ํธ์คํธ๊ฐ ํ์ดํ๋ผ์ด๋ํ ์ ์๋ ์ต๋๋
- ์๋์ฐ์ ํฌ๊ธฐ๋งํผ ํ์ธ ์๋ต์ ๋ฐ์ง ์๊ณ ๋ ํ ๋ฒ์ ์ ์ก ๊ฐ๋ฅ
- ์์ ํธ์คํธ๋ก๋ถํฐ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์๋ค๋ฉด?
์๋์ฐ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋
- ์์ ํธ์คํธ๋ก๋ถํฐ ๋ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์๋ค๋ฉด
์๋์ฐ(window)๊ฐ ์ ์ฐจ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฏธ๋๋ฌ์ง๋ฏ(sliding) ์์ง์
์ก์ ์ธก์ ์๋์ฐ(์ก์ ์๋์ฐ)๋ ์๋ค
- ์์ ํธ์คํธ๋ TCPํค๋(์๋์ฐ ํ๋)๋ฅผ ํตํด ์ก์ ํธ์คํธ์๊ฒ ์์ ์ด ๋ฐ์ ๋ฐ์ดํฐ์ ์์ ์๋ ค์ค
- ์ก์ ์๋์ฐ: ํค๋๋ก ์ ๋ฌ๋ฐ์ ์์ ์๋์ฐ ํ ๋๋ก ์ฐ์ฐ
โ ํผ์ก(congestion)
- ๋ง์ ํธ๋ํฝ์ผ๋ก ์ธํด ํจํท์ ์ฒ๋ฆฌ ์๋๊ฐ ๋ฆ์ด์ง๊ฑฐ๋ ์ ์ค๋ ์ฐ๋ ค๊ฐ ์๋ ๋คํธ์ํฌ ์ํฉ
TCP์ ํผ์ก ์ ์ด(congestion control)
- ์ก์ ํธ์คํธ๊ฐ ํผ์กํ ์ ๋์ ๋ง์ถฐ ์ ๋์ ์ผ๋ก ์ ์ก๋์ ์กฐ์ ํ๋ ๊ธฐ๋ฅ
- ํ๋ฆ ์ ์ด์ ์ฃผ์ฒด๊ฐ ์์ ํธ์คํธ๋ผ๋ฉด ํผ์ก ์ ์ด์ ์ฃผ์ฒด๋ ์ก์ ํธ์คํธ
- ํผ์ก ์๋์ฐ(congestion window): ํผ์ก ์์ด ์ ์กํ ์ ์์ ๋ฒํ ๋ฐ์ดํฐ์
- ํผ์ก ์๋์ฐ๊ฐ ํฌ๋ฉด? ํ ๋ฒ์ ์ ์กํ ์ ์๋ ์ธ๊ทธ๋จผํธ ์๊ฐ ๋ง์
- ํผ์ก ์๋์ฐ๊ฐ ์์ผ๋ฉด? ํ ๋ฒ์ ์ ์กํ ์ ์๋ ์ธ๊ทธ๋จผํธ ์๊ฐ ์ ์ (๋คํธ์ํฌ๊ฐ ์ฝ๊ฒ ํผ์กํด์ง ์ ์๋ ์ํฉ)
- ์์ ์๋์ฐ๋ ์์ ํธ์คํธ๊ฐ ํค๋๋ก ์๋ ค์ค
- ํผ์ก ์๋์ฐ๋ ์ก์ ํธ์คํธ๊ฐ ์์์ ์ง์ ๊ณ์ฐํด์ ์์๋ด์ผ ํจ
TCP์ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ
- ํผ์ก ์ ์ด๋ฅผ ์ํํ๋ ์ผ๋ จ์ ๋ฐฉ๋ฒ
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ AIMD(Additive Increase/Multiplicative Decrease): 'ํฉ์ผ๋ก ์ฆ๊ฐ, ๊ณฑ์ผ๋ก ๊ฐ์'
- ํผ์ก์ด ๊ฐ์ง๋์ง ์๋๋ค๋ฉด: ํผ์ก ์๋์ฐ๋ฅผ *RTT(Round Trip Time)๋ง๋ค 1์ฉ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ
- ํผ์ก์ด ๊ฐ์ง๋๋ฉด: ํผ์ก ์๋์ฐ๋ฅผ ์ ๋ฐ์ผ๋ก ๋จ์ด๋จ๋ฆฌ๋ ๋์์ ๋ฐ๋ณต
- ํผ์ก ์๋์ฐ๋ ํฑ๋ ๋ชจ์์ผ๋ก ๋ณํ
RTT (Round Trip Time)
๋ฉ์์ง๋ฅผ ์ ์กํ ๋ค ๊ทธ์ ๋ํ ๋ต๋ณ์ ๋ฐ๋ ๋ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ
ํผ์ก ์๋์ฐ ๊ฐ์ด ๊ณ์ ์ฆ๊ฐํ๋ค๊ฐ,
1) ํผ์ก ์๋์ฐ ํฌ๊ธฐ๊ฐ ๋๋ฆฐ ์์ ์๊ณ์น ์ด์์ด ๋๊ฑฐ๋
2) ํ์์์์ด ๋ฐ์ํ๊ฑฐ๋
3) ์ธ ๋ฒ์ ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ๋ฉด
๋ค์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ ํ
โ ๋๋ฆฐ ์์(slow start) ์๊ณ ๋ฆฌ์ฆ
- ํผ์ก ์๋์ฐ๋ฅผ 1๋ถํฐ ์์ํด ๋ฌธ์ ์์ด ์์ ๋ ACK ์ธ๊ทธ๋จผํธ ํ๋๋น 1์ฉ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์
- ํผ์ก ์๋์ฐ๋ RTT๋ง๋ค 2๋ฐฐ์ฉ ์ง์์ ์ผ๋ก ์ฆ๊ฐ: ์ด๊ธฐ ์ ์ก ์๋ ๋น ๋ฅธ ํ๋ณด
โ ํผ์ก ํํผ ์๊ณ ๋ฆฌ์ฆ
- RTT๋ง๋ค ํผ์ก ์๋์ฐ๋ฅผ 1MSS์ฉ ์ฆ๊ฐ์ํค๋ ์๊ณ ๋ฆฌ์ฆ
- ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ
- ๋๋ฆฐ ์์ ์๊ณ์น๋ฅผ ๋์ด์๋ฉด ํผ์ก ์ฌ์ง๊ฐ ์์ผ๋ ์กฐ์ฌํด์ ํผ์ก ์๋์ฐ ์ฆ๊ฐ
โ ๋น ๋ฅธ ํ๋ณต(fast recovery) ์๊ณ ๋ฆฌ์ฆ
- ์ธ ๋ฒ์ ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ ์์ : ๋น ๋ฅธ ์ฌ์ ์ก + ๋น ๋ฅธ ํ๋ณต ์๊ณ ๋ฆฌ์ฆ
- ๋น ๋ฅธ ์ ์ก๋ฅ ํ๋ณต์ ์ํด ๋๋ฆฐ ์์์ ๊ฑด๋๋ฐ๊ณ ํผ์ก ํํผ๋ฅผ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋จ, ๋น ๋ฅธ ํ๋ณต ๋์ค์ด๋ผ๋ ํ์์์์ด ๋ฐ์ํ๋ฉด ๋ค์ ๋๋ฆฐ ์์์ ์ํ
โ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ ์ข ํฉ
์ถ์ฒ
'network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TCP / UDP (0) | 2025.05.04 |
---|---|
IP์ ํ๊ณ / ํฌํธ / NAPT / ICMP (0) | 2025.04.21 |
๋ผ์ฐํ ๋ถ๋ฅ / ๋ผ์ฐํ ํ๋กํ ์ฝ (0) | 2025.04.15 |
๋ผ์ฐํฐ / ๋ผ์ฐํ ํ ์ด๋ธ (0) | 2025.04.15 |
๊ณต์ธยท์ฌ์ค IP ์ฃผ์ / ์ ์ ยท๋์ IP ์ฃผ์ (0) | 2025.04.07 |