๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

ํŒŒ์ดํ”„๋ผ์ด๋‹๋œ ์‹ ๋ขฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ ๋ณธ๋ฌธ

Network (๋„คํŠธ์›Œํฌ)/Computer Network (์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ)

ํŒŒ์ดํ”„๋ผ์ด๋‹๋œ ์‹ ๋ขฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ

9taetae9 2024. 10. 30. 12:11
728x90

ํ”„๋กœํ† ์ฝœ rdt3.0 : ๋น„ํŠธ ์˜ค๋ฅ˜์™€ ์†์‹ค์ด ์žˆ๋Š” ์ฑ„๋„ ์ƒ์—์„œ ์‹ ๋ขฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ

๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ์ •ํ™•ํ•œ ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ ์ „์†ก ํ›„ ๋Œ€๊ธฐ(stop-and-wait) ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ข‹์ง€ ์•Š์Œ.

 

์ „์†ก ํ›„ ๋Œ€๊ธฐ ๋ฐฉ์‹ ์˜ˆ์‹œ

ํ˜ธ์ŠคํŠธ1(๋ฏธ๊ตญ ์„œ๋ถ€), ํ˜ธ์ŠคํŠธ2(๋ฏธ๊ตญ ๋™๋ถ€)์— ์žˆ๋Š” ๋‘ ์ข…๋‹จ ํ˜ธ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ๊ฐ€์ •

๋‘ ์ข…๋‹จ ์‹œ์Šคํ…œ ์‚ฌ์ด์˜ ๊ด‘์† ์™•๋ณต ์ „ํŒŒ ์ง€์—ฐ(RTT) = ์•ฝ 30ms

๋‘ ํ˜ธ์ŠคํŠธ๋Š” 1Gbps ์ „์†ก๋ฅ (R)์„ ๊ฐ€์ง„ ์ฑ„๋„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ

ํ—ค๋”ํ•„๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜์—ฌ, ํŒจํ‚ท๋‹น 1000๋ฐ”์ดํŠธ(8000๋น„ํŠธ)์˜ ํŒจํ‚ท ํฌ๊ธฐ(L)์„ ๊ฐ€์ง€๊ณ  1Gbps ๋งํฌ๋กœ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์€ L/R = 8000bit / 10^9bit/sec = 8×10^-6 sec=8 μs (๋งˆ์ดํฌ๋กœ์ดˆ)์ด๋‹ค.

 

์†ก์‹ ์ž๊ฐ€ t=0์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด t = L/R = 8μs์—์„œ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ ์†ก์‹ ์ธก์˜ ์ฑ„๋„๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋‹ค์Œ ํŒจํ‚ท์€ 15ms ๋™์•ˆ ๋Œ€๋ฅ™์„ ํšก๋‹จํ•˜๊ณ , t = RTT/2 + L/R = 15.008์— ์ˆ˜์‹  ์ธก์œผ๋กœ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ ๋„์ฐฉํ•œ๋‹ค.

(ACK ํŒจํ‚ท์€ ๋งค์šฐ ์ž‘์€ ํฌ๊ธฐ์ด๋ฏ€๋กœ ์ „์†ก ์‹œ๊ฐ„ ๋ฌด์‹œ)

์ˆ˜์‹ ์ž๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท์˜ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ ์ˆ˜์‹ ๋˜์ž๋งˆ์ž ACK ํŒจํ‚ท์„ ์†ก์‹ ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์†ก์‹ ์ž ์ธก์—์„œ ACK ํŒจํ‚ท์€ t = RTT + L/R = 30.008ms ํ›„์— ๋‹ค์‹œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. 

๊ฒฐ๊ตญ ์†ก์‹ ์ž๋Š” 30.008ms ์ค‘ 0.008ms ๋™์•ˆ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ๊ฒƒ์ด๋‹ค.

์†ก์‹ ์ž์˜ ์ด์šฉ๋ฅ  utilization = ์†ก์‹ ์ž๊ฐ€ ์ฑ„๋„์„ ํ†ตํ•ด ์‹ค์ œ๋กœ ๋ถ„์ฃผํ•˜๊ฒŒ ๋น„ํŠธ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ๋งŒ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

U(sender) = (L/R) / (RTT + L/R) = 0.008 / 30.008 = 0.00027

์ฆ‰, ์†ก์‹ ์ž๋Š” ๋‹จ์ง€ ์‹œ๊ฐ„์˜ 0.027% ๋งŒํผ๋งŒ ๋ฐ”๋นด๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์†ก์‹ ์ž๋Š” 30.008ms ๋™์•ˆ 1000๋ฐ”์ดํŠธ๋ฅผ ์†ก์‹ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ดˆ๋‹น 1Gbps ๋งํฌ๋ฅผ ๊ฐ€์šฉํ•œ๋‹ค ํ•ด๋„ 267kbps์˜ ์œ ํšจ ์ฒ˜๋ฆฌ๋Ÿ‰(effective throughput)์„ ๊ฐ–๋Š”๋‹ค.

๋‹จ์ง€ 267kbps ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฐ–๋Š” 1Gbps ๋งํฌ๋Š” ๋งค์šฐ ํฐ ๋น„์šฉ ๋‚ญ๋น„์ด๋‹ค.

์ด์— ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ๋ผ์šฐํ„ฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฒ˜๋ฆฌ ์ง€์—ฐ, ํ์ž‰ ์ง€์—ฐ๊ณผ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž์—์„œ์˜ ํ•˜์œ„ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„๊นŒ์ง€ ๊ณ ๋ คํ•œ๋‹ค๋ฉด, ์ด๋ณด๋‹ค๋„ ๋” ๋‚˜์œ ์„ฑ๋Šฅ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์†ก์‹ ์ž์—๊ฒŒ ํ™•์ธ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ํŒจํ‚ท์„ ์ „์†กํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ์†ก์‹ ์ž๊ฐ€ ํ™•์ธ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ผ์ง€ ์•Š๊ณ  3๊ฐœ์˜ ํŒจํ‚ท์„ ์ „์†กํ•œ๋‹ค๋ฉด, ์†ก์‹ ์ž์˜ ์ด์šฉ๋ฅ ์€ 3๋ฐฐ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

