Post

[CS] Computer Networking - Transport layer(2): rdt

[CS] Computer Networking - Transport layer(2): rdt

๐Ÿ“š์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

rdt(Reliable Data Tranfer)


RDT(Reliable Data Tranfer): ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™ ๋ฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ง‘ํ•ฉ

alt text

  • application layer์ž…์žฅ์—์„œ๋Š” ๋ณด๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด reliable์ด ๋ณด์žฅ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
    • transport layer์—์„œ๋Š” reliable์„ ๋ณด์žฅํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค
  • rdt protocol์„ ๊ตฌํ˜„ํ•  ๋•Œ, ํ†ต์‹  ์ฑ„๋„์˜ ์‹ ๋ขฐ์„ฑ ์—ฌ๋ถ€๊ฐ€ ํ”„๋กœํ† ์ฝœ์˜ complex๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
    • ex: ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ ์ „์†ก ์ฑ„๋„์ด ์‹ ๋ขฐ์ ์ด์ง€ ์•Š๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ํŒจํ‚ท์ด ์†์ƒ๋˜๊ฑฐ๋‚˜ ์œ ์‹ค๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
    • ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ rdt protocol์€ ๋” ๋ณต์žกํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์˜ค๋ฅ˜ ์ œ์–ด ๋ฐ ์žฌ์ „์†ก ๋งค์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”
  • APP - TP - NET์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์œผ๋‹ˆ TP๋Š” APP, NET ์ด๋ ‡๊ฒŒ ๋‘˜๋งŒ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋œ๋‹ค.
  • ์ด ์†Œํ†ต์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

alt text

  1. rdt_send(): APP์ด ๋‹ค๋ฅธ APP์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•  ๋•Œ Trans ๊ณ„์ธต์—๊ฒŒ data๋ฅผ ๋‹ด์•„ rdt_send(data)๋ฅผ ํ˜ธ์ถœ
  2. udt_send(): ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์€ Trans๋Š” ๋ฐ์ดํ„ฐ์— Trans header๋ฅผ ๋ถ™์ด๊ณ  ์•„๋ž˜ ๊ณ„์ธต์ธ NET ๊ณ„์ธต์œผ๋กœ udt_send(packet)๋ฅผ ํ•œ๋‹ค
  3. rdt_rcv(): receiver์˜ NET์€ rdt_rcv(packet)๋กœ ๋ฐ›์•„์˜จ ํŒจํ‚ท๋ฅผ ์˜ฌ๋ ค๋ณด๋‚ธ๋‹ค
  4. deliver_data(): Trans๋Š” Trans header๋ฅผ ๋นผ๊ณ  ์˜จ์ „ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ deliver_data()๋กœ APP์—๊ฒŒ ์˜ฌ๋ ค๋ณด๋‚ธ๋‹ค

rdt 1.0


๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†์‹ค๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๊ณ  ๋น„ํŠธ ์—๋Ÿฌ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” reliable ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž โ†’ ์†์‹ค์„ ์œ„ํ•œ ์žฌ์ „์†ก ์š”์ฒญ์„ ํ•  ํ•„์š”๋„ ์—†๊ณ , ์—๋Ÿฌ ์ฒดํ‚น๋„ ์•ˆํ•ด๋„ ๋œ๋‹ค

FSM์€ sender์™€ receiver ์ž…์žฅ ์ด๋ ‡๊ฒŒ 2๊ฐœ๋ฅผ ๊ณ ๋ ค

alt text

sender๋Š” APP๊ณ„์ธต์—์„œ rdt_send(data)๊ฐ€ ๋ฐœ์ƒ โ†’ Trans ๊ณ„์ธต์—์„œ packet์„ ์ƒ์„ฑ โ†’ ๋งŒ๋“  packet์„ NET ๊ณ„์ธต์œผ๋กœ ์ „์†ก(udt_send(packet))
receiver๋Š” rdt_rcv(packet)์œผ๋กœ ํŒจํ‚ท์ด ์˜ฌ๋ผ์˜ค๋ฉด ํŒจํ‚ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœ โ†’ ์ถ”์ถœํ•œ data๋ฅผ deliver_data(data)๋กœ APP ๊ณ„์ธต์—๊ฒŒ ์˜ฌ๋ ค๋ณด๋ƒ„

