TCP๋?
์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ขฐ์ฑ ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋กํ ์ฝ
โ UDP๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง ์๋ ํ๋กํ ์ฝ๋ก ๋ง์ด ์๊ณ ์๋๋ฐ UDP ์์ฒด์์๋ ๋ณด์ฅํ์ง ์์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋๋ก ํ๋ฉด ์ ๋ขฐ์ฑ์ด ๋ณด์ฅ๋๋ค๊ณ ํ๋ค.
ex) HTTP/3์์๋ UDP๊ธฐ๋ฐ์ QUIC์ด๋ผ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋๋ก ํ๋ค๊ณ ํ๋ค. (TCP์ Fast Retransmit, Selective Acknowledgement์ ์ ์ฌํ ๋ฐฉ์์ ์ฌ์ฉํจ)
TCP์์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ
1. ์์ ๋ณด์ฅ
๋ฐ์ดํฐ ํจํท์ ์์ ๋ฒํธ๋ฅผ ๋ถ์ฌํด์ ์์ ์๊ฐ ํจํท์ ์ฌ๋ฐ๋ฅธ ์์๋๋ก ์ฌ์กฐ๋ฆฝํ ์ ์๋๋ก ํ๋ค.
๋ง์ฝ์ ์์๋๋ก ๋์ฐฉํ์ง ์๋๋ค๋ฉด ๋๋ฝ๋ ํจํท์ด ๋์ฐฉํ ๋๊น์ง ๋๊ธฐํ๊ณ ๊ทธ ํ์ ํจํท์ ์ฌ์กฐ๋ฆฝํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฌํ๋ค.
2. ์ค๋ฅ ์ ์ด (์ค๋ฅ ๊ฒ์ถ ๋ฐ ์ฌ์ ์ก)
โช๏ธ ARQ (Automatic Repeat Request)
TCP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ ์ก ๊ธฐ๋ฐ์ ์ค๋ฅ ์ ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ค์ ๋ก๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ฌ์ ์ก ๋ฐฉ์์ ๋นํจ์จ์ ์ผ ์๋ ์๋ค. ๋ฐ๋ผ์ ์ฌ์ ์ก์ ์ต๋ํ ์ ๊ฒ ํ๋ ๋ฐฉ์์ผ๋ก ์ค๋ฅ๋ฅผ ์ ์ดํ๋ค.
โช๏ธ Stop and Wait ARQ
์ก์ ์ธก์์ 1๊ฐ์ ํ๋ ์์ ์ก์ ํ๊ณ ์์ ์ธก์์ ์์ ๋ ํ๋ ์์ ์๋ฌ ์ ๋ฌด ํ๋จ์ ๋ค๋ผ ACK ๋๋ NAK๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค.
- ์๋ณ์ ์ํด ๋ฐ์ดํฐ ํ๋ ์๊ณผ ACK ํ๋ ์์ ๊ฐ๊ฐ 0, 1 ๋ฒํธ๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ๋ถ์ฌํ๋ค.
- ์์ ์ธก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ง ๋ชปํ์ ๊ฒฝ์ฐ, NAK๋ฅผ ๋ณด๋ด๊ณ NAK๋ฅผ ๋ฐ์ ์ก์ ์ธก์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์กํ๋ค.
- ๋ง์ฝ, ๋ฐ์ดํฐ๋ ACK๊ฐ ๋ถ์ค๋์์ ๊ฒฝ์ฐ ์ผ์ ๊ฐ๊ฒฉ์ ์๊ฐ์ ๋๊ณ ํ์์์์ด ๋๋ฉด, ์ก์ ์ธก์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์กํ๋ค.
โช๏ธ Go-Back-n ARQ (์ฌ๋ผ์ด๋ฉ ์๋์ฐ)
ํจํท์ ์ ์กํ ๋ ์์ ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ์๋ชป ๋ฐ์๊ฑฐ๋ ๋ชป ๋ฐ์์ ๊ฒฝ์ฐ์ ๊ทธ ํจํท ๋ฒํธ๋ถํฐ ๋ค์ ์ฌ์ ์ก์ ํ๋ ๊ธฐ๋ฒ์ด๋ค.
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ ์ฐ์์ ์ธ ํ๋ ์ ์ ์ก ๊ธฐ๋ฒ์ผ๋ก ์ ์ก ์ธก์ ์ ์ก๋ ํ๋ ์์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ฉฐ ACK์ NAK๋ชจ๋ ๊ฐ๊ฐ ๊ตฌ๋ณํด์ผ ํ๋ค.
- ACK : ๋ค์ ํ๋ ์ ์ ์ก
- NAK : ์์๋ ํ๋ ์ ์์ฒด ๋ฒํธ๋ฅผ ๋ฐํ
โช๏ธ SR(Selective-Repeat) ARQ
์์ ์ธก์๊ฒ ์ค๋ฅ๊ฐ ๋ฐ์๋ ์์ ํจํท๋ง ๋ค์ ์ ์กํ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ์ฌ์ ์ก์ ํผํ๋ ๊ธฐ๋ฒ์ด๋ค.
- GBN๋ฐฉ์์ ๋จ์ ์ ๋ณด์ํ ๋ชจ์ต์ด๋ผ๊ณ ๋ณผ ์ ์์ง๋ง ์ค์ ๋ก๋ GBN ๋ฐฉ์์ ์ ์ผ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
- ์์ ์ธก์ ACK์ ์์์ ์๊ด์์ด ๊ทธ๋ฅ ๋ฐ์ ํจํท์ ๋ํ ACK๋ง ๋ณด๋ธ๋ค.
- ์ก์ ์ธก์ ACK๋ฅผ ๋ฐ์ง ๋ชปํ ๋ชจ๋ ํจํท์ ๋ํด ํ์ด๋จธ๋ฅผ ๊ณ์ฐํ๊ณ ๋ค์ ๋ณด๋ธ๋ค.
- ์๋์ฐ ์ฌ์ด์ฆ๋ sequence number์ ๊ฐ์์ ์ ๋ฐ๋ณด๋ค ์ดํ์ฌ์ผ ํ๋ค. (์ค๋ณต๋ ํจํท์ ๋ฐ๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์๋ ์๊ธฐ ๋๋ฌธ์)
- ์ ๊ทธ๋ฆผ์์๋ sequence number : 10, window size : 4
3. ํผ์ก์ ์ด
์ก์ ์ธก์ ๋ฐ์ดํฐ ์ ๋ฌ๊ณผ ๋คํธ์ํฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ด๋ค. ๋คํธ์ํฌ์ ํผ์ก์ ํผํ๊ธฐ ์ํด ์ก์ ์ธก์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ์ ์ดํ๋ ๊ฒ์ด ํผ์ก์ ์ด์ ๊ฐ๋ ์ด๋ค.
โช๏ธ AIMD(Addtive Increase Multicative Decrease)
ํฉ ์ฆ๊ฐ/๊ณฑ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ฒ์์ ํจํท์ ํ๋์ฉ ๋ณด๋ด๊ณ ์ด๊ฒ์ด ๋ฌธ์ ์์ด ๋์ฐฉํ๋ฉด window ํฌ๊ธฐ๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ ์กํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ํจํท ์ ์ก์ ์คํจํ๊ฑฐ๋ ์ผ์ ์๊ฐ์ ๋์ผ๋ฉด ํจํท์ ๋ณด๋ด๋ ์๋๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ธ๋ค.
๋ฌธ์ ์
- ์ด๊ธฐ ๋คํธ์ํฌ์ ๋์ ๋์ญํญ์ ์ฌ์ฉํ์ง ๋ชปํด์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๊ณ ๋คํธ์ํฌ๊ฐ ํผ์กํด์ง๋ ์ํฉ์ ๋ฏธ๋ฆฌ ๊ฐ์งํ์ง ๋ชปํ์ฌ ํผ์กํด์ง๊ณ ๋์์ผ ๋์ญํญ์ ์ค์ด๋ ๋ฐฉ์
โช๏ธ Slow Start
AIMD์ ๋ง์ฐฌ๊ฐ์ง๋ก ํจํท์ ํ๋์ฉ ๋ณด๋ด๋ฉด์ ์์ํ๊ณ , ํจํท์ด ๋ฌธ์ ์์ด ๋์ฐฉํ๋ฉด ๊ฐ๊ฐ์ ACKํจํท๋ง๋ค window size๋ฅผ 1์ฉ ๋๋ฆฌ๋ ๋ฐฉ์. ์ฆ, ํ ์ฃผ๊ธฐ๊ฐ ์ง๋๋ฉด window size๊ฐ 2๋ฐฐ๊ฐ ๋๋ค.
- AIMD์ ๋นํด ์ ์ก์๋๊ฐ ์ง์ ํจ์ ๊ผด๋ก ์ฆ๊ฐํ๋ค. ๋์ ์ ํผ์กํ์์ด ๋ฐ์ํ๋ฉด window size๋ฅผ 1๋ก ๋จ์ด๋จ๋ฆฌ๊ฒ ๋๋ค.
- ๋ฏธ๋ฆฌ ์ ํด์ง ์๊ณ๊ฐ์ ๋๋ฌํ ๋๊น์ง ์๋์ฐ์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ์ฉ ์ฆ๊ฐ์ํจ๋ค.
- ์ ์ก๋๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์๊ณ ๊ฐ์ ๋๋ฌํ๋ฉด ํผ์ก ํํผ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ค.
โช๏ธ ํผ์กํํผ
window size๊ฐ ์๊ณ ๊ฐ์ ๋๋ฌํ ์ดํ์๋ ๋ฐ์ดํฐ์ ์์ค์ด ๋ฐ์ํ ํ๋ฅ ์ด ๋๊ธฐ ๋๋ฌธ์ด ์ด๋ฅผ ํํผํ๊ธฐ ์ํด ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ ํ์ ์ผ๋ก 1์ฉ ์ฆ๊ฐ์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ ์กํ๋ ๋ฐ์ดํฐ์ ์ฆ๊ฐ๋ฅผ ์๋ณต์๊ฐ ๋์์ ํ๋์ฉ๋ง ์ฆ๊ฐ์ํจ๋ค.
โช๏ธ ๋น ๋ฅธ ํ๋ณต
ํผ์กํ ์ํ๊ฐ ๋๋ฉด window size๋ฅผ 1๋ก ์ค์ด์ง ์๊ณ ๋ฐ์ผ๋ก ์ค์ด๊ณ ์ ํ์ฆ๊ฐ์ํค๋ ๋ฐฉ๋ฒ ์ด ์ ์ฑ ๊น์ง ์ ์ฉํ๋ฉด ํผ์ก ์ํฉ์ ํ ๋ฒ ๊ฒช๊ณ ๋์๋ถํฐ๋ ์์ํ AIMD๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
โช๏ธ ๋น ๋ฅธ ์ฌ์ ์ก
์์ ์ธก์ ๋จผ์ ๋์ฐฉํด์ผ ํ ํจํท์ด ๋์ฐฉํ์ง ์๊ณ ๋ค์ ํจํท์ด ๋์ฐฉํ ๊ฒฝ์ฐ์๋ ACK ํจํท์ ๋ณด๋ด๊ฒ ๋๋ค. ๋จ, ์์๋๋ก ์ ๋์ฐฉํ ๋ง์ง๋ง ํจํท์ ๋ค์ ํจํท์ ์๋ฒ์ ACK ํจํท์ ์ค์ด์ ๋ณด๋ธ๋ค. ์ค๊ฐ์ ํจํท์ด ํ๋ ์์ค๋๋ฉด ์ก์ ์ธก์์๋ ์๋ฒ์ด ์ค๋ณต๋ ACKํจํท์ ๋ฐ๊ฒ ๋๋ค. ์ด๊ฒ์ ๊ฐ์งํ๊ฒ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋๋ ์๋ฒ์ ํจํท์ ์ฌ์ ์กํ ์ ์๋ค.
- ์ค๋ณต๋ ํจํท์ 3๊ฐ ๋ฐ์ผ๋ฉด (3 ACK) ์ฌ์ ์กํ๋ค. ์ด๋ฐ ํ์์ด ์ผ์ด๋๋ฉด ํผ์ก์ด ๋ฐ์ํ๋ค๊ณ ๊ฐ์ฃผํด์ window size๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ธ๋ค.
reference
'Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] 401 Error vs 403 Error (0) | 2023.07.14 |
---|---|
[HTTP ์๋ฒฝ ๊ฐ์ด๋] 1 ์น์ ๊ธฐ์ด : 01 HTTP ๊ฐ๊ด (0) | 2022.07.07 |
HTTP ํค๋ [ํ์/์ ์ก/์ฟ ํค] (0) | 2021.07.24 |
HTTP ์ํ์ฝ๋ ์ ๋ฆฌ (0) | 2021.07.23 |
HTTP ๊ธฐ์ด [URL/Stateless/๋น์ฐ๊ฒฐ์ฑ] (0) | 2021.07.21 |