junyeokk
Blog
Networkยท2025. 04. 20

Go-Back-N, Selective Repeat

๐Ÿ“กย Go-Back-N (GBN)

๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ํ•˜๋‚˜๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๋ฉด, ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ?

  • ๋ฌด์Šจ ์ผ์ด ์ƒ๊ธฐ๋“  ์‹ ๊ฒฝ ์•ˆ ์“ฐ๊ณ  ๊ณ„์† ๋ณด๋‚ธ๋‹ค โ†’ ์‹ ๋ขฐ์„ฑ๊ณผ ๋ฉ€์–ด๋ณด์ž„
  • ์žƒ์–ด๋ฒ„๋ฆฐ ๊ฒƒ๋งŒ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค โ†’ ์ข‹์€ ์ƒ๊ฐ์ด์ง€๋งŒ, ์•„์ง์€ ์•„๋‹˜
  • ๊ทธ ์ดํ›„์— ๋ณด๋‚ธ ๊ฒƒ๋„ ๋‹ค ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค โ†’ ์ด ๋ฐฉ๋ฒ•์ด Go-Back-N์ด๋‹ค!

Go-Back-N(GBN)์€ ๋„คํŠธ์›Œํฌ์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ, ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋งŒ ์ƒ๊ฒจ๋„ ๋‹ค์‹œ ๋ชฝ๋•… ๋ณด๋‚ด๋Š” ์Šคํƒ€์ผ์ด๋‹ค.

image.png

GBN์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ๋งŒ ๋ณด๋‚ด๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒจํ‚ท์„ ๋™์‹œ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ์กฐ๊ฑด์ด ์žˆ๋‹ค. ์•„์ง ๋„์ฐฉ ํ™•์ธ(ACK)์„ ๋ฐ›์ง€ ๋ชป ํ•œ ํŒจํ‚ท์ด N๊ฐœ ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ํƒ๋ฐฐ๋กœ ์˜ˆ๋ฅผ ๋“ค๋ฉด,

  • base ์•„์ง ๋„์ฐฉ ํ™•์ธ ์•ˆ ๋œ ๋งจ ์•ž ํƒ๋ฐฐ
  • nextseqnum ๋‹ค์Œ์œผ๋กœ ๋ณด๋‚ผ ํƒ๋ฐฐ์˜ ๋ฒˆํ˜ธ

์™€ ๊ฐ™์ด ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. GBN์—์„œ๋Š” ์ด ๋‘ ๋ฒˆํ˜ธ ์‚ฌ์ด์— ์ƒ๊ธฐ๋Š” ๊ณต๊ฐ„์ด ๋ฐ”๋กœ ์œˆ๋„์šฐwindow_{window}๋‹ค. ์œˆ๋„์šฐ ํฌ๊ธฐ๋Š” N์ด๊ณ , ์ด ์ฐฝ ์•ˆ์— ์žˆ๋Š” ๋ฒˆํ˜ธ๋งŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ACK๊ฐ€ ์˜ค๋ฉด ์œˆ๋„์šฐ๊ฐ€ โ€œ์Šฅโ€ ์•ž์œผ๋กœ ๋ฐ€๋ฆฐ๋‹ค.

GBN์—์„œ ์œˆ๋„์šฐ๋Š” ๋‹จ์ˆœํžˆ _์ด๋ฏธ ๋ณด๋‚ธ ํŒจํ‚ท_๋งŒ ํฌํ•จํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ง€๊ธˆ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท๊นŒ์ง€ ํฌํ•จํ•œ ๋ฒ”์œ„๋‹ค. ์œˆ๋„์šฐ๋Š” ์ „์†ก ๊ฐ€๋Šฅํ•œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ์˜ ๋ฒ”์œ„ ์ „์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฑฐ์ง€, _๋ณด๋‚ธ ๊ฒƒ_๋งŒ ํฌํ•จ๋œ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.

GBN sender

sender๋Š” ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์ด๋ฒคํŠธ์— ์‘๋‹ตํ•ด์•ผ ํ•œ๋‹ค.