rdt 2.0


์ด๋ฒˆ์—” ๋„คํŠธ์›Œํฌ์—์„œ bit error๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •. ์–ด๋–ค action์„ ํ•ด์•ผํ• ๊นŒ?

โœ…Checksum ํ•„๋“œ๋กœ ํŒŒ์•… ๊ฐ€๋Šฅ ๊ทธ๋Ÿผ bit error๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์žฌ์š”์ฒญ์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š”๊ฐ€?

  • sender์ธก์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ๋ณด๋‚ด์กŒ๋Š”์ง€ ํŒŒ์•…ํ•ด์•ผํ•จ ์ด๋Š” ack(aknownledgements)์™€ nak(negative aknownledgements)๋กœ ํŒ๋‹จ

  • receiver๊ฐ€ ์ž˜ ๋ฐ›์•˜์œผ๋ฉด sender์—๊ฒŒ ACK ์ „์†ก, ๋ชป๋ฐ›์•˜์œผ๋ฉด NAK ์ „์†ก
  • sender๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ , receiver์—๊ฒŒ์„œ ์˜ค๋Š” ack๋˜๋Š” nak๋ฅผ ๊ธฐ๋‹ค๋ฆผ
    • ACK๊ฐ€ ์˜ค๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์—…๋ฌด ์ข…๋ฃŒ, NAK๊ฐ€ ์˜ค๋ฉด ๋ฐ์ดํ„ฐ ์žฌ์ „์†ก ํ›„ ๋‹ค์‹œ ack๋˜๋Š” nak ๊ธฐ๋‹ค๋ฆผ

alt text

  • rdt2.0์—์„œ์˜ ์ƒˆ๋กœ์šด ๋งค์ปค๋‹ˆ์ฆ˜(rdt 1.0๊ณผ ๋น„๊ต)
    โœ… ์—๋Ÿฌ ๊ฐ์ง€
    โœ… ํ”ผ๋“œ๋ฐฑ: receiver๊ฐ€ sender์—๊ฒŒ ACK,NAK ์ „์†ก์œผ๋กœ ํ”ผ๋“œ๋ฐฑ

ACK, NAK์—๋„ bit error๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š”?

๊ทธ๊ฒŒ rdt 2.1

rdt 2.1

๊ทธ๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†ก ํ•˜๋ฉด ๋˜๋Š”๊ฐ€? โ†’ receiver๋Š” ์ „์†ก๋œ ๊ฒฐ๊ณผ๊ฐ€ ์ด๋ฏธ ์™”๋˜๊ฑด์ง€ ๋ชจ๋ฆ„(์ค‘๋ณต ํŒจํ‚ท ๊ตฌ๋ถ„ X) โ†’ duplicate ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ

โœ… duplicate ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • sender๋Š” ACK, NAK์—์„œ corrupt๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ํŒจํ‚ท ์žฌ์ „์†ก
  • sender๋Š” ๊ฐ๊ฐ์˜ ํŒจํ‚ท์— sequence number๋ฅผ ๋ถ™์ž„
  • receiver๋Š” ๋ฐ›์€ ํŒจํ‚ท์ด ์™”๋˜๊ฒƒ์ด๋ฉด ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๊ฒƒ์ด๋ฉด ์ฒ˜๋ฆฌํ•ด์คŒ(ACK/NAK์€ ๋ฌด์กฐ๊ฑด ๋ณด๋ƒ„)

โœ… error ACK/NAKs ์ฒ˜๋ฆฌํ•˜๊ธฐ = duplicate ๋ฌธ์ œ์  ํ•ด๊ฒฐ์„ ์œ„ํ•ด sequence number ์ด์šฉ

alt text