๋งŽ์€ ์ „์†ก ์ค‘์ธ ์†ก์‹ ์ž-์ˆ˜์‹ ์ž ํŒจํ‚ท์„ ํŒŒ์ดํ”„๋ผ์ธ์— ์ฑ„์›Œ ๋„ฃ์Œ์œผ๋กœ์จ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ํŒŒ์ดํ”„๋ผ์ด๋‹์ด๋ผ ํ•œ๋‹ค. ํŒŒ์ดํ”„๋ผ์ด๋‹ ๋ฐฉ์‹์€ ์‹ ๋ขฐ์ ์ด ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค‘์š”์„ฑ์ด ์žˆ๋‹ค.

- ์ˆœ์„œ ๋ฒˆํ˜ธ์˜ ๋ฒ”์œ„๊ฐ€ ์ปค์ ธ์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ๊ฐ์˜ ์ „์†ก ์ค‘์ธ ํŒจํ‚ท์€ ์œ ์ผํ•œ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๊ณ  ์ „์†ก ์ค‘์ธ ํ™•์ธ์‘๋‹ต(ACK)์ด ์•ˆ ๋œ ์—ฌ๋Ÿฌ ํŒจํ‚ท๋“ค์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

- ํ”„๋กœํ† ์ฝœ์˜ ์†ก์‹  ์ธก๊ณผ ์ˆ˜์‹  ์ธก์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒจํ‚ท์„ ๋ฒ„ํผ๋งํ•ด์•ผ ํ•œ๋‹ค. ์ตœ์†Œํ•œ ์†ก์‹ ์ž๋Š” ์ „์†ก๋˜์—ˆ์œผ๋‚˜ ํ™•์ธ์‘๋‹ต๋˜์ง€ ์•Š์€ ํŒจํ‚ท์„ ๋ฒ„ํผ๋งํ•ด์•ผํ•œ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜์‹ ๋œ ํŒจํ‚ท์˜ ๋ฒ„ํผ๋ง์€ ์ˆ˜์‹ ์ž์—๊ฒŒ์„œ๋„ ํ•„์š”ํ•˜๋‹ค.

- ํ•„์š”ํ•œ ์ˆœ์„œ ๋ฒˆํ˜ธ์™€ ๋ฒ„ํผ๋ง ์กฐ๊ฑด์€ ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ์ด ์†์‹ค ํŒจํ‚ท๊ณผ ์†์ƒ ํŒจํ‚ท ๊ทธ๋ฆฌ๊ณ  ์ƒ๋‹นํžˆ ์ง€์—ฐ๋œ ํŒจํ‚ท๋“ค์— ๋Œ€ํ•ด ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค. 

 

ํŒŒ์ดํ”„๋ผ์ธ ์˜ค๋ฅ˜ ํšŒ๋ณต์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ• ๋‘๊ฐ€์ง€ => GBN(Go-Back-N, N๋ถ€ํ„ฐ ๋ฐ˜๋ณต), SR(Selective Repeat, ์„ ํƒ์  ๋ฐ˜๋ณต)

 

1. GBN(Go-Back-N, N๋ถ€ํ„ฐ ๋ฐ˜๋ณต)

์†ก์‹ ์ž : ํ™•์ธ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ํŒจํ‚ท์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ํ™•์ธ์‘๋‹ต์ด ์•ˆ ๋œ ํŒจํ‚ท์˜ ์ตœ๋Œ€ ํ—ˆ์šฉ ์ˆ˜ N๋ณด๋‹ค๋Š” ํฌ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

 

์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ๋ณด์ž. (sender ์ธก ์›๋„์šฐ ์‚ฌ์ด์ฆˆ 5 ๊ฐ€์ •)

์†ก์‹ ์ž๋Š” ์œˆ๋„์šฐ ๊ตฌ๊ฐ„ ๋‚ด์—์„œ ํŒจํ‚ท์„ ์†ก์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. Go-Back-N์—์„œ N์€ ์ด ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ด window๊ฐ€ ์ˆœ์„œ๋ฒˆํ˜ธ ๊ณต๊ฐ„์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ slide(์ด๋™)ํ•˜๋ฉฐ ๋™์ž‘ํ•œ๋‹ค.

 

ํŒŒ๋ž€์ƒ‰์€ ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์€ ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค. 

ํ•˜๋Š˜์ƒ‰์€ ์ „์†ก์€ ํ•˜์˜€์œผ๋‚˜ ์•„์ง ํ™•์ธ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์€ ํŒจํ‚ท์„ ์˜๋ฏธํ•œ๋‹ค.

6๋ฒˆ(ํ•˜๋Š˜์ƒ‰ ํŒจํ‚ท)์€ ํ™•์ธ์‘๋‹ต์ด ์•ˆ ๋œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํŒจํ‚ท์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ์ด๊ณ  ์ด๋ฅผ base๋กœ ์ •์˜ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ „์†ก๋   ๋‹ค์Œ ํŒจํ‚ท ์ˆœ์„œ๋ฒˆํ˜ธ๋Š” nextseqnum์œผ๋กœ ์ •์˜ํ•˜๊ณ  ์•„๋ž˜์˜ ์ƒํ™ฉ์—์„œ๋Š” 8๋ฒˆ๊นŒ์ง€ ์ „์†กํ•œ ์ƒํ™ฉ์ด๋ฏ€๋กœ nextseqnum์€ 9๊ฐ€ ๋œ๋‹ค.

 

๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด๋ฉด 

๊ตฌ๊ฐ„ [0, base -1] ์—์„œ ์ˆœ์„œ๋ฒˆํ˜ธ๋Š” ์ด๋ฏธ ์ „์†ก๋˜๊ณ  ํ™•์ธ ์‘๋‹ต๊นŒ์ง€ ๋œ ํŒจํ‚ท

๊ตฌ๊ฐ„ [base, nextseqnum - 1] ์€ ์†ก์‹ ์€ ๋˜์—ˆ์ง€๋งŒ ์•„์ง ํ™•์ธ ์‘๋‹ต์ด ๋˜์ง€ ์•Š์€ ํŒจํ‚ท

๊ตฌ๊ฐ„ [nextseqnum , base + N - 1] ์€ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ๋ฐ”๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท์„ ์˜๋ฏธํ•œ๋‹ค.

 

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

