TCP (Congestion Control)

9/18/2025

ํ˜ผ์žก ์ œ์–ด Congestion Control

Congestion ํ˜ผ์žก ์ด๋ž€, ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์–‘ ๋ณด๋‹ค ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๊ณ  ์žˆ์„๋•Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
๊ตฌ์ฒด์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ์ƒ์˜ ๋ผ์šฐํ„ฐ๋‚˜ ์Šค์œ„์น˜ ๊ฐ™์€ ์ค‘๊ฐ„ ์žฅ๋น„๋“ค(์ฝ”์–ด)์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘ ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ ค๋“ค ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

ํ˜ผ์žก์˜ ํŠน์ง•๊ณผ ์•…์ˆœํ™˜

ํ˜ผ์žก ์ƒํ™ฉ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์•…์ˆœํ™˜์„ ์•ผ๊ธฐํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ˜ผ์žก์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ผ์šฐํ„ฐ์˜ ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“ ์ฐจ์„œ ํŒจํ‚ท์ด ์œ ์‹ค๋˜๊ณ , ์ด๋กœ ์ธํ•ด ์žฌ์ „์†ก์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜์–ด ๋„คํŠธ์›Œํฌ ์ž์›์„ ์ถ”๊ฐ€๋กœ ์†Œ๋ชจํ•œ๋‹ค. ์žฌ์ „์†ก ๊ณผ์ • ์ž์ฒด๊ฐ€ ๋‹ค์‹œ ํ˜ผ์žก์„ ์•ผ๊ธฐํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ์œ ์‹ค๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ๋„คํŠธ์›Œํฌ ์ž์›๋“ค(๋Œ€์—ญํญ, ์ „๋ ฅ ๋“ฑ)์€ ๋ฌด์˜๋ฏธํ•˜๊ฒŒ ๋‚ญ๋น„๋œ๋‹ค.

vs Flow Control

์ €๋ฒˆ์‹œ๊ฐ„์— ๋ฐฐ์› ๋˜ flow control์€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž(์—ฃ์ง€) ์‚ฌ์ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์†๋„ ์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค๋ฉด congestion control์€ ๋„คํŠธ์›Œํฌ ์ „์ฒด(์ฝ”์–ด)์˜ ์šฉ๋Ÿ‰ ํ•œ๊ณ„์— ๊ด€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์†ก์‹  ์œˆ๋„์šฐ

์ง€๋‚œ ์‹œ๊ฐ„์— ์†ก์‹  ๋ฒ„ํผ์˜ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์š”์ธ์ด ์ˆ˜์‹ ์ž ์ธก์˜ ์ˆ˜์‹  ๋ฒ„ํผ ์ƒํƒœ(์ˆ˜์‹  ์œˆ๋„์šฐ rwnd)๋ผ๊ณ  ๋ฐฐ์› ๋Š”๋ฐ, ์‚ฌ์‹ค ํ•œ๊ฐ€์ง€ ์š”์ธ์ด ๋” ์žˆ๋‹ค. ํ˜ผ์žก ์œˆ๋„์šฐ Congestion Window(cwnd) ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์„ ๋ฐ˜์˜ํ•˜๋Š” ์ˆ˜์น˜์ด๋‹ค. ์†ก์‹  ์œˆ๋„์šฐ๋Š” rwnd์™€ cwnd์ค‘ ์ž‘์€๊ฒƒ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค.

ํ˜ผ์žก ์œˆ๋„์šฐ ์ธก์ •

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ cwnd๋ฅผ ์ธก์ •ํ• ๊นŒ?
๊ธฐ๋ณธ์ ์œผ๋กœ TCP๋Š” ํŒจํ‚ท ์œ ์‹ค์€ ๊ณง ๋„คํŠธ์›Œํฌ ํ˜ผ์žก๋„๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
ํŒจํ‚ท ์œ ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์ผ๋‹จ ํƒ€์ž„์•„์›ƒ์ด ์žˆ๊ณ  ๊ทธ๋ฆฌ๊ณ  ์ €๋ฒˆ ์‹œ๊ฐ„์— ๋ดค๋˜ ์ค‘๋ณต ACK๊ฐ€ ์žˆ๋‹ค.

๋ณต์Šต : ์ค‘๋ณต ACK๋ž€? ์†ก์‹ ์ž๋Š” ์ˆ˜์‹ ์ž๋กœ๋ถ€ํ„ฐ ๊ฐ™์€ ๋ฒˆํ˜ธ์˜ ACK๋ฅผ ์ค‘๋ณต์œผ๋กœ 3๋ฒˆ ๋ฐ›๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋งŒ์„ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ TCP๋Š” ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ทจ๊ธ‰ํ•˜๋Š”๋ฐ, ์ผ๋‹จ cwnd๋Š” ํŒจํ‚ท ์œ ์‹ค์ด ์—†๋‹ค๋ฉด ์ ์ง„์ ์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค.
๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ค‘๋ณต ACK๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด cwnd๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.
ํ•˜์ง€๋งŒ ํƒ€์ž„์•„์›ƒ ๋ฐœ์ƒ์‹œ์—๋Š” cwnd๋ฅผ 1๋กœ ๋ฆฌ์…‹ํ•œ๋‹ค.
์ด๋Š” ๋ณดํ†ต ํƒ€์ž„์•„์›ƒ์ด ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก์ด ์‹ฌ๊ฐํ• ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์˜๋ฏธ์ผ ๊ฒƒ์ด๋‹ค.

UDP์˜ ๊ฒฝ์šฐ

๋ฐ˜๋ฉด UDP ํ†ต์‹ ์—์„œ๋Š” ์ด ๋ชจ๋“ ๊ฒƒ์„ ์†ก์‹ ์ž์˜ ํ”„๋กœ์„ธ์Šค์˜ ์†๋„๋งŒ ๊ฐ€์ง€๊ณ  ๊ฒฐ์ •ํ•œ๋‹ค. TCP์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰(์“ฐ๋ฃจํ’‹ throughput)์€ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ๊ณผ ์ˆ˜์‹ ์ž์˜ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๊ฒฐ์ •๋˜๋Š”๊ฒƒ์— ๋ฐ˜ํ•ด UDP๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์†๋„์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.