sender์˜ FSM

  • sender๋Š” ํŒจํ‚ท์— 0, 1์ด๋ผ๋Š” sequence #๋ฅผ ํฌํ•จ
  • 0์„ ๋ณด๋‚ผ ์ฐจ๋ก€, 1์„ ๋ณด๋‚ผ ์ฐจ๋ก€๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ƒํƒœ๋กœ ๋ถ„๋ฆฌ
  • 0 ์ „์†ก ์ƒํƒœ โ†’ make_pkt์— 0์„ ๋‹ด์•„ ํŒจํ‚ท์„ ๋งŒ๋“ค๊ณ  ์ „์†ก
  • 0๋ฒˆ ํŒจํ‚ท์ด ์ž˜ ๋„์ฐฉํ–ˆ๋Š”์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ธ wait for ACK or NAK 0
  • ๋น„ํŠธ ์—๋Ÿฌ ํŒ๋‹จํ•˜๋Š” corrupt()ํ•จ์ˆ˜ ์ถ”๊ฐ€
    • ๋งŒ์•ฝ ๋น„ํŠธ์—๋Ÿฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์žฌ์ „์†ก
    • ๋ฉ€์ฉกํ•œ ACK๋ผ๋ฉด 1์„ ๋ณด๋‚ด์•ผํ•˜๋Š” ์ƒํƒœ๋กœ ์ง„์ž…
    • ๋ฐ์ดํ„ฐ ๋‚ด๋ ค์˜ค๋ฉด 1์„ ๋‹ด์•„ ํŒจํ‚ท ์ „์†ก
    • ACK/NAK waiting

alt text

receiver์˜ FSM

  • rdt2.1์—์„œ์˜ ์ƒˆ๋กœ์šด ๋งค์ปค๋‹ˆ์ฆ˜(rdt 2์™€ ๋น„๊ต) โœ…ACK, NAK ํŒจํ‚ท ๋น„ํŠธ ์—๋Ÿฌ, ์ค‘๋ณต ํŒจํ‚ท ๋น„๊ต, ์ค‘๋ณต ํŒจํ‚ท ๋ฒ„๋ฆฌ๊ธฐ ๋Œ€์‘์„ ์ถ”๊ฐ€

๊ทธ๋Ÿผ ACK, NAK ๋‘ ๊ฐœ ์ „๋ถ€ ํ•„์š”ํ• ๊นŒ?

ACK๋งŒ ์‚ฌ์šฉํ•ด์„œ 2.1์„ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ rdt 2.2

rdt 2.2

โœ… NAK ๋Œ€์‹  ACK๋งŒ ํ™œ์šฉ - OK๋ฐ›์€ ๋งˆ์ง€๋ง‰ ํŒจํ‚ท์— ๋Œ€ํ•ด ACK ๋ณด๋‚ด์คŒ โ†’ receiver๊ฐ€ ACK๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ, ACK๋ฉ”์‹œ์ง€์— ํฌํ•จ๋œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๊ฐ€ receiver๊ฐ€ ๋ฐ›์€ ํŒจํ‚ท ์ค‘์—์„œ ์–ด๋–ค ํŒจํ‚ท์„ ACKํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œ์‹œํ•ด์•ผํ•œ๋‹ค (=ACK์— sequence number ํฌํ•จํ•ด์„œ ์ „์†ก) โ†’ ์ค‘๋ณต๋œ ACK ๋ฐ›์œผ๋ฉด ํ˜„์žฌ ํŒจํ‚ท์„ ์ „์†กํ•จ

alt text

seq #0์— ๋Œ€ํ•œ ๊ทธ๋ฆผ(1์€ ์ˆซ์ž๋งŒ ๋ฐ”๊พธ๋ฉด ๋จ)

  • sender: 0๋ฒˆ ์ „์†ก ํ›„ ACK 0 wating ์ƒํƒœ๋กœ ์ „ํ™˜
    • ๋งŒ์•ฝ ACK 1์„ ๋ฐ›๊ฒŒ๋˜์—ˆ๋‹ค๋ฉด packet ์žฌ์ „์†ก
  • receiver: 0๋ฒˆ ํŒจํ‚ท ์ˆ˜์‹  โ†’ ์ฒดํฌ์„ฌ๊ณผ ํ•จ๊ป˜ ACK 1์„ ์ „์†ก โ†’ 1์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๋กœ ์ „ํ™˜
    • ๋งŒ์•ฝ 0๋ฒˆ์ด ์ค‘๋ณต์œผ๋กœ ์™”๋‹ค๋ฉด ACK 1์„ ์žฌ์ „์†ก