์™œ ํ™•์ธ ์‘๋‹ต์ด ์•ˆ๋˜ ํŒจํ‚ท์˜ ์ˆ˜๋ฅผ N์œผ๋กœ ์ œํ•œํ•˜์˜€์„๊นŒ? N์œผ๋กœ ์ œํ•œํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ฆ‰, ํ™•์ธ ์‘๋‹ต ์—†์ด ๋ฌดํ•œํ•œ ํŒจํ‚ท์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค. =>์ฆ‰ ํ๋ฆ„ ์ œ์–ด์™€ ํ˜ผ์žก์ œ์–ด๋ฅผ ์œ„ํ•ด ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋Š” N์œผ๋กœ ์ œํ•œ๋œ๋‹ค.

 

ํ๋ฆ„ ์ œ์–ด
๋น ๋ฅธ ์†ก์‹ ์ž๊ฐ€ ๋А๋ฆฐ ์ˆ˜์‹ ์ž๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์••๋„ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€
์ˆ˜์‹ ์ž์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ž‘์€ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์ ์šฉ ๊ฐ€๋Šฅ


ํ˜ผ์žก ์ œ์–ด
๋„คํŠธ์›Œํฌ์— ๋„ˆ๋ฌด ๋งŽ์€ ํŒจํ‚ท์ด ์กด์žฌํ•˜๋ฉด ํŒจํ‚ท ์ง€์—ฐ๊ณผ ์†์‹ค์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜
์†ก์‹ ์ž๋Š” ์ „์ฒด ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๊ฐ ๋„คํŠธ์›Œํฌ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•จ

 

ํŒจํ‚ท์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋Š” ํŒจํ‚ท ํ—ค๋” ์•ˆ์˜ ๊ณ ์ •๋œ ๊ธธ์ด ํ•„๋“œ์— ํฌํ•จ. k๊ฐ€ ํŒจํ‚ท ์ˆœ์„œ ๋ฒˆํ˜ธ ํ•„๋“œ์˜ ๋น„ํŠธ ์ˆ˜๋ผ๋ฉด, ์ˆœ์„œ ๋ฒˆํ˜ธ์˜ ๋ฒ”์œ„๋Š” [0, 2^k - 1]์ž„

์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ณ„์‚ฐ์€ modulo 2^k ์—ฐ์‚ฐ์„ ์ด์šฉํ•œ๋‹ค. (ํฌ๊ธฐ 2^k์˜ ๋ง์ฒ˜๋Ÿผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ˆœ์„œ ๋ฒˆํ˜ธ 2^k - 1 ๋‹ค์Œ ๋ฒˆํ˜ธ๋Š” 0์ด ๋œ๋‹ค)

rdt3.0์—์„œ๋Š” 1๋น„ํŠธ์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ [0,1]์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„ ๊ฒƒ์ด๋‹ค.

 

 

GBN ์†ก์‹ ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€ ํƒ€์ž…์˜ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•ด์•ผ ํ•œ๋‹ค.

1. ์ƒ์œ„๋กœ ๋ถ€ํ„ฐ ํ˜ธ์ถœ 

rdt_send()๊ฐ€ ์œ„๋กœ๋ถ€ํ„ฐ ํ˜ธ์ถœ๋˜๋ฉด, ์†ก์‹ ์ž๋Š” ์šฐ์„  window๊ฐ€ ๊ฐ€๋“ ์ฐผ๋Š”์ง€, ์ฆ‰ N๊ฐœ์˜ ์•„์ง ํ™•์ธ ์‘๋‹ต์ด ๋˜์ง€ ์•Š์€ ํŒจํ‚ท์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ window๊ฐ€ ๊ฐ€๋“ ์ฐจ ์žˆ์ง€ ์•Š๋‹ค๋ฉด ํŒจํ‚ท์ด ์ƒ์„ฑ๋˜๊ณ  ์†ก์‹ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜๋“ค์ด ์ ์ ˆํ•˜๊ฒŒ ๊ฐฑ์‹ ๋œ๋‹ค.

window๊ฐ€ ๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋ฉด (nextseqnum == base + N์ด๋ผ๋ฉด) ์†ก์‹ ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (refuse_data(data))

์ƒ์œ„ ๊ณ„์ธต์€ ๋‚˜์ค‘์— ๋‹ค์‹œ rdt_send()๋ฅผ ํ˜ธ์ถœํ•  ๊ฒƒ์ด๋‹ค. ์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ์†ก์‹ ์ž๊ฐ€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋งํ•˜๊ฑฐ๋‚˜, ์˜ค์ง window์— ์—ฌ์œ ๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ rdt_send()๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋™๊ธฐํ™”๋ฉ”์ปค๋‹ˆ์ฆ˜(ex : ์„ธ๋งˆํฌ์–ด, ํ”Œ๋ ˆ๊ทธ)๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

 

if(nextseqnum < base + N) {

        sndpkt[nextseqnum] = make_pkt(nextseqnum, data, checksum)

        udt_send(sndpkt[nextseqnum])

        if(base == nextseqnum)

                start_timer

        nextseqnum++

        }

else

        refuse_data(data)

 

2. ACK์˜ ์ˆ˜์‹ 

GBN ํ”„๋กœํ† ์ฝœ์—์„œ ์ˆœ์„œ ๋ฒˆํ˜ธ n์„ ๊ฐ€์ง„ ํŒจํ‚ท์— ๋Œ€ํ•œ ํ™•์ธ์‘๋‹ต์€ ๋ˆ„์  ํ™•์ธ์‘๋‹ต์œผ๋กœ(cumulative acknowledgement)๋กœ ์ธ์‹๋จ.

๋ˆ„์  ํ™•์ธ์‘๋‹ต์€ ์ˆ˜์‹  ์ธก์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ๋œ n์„ ํฌํ•จํ•˜์—ฌ, n๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆœ์„œ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ํŒจํ‚ท์— ๋Œ€ํ•œ ํ™•์ธ ์‘๋‹ต์ด๋‹ค. ์ด๋Š” GBN ์ˆ˜์‹ ์ž ์ธก์—์„œ ๊ณ ๋ ค ๋Œ€์ƒ์ด ๋œ๋‹ค.

 

