TCP ์ฐ๊ฒฐ๊ณผ ์ ๋ขฐ์ ๋ฐ์ดํฐ ์ ์ก
TCP ์ฃผ์ ํน์ง
TCP ์ฐ๊ฒฐ์ ์ฃผ์ ํน์ง๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
point-to-point: ๋ฐ์ ์์ ์์ ์๋ ๊ณ ์ ์ ์์ผ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๋ค.
send & receive buffers: ์์๋ก ์ ๋ณด๋ค์ ๋ณด๊ดํ๋ ๋ฒํผ๊ฐ ๋ณด๋ผ ๋์ ๋ฐ์ ๋ ๋ ๊ฒฝ์ฐ ๋ค ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ ๋ค ๊ฐ์ง๊ณ ์๋ค.
reliable in-order byte stream: ์์ค ์์ด reliableํ๊ณ , ์ ์ก๋ ์์๋๋ก in-order๋ก ์ ํํ ์ ๋ฌํ๋ค.
pipelined: ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ํจํท์ ์ ์กํ ์ ์๋ค.
full duplex data: ํ ์ฐ๊ฒฐ์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐฉํฅ์ผ๋ก ์ ์ก๋ ์ ์๋ค.
flow control: ๋ฐ์ ์๋ ์์ ์๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์๋๋ณด๋ค ๋น ๋ฅด๊ฒ ๋ณด๋ด์ง ์๋๋ค.
๊ณ์ธต๋ณ ๋ฐ์ดํฐ ์ ์ก ๋จ์
์์ฉ๊ณ์ธต์์ ๋ฐ์ดํฐ ์ ์ก ๋จ์๋ย ๋ฉ์์ง๋ผ๊ณ ํ๋ค (์ด๊ฒ๋ ํค๋์ ๋ฐ์ดํฐ ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค). ์ด ๋ฉ์์ง๊ฐ ์์ผ์ ํตํด TCP๋ก ๋ด๋ ค์ค๋ฉดย ์ธ๊ทธ๋จผํธย ์์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ค์ด๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ธ๊ทธ๋จผํธ๋ ๋คํธ์ํฌ ๊ณ์ธต์ ์ ์ก ๋จ์์ธย ํจํท์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ค์ด๊ฐ๊ณ , ์ด ํจํท์ ๋ค์ ๋งํฌ ๊ณ์ธต์ ์ ์ก ๋จ์์ธย ํ๋ ์์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ค์ด๊ฐ๋ค.
๊ฐ ๊ณ์ธต์ ๋ํด ์์๋ณผ ๋ ๋ฐ์ดํฐ ๋ถ๋ถ์ด ์๋๋ผ ์ฌ์คย ํค๋๊ฐ ์ค์ํ๋ค. ํค๋ ๋ถ๋ถ์ ํด๋น ๊ณ์ธต์ด ํ๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
TCP ์ธ๊ทธ๋จผํธ ๊ตฌ์กฐ
ํค๋ ํ๋๋ค
๊ฐ ํ๋๋ค์ ์ ๋ถ 32๋นํธ ๋จ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Source Port (16bit) | Destination Port (16bit)
Sequence number (32bit)
Acknowledgement number (32bit)
Data Offset (4bit) | Reserved (6bit) | Flags (6bit) | Window (16bit)
Checksum (16bit) | Urgent Pointer (16bit)
์์ ํ๋๋ค์ด ํ ์ค๋ง๋ค ๊ฐ๊ฐ 32๋นํธ์ฉ ํผ์ ํน์ ๋๋ ์ ์ฐจ์งํ๊ณ ์๋ค.
์ํ์ค ๋ฒํธ์ ACK ๋ฒํธ
์ํ์ค ๋ฒํธ (Sequence Number)
TCP์์ ์ฌ์ฉํ๋ ์ํ์ค ๋ฒํธ๋ '๋ฐ์ดํฐ ๋ถ๋ถ์ ์ ์ผ ์ฒซ ๋ฐ์ดํธ์ ์์๋ฒํธ' ๋ค.
์๋ฅผ ๋ค์ด ๋ฉ์์ง ์์ฒด๊ฐ 100๋ฐ์ดํธ ํฌ๊ธฐ๋ผ๊ณ ํ์ (0๋ถํฐ 99๋ฒ ๋ฐ์ดํธ๊น์ง ์๋ค). ํ ๋ฒ์ 10๋ฐ์ดํธ์ฉ ์ ์ก์ ํ ์ ์๋ค๊ณ ํ๋ฉด:
- ์ฒซ ๋ฒ์งธ ์ ์ก: ์ํ์ค ๋ฒํธ 0 (0-9๋ฒ ๋ฐ์ดํธ)
- ๋ ๋ฒ์งธ ์ ์ก: ์ํ์ค ๋ฒํธ 10 (10-19๋ฒ ๋ฐ์ดํธ)
- ์ธ ๋ฒ์งธ ์ ์ก: ์ํ์ค ๋ฒํธ 20 (20-29๋ฒ ๋ฐ์ดํธ)
- ...
ACK ๋ฒํธ (Acknowledgement Number)
ACK ๋ฒํธ์ ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ๋ฐ์ ๋ค์ ๋ฐ์ดํธ ๋ฒํธ๊ฐ ๋๋ค. ์์์ 0-9๋ฒ ๋ฐ์ดํธ๋ฅผ ์ ์กํ๊ณ ์์ ์๊ฐ ์ด์์์ด ์ ๋ฐ์๋ค๋ฉด ACK ๋ฒํธ๋ 10๋ฒ์ด ๋๋ค.
์ฐธ๊ณ : TCP ํต์ ์ค์๋ ์์ธก ๋ชจ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ค์ด๊ธฐ ๋๋ฌธ์, ACK ํผ๋๋ฐฑ์ ๋ณด๋ผ ๋๋ ๋ฐ๋ ์ฆ์ ๋ณด๋ด์ง ์๊ณ ์๋๋ฐฉ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ผ์ด ์์ ์๋ ์์ผ๋ 500ms ์ ๋ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ์ piggybackํด์ ๋ณด๋ธ๋ค๊ฑฐ๋, ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๊ทธ๋ฅ ์๋ต๋ง ๋ณด๋ธ๋ค๊ณ ํ๋ค.
์ ๋ขฐ์ ๋ฐ์ดํฐ ์ ์ก (Reliable Data Transfer)
์ ์์ ํ์์์ (Adaptive Timeout)
์ด์ ์ ํ์ด๋จธ์ ๋ํด์ ๊ฐ๋ตํ๊ฒ ๋ค๋ค์๋ค. ๋๋ฌด ๋น ๋ฅด๋ฉด ๋คํธ์ํฌ ์ฌ์ฉ๋์ด ๋ง์์ง ๊ฒ์ด๊ณ , ๋๋ฌด ๋๋ฆฌ๋ฉด ์ ์ก ๊ณผ์ ์์ฒด๊ฐ ๋๋ ค์ง ๊ฒ์ด๋ค. ๊ทธ๋์ ์ ์ ํ ํ์์์์ ์ฐพ๋ ๊ฒ ์ค์ํ๋ฐ ๋ค์๊ณผ ๊ฐ์ด ์ธก์ ํ๋ค๊ณ ํ๋ค.
RTT ์ถ์ ๊ณต์:
EstimatedRTT = (1-ฮฑ)*EstimatedRTT + ฮฑ*SampleRTT (typically, ฮฑ = 0.125)
DevRTT = (1-ฮฒ)*DevRTT + ฮฒ*|SampleRTT-EstimatedRTT| (typically, ฮฒ = 0.25)
TimeoutInterval = EstimatedRTT + 4*DevRTT
ํ ๋ฒ ์ ์ก๋ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋ต์๊ฐ์ธ SampleRTT๋ฅผ ๊ธฐ์กด ํ๊ท ์ ๋ํด์ ๋ค์ ํ๊ท ๊ฐ์ ๋ธ๋ค (๊ทธ๋ฐ๋ฐ ๊ทธ๋ฅ 1/n ํ๊ท ์ด ์๋๋ผ ์ต๊ทผ RTT์ ํฐ ๊ฐ์ค์น๋ฅผ ์ฃผ๋ฉด์ ํ๊ท ์ ๋ธ๋ค).
๊ทธ๋ฆฌ๊ณ DevRTT (๋ณ๋์ฑ)๋ฅผ ์ธก์ ํด์ ์ฌ๊ธฐ์ 4๋ฐฐ์ ๋ง์ง์ ๋ถ์ฌ์ ํ์์์ ์๊ฐ์ ์ ํ๋ค. ์ฆย ํต์ ์ค์๋ ๊ณ์ ํ์์์ ๊ฐ์ด ๋ณํ๋ค๋ ์ ์ด ์ค์ํ๋ค.
๋น ๋ฅธ ์ฌ์ ์ก (Fast Retransmit)
์ด์ ์๊ฐ์ RDT๋ฅผ ๊ตฌํํ๋ ํ๋กํ ์ฝ์ ๊ณ ์ํด๋ดค๋ค: Go-back-N ๋ฐฉ์๊ณผ Selective Repeat. TCP๋ ๊ธฐ๋ณธ์ ์ผ๋ก GBN์ cumulative ACK๋ฅผ ์ฌ์ฉํ๋ค.
๊ธฐ์กด GBN์ ๋ฌธ์ ์ : ๊ธฐ์กด GBN์์ ๋จ์ ์ ์ค๋ณต๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ณ์ ๋ฐ์์ผ ํ๋ค๋ ๊ฒ์ด์๋ค. ์๋ฅผ ๋ค์ด 100๊ฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์์ ๋ 10๋ฒ ์ธ๊ทธ๋จผํธ๋งย ์ ์ค๋๊ณ , ๊ทธ๋ ๋ค๋ ํผ๋๋ฐฑ ACK(9)๋ฅผ ์ ์กํ๋ฉด ๋ฐ์ ์๋ 10๋ฒ๋ถํฐ ๋ค์ 100๊ฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ค์ ์ ์กํ๋ค. ๊ทธ๋ฌ๋ฉด 11๋ฒ๋ถํฐ 99๋ฒ๊น์ง 90๊ฐ ๊ฐ๋์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ ์กํ๋ ๋คํธ์ํฌ๊ฐ ๋ญ๋น๋๋ ์ ์ด๋ค.
TCP์ Fast Retransmit ๋ฐฉ์: ๊ทธ๋์ TCP์์๋ ์ด๋ป๊ฒ ํ๋๋๋ฉด, ๋ง์ฐฌ๊ฐ์ง๋ก 10๋ฒ ์ธ๊ทธ๋จผํธ๋ง ์ ์ค๋๋ค๋ฉด:
- 10๋ฒ ์ธ๊ทธ๋จผํธ๊ฐ ์ ์ค๋ ํ 11๋ฒ, 12๋ฒ, ... ์ธ๊ทธ๋จผํธ๊ฐ ๊ณ์ ๋์ฐฉํ๋ค
- ํ์ง๋ง 10๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๊ณ์ํด์ ACK(10)์ ๋ณด๋ธ๋ค (ACK(9)๊ฐ ์๋๋ค)
- ๋ฐ์ ์ ์ธก์์๋ 0-99๋ฒ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋๊ณ ํ์์์ ์๊ฐ์ด ๋๊ธฐ ์ ๊น์ง ๊ณ์ํด์ ACK(10)์ ๋ฐ๊ฒ ๋๋ค
- ๊ทธ๋ฌ๋ฉด ๋๋จธ์ง ์ธ๊ทธ๋จผํธ๋ ์ ์์ ์ผ๋ก ๋์ฐฉํ๋ค๊ณ ๊ฐ์ ํ๊ณ 10๋ฒ ์ธ๊ทธ๋จผํธ๋งย ๋ค์ ๋ณด๋ธ๋ค
Fast Retransmit ๊ท์น:ย ๊ถ๊ณ ์ฌํญ์ ๋ฐ๋ฅด๋ฉด ์ค๋ณต๋ ACK๋ฅผ 3๋ฒ ๋ฐ์ผ๋ฉด, ์ฆ ์๋ ACK๊น์ง ์ด 4๊ฐ์ ๊ฐ์ ์๋ต์ ๋ฐ์ผ๋ฉด ํด๋น ์ธ๊ทธ๋จผํธ๋ง ์ฌ์ ์กํ๋ค.
์ด๋ฐ ๋ฐฉ์์ย Fast Retransmit์ด๋ผ๊ณ ํ๋ค. ์ด๋ฅผ ํตํด ํ์์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ์ ์ค๋ ํจํท์ ์ฌ์ ์กํ ์ ์์ด์ ์ ์ก ํจ์จ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ค.
์ ๋ฆฌ
TCP๋ ์ด์ฒ๋ผ ๋ค์ํ ๋ฉ์ปค๋์ฆ์ ํตํด ์ ๋ขฐ์ ์ด๊ณ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ๋ค:
- ์ ์์ ํ์์์: ๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํ์์์ ๊ฐ์ ์กฐ์
- Fast Retransmit: ์ค๋ณต ACK๋ฅผ ํตํด ๋น ๋ฅธ ์ค๋ฅ ๋ณต๊ตฌ
- Cumulative ACK: ์์ฐจ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฅ
์ด๋ฌํ ํน์ง๋ค์ด ๊ฒฐํฉ๋์ด TCP๊ฐ ์ธํฐ๋ท์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ ์ก ํ๋กํ ์ฝ์ด ๋ ์ ์์๋ ๊ฒ์ด๋ค.
%%
๊ฐ์
TCP ์ฐ๊ฒฐ์ ์ฃผ์ ํน์ง๋ค๋ก๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
point-to-point : ๋ฐ์ ์์ ์์ ์๋ ๊ณ ์ ์ ์์ผ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๋ค. send & receive buffers : ์์๋ก ์ ๋ณด๋ค์ ๋ณด๊ดํ๋ ๋ฒํผ๊ฐ ๋ณด๋ผ๋์ ๋ฐ์ ๋ ๋ ๊ฒฝ์ฐ ๋ค ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ ๋ค ๊ฐ์ง๊ณ ์๋ค. reliable in-order byte stream : ์์ค ์์ด reliable, ์ ์ก๋ ์์๋๋ก in-order ์ ํํ ์ ๋ฌํ๋ค. pipelined : ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ํจํท์ ์ ์กํ ์ ์๋ค. full duplex data : ํ ์ฐ๊ฒฐ์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐฉํฅ์ผ๋ก ์ ์ก๋ ์ ์๋ค. flow controlled : ๋ฐ์ ์๋ ์์ ์๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์๋๋ณด๋ค ๋น ๋ฅด๊ฒ ๋ณด๋ด์ง ์๋๋ค.
TCP ์ธ๊ทธ๋จผํธ
์์ฉ๊ณ์ธต์์ ๋ฐ์ดํฐ ์ ์ก ๋จ์๋ ๋ฉ์์ง(์ด๊ฒ๋ ํค๋์ ๋ฐ์ดํฐ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค) ๋ผ๊ณ ํ๋ค. ์ด ๋ฉ์์ง๊ฐ ์์ผ์ ํตํด TCP๋ก ๋ด๋ ค์ค๋ฉด ์ธ๊ทธ๋จผํธ ์์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ค์ด๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ธ๊ทธ๋จผํธ๋ ๋คํธ์ํฌ ๊ณ์ธต์ ์ ์ก ๋จ์์ธ ํจํท ์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ค์ด๊ฐ๊ณ , ์ด ํจํท์ ๋ค์ ๋งํฌ ๊ณ์ธต์ ์ ์ก ๋จ์์ธ ํ๋ ์์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ค์ด๊ฐ๋ค.
๊ฐ ๊ณ์ธต์ ๋ํด ์์๋ณผ ๋ ๋ฐ์ดํฐ ๋ถ๋ถ์ด ์๋๋ผ ์ฌ์ค ํค๋๊ฐ ์ค์ํ๋ค. ํค๋๋ถ๋ถ์ ํด๋น ๊ณ์ธต์ด ํ๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ๊ฒ ๋๊ธฐ ๋๋ฌธ์.
ํ๋๋ค
๊ฐ ํ๋๋ค์ ์ ๋ถ 32๋นํธ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Source Port / Destination Port Sequence number Acknowledgement number Data Offset, Reserved / Window Checksum / Urgent Pointer (์์ ํ๋๋ค์ด ํ ์ค๋ง๋ค ๊ฐ๊ฐ 32๋นํธ์ฉ ํผ์ ํน์ ๋๋ ์ ์ฐจ์งํ๊ณ ์๋ค.)
Seq num & ACK num
TCP์์ ์ฌ์ฉํ๋ ์ํ์ค ๋๋ฒ๋ '๋ฐ์ดํฐ ๋ถ๋ถ์ ์ ์ผ ์ฒซ ๋ฐ์ดํธ์ ์์๋ฒํธ' ๋ผ๊ณ ํ๋ค. ์๋ฅผ๋ค์ด ๋ฉ์์ง ์์ฒด๊ฐ 100๋ฐ์ดํธ ํฌ๊ธฐ๋ผ๊ณ ํ์. (0๋ถํฐ 99๋ฒ ๋ฐ์ดํธ๊น์ง ์๋ค.) ์๋ฅผ ๋ค์ด ํ๋ฒ์ 10๋ฐ์ดํธ์ฉ ์ ์ก์ ํ ์ ์๋ค๊ณ ํ๋ฉด, ์ฒ์์ ์ํ์ค ๋ฒํธ๋ ์ฒซ ๋ฐ์ดํธ์ ๋ฒํธ์ธ 0๋ฒ. ๊ทธ ๋ค์์๋ 10๋ฒ์ด ๋๊ณ ๋ค์์ 20๋ฒ, 30๋ฒ, ....
ack ๋ฒํธ์ ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ๋ฐ์ ๋ค์ ๋ฐ์ดํธ ๋ฒํธ๊ฐ ๋๋ค. ์์์ 0-9๋ฒ ๋ฐ์ดํธ๋ฅผ ์ ์กํ๊ณ ์์ ์๊ฐ ์ด์์์ด ์ ๋ฐ์๋ค๋ฉด ack ๋ฒํธ๋ 10๋ฒ์ด ๋๋ค.
TCP ํต์ ์ค์๋ ์ ์ธก ๋ชจ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ค์ด๊ธฐ ๋๋ฌธ์, ACK ํผ๋๋ฐฑ์ ๋ณด๋ผ๋๋ ๋ฐ๋ ์ฆ์ ๋ณด๋ด์ง ์๊ณ ์๋๋ฐฉ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ผ์ด ์์์ ๋ ์์ผ๋ 500ms ์ ๋ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ์ ๋ณด๋ธ๋ค๊ฑฐ๋, ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๊ทธ๋ฅ ์๋ต๋ง ๋ณด๋ธ๋ค๊ณ ํ๋ค.
Reliable Data Transfer
ํ์์์
์ ๋ฒ์ ํ์ด๋จธ์ ๋ํด์ ๊ฐ๋ตํ๊ฒ ๋ค๋ค์๋ค. ๋๋ฌด ๋น ๋ฅด๋ฉด ๋คํธ์ํฌ ์ฌ์ฉ๋์ด ๋ง์์ง ๊ฒ์ด๊ณ , ๋๋ฌด ๋๋ฆฌ๋ฉด ์ ์ก ๊ณผ์ ์์ฒด๊ฐ ๋๋ ค์ง ๊ฒ์ด๋ค. ๊ทธ๋์ ์ ์ ํ ํ์์์์ ์ฐพ๋๊ฒ ์ค์ํ๋ฐ ๋ค์๊ณผ ๊ฐ์ด ์ธก์ ํ๋ค๊ณ ํ๋ค.
EstimatedRTT = (1-a)*EstimatedRTT + a*SampleRTT (typically, a(alpha) = 0.125)
DevRTT = (1-b)*DevRTT + b*|sampleRTT-EstimatedRTT| (typically, b(beta) = 0.25)
TimeoutInterval = EstimatedRTT + 4*DevRTT
ํ๋ฒ ์ ์ก๋ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋ต์๊ฐ์ธ SampleRTT๋ฅผ ๊ธฐ์กด ํ๊ท ์ ๋ํด์ ๋ค์ ํ๊ท ๊ฐ์ ๋ธ๋ค์. (๊ทธ๋ฐ๋ฐ ๊ทธ๋ฅ 1/n ํ๊ท ์ด ์๋๋ผ ์ต๊ทผ rtt์ ํฐ ๊ฐ์ค์น๋ฅผ ์ฃผ๋ฉด์ ํ๊ท ์ ๋ธ๋ค.) ๊ทธ๋ฆฌ๊ณ DevRTT (๋ณ๋์ฑ)์ ์ธก์ ํด์ ์ฌ๊ธฐ์ 4๋ฐฐ์ ๋ง์ง์ ๋ถ์ฌ์ ํ์์์ ์๊ฐ์ ์ ํ๋ค. ์ฆ ํต์ ์ค์๋ ๊ณ์ ํ์์์ ๊ฐ์ด ๋ณํ๋ค๋ ์ .
Fast Retransmit
์ด์ ์๊ฐ์ RDT๋ฅผ ๊ตฌํํ๋ ํ๋กํ ์ฝ์ ๊ณ ์ํด๋ดค๋ค : Go-back-N ๋ฐฉ์๊ณผ Selective Repeat. TCP๋ ๊ธฐ๋ณธ์ ์ผ๋ก GBN์ culumative ack๋ฅผ ์ฌ์ฉํ๋ค. ๊ธฐ์กด GBN์์ ๋จ์ ์ ์ค๋ณต๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ณ์ ๋ฐ์์ผํ๋ค๋ ๋จ์ ์ด ์์๋ค. ๋ฌด์์ด๋๋ฉด, 100๊ฐ์ ์ธ๊ทธ๋จผํธ ๋ฐ์์๋ 10๋ฒ ์ธ๊ทธ๋จผํธ๋ง ์ ์ค๋๊ณ , ๊ทธ๋ ๋ค๋ ํผ๋๋ฐฑ ack(9)๋ฅผ ์ ์กํ๋ฉด ๋ฐ์ ์๋ 10๋ฒ๋ถํฐ ๋ค์ 100๊ฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ค์ ์ ์กํ๋ค. ๊ทธ๋ฌ๋ฉด 11๋ฒ ๋ถํฐ 99๋ฒ๊น์ง 90๊ฐ ๊ฐ๋์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ๋ ๋คํธ์ํฌ๊ฐ ๋ญ๋น๋๋ ์.
๊ทธ๋์ TCP์์๋ ์ด๋ป๊ฒ ํ๋๋๋ฉด, ๋ง์ฐฌ๊ฐ์ง๋ก 10๋ฒ ์ธ๊ทธ๋จผํธ๋ง ์ ์ค๋๋ค๋ฉด, 10๋ฒ๋ถํฐ ๋ค์ ๋ณด๋ด๋ฌ๋ผ๋ ํผ๋๋ฐฑ ack(10)(ack(9)๊ฐ ์๋๋ค)์ ๋ณด๋ด๋๊ฒ์ ๋ง์ฐฌ๊ฐ์ง์ธ๋ฐ, ๋์ฐฉํ๋ ์ธ๊ทธ๋จผํธ๋ง๋ค ack(10)์ ๋ณด๋ธ๋ค. ๊ทธ๋ฌ๋ฉด ๋ฐ์ ์ ์ธก์์๋ 0-99๋ฒ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋๊ณ ํ์์์ ์๊ฐ์ด ๋๊ธฐ ์ ๊น์ง ๊ณ์ํด์ ack(10)์ ๋ฐ๊ฒ ๋๊ณ , ๊ทธ๋ฌ๋ฉด ๋๋จธ์ง ์ธ๊ทธ๋จผํธ๋ ์ ์์ ์ผ๋ก ๋์ฐฉํ๋ค๊ณ ๊ฐ์ ํ๊ณ 10๋ฒ ์ธ๊ทธ๋จผํธ๋ง ๋ค์ ๋ณด๋ธ๋ค. (๊ถ๊ณ ์ฌํญ์ ๋ฐ๋ฅด๋ฉด ์ค๋ณต๋ ack๋ฅผ 3๋ฒ ๋ฐ์ผ๋ฉด, ์ฆ ๋ณธ ack๊น์ง ์ด 4๊ฐ ๊ฐ์ ์๋ต์ ๋ฐ์ผ๋ฉด ํด๋น ์ธ๊ทธ๋จผํธ๋ง ์ฌ์ ์ก ํ๋ค.)
์ด๋ฐ ๋ฐฉ์์ Fast Retransmit์ด๋ผ๊ณ ํ๋ค. %%