Network

[๋„คํŠธ์›Œํฌ] TCP์˜ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ

DAHLIA CHOI 2024. 1. 23. 15:44

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 ๋ฐฉ์‹์„ ์ œ์ผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
  1. ์ˆ˜์‹  ์ธก์€ ACK์˜ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๊ทธ๋ƒฅ ๋ฐ›์€ ํŒจํ‚ท์— ๋Œ€ํ•œ ACK๋งŒ ๋ณด๋‚ธ๋‹ค.
  2. ์†ก์‹  ์ธก์€ 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

https://land-turtler.tistory.com/154

https://github.com/GimunLee/tech-refrigerator/blob/master/Network/%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%20%26%20%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4%20%26%20%EC%98%A4%EB%A5%98%EC%A0%9C%EC%96%B4.md