3. timeout ์ด๋ฒคํŠธ

Go-Back-N์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์˜ ์ด๋ฆ„์€ ์†์‹ค์ด ์žˆ๊ฑฐ๋‚˜ ์•„์ฃผ ๊ธด ์ง€์—ฐ๋œ ํŒจํ‚ท์ด ์žˆ์„ ๋•Œ ์†ก์‹ค์ž ๋™์ž‘์„ ๋‚ดํฌํ•œ๋‹ค.

์ „์†ก ํ›„ ๋Œ€๊ธฐ(stop-and-wait) ํ”„๋กœํ† ์ฝœ์—์„œ์™€ ๊ฐ™์ด, ํƒ€์ด๋จธ๋Š” ์†์‹ค๋œ ๋ฐ์ดํ„ฐ ๋˜๋Š” ์†์‹ค๋œ ํ™•์ธ์‘๋‹ต ํŒจํ‚ท์œผ๋กœ๋ถ€ํ„ฐ ํšŒ๋ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

ํƒ€์ž„์•„์›ƒ ๋ฐœ์ƒ ์‹œ, ์†ก์‹ ์ž๋Š” ์ด์ „์— ์ „์†ก๋˜์—ˆ์ง€๋งŒ ์•„์ง ํ™•์ธ์‘๋‹ต์ด ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ํŒจํ‚ท์„ ์žฌ์ „์†กํ•œ๋‹ค.

timeout 

-----------------

start_timer   //๋‹จ์ผ ํƒ€์ด๋จธ

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

...

udt_send(sndpkt[nextseqnum-1])

 

์†ก์‹ ์ž๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜๋œ '์ „์†กํ–ˆ์ง€๋งŒ, ์•„์ง ํ™•์ธ ์‘๋‹ต์ด ์•ˆ ๋œ ํŒจํ‚ท' ๊ตฌ๊ฐ„ [base, nextseqnum-1]์— ๋Œ€ํ•œ ํƒ€์ด๋จธ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ํ•œ ACK๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ์ง€๋งŒ, '์ „์†กํ–ˆ์ง€๋งŒ, ์•„์ง ํ™•์ธ ์‘๋‹ต์ด ๋˜์ง€ ์•Š์€ ํŒจํ‚ท'์ด ์กด์žฌํ•œ๋‹ค๋ฉด ํƒ€์ด๋จธ๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋œ๋‹ค. window ๊ตฌ๊ฐ„๋‚ด ์†ก์‹ ๋œ ํŒจํ‚ท๋“ค์ด ๋ชจ๋‘ ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์•˜์„ ๋•Œ(base == nextseqnum) ํƒ€์ด๋จธ๋Š” ๋ฉˆ์ถ˜๋‹ค.

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

----------------------------------------

base = getacknum(rcvpkt)+1

if(base == nextseqnum)

        stop_timer

else

        start_timer

 

 

์ด์ œ GBN ์ˆ˜์‹ ์ž์˜ ํ–‰๋™์„ ์‚ดํŽด๋ณด์ž.

๋งŒ์•ฝ ์ˆœ์„œ ๋ฒˆํ˜ธ n์„ ๊ฐ€์ง„ ํŒจํ‚ท์ด ์˜ค๋ฅ˜์—†์ด, ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜์‹ ๋œ๋‹ค๋ฉด(์ฆ‰, ์ƒ์œ„ ๊ณ„์ธต์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์„œ๋ฒˆํ˜ธ n-1์„ ๊ฐ€์ง„ ํŒจํ‚ท์—์„œ ์˜จ ๊ฒƒ์ด๋ผ๋ฉด), ์ˆ˜์‹ ์ž๋Š” ํŒจํ‚ท n์— ๋Œ€ํ•œ ACK๋ฅผ ์†ก์‹ ํ•˜๊ณ  ์ƒ์œ„ ๊ณ„์ธต์— ํŒจํ‚ท์˜ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์„ ์ „๋‹ฌํ•œ๋‹ค.

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && hasseqnum(rcvpkt, expectedseqnum)

----------------------------------------------------------------------------------

extract(rcvpkt, data)

deliver_data(data)

sndpkt = make_pkt(expectedseqnum, ACK, checksum)

udt_send(sndpkt)

expectedseqnum++

 

ํŒจํ‚ท์ด ์ƒ์œ„ ๊ณ„์ธต์— ํ•œ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์ „์†ก(์ฆ‰, ์ˆ˜์‹ ์ž ์ธก window ์‚ฌ์ด์ฆˆ 1)๋˜๋ฏ€๋กœ, ๋งŒ์•ฝ ํŒจํ‚ท k๊ฐ€ ์ˆ˜์‹ ๋˜๊ณ  ์ƒ์œ„ ๊ณ„์ธต์— ์ „๋‹ฌ๋˜์—ˆ๋‹ค๋ฉด, ์ด๋•Œ๋Š” ์ด๋ฏธ k๋ณด๋‹ค ์ž‘์€ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ํŒจํ‚ท ๋˜ํ•œ ์ „๋‹ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ๋ˆ„์  ํ™•์ธ์‘๋‹ต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์— ์ˆ˜์‹ ์ž๋Š” ๊ทธ ํŒจํ‚ท์„ ๋ฒ„๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ œ๋Œ€๋กœ ์ˆ˜์‹ ๋œ ์ˆœ์„œ์˜ ํŒจํ‚ท์— ๋Œ€ํ•œ ACK๋ฅผ ์žฌ์ „์†กํ•œ๋‹ค.

default

----------

udt_send(sndpkt)

 

GBN ํ”„๋กœํ† ์ฝœ์—์„œ ์ˆ˜์‹ ์ž๋Š” ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋œ ํŒจํ‚ท๋“ค์„ ๋ฒ„๋ฆฐ๋‹ค.

์ˆ˜์‹ ์ž๋Š” ์ƒ์œ„ ๊ณ„์ธต์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์•ผํ•œ๋‹ค.

