software engineering/์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ

[Network] TCP์˜ ์ „์†ก์ œ์–ด

jjingle 2023. 11. 9. 15:22

 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)ํƒ€์ด๋จธ๊ฐ€ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ, ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์œผ๋กœ ํŒจํ‚ท์ด ์œ ์‹ค๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ํŒ๋‹จ
      1. ๋Š๋ฆฐ์‹œ์ž‘ ์ž„๊ณ„์น˜(ssthresh)๊ฐ’์„ ํ˜„์žฌ ์œˆ๋„์šฐ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜์œผ๋กœ ๊ฐ์†Œ
      2. ํ˜ผ์žก ์œˆ๋„์šฐ ํฌ๊ธฐ(cwnd)๋ฅผ ํ•˜๋‚˜์˜ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ๋กœ ์ค„์ž„
      3. ๋Š๋ฆฐ ์‹œ์ž‘ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์‹œ์ž‘
    • 3๊ฐœ์˜ ์ค‘๋ณต ACK๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฒฝ์šฐ, ๋„คํŠธ์›Œํฌ ํ˜ผ์žก๋ณด๋‹ค๋Š” ๋‹จ์ˆœํ•œ ํŒจํ‚ท ์œ ์‹ค์˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ํŒ๋‹จ
    • ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์˜ ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ์œผ๋ฏ€๋กœ ์œˆ๋„์šฐ๋ฅผ ๊ฐ์†Œํ•˜์ง€๋งŒ, ์žฌ์ „์†ก ํƒ€์ด๋จธ ์ข…๋ฃŒ๋•Œ๋ณด๋‹ค๋„ ๊ฐ์†Œ์˜ ํญ์ด ์ž‘์Œ
      1. ๋Š๋ฆฐ์‹œ์ž‘ ์ž„๊ณ„์น˜(ssthresh)๊ฐ’์„ ํ˜„์žฌ ์œˆ๋„์šฐ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜์œผ๋กœ ๊ฐ์†Œ
      2. ํ˜ผ์žก ์œˆ๋„์šฐ ํฌ๊ธฐ(cwnd)๋ฅผ ์ž„๊ณ„์น˜(ssthresh)๋กœ ์ค„์ž„
      3. ํ˜ผ์žกํšŒํ”ผ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์‹œ์ž‘

* ํ˜ผ์žก์ œ์–ด ์›๋ฆฌ

  • TCP ์†ก์‹  ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ ์กฐ์ •์€ ์ „์†ก์†๋„ ์ œ์–ด๋กœ ์ด์–ด์ง
  • ํ™•์ธ ์‘๋‹ต์„ ์ˆ˜์‹ ํ•  ๋•Œ๊นŒ์ง€ ์ตœ๋Œ€๋กœ ์ „์†ก ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋Ÿ‰(=์†ก์‹  ์œˆ๋„์šฐ ํฌ๊ธฐ)๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ๊ณ ๋ คํ•˜๋ฉด ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•จ
  • ์ตœ๋Œ€ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ์ „์†ก์†๋„(bps) = (์†ก์‹  ์œˆ๋„์šฐ์˜ ๋น„ํŠธํฌ๊ธฐ) / RTT