[CS] Computer Networking - Transport layer(3): TCP segment, retransmittion
๐์ปดํจํฐ ๋คํธ์ํฌ ์ ๊ณต ์์ ์ ๋ฆฌ
โญ Transfer layer์์ ๊ฐ์ฅ ์ค์ํ T.C.P์ ๋ํด ์์๋ณด์
TCP
TCP(Transmission Control Protocol): ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ ์กํ๊ธฐ ์ํ ํต์ฌ ํ๋กํ ์ฝ
โ TCP์ ์ฃผ์ ๊ตฌ์ฑ ๊ฐ๋ :
- Point-to-Point: ํ๋์ sender์ ํ๋์ recevier๋ง ์ฐ๊ฒฐ
- Reliable, In-order Byte Stream: ๋ฐ์ดํฐ๊ฐ ์์ค ์์ด ๋ณด๋ธ ์์๋๋ก ๋์ฐฉ
- Full Duplex Data: ์๋ฐฉํฅ์ผ๋ก ๋์์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
- Connection-oriented: ๋ฐ์ดํฐ ๊ตํ ์ ์ ์ฐ๊ฒฐ ์ค์ ํ์(3-way handshaking)
- Flow Control: ์์ ์๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์๋งํผ๋ง ๋ฐ์ดํฐ ์ ์ก
TCP Segment sructure
TCP๋ ๋ฐ์ดํฐ๋ฅผ segment๋จ์๋ก ๋๋์ด NETWORK layer๋ก ์ ์กํ๋ค.
Source/Destination Port
: UDP์ฒ๋ผ multi/demultiplexing์ ์ํ portsequence number
: ๋ฐ์ดํฐ ๋ฐ์ดํธ ์์ackownledgement number
: ACKํ๋ ๋๋ฒA
: Ack ํ๋๊ฐ ์ ํจํจ(1์ด๋ฉด ์ ํจ)P
: ๋ชจ์์ ์ฌ๋ฆฌ์ง ๋ง๊ณ ๋ฐ๋ก ์ฌ๋ฆฌ๋ผ๋ ๋ช ๋ นR
: ๋ฆฌ์ S
: ์ปค๋ฅ์ ๋งบ์๊ณ ์์ฒญํ๋ ๊ฒ. ๋งบ์ด์ง๋ฉด 0, ๋งบ์ด์ง๊ธฐ์ ์ 1์ด๋ค.F
: ์ปค๋ฅ์ ๋์ ๋ ์ฌ์ฉํ๋ค. ๋ ์ด์ ์๋ณด๋ด๊ฒ ๋ค๋ ์๋ฏธ. ํ์ง๋ง ์๋๋ ์์ง ๋ณด๋ผ ์ ์๋ค. ๋์ผ๋ คํ ๋ 1๋ก ๋ฐ๊พผ๋ค.receive window
: ํ์ฌ ๋์ ์๋์ฐ ๋ฒํผ ํฌ๊ธฐ
TCP Seq #, ACKs
Sequence Numbers: ๋ฐ์ดํฐ ์คํธ๋ฆผ์์ ์ฒซ ๋ฐ์ดํธ์ ์์น ACK: receiver๊ฐ ๋ค์์ ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๋ฐ์ดํธ์ ์ํ์ค ๋ฒํธ
Host A์ ์ด๊ธฐ ์ํ์ค ๋๋ฒ๋
42
, Host B์ ์ด๊ธฐ ์ํ์ค ๋๋ฒ๋79
A๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ผ ๋ ACK๋ฅผ79
๋กํ๊ณ ์ ์ก
B๋ ์ด์ ์๋ตํ์ฌ79
์ํ์ค๋ฅผ ๋ณด๋ด๋๋ฐ ACK๊ฐ43
์ด๋ ๊ธฐ๋ํ๋ ์ธ๊ทธ๋จผํธ๊ฐ43
๋ฒ์ด๋ผ๊ณ ์ด์ชฝ์์ ๋ฏธ๋ฆฌ ๋ํด์ ์ฃผ๋ ๊ฒ
A๋ 79๋ฅผ ์ ๋ฐ์๋ค๊ณ ACK80
๊ณผ ๋ค์ ์ํ์ค ๋๋ฒ์ธ43
๋ฅผ ์ ์ก
TCP RTT & Timeout
Timeout์๊ฐ์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ค์ ํด์ผํ ๊น?
๋๋ฌด ์งง์ผ๋ฉด ๋ถํ์ํ ์ฌ์ ์ก์ด ๋ง์์ง๊ณ , ๋๋ฌด ๊ธธ๋ฉด loss๋ณต๊ตฌ ์๊ฐ์ด ๊ธธ์ด์ง๋ค. โ RTT๋ณด๋ค ์ด์ง ๊ธด ์๊ฐ์ด ์ต์ ์ ์๊ฐ์ด๋ค.
- ๐RTT?
- sender์์ segment๊ฐ receiver๊น์ง ๊ฐ์ ACK๊ฐ ๋์์ค๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ
๊ทธ๋ผ RTT๋ ์ด๋ป๊ฒ ๊ณ์ฐํ๋๊ฐ โ SampleRTT
๋ฅผ ์ด์ฉํ๋ค
- ์ธ๊ทธ๋จผํธ ์ ์ก๋ถํฐ ACK ์์ ๊น์ง์ ์ค์ ์ธก์ ์๊ฐ
- ๋คํธ์ํฌ๋ dynamicํ๊ธฐ ๋๋ฌธ์ segment๋ฅผ ๋ณด๋ผ ๋๋ง๋ค SampleRTT๊ฐ ๋ฌ๋ผ์ง๋ค โ ๋ถ๊ท์น์ ์
- ๋ฐ๋ผ์ ํ๊ท ๊ฐ์ ์ฑํํ๊ธฐ ์ํ ๊ณต์์ ๋ค์๊ณผ ๊ฐ๋ค.
1
EstimatedRTT = (1-ฮฑ) ร EstimatedRTT + ฮฑ ร SampleRTT
- ฮฑ๋ ์ผ๋ฐ์ ์ผ๋ก 0.125
EstimatedRTT
๋ ํ๊ท ์ ์ธ RTT ์ถ์ ๊ฐ- ์ด์ ์ ๊ณ์ฐ๋ RTT์ ๊ฐ์ค์น๋
0.875
์ด๊ณ , ์๋ก ๊ณ์ฐ๋ RTT๋0.125
์ ๊ฐ์ค์น โ ์๋ก์ด ํ๊ท RTT๋ฅผ ๊ณ์ฐํ๋ค๋ ์๋ฏธ
๋ํ ํ์ฌ ์ธก์ ๋ RTT๊ฐ ๊ธฐ์กด์ ํ๊ท RTT๋ฅผ ์ผ๋ง๋ ๋ฒ์ด๋๋์ง ํ์ ํ๋ ๊ฒ๋ ์ค์ํ๋ค.
1
DevRTT = (1-ฮฒ) ร DevRTT + ฮฒ ร |SampleRTT - EstimatedRTT|
evRTT
: ์์ ์ฑ์ ์ํ ์ผ์ข ์ margin๊ฐ
EstimatedRTT
์ DevRTT
๋ฅผ ์ด์ฉํ๋ฉด Timeout ๊ฐ๊ฒฉ์ ์ค์ ํ ์ ์๋ค.
TCP transfer ๋งค์ปค๋์ฆ
- ์ ์กํ ๋ฐ์ดํฐ๊ฐ App layer์์ Trasnport layer๋ก ๋ด๋ ค์ด
- ์ฌ๋ฌ segment๋ก ๋ถํ ํด์ send buffer์ ์ ์ฅ
- ์ค์ ๋
window size
๋งํผ receiver์ธก์ผ๋ก segment๋ฅผ ํ๋ฒ์ ์ ์ก - segment๋ฅผ receiver์ receive buffer์ ์ ์ฅ
- sender๋ ์ ์กํ segment๋ค์ ๋ํ ACK๋ฅผ ์์
TCP retransmission scenarios
1. ACK lost
- A๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ (SEQ=92, 8๋ฐ์ดํธ) B๊ฐ ACK๋ฅผ ์ ์ก(ACK=100)
- ๊ทธ๋ฌ๋ ACK ํจํท์ด ๋คํธ์ํฌ์์ ์์ค
- ํธ์คํธ A๋ ํ์์์ ํ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์ก
- ํธ์คํธ B๋ ๋ค์ ACK=100์ ์ ์ก
- ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ ๋ฒ ๋ณด๋ด์ก์ผ๋, TCP๋ seq #๋ฅผ ํตํด ์ค๋ณต์ ์ฒ๋ฆฌ
2. premature timeout
- A๊ฐ ๋ ๊ฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ก(SEQ=92์ SEQ=100).
- ํ์์์์ด ์ผ์ฐ ๋ฐ์ โ ํธ์คํธ A๋ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ(SEQ=92)๋ฅผ ์ฌ์ ์ก
- ๊ทธ ์ฌ์ด ํธ์คํธ B๋ ๋ ์ธ๊ทธ๋จผํธ์ ๋ํด ACK=100๊ณผ ACK=120์ ์ ์ก
- A๋ ํ์ด๋จธ๋ฅผ ๋ถํ์ํ๊ฒ ์ฌ์์ํ๊ฒ ๋์ง๋ง, ๋์ ACK ๋ฉ์ปค๋์ฆ ๋๋ถ์ ๊ฒฐ๊ตญ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์ ์ก๋จ
3. cumulative ACK covers for earlier lost ACK
- A๊ฐ ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ก(SEQ=92์ SEQ=100).
- ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK=100์ด ์์ค
- ๋ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK=120์ด ๋์ฐฉ
- ๋์ ACK ๋ฉ์ปค๋์ฆ์ผ๋ก ์ธํด ACK=120์ ์ด์ ์ ๋ชจ๋ ๋ฐ์ดํฐ(SEQ=92 ํฌํจ)๊ฐ ๋ฐ์์ก์์ ์๋ฏธ
- ๋ฐ๋ผ์ ์์ค๋ ACK=100์ ๋ํ ๊ฑฑ์ ์์ด ํต์ ์ด ๊ณ์๋๋ค.
ํ์์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ์ฌ์ ์ก ํ๋ ๋ฐฉ๋ฒ์ ์์๊น?
TCP Fast Retransmit
โ sender๊ฐ 3 duplicate ACK๋ฅผ ๋ฐ์ผ๋ฉด, ํด๋น segment๊ฐ ์์ค๋์๋ค๊ณ ํ๋จ โ ํ์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฆ์ ์ฌ์ ์ก
3๊ฐ์ ๊ฐ์ ACK๊ฐ ์๋๋ผ 3๊ฐ์ โ์ค๋ณตโ ACK์ ์ฃผ์!!
์ฒซ ๋ฒ์งธ ์ ์ ACK๋ ํฌํจX