image.png
  • ์ƒ์œ„ ๊ณ„์ธต์—์„œ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ฉด (rdt_send(data), FSM 12์‹œ ๋ฐฉํ–ฅ)
    • ์œˆ๋„์šฐ์— ์—ฌ์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด, ํŒจํ‚ท์„ ๋งŒ๋“ค์–ด ๋ฐ”๋กœ ์ „์†กํ•œ๋‹ค.
    • ์—†๋‹ค๋ฉด, ๊ทธ๋ƒฅ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ACK(๋„์ฐฉ ํ™•์ธ)๊ฐ€ ์˜ค๋ฉด (rdt_rcv(rcvpkt) && notcorrupt(rcvpkt), FSM 6์‹œ ๋ฐฉํ–ฅ)
    • ๊ทธ ACK ๋ฒˆํ˜ธ๊นŒ์ง€ ์ „์†ก๋œ ํŒจํ‚ท์€ ๋‹ค ๋„์ฐฉํ•œ ๊ฑธ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ์œˆ๋„์šฐ๋„ ์•ž์œผ๋กœ ๋‹น๊ธฐ๊ณ , ํƒ€์ด๋จธ๋„ ์กฐ์ •ํ•œ๋‹ค.
  • ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด (timeout, FSM 3์‹œ ๋ฐฉํ–ฅ)
    • ์ด๋ฆ„์ฒ˜๋Ÿผ Go-Backํ•œ๋‹ค.
    • ํ™•์ธ๋ฐ›์ง€ ๋ชปํ•œ ํŒจํ‚ท ์ „๋ถ€๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.
    • GBN์—์„œ๋Š” base์— ํ•ด๋‹นํ•˜๋Š” ํŒจํ‚ท ํ•˜๋‚˜๋งŒ ํƒ€์ด๋จธ๋ฅผ ๋‘”๋‹ค.

GBN receiver

receiver ๋™์ž‘์€ ํ•˜๋‚˜๋งŒ ๋ฐ›์•„์„œ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๋‹ค.

image.png
  • ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•œ ํŒจํ‚ท๋งŒ ๋ฐ›์•„์„œ ์ƒ์œ„ ๊ณ„์ธต์— ์ „๋‹ฌํ•˜๊ณ , ACK๋ฅผ ๋ณด๋‚ธ๋‹ค.
  • ์ˆœ์„œ๊ฐ€ ์–ด๊ธ‹๋‚œ ํŒจํ‚ท์€ ๋ฌด์กฐ๊ฑด ๋ฒ„๋ฆฌ๊ณ , ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ์˜ ACK๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.

์™œ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋๋‚  ์ˆ˜ ์žˆ์„๊นŒ?

  • ์ˆ˜์‹ ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ _์ˆœ์„œ๋Œ€๋กœ_๋งŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์•ž์— ๊ป„ ์•ˆ ๋ฐ›์•˜๋Š”๋ฐ ๋’ค์— ๊ป„ ๋ฐ›์œผ๋ฉด ๊ณค๋ž€ํ•˜๋‹ˆ๊นŒ, ๊ทธ๋ƒฅ ๋ฒ„๋ฆฌ๊ณ  ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ์–ด์ฐจํ”ผ GBN์€ ๋‹ค์‹œ ์ „๋ถ€ ๋ณด๋‚ด์ค€๋‹ค.

Go-Back-N์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•œ ์ค„ ์š”์•ฝํ•˜๋ฉด, ์•ž์— ๊ฒƒ๋“ค ๋†“์น  ๋•Œ ๋’ค์— ๊ฒƒ๋„ ๋‹ค์‹œ ๋ณด๋‚ด๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ๋น ๋ฅด๊ณ  ๋‹จ์ˆœํ•˜์ง€๋งŒ, ์žฌ์ „์†ก์ด ๋งŽ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋‹จ์ ์ด๋‹ค. ๋‹ค์Œ์€ Selective Repeat์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

๐Ÿ“กย Selective Repeat

Go-Back-N์—์„œ๋Š” ํ•˜๋‚˜๋ผ๋„ ACK๊ฐ€ ์•ˆ ์˜ค๋ฉด, ๋’ค์— ๊ฑฐ๊นŒ์ง€ ๋‹ค ๋‹ค์‹œ ๋ณด๋ƒˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ข€ ์•„๊น๋‹ค. ํŒจํ‚ท 3๋งŒ ์œ ์‹ค๋๋Š”๋ฐ 4, 5, 6๋„ ๊ผญ ๋‹ค์‹œ ๋ณด๋‚ด์•ผ ํ• ๊นŒ?

๊ทธ ์˜๋ฌธ์— ๋‹ตํ•œ ํ”„๋กœํ† ์ฝœ์ด ๋ฐ”๋กœ Selective Repeat(์„ ํƒ์  ์žฌ์ „์†ก)์ด๋‹ค.

image.png

