๐Ÿ“š CS [ComputerScience]/๐Ÿ“˜ ์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ [ComputerNetwork]

[Network] TCP ํ๋ฆ„์ œ์–ด

Dbswnstjd 2022. 5. 2. 21:43

TCP๋ž€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์˜ ์กฐ๊ฑด๋“ค์„ ๋ชจ๋‘ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์†์‹ค - ํŒจํ‚ท์ด ์†์‹ค๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ
  2. ์ˆœ์„œ๋ฐ”๋€œ - ํŒจํ‚ท์˜ ๋„์ฐฉ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ฌธ์ œ
  3. Congestion - ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•œ ๋ฌธ์ œ
  4. Overload - ์ˆ˜์‹ ์ธก์ด overload๋˜๋Š” ๋ฌธ์ œ

ํ๋ฆ„์ œ์–ด

์†ก์‹ ์ธก์˜ ํŒจํ‚ท ์ „์†ก ์†๋„๊ฐ€ ์ˆ˜์‹ ์ธก์˜ ํŒจํ‚ท ์ฒ˜๋ฆฌ ์†๋„๋ณด๋‹ค ๋น ๋ฅผ ๊ฒฝ์šฐ, ์ˆ˜์‹ ์ธก์˜ ๋ฒ„ํผ์— overflow๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํŒจํ‚ท์ด ์†์‹ค๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ท์ด ์†์‹ค๋˜๋ฉด์„œ ๋ถˆํ•„์š”ํ•œ ์‘๋‹ต๊ณผ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์†ก/์ˆ˜์‹  ์ธก ๊ฐ„์— ๋ฐ˜๋ณต๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์†ก์‹  ์ธก์˜ ํŒจํ‚ท ์ „์†ก๋Ÿ‰์„ ์ˆ˜์‹ ์ธก์— ๋”ฐ๋ผ ์กฐ์ ˆํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋ฅผ ํ๋ฆ„์ œ์–ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ๋ฆ„์ œ์–ด ๋ฐฉ์‹

  • Stop & Wait

๋งค๋ฒˆ ์ „์†กํ•œ ํŒจํ‚ท์— ๋Œ€ํ•œ ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ์ง€๋งŒ ๊ทธ ๋‹ค์Œ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•.

๋‹จ์ˆœํ•˜์ง€๋งŒ ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ˜„์žฌ Stop and wait ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • Sliding Window

์ˆ˜์‹ ์ธก์—์„œ ์„ค์ •ํ•œ window ํฌ๊ธฐ๋งŒํผ ์†ก์‹ ์ธก์—์„œ ํ™•์ธ ์‘๋‹ต์— ์ƒ๊ด€์—†์ด ํŒจํ‚ท์„ ํ•œ๋ฒˆ์— ์ „์†กํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ์ œ์–ด๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

window์˜ ํฌ๊ธฐ๋งŒํผ์˜ ํŒจํ‚ท์ „์†ก์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ACK๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด window๋ฅผ ์˜†์œผ๋กœ ์˜ฎ๊น€((Slide)์œผ๋กœ์จ ๋‹ค์Œ ํŒจํ‚ท๋“ค์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

Window๋ž€? : TCP/IP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ˜ธ์ŠคํŠธ๋“ค์€ ์†ก/์ˆ˜์‹ ์„ ์œ„ํ•œ 2๊ฐœ์˜ window๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํ˜ธ์ŠคํŠธ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— 3-way-handshake๋ฅผ ํ†ตํ•ด ์ˆ˜์‹ ์ธก window size์— ์†ก์‹ ์ธก window size๋ฅผ ๋งž์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์œ„ ๊ทธ๋ฆผ์„ ์˜ˆ๋กœ๋“ค์ž๋ฉด ์†ก/์ˆ˜์‹  ์ธก์˜ window ํฌ๊ธฐ๋Š” 7์ด๋ฏ€๋กœ ํ•œ๋ฒˆ์— ์ตœ๋Œ€ 7๊ฐœ์˜ ํŒจํ‚ท์„ ๋™์‹œ์— ์ „์†กํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์†ก์‹ ์ธก์—์„œ Data 0, 1์„ ๋ณด๋‚ด๊ณ  ์œˆ๋„์šฐ๊ฐ€ ๋‘์นธ ์ค„์–ด๋“  ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹ ์ธก์—์„œ๋Š” 0,1 ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ACK2๋ฅผ ํ•œ๋ฒˆ ๋ณด๋‚ด์ฃผ๊ณ , window ํฌ๊ธฐ๊ฐ€ ๋‘์นธ ์™ผ์ชฝ์œผ๋กœ ๋Š˜์–ด๋‚œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ window๊ฐ€ ์˜†์œผ๋กœ ๋ฏธ๋„๋Ÿฌ ์ง„๋‹ค ํ•ด์„œ Sliding window๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • Rate Control

ACK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์ƒ ์†ก/์ˆ˜์‹  ์ธก๊ฐ„์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ํ•ญ์ƒ ์กด์žฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณ ์•ˆ๋œ ๋ฐฉ๋ฒ•์ด ACK๋ฅผ ์•„์˜ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” rate-base ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์†ก์‹ ์ธก์— ํ• ๋‹น๋œ ํŒจํ‚ท ์ „์†ก๋ฅ ์„ ์ฃผ๊ณ , ํŒจํ‚ท์ด ์ „์†ก๋ฅ ์„ ์ดˆ๊ณผํ•ด์„œ ์ „์†ก๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Avg data rate, Maximum burst size, Peak๋“ฑ์„ ์„ค์ •ํ•˜์—ฌ ACK์—†์ด๋„ ํ๋ฆ„์ œ์–ด๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋Ÿฌํ•œ ์„ค์ •๊ฐ’์„ ๋„˜์–ด๊ฐ€๋Š”์ง€ ๊ฐ์‹œํ•˜๋Š” ๊ธฐ์ˆ ์„ Policing ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.