rdt 3.0


rdt 3.0: bit error๋ฟ๋งŒ ์•„๋‹ˆ๋ผ packet loss๊นŒ์ง€ ๊ณ ๋ คํ•œ protocol

โŒ๋ฐ์ดํ„ฐ ํŒจํ‚ท๊ณผ ACK, NAK๋„ ์†์‹ค๋  ์ˆ˜ ์žˆ์Œ

  1. sender๊ฐ€ ๋ณด๋‚ธ packet์ด loss๋œ ๊ฒฝ์šฐ
  2. receiver๊ฐ€ ๋ณด๋‚ธ ACK๊ฐ€ loss๋œ ๊ฒฝ์šฐ โœ… ๋ฌด์ž‘์ • ๊ธฐ๋‹ค๋ฆด์ˆœ ์—†์œผ๋‹ˆ timer๋ฅผ ๋งŒ๋“ฆ
    โ†’ ์ผ์ •์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์žฌ์ „์†ก

alt text

  • ์ดˆ๊ธฐ์ƒํƒœ: ํŒจํ‚ท ๋งŒ๋“ค๊ณ  ์ „์†ก ํ•œ ํ›„ ํƒ€์ด๋จธ ์‹œ์ž‘ํ•ด์„œ ๋‹ค์Œ ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐ
  • ์™”๋Š”๋ฐ ์‹œํ€€์Šค ๋„˜๋ฒ„๊ฐ€ ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ํƒ€์ด๋จธ๋Š” ๊ทธ๋ƒฅ ํ˜๋Ÿฌ๊ฐ€๋„๋ก ๋†”๋‘๊ณ  ์ƒํƒœ ์œ ์ง€
  • ํƒ€์ž„์•„์›ƒ์ด ๊ฑธ๋ฆฌ๋ฉด ์žฌ์ „์†กํ•˜๊ณ  ํƒ€์ด๋จธ ๋‹ค์‹œ ์‹œ์ž‘ ํ•˜๊ณ  ์ƒํƒœ ์œ ์ง€
  • ACK์ด ์ œ๋Œ€๋กœ ์˜ค๋ฉด ํƒ€์ด๋จธ ์Šคํƒ‘ํ•˜๊ณ  ๋‹ค์Œ ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐ

alt text alt text

(b), (c)์˜ ๊ฒฝ์šฐ timeout์ด ๋˜๋ฉด ๋‹ค์‹œ ์ •์ƒํ™”

  • (d)์ด๋ฏธ์ง€
    • timer๋ฅผ ์งง๊ฒŒํ•ด์„œ ACK๊ฐ€ ์˜ค๊ธฐ์ „์— timeout๋ฐœ์ƒ
    • ์ž‘๋™์€ ํ•˜์ง€๋งŒ ๋ถˆํ•„์š”ํ•œ ์žฌ์ „์†ก์œผ๋กœ duplicate๊ฐ€ ๋งŽ๋‹ค
    • ๋ฐ˜๋ฉด timer๋ฅผ ๋„ˆ๋ฌด ๊ธธ๊ฒŒํ•˜๋ฉด loss ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆผ
    • ์ ๋‹นํ•œ timer๊ตฌํ˜„์ด ์ค‘์š”

performance of rdt 3.0

rdt 3.0์€ stop and wait(timer์— ์˜์กด) ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Œ

alt text