์ง€๊ธˆ ํŒจํ‚ท n ์ด ์ˆ˜์‹ ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ, ๋‹ค์Œ ํŒจํ‚ท n+1 ์ด ๋จผ์ € ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, ์ˆ˜์‹ ์ž๋Š” ํŒจํ‚ท n+1์„ ์ €์žฅํ•˜๊ณ  ๋‚˜์ค‘์— ํŒจํ‚ท n์ด ์ˆ˜์‹ ๋˜๊ณ  ์ „๋‹ฌ๋œ ํ›„์— ์ƒ์œ„ ๊ณ„์ธต์— n+1 ํŒจํ‚ท์„ ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ํŒจํ‚ท n์ด ์†์‹ค๋˜์—ˆ๋‹ค๋ฉด ์†ก์‹ ์ž GBN ์žฌ์ „์†ก ๊ทœ์น™์— ๋”ฐ๋ผ ํŒจํ‚ท n๊ณผ n+1์ด ๋ชจ๋‘ ์žฌ์ „์†ก๋  ๊ฒƒ์ด๋‹ค. 

์ˆ˜์‹ ์ž๋Š” ์–ด๋–ค ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋œ ํŒจํ‚ท์— ๋Œ€ํ•ด ๋ฒ„ํผ๋ง์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์†ก์‹ ์ž๋Š” window ์ƒ์œ„,ํ•˜์œ„ ๊ฒฝ๊ณ„์™€ window ์•ˆ์— ์žˆ๋Š” nextseqnum ์œ„์น˜๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ˆ˜์‹ ์ž๊ฐ€ ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ๋‹จ์ง€ ๋‹ค์Œ ์ˆœ์„œ ํŒจํ‚ท์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ(expectedseqnum)์ด๋‹ค. (์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ๋œ ํŒจํ‚ท์„ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์˜ ๋‹จ์ ์€ ๊ทธ ํŒจํ‚ท์˜ ์žฌ์ „์†ก์ด ์†์‹ค๋˜๊ฑฐ๋‚˜ ์™œ๊ณก๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งŽ์€ ์žฌ์ „์†ก์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.)

 

์•„๋ž˜์˜ ๊ทธ๋ฆผ์€ window ํฌ๊ธฐ๊ฐ€ 4์ธ ํŒจํ‚ท์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ GBN ํ”„๋กœํ† ์ฝœ์˜ ๋™์ž‘์„ ๋ณด์—ฌ์ค€๋‹ค.

 

window ํฌ๊ธฐ ์ œํ•œ ๋•Œ๋ฌธ์— ์†ก์‹ ์ž๋Š” ํŒจํ‚ท 0๋ถ€ํ„ฐ 3๊นŒ์ง€๋ฅผ ์†ก์‹ ํ•œ๋‹ค.

์ดํ›„ ์†ก์‹ ์„ ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒจํ‚ท์ด ๊ธ์ • ํ™•์ธ ์‘๋‹ต๋˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค.

๊ฐ๊ฐ์˜ ์„ฑ๊ณต์ ์ธ ACK(ACK0, ACK1)๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ์„ ๋•Œ, window๋Š” ์•ž์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์†ก์‹ ์ž๋Š” ์ƒˆ๋กœ์šด ํŒจํ‚ท4, ํŒจํ‚ท5๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ „์†กํ•œ๋‹ค.

์ˆ˜์‹  ์ธก์—์„œ๋Š” ํŒจํ‚ท 2๊ฐ€ ์†์‹ค(loss)๋˜์—ˆ์œผ๋ฏ€๋กœ, ํŒจํ‚ท 3, 4, 5๋Š” ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋œ ํŒจํ‚ท์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ ์ œ๊ฑฐํ•œ๋‹ค.

 

 

 

GBN ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ–ˆ๋˜ ํ™•์žฅ๋œ FSM ๊ตฌ์กฐ๋Š” ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋Œ€์‘์œผ๋กœ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๋Š” ์ ˆ์ฐจ๋“ค๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(event-based programming)์—์„œ์˜ ๋‹ค์–‘ํ•œ ํ”„๋กœ์‹œ์ €๋“ค์€ ํ”„๋กœํ† ์ฝœ ์Šคํƒ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์‹œ์ €์— ์˜ํ•ด ์•ผ๊ธฐ๋˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ์˜ ๊ฒฐ๊ณผ๋กœ ์š”์ฒญ๋  ๊ฒƒ์ด๋‹ค.

์†ก์‹ ์ž์—์„œ์˜ ์ด๋ฒคํŠธ๋Š”

1) rdt_send()๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์ƒ์œ„ ๊ณ„์ธต ๊ฐœ์ฒด๋กœ๋ถ€ํ„ฐ์˜ ํ˜ธ์ถœ

2) ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ

3) ํŒจํ‚ท์ด ๋„์ฐฉํ–ˆ์„ ๋•Œ rdt_rcv()๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ํ•˜์œ„ ๊ณ„์ธต์œผ๋กœ๋ถ€ํ„ฐ์˜ ํ˜ธ์ถœ

์ด๋‹ค.

 

GBN ํ”„๋กœํ† ์ฝœ์€ TCP์˜ ์‹ ๋ขฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๊ธฐ์ˆ ๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด์žˆ๊ณ 

์ด ๊ธฐ์ˆ ์—์„œ๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ, ๋ˆ„์ ํ™•์ธ ์‘๋‹ต, ์ฒดํฌ์„ฌ, ํƒ€์ž„์•„์›ƒ/ ์žฌ์ „์†ก ๋™์ž‘์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ด ํฌํ•จ๋œ๋‹ค.

 

 

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

์ฑ„๋„ ์˜ค๋ฅ˜์˜ ํ™•๋ฅ ์ด ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ํŒŒ์ดํ”„๋ผ์ธ์€ ๋ถˆํ•„์š”ํ•œ ์žฌ์ „์†ก ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ์ง„๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋งค๋ฒˆ ํ•œ ๋‹จ์–ด๊ฐ€ ์™œ๊ณก๋  ๋•Œ ๋งˆ๋‹ค, ๊ทธ ๋‹จ์–ด ์ฃผ์œ„์˜ 1000๋‹จ์–ด(window ํฌ๊ธฐ 1000word)๊ฐ€ ๋ฐ˜๋ณต๋˜์–ด์•ผํ•œ๋‹ค. 

 

 

2. SR(Selective Repeat, ์„ ํƒ์  ๋ฐ˜๋ณต)

