์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- til
- ์ค๋ฅ์ ์ด
- ์ค๋ฅ๊ฒ์ถ
- ์ฐ๋ถํฌdb
- ํ๋ก์ด๋์์
- mariadb
- git merge
- i-type
- ํ๋ ์ ๊ตฌ์กฐ
- IEEE 802
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- tcp ์ธ๊ทธ๋จผํธ
- ๋น์ฃผ๊ธฐ์ ํธ
- ์ฃผ๊ธฐ์ ํธ
- ์์๋ฒํธ
- xv6
- ์ค๋ ๋
- tcp ํ๋กํ ์ฝ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ํญํด99
- ํ ํฐ ๋ฒ์ค
- ๋ฐ์ดํฐ ์ ์ก
- well known ํฌํธ
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- leetcode
- ์ค๋ธ์
- 99ํด๋ฝ
- ๊ฐ๋ฐ์์ทจ์
- reducible
- ์ฝ๋ฉํ ์คํธ์ค๋น
- Today
- Total
Unfazedโ๏ธ๐ฏ
ํ์ดํ๋ผ์ด๋๋ ์ ๋ขฐ์ ์ธ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ ๋ณธ๋ฌธ
ํ์ดํ๋ผ์ด๋๋ ์ ๋ขฐ์ ์ธ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ
9taetae9 2024. 10. 30. 12:11ํ๋กํ ์ฝ 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 ํฌ๊ธฐ๋ ์์ ์์ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ๋ฒํผ๋งํ๋ ๋ฅ๋ ฅ, ๋คํธ์ํฌ ํผ์ก ์ ๋ ์ ๊ทผ๊ฑฐํ์ฌ ์ค์ ๋จ. |
์ฐธ๊ณ ์๋ฃ :
Go-Back Protocol
media.pearsoncmg.com
Selective Repeat Protocol
media.pearsoncmg.com