์ „์†ก์†๋„ 1Gbps, ์ „ํŒŒ์†๋„ 15ms, 8000bit์˜ ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค, sender-receiver์‚ฌ์ด๊ฐ€ ํšŒ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •

  • ์ „์†ก์‹œ๊ฐ„ : ํŒจํ‚ท ๋‚ด๋ณด๋‚ด๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ : 8 usec
  • ์ „ํŒŒ์‹œ๊ฐ„ : ํ•œ ํŒจํ‚ท์ด ๋๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ : 15ms
  • ๋ณด๋‚ด๋Š”๋ฐ ์ด ์‹œ๊ฐ„ = ์ „์†ก์‹œ๊ฐ„ + ์ „ํŒŒ์‹œ๊ฐ„ = 15.008ms
  • ACK์€ ๋น„ํŠธ์ˆ˜๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์ „์†ก์‹œ๊ฐ„ ๋งค์šฐ ์ž‘๋‹ค๊ณ  ํŒ๋‹จํ•ด์„œ ๋ฌด์‹œํ•˜๊ณ  ์ „ํŒŒ์‹œ๊ฐ„๋งŒ ๊ณ ๋ ค
  • ๋”ฐ๋ผ์„œ ํŒจํ‚ท์ด ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ + ACK์ด ์˜ค๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ = 15.008 + 15 = 30.008ms
  • 8000๋น„ํŠธ ๋ณด๋‚ด๊ณ  ACK ๋ฐ›๋Š”๋ฐ 30.008ms ์†Œ์š”
  • ํšจ์œจ์„ฑ์ด ๋งค์šฐ ๋–จ์–ด์ง„๋‹ค. (ํšจ์œจ์„ฑ์ด 1์ด ์ œ์ผ ์ข‹์Œ)

alt text

์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด pipelined protocols ์‚ฌ์šฉ

piplined protocols

alt text

  • ACK์˜ ์œ ๋ฌด ์ƒ๊ด€์—†์ด ๋ญ‰ํ……์ด๋กœ ํŒจํ‚ท์„ ์ „์†กํ•˜๊ณ  ๊ทธ ๋’ค์— ACK๋ญ‰ํ……์ด๋ฅผ ๋ฐ›๋Š”๋‹ค.

  • ๋‘๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœํ† ์ฝœ ํ˜•ํƒœ: go-Back-N, selective repeat
    1. Go-Back-N(GBN)

    : ์†์ƒ๋œ ํŒจํ‚ท์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํŒจํ‚ท์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์‹ ๋˜์–ด์•ผ๋งŒ ๋‹ค์Œ ํŒจํ‚ท์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœํ† ์ฝœ

  • sender๋Š” ์ตœ๋Œ€ n๊ฐœ์˜ ํ™•์ธ๋˜์ง€ ์•Š์€ (unacked) ํŒจํ‚ท์„ ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์— ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    โ†’ ์ด ๋•Œ N์€ window size
  • receiver๋Š” cumulative ack๋งŒ์„ ๋ณด๋‚ธ๋‹ค
    โ†’ ๋นˆ ๊ณต๊ฐ„์ด ์žˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น ํŒจํ‚ท์„ ํ™•์ธํ•˜์ง€๋„, ์‘๋‹ตํ•˜์ง€ ์•Š์Œ (ack ์•ˆํ•จ)
  • sender๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜ ํ™•์ธ๋˜์ง€ ์•Š์€ ํŒจํ‚ท์— ๋Œ€ํ•œ timer๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํƒ€์ด๋จธ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ํ™•์ธํ•˜์ง€ ์•Š์€ ํŒจํ‚ท์„ ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค. alt text
2. Selective Repeat

: ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ ํŒจํ‚ท๋“ค์€ ๊ณ„์† ์ „์†ก๋  ์ˆ˜ ์žˆ์Œ โ†’ ์ „์†ก ์‹œ๊ฐ„์„ ์ตœ์ ํ™”

  • sender๋Š” ์ตœ๋Œ€ n ๊ฐœ์˜ ํ™•์ธ๋˜์ง€ ์•Š์€ ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • receiver๋Š” ๊ฐ ํŒจํ‚ท์— ๋Œ€ํ•œ individual ack์„ ๋ณด๋‚ธ๋‹ค.
  • sender๋Š” ๊ฐ ํ™•์ธ๋˜์ง€ ์•Š์€ ํŒจํ‚ท์— ๋Œ€ํ•œ ํƒ€์ด๋จธ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
    โ†’ ํƒ€์ด๋จธ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด sender๋Š” ํ•ด๋‹น ํ™•์ธ๋˜์ง€ ์•Š์€(unacked)ํŒจํ‚ท๋งŒ ์žฌ์ „์†กํ•œ๋‹ค. alt text
This post is licensed under CC BY 4.0 by the author.