ํŒŒ์ดํ”„๋ผ์ธ ์˜ค๋ฅ˜ ํšŒ๋ณต์˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ธ SR(Selective Repeat, ์„ ํƒ์  ๋ฐ˜๋ณต) ํ”„๋กœํ† ์ฝœ์€ ์ˆ˜์‹ ์ž์—์„œ ์˜ค๋ฅ˜(์†์‹ค๋˜๊ฑฐ๋‚˜ ๋ณ€์กฐ๋œ)๊ฐ€ ๋ฐœ์ƒํ•œ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ–ˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ํŒจํ‚ท๋งŒ์„ ์†ก์‹ ์ž๊ฐ€ ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค. ์ด๋กœ์จ ๋ถˆํ•„์š”ํ•œ ์žฌ์ „์†ก์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ๊ฐ์˜ ๊ฐœ๋ณ„์ ์ธ ์žฌ์ „์†ก์€ ์ˆ˜์‹ ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ๋œ ํŒจํ‚ท์— ๋Œ€ํ•œ ๊ฐœ๋ณ„์ ์ธ ํ™•์ธ์‘๋‹ต์„ ์š”๊ตฌํ•  ๊ฒƒ์ด๋‹ค.

window ํฌ๊ธฐ N์€ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์•„์ง ํ™•์ธ์‘๋‹ต์ด ์•ˆ๋œ ํŒจํ‚ท ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. GBN๊ณผ์˜ ์ฐจ์ด์ ์€ window์— ์žˆ๋Š” ๋ช‡๋ช‡ ํŒจํ‚ท์— ๋Œ€ํ•œ ACK๋ฅผ ์†ก์‹ ์ž๊ฐ€ ์ด๋ฏธ ์ˆ˜์‹  ํ–ˆ์„ ๊ฒƒ์ด๋ž€ ๊ฑฐ๋‹ค.

SR ์ˆ˜์‹ ์ž๋Š” ํŒจํ‚ท์˜ ์ˆœ์„œ์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ์†์ƒ ์—†์ด ์ˆ˜์‹ ๋œ ํŒจํ‚ท์— ๋Œ€ํ•œ ํ™•์ด์‘๋‹ต์„ ํ•œ๋‹ค. ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€ ํŒจํ‚ท์€ ๋น ์ง„ ํŒจํ‚ท์ด ์ˆ˜์‹ ๋  ๋•Œ๊นŒ์ง€ ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ณ , ๋น ์ง„ ํŒจํ‚ท์ด ์ˆ˜์‹ ๋œ ์‹œ์ ์—์„œ ์ผ๋ จ์˜ ํŒจํ‚ท์„ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์œ„ ๊ณ„์ธต์— ์ „๋‹ฌํ•œ๋‹ค.

๋งŒ์•ฝ ํŒจํ‚ท 2๊ฐ€ ์†์‹ค๋˜๊ณ  ํŒจํ‚ท 3,4,5๋ฅผ ์†ก์‹ ํ–ˆ๋‹ค๋ฉด ์ˆ˜์‹ ์ž๋Š” ํŒจํ‚ท 3,4,5๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ณ , ์†ก์‹ ์ž๊ฐ€ ํŒจํ‚ท 2 ํƒ€์ž„์•„์›ƒ์— ์˜ํ•ด ์žฌ์ „์†กํ•˜์—ฌ  ์ˆ˜์‹ ์ž ์ธก์œผ๋กœ ํŒจํ‚ท 2๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ์„๋•Œ ์ˆ˜์‹ ์ž๋Š” 2,3,4,5๋ฅผ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

 

SR ์†ก์‹ ์ž ์ด๋ฒคํŠธ์™€ ํ–‰๋™

1. ์ƒ์œ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  : ์ƒ์œ„์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹ ๋  ๋•Œ, SR ์†ก์‹ ์ž๋Š” ํŒจํ‚ท์˜ ๋‹ค์Œ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ ์†ก์‹ ์ž window ๋‚ด์— ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ๋Š” ํŒจํ‚ท์œผ๋กœ ์†ก์‹ ๋œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด GBN์ฒ˜๋Ÿผ ๋ฒ„ํผ์— ๋‚˜์ค‘์— ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋˜๋Œ๋ ค์ง„๋‹ค. 

if next abilable seq# in window => send pkt

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

timeout(n) => resend pkt n, restart timer 

3. ACK ์ˆ˜์‹  : ACK๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ์„ ๋•Œ, SR ์†ก์‹ ์ž๋Š” ๊ทธ ACK๊ฐ€  window๋‚ด์— ์žˆ๋‹ค๋ฉด ๊ทธ ํŒจํ‚ท์„ ์ˆ˜์‹ ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค. ๋งŒ์•ฝ ํŒจํ‚ท ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ send_base์™€ ๊ฐ™๋‹ค๋ฉด, window base๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ์•„์ง ํ™•์ธ ์‘๋‹ต๋˜์ง€ ์•Š์€ ํŒจํ‚ท์œผ๋กœ ์˜ฎ๊ฒจ์ง„๋‹ค. ๋งŒ์•ฝ window๊ฐ€ ์ด๋™ํ•˜๊ณ  window ๋‚ด์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ๋ฏธ์ „์†ก ํŒจํ‚ท์ด ์žˆ๋‹ค๋ฉด, ์ด ํŒจํ‚ท๋“ค์€ ์ „์†ก๋œ๋‹ค.

 

SR ์ˆ˜์‹ ์ž ์ด๋ฒคํŠธ์™€ ํ–‰๋™

1. [rcv_base, rcv_base+N-1] ๋‚ด์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ํŒจํ‚ท์ด ์†์ƒ์—†์ด ์ˆ˜์‹  :

์ด ๊ฒฝ์šฐ ์ˆ˜์‹ ๋œ ํŒจํ‚ท์ด ์ˆ˜์‹ ์ž์˜ window์— ์†ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์„ ํƒ์ ์ธ ACK ํŒจํ‚ท์ด ์†ก์‹ ์ž์—๊ฒŒ ํšŒ์‹ ๋œ๋‹ค.

๋งŒ์•ฝ ์ด ํŒจํ‚ท์ด ์ด์ „์— ์ˆ˜์‹ ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋ผ๋ฉด ๋ฒ„ํผ์— ์ €์žฅ๋œ๋‹ค. 