Selective Repeat(์„ ํƒ์  ์žฌ์ „์†ก)์€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๋ชจ๋‘๊ฐ€ ์œˆ๋„์šฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ํŒจํ‚ท์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ์ˆ˜์‹ ์ž๋Š” ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€ ํŒจํ‚ท์„ ์ €์žฅํ•˜๊ณ  ๊ฐ ํŒจํ‚ท์— ๋Œ€ํ•ด ๊ฐœ๋ณ„ ACK๋ฅผ ์ „์†กํ•œ๋‹ค. ์†ก์‹ ์ž๋Š” ํŒจํ‚ท๋งˆ๋‹ค ๋”ฐ๋กœ ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

์˜ˆ์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

image.png

(์œˆ๋„์šฐ ํฌ๊ธฐ = 4)

  1. ์†ก์‹ ์ž๋Š” ํŒจํ‚ท 0, 1, 2, 3 ์ „์†ก
  2. ์ˆ˜์‹ ์ž๋Š” 0, 1์„ ๋ฐ›๊ณ  ACK ๋ณด๋ƒ„
  3. 2๋Š” ์œ ์‹ค๋จ, 3์€ ๋จผ์ € ๋„์ฐฉ
    • GBN์ด์—ˆ๋‹ค๋ฉด ๋ฒ„๋ ธ๊ฒ ์ง€๋งŒ, SR์€ 3์„ ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ณ  ACK๋„ ๋ณด๋ƒ„
  4. ์†ก์‹ ์ž๋Š” 0, 1์˜ ACK๋ฅผ ๋ฐ›๊ณ  4, 5 ์ „์†ก
  5. 2๊ฐ€ ํƒ€์ž„์•„์›ƒ์œผ๋กœ ์žฌ์ „์†ก๋จ โ†’ ์ˆ˜์‹ ์ž ๋„์ฐฉ
    • ์ด์ œ 2, 3, 4, 5๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์ƒ์œ„ ๊ณ„์ธต์— ์ „๋‹ฌ ๊ฐ€๋Šฅํ•˜๋‹ค!

์ด์ฒ˜๋Ÿผ ์ˆœ์„œ๊ฐ€ ๋’ค์„ž์—ฌ๋„ ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋Š” ๊ตฌ์กฐ๊ฐ€ Selective Repeat์˜ ์žฅ์ ์ด๋‹ค.

๋ฌธ์ œ์ 

์ด๋ก ์ ์œผ๋กœ๋Š” ์™„๋ฒฝํ•˜์ง€๋งŒ, ์‹œํ€€์Šค ๋ฒˆํ˜ธ๊ฐ€ ๊ฒน์น˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

Selective Repeat์—์„œ๋Š” ํŒจํ‚ท๋งˆ๋‹ค ๋ฒˆํ˜ธ(์‹œํ€€์Šค ๋ฒˆํ˜ธ)๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฒˆํ˜ธ๋Š” ๋ฌดํ•œํ•˜์ง€ ์•Š๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2๋น„ํŠธ๋ผ๋ฉด, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒˆํ˜ธ๋Š” 0, 1, 2, 3์œผ๋กœ ์ด 4๊ฐœ ๋ฟ์ด๋‹ค.

๊ทธ๋ž˜์„œ ํŒจํ‚ท์„ ๊ณ„์† ๋ณด๋‚ด๋‹ค ๋ณด๋ฉด ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์‹œ 0์œผ๋กœ ๋Œ์•„์˜จ๋‹ค. ์ด๊ฑธ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๊ฐ€ ์ˆœํ™˜ํ•œ๋‹ค๊ณ  ๋งํ•œ๋‹ค.

image.png

์˜ˆ๋ฅผ ๋“ค์–ด,

  • ์‹œํ€€์Šค ๋ฒˆํ˜ธ๊ฐ€ 0~3 (4๊ฐœ๋ฟ)
  • ์œˆ๋„์šฐ ํฌ๊ธฐ = 3

๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

์ˆ˜์‹ ์ž๊ฐ€ ํŒจํ‚ท 0์„ ๋ฐ›๊ณ  ๋ฒ„ํผ์— ๋„ฃ์—ˆ๋Š”๋ฐ, ๊ทธ ๋‹ค์Œ์— ์†ก์‹ ์ž๋Š” ์ค‘๊ฐ„์— ACK(ํ™•์ธ ๋ฉ”์‹œ์ง€)๋ฅผ ๋ชป ๋ฐ›์•˜๋‹ค๊ณ  ํ•ด๋ณด์ž. 0๋ฒˆ์— ๋Œ€ํ•œ ํ™•์ธ์„ ๋ฐ›์ง€ ๋ชป ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด 0๋ฒˆ ํŒจํ‚ท์„ ๋‹ค์‹œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋™์‹œ์— ์†ก์‹ ์ž๋Š” ๊ณ„์†ํ•ด์„œ ๋‹ค์Œ ํŒจํ‚ท๋„ ๋ณด๋‚ด๊ณ  ๋˜ ๋ณด๋‚ด๊ณ .. ์–ด๋А ์ˆœ๊ฐ„ ์œˆ๋„์šฐ๊ฐ€ ๋ฐ€๋ฆฌ๋ฉด์„œ ์ง„์งœ ์ƒˆ๋กœ์šด 0๋ฒˆ ํŒจํ‚ท์ด ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋œ๋‹ค.

image.png

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ˆ˜์‹ ์ž๋Š”

โ€˜์ง€๊ธˆ ๋„์ฐฉํ•œ 0๋ฒˆ ํŒจํ‚ท.. ์˜ˆ์ „์— ์ €์žฅํ•œ 0๋ฒˆ์ด๋ž‘ ๊ฐ™์€ ํŒจํ‚ท์ธ๊ฐ€?

์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ ๋ณด๋‚ธ ์™„์ „ ๋‹ค๋ฅธ 0๋ฒˆ ํŒจํ‚ท์ธ๊ฐ€?โ€™

๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฒˆํ˜ธ๋Š” ๋˜‘๊ฐ™์ด 0์ด์ง€๋งŒ, ์‹œ์ ์€ ์™„์ „ ๋‹ค๋ฅธ ์ƒํ™ฉ์ด ์ƒ๊ฒจ๋ฒ„๋ฆฐ๋‹ค.

ํ•ด๊ฒฐ์ฑ…

์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๋‹ค. ์‹œํ€€์Šค ๋ฒˆํ˜ธ์˜ ๋ฒ”์œ„๊ฐ€ ์ถฉ๋ถ„ํžˆ ํฌ๋ฉด ๋œ๋‹ค.

seqnumโ‰ฅ2ร—windowsizeseqnum โ‰ฅ 2 ร— window size

์ฆ‰, ์œˆ๋„์šฐ ํฌ๊ธฐ๊ฐ€ 4๋ผ๋ฉด, ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋Š” ์ตœ์†Œ 8๊ฐœ ์ด์ƒ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์กฐ๊ฑด์ด ์ง€์ผœ์ง€๋ฉด ์ˆ˜์‹ ์ž๋Š” ์ƒˆ๋กœ์šด 0๋ฒˆ์„ ์ œ๋Œ€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๐Ÿ“กย ๋งˆ๋ฌด๋ฆฌ

Go-Back-N์€ โ€˜์ผ๋‹จ ์ญ‰ ๋ณด๋‚ด๊ณ  ์•ˆ ๋˜๋ฉด ์ „๋ถ€ ๋‹ค์‹œโ€™๋ผ๋ฉด, Selective Repeat์€ โ€˜์“ธ๋ฐ์—†์ด ๋ณด๋‚ด์ง€ ๋ง๊ณ , ์ง„์งœ ์žƒ์–ด๋ฒ„๋ฆฐ ๊ฒƒ๋งŒ ๋‹ค์‹œโ€™๋‹ค. ๋‘˜ ๋‹ค ์žฅ๋‹จ์ ์ด ํ™•์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค ๊ฑธ ์“ธ์ง€๋Š” ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ๊ณผ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

ํŠน์ง•Go-Back-NSelective Repeat
์žฌ์ „์†ก ๋ฐฉ์‹๋ˆ„๋ฝ๋œ ๊ฒƒ ์ดํ›„ ๋ชจ๋‘ ์žฌ์ „์†ก๋ˆ„๋ฝ๋œ ๊ฒƒ ํ•˜๋‚˜๋งŒ ์žฌ์ „์†ก
์ˆ˜์‹ ์ž ์ฒ˜๋ฆฌ์ˆœ์„œ ์•ˆ ๋งž์œผ๋ฉด ์ „๋ถ€ ํ๊ธฐ์ˆœ์„œ ์•ˆ ๋งž์•„๋„ ๋ฒ„ํผ์— ์ €์žฅ
ํƒ€์ด๋จธํ•˜๋‚˜๋งŒ ์šด์šฉํŒจํ‚ท๋งˆ๋‹ค ๋”ฐ๋กœ ํƒ€์ด๋จธ ์šด์˜
์œˆ๋„์šฐ ๊ด€๋ฆฌsender๋งŒ ์‹ ๊ฒฝ ์”€sender & receiver ๋‘˜ ๋‹ค ์œˆ๋„์šฐ ํ•„์š”
๋ณต์žก๋„๋น„๊ต์  ๋‹จ์ˆœ๊ตฌํ˜„์€ ๋” ๋ณต์žกํ•˜์ง€๋งŒ ํšจ์œจ์ 