TCP ํ๋ฆ์ ์ด
* TCP์ ์๋์ฐ
- ์ก์ ์๋์ฐ
- ์๋์ฐ ํฌ๊ธฐ๊ฐ ์์ ์์ ๋คํธ์ํฌ์ ์ํฉ์ ๋ฐ๋ผ์ ์กฐ์
- ์ธ๊ทธ๋จผํธ ๋จ์๋ก ์ ์กํ์ง๋ง ๋ฐ์ดํธ ๋จ์๋ก ์๋์ฐ๋ฅผ ๊ด๋ฆฌ
- ์์ ์๋์ฐ : ์๋์ฐ ํฌ๊ธฐ๋ ์ก์ ์ธก์ผ๋ก๋ถํฐ ๋์น์ง ์๊ณ ์์ ํ ์ ์๋ ๋ฐ์ดํฐ ๋ฐ์ดํธ์ ๊ฐ์๋ฅผ ๊ฒฐ์
- rwnd = ๋ฒํผํฌ๊ธฐ - (์์ ํ๋ก์ธ์ค๋ก๋ถํฐ)์ฝํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ์ดํธ ์
* ์ด๋ฆฌ์์ ์๋์ฐ ์ ๋๋กฌ(Silly Window Syndrome)
- ์ก์ ์ธก์ ์์ฉํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ์ฒํ ๋ฐ์์ํค๊ฑฐ๋, ์์ ์ธก์ ์์ฉํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ์ฒํ ์๋นํ๋ ๊ฒฝ์ฐ
- ex) 1๋ฐ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด 41๋ฐ์ดํธ์ ๋ฐ์ดํฐ๊ทธ๋จ์ด ์ ์ก๋์ด์ผํจ -> ๋คํธ์ํฌ ์์ ๋ญ๋น
- (์ก์ ์ธก ๋ฐฉ์) Nagle ์๊ณ ๋ฆฌ์ฆ
- ์ก์ TCP๊ฐ ์์ TCP๋ก๋ถํฐ ์๋ก์ด ACKํจํท์ ์์ ํ๊ฑฐ๋, ํน์ ์ต๋ ํฌ๊ธฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ ์ ๋์ ์ถฉ๋ถํ ๋ฐ์ดํฐ๊ฐ ๋ฒํผ์ ์ ์ฅ๋ ๋๊น์ง ์ ์กํ์ง ์๊ณ ๋๊ธฐ
- ๋งค์ฐ ๋จ์ํ๋ฉด์ ์์ฉํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ ์์ฑ ์๋์, ๋คํธ์ํฌ์ ๋ฐ์ดํฐ ์ ๋ฌ ์๋๋ฅผ ๋ชจ๋ ๊ณ ๋ คํ๊ณ ์์
- (์์ ์ธก ๋ฐฉ์) ์ง์ฐ๋ ํ์ธ์๋ต ์๊ณ ๋ฆฌ์ฆ
- ์์ TCP๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ์๋ง์ ACK ํจํท์ ์์ฑํ์ง ์๊ณ , ์์ ์๋์ฐ๊ฐ ์ถฉ๋ถํ ์ปค์ง ๋๊น์ง ๋๊ธฐํ ์ดํ ์ ์ก
- ๋๋ฌด ์ค๋ ๋๊ธฐํ์ฌ ์ก์ ์ธก์์ ์๋ ์ฌ์ ์กํ์ง ์๋๋ก 0.5์ด ์ด์ ์ง์ฐ๋์ง ์๋๋ก ํจ
TCP ์ค๋ฅ์ ์ด
* TCP์ ํ์ธ์๋ต
- ๋์ ํ์ธ์๋ต(ACK)
- TCP ๊ธฐ๋ณธํค๋์ ์ ์๋ 32๋นํธ ACKํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ณด๋ค ์์ ์์๋ฒํธ์ ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ ์์์ ํ์์์ ์๋ฏธ
- ๊ธ์ ๋์ ํ์ธ์๋ต ๋ฐฉ์์ผ๋ก์ ์ ์์ ์ผ๋ก ์์ ๋๋ ๊ฒฝ์ฐ ์ธ, ์ธ๊ทธ๋จผํธ๊ฐ ํ๊ธฐ, ์์ค, ํน์ธ ์ค๋ณต ์์ ๋๋ ๊ฒฝ์ฐ์ ๋ํ ์ด๋ ํ ํผ๋๋ฐฑ๋ ์์
- ์ ํ ํ์ธ์๋ต(SACK; Selective ACK)
- TCP ์ต์ ํค๋๋ฅผ ์ด์ฉํ ๋ถ์์ ์ธ ์ถ๊ฐ์ ๋ณด๋ก์ ์ ์ ์์ ๋ ๋ฐ์ดํธ์ ์์๋ฒํธ๋ฅผ ์๋ ค์ค
* ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ์ฌ์ ์ก
- TCP Tahoe
- RTO(Retransmission Time-Out) : ํ์ด๋จธ์ ๋ฐ๋ฅธ ์ฌ์ ์ก
- ํ์ด๋จธ ์ข ๋ฃ ์, ์ก์ ๋ฒํผ์์ ๊ฐ์ฅ ์์ ์์๋ฒํธ๋ฅผ ๊ฐ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ ์กํ๊ณ ๋ค์ ํ์ด๋จธ ๊ตฌ๋
- RTT๋ฅผ ๊ธฐ๋ฐ์ผ๋ก RTO๊ฐ(4~5๋ฐฐ)์ ๊ฐฑ์
- TCP Reno
- 3๊ฐ์ ์ค๋ณต ACK์ธ๊ทธ๋จผํธ ์ดํ์ ์ฌ์ ์ก
- ์ฌ์ ์ก ํ์ด๋จธ ์ข ๋ฃ ์ด์ ์ "๋น ๋ฅธ ์ฌ์ ์ก"์ ์ํ์ฌ, 3๋ฒ์ ์ค๋ณต ACK๋ฅผ ์์ ํ๋ฉด ํจํท ์์ค๋ก ๊ฐ์ฃผํ์ฌ ์ฌ์ ์ก
TCP ํผ์ก์ ์ด
* ํผ์ก ์๋์ฐ
- ์์ ๋ฒํผ์ ๋น์ด์๋ ๊ณต๊ฐ์ ๊ณ ๋ คํ์ฌ ์ก์ ์ธก์ ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ -> ํ๋ฆ์ ์ด
- ๋คํธ์ํฌ์ ์ํฉ์ ๊ณ ๋ คํ์ง ์์ผ๋ฉด, ์ก์ ์ธก์ด ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ์ ๋ฌ๋์ง ์์ ์ ์์
- ๋คํธ์ํฌ์ ์ํฉ์ "ํผ์ก ์๋์ฐ(cwmd, Congestion Window)"๋ก ํํํ๊ณ ์ก์ ์๋์ฐ์ ์ด๋ฅผ ๋ฐ์
- ์ก์ ์๋์ฐ ํฌ๊ธฐ = Minimum (rwnd, cwnd)
* ํผ์ก์ ์ด์ 3๋จ๊ณ ์์น
- ๋๋ฆฐ ์์(Slow Start) : ์ง์ ์ฆ๊ฐ(Exponential Increase)
- ํผ์ก ์๋์ฐ(cwnd)๋ฅผ ํ๋์ ์ต๋ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ(MSS; Maximum Segment Size)๋ก๋ถํฐ ์์
- ํ๋์ ํ์ธ์๋ต์ ์์ ํ ๋๋ง๋ค, ํผ์ก์๋์ฐ์ ํฌ๊ธฐ๋ฅผ MSS๋งํผ ์ฆ๊ฐ์ํด
- ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ด๊ธฐ์๋ ์์ ์๋์ฐ์ ํฌ๊ธฐ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์, ์ก์ ์๋์ฐ ํฌ๊ธฐ์ ํผ์ก์๋์ฐ๋ ๊ฐ์
- ํผ์ก ํํผ(Congestion Avoidance) : ๊ฐ์ฐ ์ฆ๊ฐ(Additive Increas)
- ๋๋ฆฐ ์์์์ ํผ์ก ์๋์ฐ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ๋น ๋ฅด๊ฒ ์ฆ๊ฐํจ
- ํผ์ก์ด ๋ฐ์ํ๊ธฐ ์ด์ ์ ํผ์ก ๋ฐ์์ ๋ฐฉ์งํ๊ธฐ ์ํด์, ํผ์ก ์๋์ฐ์ ํฌ๊ธฐ ์ฆ๊ฐ ์๋๋ฅผ ๊ฐ์์์ผ์ผ ํจ
- ํผ์ก ์๋์ฐ ํฌ๊ธฐ๊ฐ ๋๋ฆฐ ์์ ์๊ณ์น(ssthresh)์ ๋๋ฌํ๋ฉด, ๋๋ฆฐ ์์์ ์ข ๋ฃํ๊ณ ํผ์ก๊ธฐํผ(๊ฐ์ฐ ์ฆ๊ฐ) ๋จ๊ณ ์์
- ์ ์ฒด ์๋์ฐ ํฌ๊ธฐ๊ฐ 1์ฉ ์ฆ๊ฐ์ํด
- ํผ์ ์๋์ฐ ํฌ๊ธฐ๊ฐ RTT๊ธฐ๋ฐ์ผ๋ก ์ฆ๊ฐ
- ํผ์ก ๊ฐ์ง(Congestion Detection) : ์ง์ ์ฆ๊ฐ(Exponential Increase)
- ์ฌ์ ์ก(RTO)ํ์ด๋จธ๊ฐ ์ข
๋ฃ๋ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ํผ์ก์ผ๋ก ํจํท์ด ์ ์ค๋์์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ๋จ
- ๋๋ฆฐ์์ ์๊ณ์น(ssthresh)๊ฐ์ ํ์ฌ ์๋์ฐ ํฌ๊ธฐ์ ์ ๋ฐ์ผ๋ก ๊ฐ์
- ํผ์ก ์๋์ฐ ํฌ๊ธฐ(cwnd)๋ฅผ ํ๋์ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ๋ก ์ค์
- ๋๋ฆฐ ์์ ๋จ๊ณ๋ถํฐ ์์
- 3๊ฐ์ ์ค๋ณต ACK๋ฅผ ์์ ํ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ํผ์ก๋ณด๋ค๋ ๋จ์ํ ํจํท ์ ์ค์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ๋จ
- ๋คํธ์ํฌ ํผ์ก์ ๊ฐ๋ฅ์ฑ๋ ์์ผ๋ฏ๋ก ์๋์ฐ๋ฅผ ๊ฐ์ํ์ง๋ง, ์ฌ์ ์ก ํ์ด๋จธ ์ข
๋ฃ๋๋ณด๋ค๋ ๊ฐ์์ ํญ์ด ์์
- ๋๋ฆฐ์์ ์๊ณ์น(ssthresh)๊ฐ์ ํ์ฌ ์๋์ฐ ํฌ๊ธฐ์ ์ ๋ฐ์ผ๋ก ๊ฐ์
- ํผ์ก ์๋์ฐ ํฌ๊ธฐ(cwnd)๋ฅผ ์๊ณ์น(ssthresh)๋ก ์ค์
- ํผ์กํํผ ๋จ๊ณ๋ถํฐ ์์
- ์ฌ์ ์ก(RTO)ํ์ด๋จธ๊ฐ ์ข
๋ฃ๋ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ํผ์ก์ผ๋ก ํจํท์ด ์ ์ค๋์์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ๋จ
* ํผ์ก์ ์ด ์๋ฆฌ
- TCP ์ก์ ์๋์ฐ์ ํฌ๊ธฐ ์กฐ์ ์ ์ ์ก์๋ ์ ์ด๋ก ์ด์ด์ง
- ํ์ธ ์๋ต์ ์์ ํ ๋๊น์ง ์ต๋๋ก ์ ์ก ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋(=์ก์ ์๋์ฐ ํฌ๊ธฐ)๊ฐ ์ผ๋ง์ธ์ง ๊ณ ๋ คํ๋ฉด ๊ณ์ฐ ๊ฐ๋ฅํจ
- ์ต๋ ๋๋ฌ ๊ฐ๋ฅํ ์ ์ก์๋(bps) = (์ก์ ์๋์ฐ์ ๋นํธํฌ๊ธฐ) / RTT
'software engineering > ์ปดํจํฐ๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] DNS(Domain Name System) (0) | 2023.11.17 |
---|---|
[Network] DHCP(Dynamic Host Configuration Protocol) (0) | 2023.11.17 |
[Network] TCP์ ๊ธฐ๋ณธ ๋์ (0) | 2023.11.09 |
[Network] UDP / TCP Protocol (0) | 2023.11.09 |
[Network] ์ ์ก๊ณ์ธต์ ARQ ํ๋กํ ์ฝ (1) | 2023.11.06 |