๋งŒ์•ฝ ์ด ํŒจํ‚ท์ด ์ˆ˜์‹  window(rcv_base)์˜ base์™€ ๊ฐ™์€ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ผ๋ฉด, ์ด ํŒจํ‚ท๊ณผ ์ด์ „์— ๋ฒ„ํผ์— ์ €์žฅ๋˜์–ด ์—ฐ์†์ ์œผ๋กœ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„(rcv_base๋กœ ์‹œ์ž‘ํ•˜๋Š”) ํŒจํ‚ท๋“ค์€ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

์ฆ‰, window์˜ base์™€ ๋„์ฐฉ ํŒจํ‚ท์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋™์ผํ•˜๋ฉด ํ•ด๋‹น ํŒจํ‚ท๋ถ€ํ„ฐ ๋ฒ„ํผ๋œ ์—ฐ์† ํŒจํ‚ท๋“ค์„ ๋ชจ๋‘ ์ „๋‹ฌ

2. [rcv_base - N, rcv_base -1] ๋‚ด์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ํŒจํ‚ท์ด ์ˆ˜์‹ :

์ด ๊ฒฝ์šฐ์—๋Š” ์ด ํŒจํ‚ท์ด ์ˆ˜์‹ ์ž๊ฐ€ ์ด์ „์— ํ™•์ธ์‘๋‹ตํ•œ ๊ฒƒ์ด๋ผ๋„ ACK๊ฐ€ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ฆ‰, ์ˆ˜์‹ ์ž๊ฐ€ ํ˜„์žฌ์˜ window base๋ณด๋‹ค ์ž‘์€ ํŠน์ • ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ ์ˆ˜์‹ ๋œ ํŒจํ‚ท์„ ๋ฌด์‹œํ•˜์ง€ ์•Š๊ณ  ์žฌํ™•์ธ ์‘๋‹ต์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ ๊ณต๊ฐ„์„ ์ฃผ์—ˆ์„ ๋•Œ, ์ˆ˜์‹ ์ž๊ฐ€ ์†ก์‹ ์ž์—๊ฒŒ ๋ณด๋‚ด๋Š” send_base ํŒจํ‚ท์— ๋Œ€ํ•œ ACK๊ฐ€ ์—†๋‹ค๋ฉด, ์ˆ˜์‹ ์ž๋Š” ๊ทธ ํŒจํ‚ท์„ ์ด๋ฏธ ์ˆ˜์‹ ํ–ˆ์Œ์ด ๋ถ„๋ช…ํ•˜๋”๋ผ๋„ ๊ฒฐ๊ตญ ์†ก์‹ ์ž๋Š” send_base ํŒจํ‚ท์„ ์žฌ์ „์†กํ•  ๊ฒƒ์ด๋‹ค.

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

์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ˆ˜์‹ ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š๋Š” ์ˆ˜์‹ ์— ๋Œ€ํ•ด ๊ฐ™์€ ๊ด€์ ์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž์˜ window๋Š” ํ•ญ์ƒ ๊ฐ™์ง€๋Š” ์•Š๋‹ค๋Š” ๋œป์ด๋‹ค. 

 

3. ๊ทธ์™ธ์˜ ๊ฒฝ์šฐ, ํŒจํ‚ท์„ ๋ฌด์‹œํ•œ๋‹ค.

 

 

2.์˜ ์†ก์ˆ˜์‹ ์ž ๊ฐ„ window ๋™์ผํ•˜์ง€ ์•Š์Œ์— ๋Œ€ํ•œ ์ด์Šˆ

์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž window ์‚ฌ์ด์˜ ๋™๊ธฐํ™” ๋ถ€์กฑ์€ ์ˆœ์„œ ๋ฒˆํ˜ธ์˜ ํ•œ์ •๋œ ๋ฒ”์œ„์— ์ง๋ฉดํ–ˆ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ์ •๋œ ๋ฒ”์œ„์˜ ๋„ค ํŒจํ‚ท ์ˆœ์„œ ๋ฒˆํ˜ธ 0, 1, 2, 3๊ณผ window ํฌ๊ธฐ 3์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด ๋‚  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์ž.

0๋ถ€ํ„ฐ 2๊นŒ์ง€ ํŒจํ‚ท์ด ์ „์†ก๋˜์–ด ์˜ฌ๋ฐ”๋กœ ์ˆ˜์‹ ๋˜๊ณ , ์ˆ˜์‹ ์ž์—๊ฒŒ์„œ ํ™•์ธ์ด ๋˜์—ˆ๊ณ  ๊ทธ ์ˆœ๊ฐ„์— ์ˆ˜์‹ ์ž์˜ window๋Š” ๊ฐ๊ฐ์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ 3, 0, 1์ธ 4, 5, 6 ๋ฒˆ์งธ ํŒจํ‚ท์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์—ฌ๊ธฐ์„œ ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค(a),(b)๋ฅผ ๊ณ ๋ คํ•ด๋ณด์ž. (์•„๋ž˜ ๊ทธ๋ฆผ ์ฐธ๊ณ )

 

(a) ์ฒ˜์Œ ํŒจํ‚ท์— ๋Œ€ํ•œ ACK๊ฐ€ ์†์‹ค๋˜๊ณ  ์†ก์‹ ์ž๋Š” ์ด ํŒจํ‚ท์„ ์žฌ์ „์†กํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์ˆ˜์‹ ์ž๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ 0์ธ ํŒจํ‚ท(์ฒ˜์Œ ๋ณด๋‚ธ ํŒจํ‚ท์˜ ๋ณต์‚ฌ๋ณธ)์„ ์ˆ˜์‹ ํ•œ๋‹ค.

 

(b) ์ฒ˜์Œ 3๊ฐœ์˜ ํŒจํ‚ท์— ๋Œ€ํ•œ ACK๊ฐ€ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „๋‹ฌ๋˜์—ˆ๋‹ค. ์†ก์‹ ์ž๋Š” ์ž์‹ ์˜ window๋ฅผ ์•ž์œผ๋กœ ์ด๋™์‹œ์ผœ ๊ฐ๊ฐ์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ 3, 0, 1์ธ 4, 5, 6 ๋ฒˆ์งธ ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค. ์ˆœ์„œ ๋ฒˆํ˜ธ 3์„ ๊ฐ€์ง„ ํŒจํ‚ท์ด ์†์‹ค๋˜๊ณ , ์ˆœ์„œ ๋ฒˆํ˜ธ 0์„ ๊ฐ€์ง„ ํŒจํ‚ท(์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ํŒจํ‚ท)์€ ๋„์ฐฉํ•œ๋‹ค.

 

 

