[๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ฌCS ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ] - ๋„คํŠธ์›Œํฌ TCP ํ๋ฆ„์ œ์–ด, ํ˜ผ์žก์ œ์–ด

๊น€์œค์ค€ยท2023๋…„ 12์›” 12์ผ

CS ์Šคํ„ฐ๋””

๋ชฉ๋ก ๋ณด๊ธฐ
8/13

TCP


TCP ํ†ต์‹ ์ด๋ž€?

"์ „์†ก์ œ์–ด ํ”„๋กœํ† ์ฝœ(Transmission Control Protocol)"
๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ฐ๊ฒฐ๋ฐฉ์‹.

TCP ์„œ๋น„์Šค๋Š” ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๋ชจ๋‘ ์†Œ์ผ“์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ข…๋‹จ์ ์„ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ TCP 3-way handshake ๊ณผ์ •์„ ํ†ตํ•ด ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

๋ชจ๋“  TCP ์—ฐ๊ฒฐ์€ ์ ๋Œ€์ (Point to Poing) ๋ฐฉ์‹์œผ๋กœ ์–‘๋ฐฉํ–ฅ์—์„œ ๋™์‹œ, ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์˜ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋”ฐ๋ผ์„œ TCP๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ, ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋˜ํ•œ TCP๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ œ์–ด ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

TCP ์ œ์–ด ๋งค์ปค๋‹ˆ์ฆ˜

ํ๋ฆ„์ œ์–ด(Flow Control)

  • ํ๋ฆ„ ์ œ์–ด๋Š” ์†ก์‹ ์ž/์ˆ˜์‹ ์ž์˜ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•
  • ํ๋ฆ„ ์ œ์–ด(Flow Control)์€ ์ˆ˜์‹ ์ž๊ฐ€ ํŒจํ‚ท์„ ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์ด ๋ฐ›์ง€ ์•Š๋„๋กœ๊ณ  ์กฐ์ ˆ
  • ๊ธฐ๋ณธ ๊ฐœ๋…์€ ์ˆ˜์‹ ์ž๊ฐ€ ์†ก์‹ ์ž์—๊ฒŒ ํ˜„์žฌ ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ํ”ผ๋“œ๋ฐฑ ํ•œ๋‹ค๋Š” ์ 

์ˆ˜์‹ ์ธก์ด ์†ก์‹ ์ธก๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉด ๋ฌธ์ œ ์—†์ง€๋งŒ, ์†ก์‹ ์ธก์ด ์†๋„๊ฐ€ ๋น ๋ฅผ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

์ˆ˜์‹ ์ธก์— ์ œํ•œ๋œ ์ €์žฅ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•œ ์ดํ›„์— ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์†์‹ค ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

์†ก์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰์„ ์ˆ˜์‹ ์ธก์— ๋”ฐ๋ผ ์กฐ์ ˆํ•ด์•ผ ํ•œ๋‹ค.

ํ˜ผ์žก์ œ์–ด : ์†ก์‹ ์ธก ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๊ณผ ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์†๋„ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • Stop and Wait : ๋งค๋ฒˆ ์ „์†กํ•œ ํŒจํ‚ท์— ๋Œ€ํ•ด ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ๋งŒ ๊ทธ ๋‹ค์Œ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • Sliding Window
    • ์ˆ˜์‹ ์ธก์—์„œ ์„ค์ •ํ•œ ์œˆ๋„์šฐ ํฌ๊ธฐ๋งŒํผ ์†ก์‹ ์ธก์—์„œ ํ™•์ธ์—†์ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ์ œ์–ด๊ธฐ๋ฒ•
    • ๋ชฉ์  : ์ „์†ก์„ ๋˜์—ˆ์ง€๋งŒ, acked๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ byte์˜ ์ˆซ์ž๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ.
      LastByteSent - LastByteAcked <= ReceivecWindowAdvertised

      (๋งˆ์ง€๋ง‰์— ๋ณด๋‚ธ ๋ฐ”์ดํŠธ - ๋งˆ์ง€๋ง‰์— ํ™•์ธ๋œ ๋ฐ”์ดํŠธ <= ๋‚จ์•„์žˆ๋Š” ๊ณต๊ฐ„) ==
      (ํ˜„์žฌ ๊ณต์ค‘์— ๋–  ์žˆ๋Š” ํŒจํ‚ท ์ˆ˜ <= sliding wndow)

    • ๋™์ž‘ ๋ฐฉ์‹ : ๋จผ์ € ์œˆ๋„์šฐ์— ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ํŒจํ‚ท์„ ์ „์†กํ•˜๊ณ , ๊ทธ ํŒจํ‚ท๋“ค์˜ ์ „๋‹ฌ์ด ํ™•์ธ๋˜๋Š”๋Œ€๋กœ ์ด ์œˆ๋„์šฐ๋ฅผ ์˜†์œผ๋กœ ์˜ฎ๊น€์œผ๋กœ์จ ๊ทธ ๋‹ค์Œ ํŒจํ‚ท๋“ค์œผ ์ „์†ก.
    • Windiw : TCP/IP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ˜ธ์ŠคํŠธ๋“ค์€ ์†ก์ˆ˜์‹ ์„ ์œ„ํ•ด 2๊ฐœ์˜ Window๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
      ํ˜ธ์ŠคํŠธ๋“ค์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „ 3-way handshake๋ฅผ ํ†ตํ•ด ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ์˜ ์ˆ˜์‹  ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ์— ์ž์‹ ์˜ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ๋งž์ถ”๊ฒŒ ๋œ๋‹ค.

ํ˜ผ์žก์ œ์–ด (Congetion Control)

์†ก์‹ ์ธก์˜ ๋ฐ์ดํ„ฐ๋Š” ์ง€์—ญ๋ง์ด๋‚˜ ์ธํ„ฐ๋„ท์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋Œ€ํ˜• ๋„คํŠธ์›Œํด๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ๋‹ค.
๋งŒ์•ฝ ํ•œ ๋ผ์šฐํ„ฐ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ฆด๊ฒฝ์šฐ, ์ž์‹ ์—๊ฒŒ ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿด ๊ฒฝ์šฐ, ํ˜ธ์ŠคํŠธ๋“ค์€ ๋˜ ๋‹ค์‹œ ์žฌ์ „์†ก์„ ํ•˜๊ฒŒ ๋˜๊ณ  ํ˜ผ์žก๋งŒ ๊ฐ€์ค‘์‹œ์ผœ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
๋”ฐ๋ผ์„œ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์†ก์‹ ์ธก์—์„œ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์†๋„๋ฅผ ๊ฐ•์ œ๋กœ ์ค„์ด๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ˜ผ์žก์ œ์–ด๋ผ๊ณ  ํ•œ๋‹ค.

ํ๋ฆ„์ œ์–ด๋Š” ์†ก์ˆ˜์‹  ์ธก ์‚ฌ์ด์˜ ์ „์†ก์†๋„๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ๋ฐ˜ํ•ด, ํ˜ผ์žก์ œ์–ด๋Š” ํ˜ธ์ŠคํŠธ์™€ ๋ผ์šฐํ„ฐ๋ฅผ ํฌํ•จํ•œ ๋ณด๋‹ค ๋„“์€ ๊ด€์ ์—์„œ ์ „์†ก ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€