์ˆ˜์‹ ์ž๋Š” ์†ก์‹ ์ž์˜ ํ–‰๋™์„ ๋ณผ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ์‚ฌ์ด์— ์ปคํŠผ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ์ˆ˜์‹ ์ž๋Š” ์ฑ„๋„์„ ํ†ตํ•ด ๋ฐ›๊ณ , ์ฑ„๋„์„ ํ†ตํ•ด ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€์˜ ์ˆœ์„œ๋ฅผ ๊ด€์ฐฐํ•œ๋‹ค.

๋‹ค์„ฏ ๋ฒˆ์งธ ํŒจํ‚ท์˜ ์›๋ž˜ ์ „์†ก๊ณผ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์˜ ์žฌ์ „์†ก์„ ๊ตฌ๋ณ„ํ•  ๋ฐฉ๋ฒ•์€ ์—†๋‹ค.

๋„ˆ๋ฌด ํฐ window๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด SR ์ˆ˜์‹ ์ž๋Š” ์ƒˆ ํŒจํ‚ท์ธ์ง€ ์žฌ์ „์†ก ๋œ ํŒจํ‚ท์ธ์ง€ ๋”œ๋ ˆ๋งˆ์— ๋น ์ง€๊ฒŒ ๋ ๊ฒƒ์ด๋‹ค.

=> ํ•ด๊ฒฐ ์ˆœ์„œ๋ฒˆํ˜ธ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฐ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ์ˆœ์„œ ๋ฒˆํ˜ธ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ์œˆ๋„์šฐ ํฌ๊ธฐ์˜ 2๋ฐฐ์ด์ƒ์œผ๋กœ ๋А๋ ค์•ผํ•œ๋‹ค.

๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋Š” ์ˆœ์„œ๋ฒˆํ˜ธ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜ ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ <= ์ˆœ์„œ ๋ฒˆํ˜ธ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜์ž„์„ ์ฆ๋ช…ํ•˜๊ธฐ
๊ฐ€์ •:
์ˆœ์„œ ๋ฒˆํ˜ธ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ M, ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ W๋ผ๊ณ  ํ•˜์ž.

๋ชฉํ‘œ: W ≤ M/2 ์ž„์„ ๋ณด์ด๊ธฐ


๊ท€๋ฅ˜๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ
W > M/2๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ์ด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ๋ณด์—ฌ ์ด ๊ฐ€์ •์ด ์ž˜๋ชป๋˜์—ˆ์Œ์„ ์ฆ๋ช…ํ•˜์ž.
์‹œ๋‚˜๋ฆฌ์˜ค:
์†ก์‹ ์ž๊ฐ€ ์ˆœ์„œ ๋ฒˆํ˜ธ 0๋ถ€ํ„ฐ W-1๊นŒ์ง€์˜ ํŒจํ‚ท์„ ์ „์†กํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
์ˆ˜์‹ ์ž๊ฐ€ ์ด ๋ชจ๋“  ํŒจํ‚ท์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ํ•˜๊ณ  ACK๋ฅผ ๋ณด๋ƒˆ์ง€๋งŒ, ๋ชจ๋“  ACK๊ฐ€ ์†์‹ค๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
๋ฌธ์ œ ๋ฐœ์ƒ:
์†ก์‹ ์ž๋Š” ACK๋ฅผ ๋ฐ›์ง€ ๋ชปํ–ˆ์œผ๋ฏ€๋กœ ํƒ€์ž„์•„์›ƒ ํ›„ ํŒจํ‚ท 0๋ถ€ํ„ฐ ๋‹ค์‹œ ์ „์†ก์„ ์‹œ์ž‘ํ•œ๋‹ค.
์ˆ˜์‹ ์ž์˜ ์œˆ๋„์šฐ๋Š” ์ด๋ฏธ W๋งŒํผ ์ด๋™ํ–ˆ์œผ๋ฏ€๋กœ, W์—์„œ 2W-1 ๋ฒ”์œ„์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ๋‹ค.
W > M/2์ด๋ฏ€๋กœ, ์ˆ˜์‹ ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ ์ค‘ ์ผ๋ถ€๋Š” M์„ ์ดˆ๊ณผํ•˜์—ฌ ์ˆœํ™˜๋œ๋‹ค.
๋ชจํ˜ธ์„ฑ ๋ฐœ์ƒ:
์†ก์‹ ์ž๊ฐ€ ์žฌ์ „์†กํ•œ ํŒจํ‚ท 0์€ ์ˆ˜์‹ ์ž ์ž…์žฅ์—์„œ ์ƒˆ๋กœ์šด ํŒจํ‚ท M์œผ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๋‹ค.
์ด๋Š” ํŒจํ‚ท์˜ ์ˆœ์„œ์™€ ์‹ ๊ทœ์„ฑ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•œ๋‹ค.
๊ฒฐ๋ก :
์ด๋Ÿฌํ•œ ๋ชจํ˜ธ์„ฑ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” W ≤ M/2 ์กฐ๊ฑด์ด ๋ฐ˜๋“œ์‹œ ๋งŒ์กฑ๋˜์–ด์•ผ ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ์œˆ๋„์šฐ ํฌ๊ธฐ๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ ๊ณต๊ฐ„์˜ ์ ˆ๋ฐ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

 

์‹ ๋ขฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์š”์•ฝ

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

 

 

 

 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ :

https://media.pearsoncmg.com/ph/esm/ecs_kurose_compnetwork_8/cw/content/interactiveanimations/go-back-n-protocol/index.html

 

Go-Back Protocol

 

media.pearsoncmg.com

https://media.pearsoncmg.com/ph/esm/ecs_kurose_compnetwork_8/cw/content/interactiveanimations/selective-repeat-protocol/index.html

 

Selective Repeat Protocol

 

media.pearsoncmg.com

 

728x90