03_1
๐ How much overhead?
20 bytes of TCP + 20 bytes if IP = 40 bytes + application layer overhead
MTU (Maximum Transmission Unit)
ํ ๋ฒ์ ํต๊ณผํ ์ ์๋ ๊ฐ์ฅ ํฐ ๋ฐ์ดํฐ์ ํฌ๊ธฐ
MSS (Maximum Segment Size)
MSS = MTU - (TCP header + IP header)
์ ์ฒด๋ IP packet ์ด๋ค.
๋ง์ฝ MTU ๊ฐ 1500byte ๋ผ๋ฉด ์ IP packet ์ ์ต๋ ํฌ๊ธฐ๋ 1500 byte์ด๋ค.
MSS๋ 1500 - (20 + 20) = 1460 byte ์ด๋ค.
TCP ๋ ๋ฐ์ดํฐ๋ฅผ stream of bytes ํํ๋ก host์ ์ ์กํ๋ค.
TCP segment MSS๋งํผ stream์ ์๋ผ์ ์ ์กํ๋ค.
Sequence Number
byte stream ์ segment ์, ์ฒซ๋ฒ์งธ byte์ byte number
segment๊ฐ ์์์ ๋ง๊ฒ ๋์ฐฉํ๋์ง ์๊ธฐ ์ํด packet์ number๋ฅผ ๋ถ์ธ๋ค.
ISN์ ๋๋คํ๊ฒ ์ ํด์ง๋ค.
๋ง์ฝ TCP data๋ฅผ 80byte์ฉ ๋๊ณ (MSS is 80byte) ISN์ด 0 ๋ถํฐ๋ผ๋ฉด,
sequence number๋ 0~80, 81~160, 161~240 ์ธ ๊ฐ์ packet์ ๋ํด์
0, 81, 161 ์ด๋ค.
๋ง๋ค. ISN๋ sequence number์ ์ผ๋ถ์ด๋ค.
ACK (acknowledgements)
sender ์๊ฒ receiver๊ฐ data๋ฅผ ์ ๋ฐ์๋ค๊ณ ๋ณด๋ด๋ ๋ฉ์ธ์ง
ack์๋ ๋ค์์ ๋ณด๋ผ packet์ sequence number ๊ฐ ์ค๋ ค์๋ค.
no loss
first ack number will be 1000.
second ack number will be 2000.
third ack number will be 3000. (because next sequence number is 3000)
There is loss
๋๋ฒ์งธ segment์์ receiver์๊ฒ ๋ณด๋ผ๋ loss๊ฐ ์ผ์ด๋๊ณ , ์ธ๋ฒ์งธ segment๋ ์ ์ ๋ฌ์ด ๋ ์ํ๋ผ๋ฉด?
์ธ๋ฒ์งธ segment์ ack์ด 3000์ด ์๋๋ผ loss๊ฐ ๋ 1000 ์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ๋ฒ์งธ segment๋ ์ ์์ ์ผ๋ก loss๊ฐ ์ผ์ด๋์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ฒ์งธ segment๋ฅผ retransmit ํด์ฃผ๋ฉด ๋ ๋ฒ์งธ segment์ ack์ 3000์ด ๋๋ค.
(์ธ๋ฒ์งธ segment๋ ์ ๋ฐ์๊ธฐ ๋๋ฌธ์ ack 2000์ ํด ๋ฒ๋ฆฌ๋ฉด ์ด๋ฏธ ๋ฐ์ segment๋ฅผ ์ค๋ณต์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ด๋ค.)
Piggybacked
ACK๊ฐ sender์๊ฒ ๋ค์ ๋ณด๋ด๋ data header์ ๋ถ์ด๊ฐ๋ ๊ฒ์ ๋งํจ
ACK information is included in the TCP header.
ACK๋ TCP header ์ ํฌํจ๋์ด ์๋ค.
๋ฐ์ดํฐ๋ ๋๋ถ๋ถ ์๋ฐฉํฅ์ผ๋ก ํ๋ฅธ๋ค.
A๊ฐ B์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๊ทธ ์๋ต์ผ๋ก B๊ฐ A์๊ฒ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
ACK๋ ์ด ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ header์ ์
ํ์ A์๊ฒ ๋ณด๋ด์ง๋ค.
์ด๋ฅผ Piggybacked ๋ผ๊ณ ํ๋ค.
ํ์ง๋ง B๊ฐ A์๊ฒ ๋ณด๋ผ ์๋ต (๋ฐ์ดํฐ)๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ACK ๋จ๋ ์ผ๋ก ๋ณด๋ด๊ธฐ๋ ํ๋ค.
์์ ๋งํ๋ฏ์ด ๋ฐ์ดํฐ๋ ์๋ฐฉํฅ ํต์ ์ด๋ค.
์ ๊ทธ๋ฆผ์ฒ๋ผ ํ ์ชฝ๋ง ์ ๋ณด๋ฅผ ์ฃผ๋๊ฒ์ด ์๋ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
A โ B
A๋ B์๊ฒ 42๋ฒ๋ถํฐ ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค. (seq=42)
์ด๋ header์ ACK์ ๋ณด๋ฅผ ๊ฐ์ด๋ณด๋ธ๋ค. โ Piggybacking
์๋ํ๋ฉด A๊ฐ B์๊ฒ 78๋ฒ๊น์ง์ ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์์์ ์๋ฆฌ๊ธฐ ์ํด A๋ B์๊ฒ ACK์ ๋ณด๋ธ๋ค. (79๋ฒ๋ถํฐ B๊ฐ A์๊ฒ ์ฃผ๋ฉด ๋ผ.)
B โ A
B๋ A๋ก๋ถํฐ 42๋ฒ๋ถํฐ ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค.
A๊ฐ ์์ฒญํ ๋ฐ์ดํฐ์ธ 79๋ฒ์ผ๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค๋ค. (seq=79)
์ด๋ฅผ ๋ณด๋ด๋ฉด์ A์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๊ธฐ์ B๋ A์๊ฒ ACK์ ๋ณด๋ด์ค์ผํ๋ค.
์์์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ 1byte๋ผ๊ณ ๋ช
์๋์ด์๊ธฐ ๋๋ฌธ์ ๋ค์์ A๊ฐ ๋ณด๋ผ ๋ฐ์ดํฐ๋ ACK=43์ด๋ค.
A โ B
A๋ B์๊ฒ 79๋ฒ์ผ๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค.
B๊ฐ ACK์ผ๋ก "42๋ฒ๊น์ง ๋ฐ์ดํฐ๋ ์ ๋ฐ์๊ณ 43๋ฒ์ ์ค" ๋ผ๊ณ ํ์ผ๋
A๋ 43๋ฒ์ผ๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค. (seq=43)
๋ณด๋ผ ๋, B์๊ฒ 79๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์์ผ๋ ๋ค์ ๋ฐ์ดํฐ์ธ (์์ ๋งํ๋ฏ์ด ๋ฐ์ดํฐ ํฌ๊ธฐ๋ 1byte๋ก ๋ช
์) 80๋ฒ์ ๋ฌ๋ผ๊ณ ํ๋ค. (ACK=80)
์ ๊ทธ๋ฆผ์ A๊ฐ 'HI!' ๋ผ๊ณ ๋ณด๋ด๋ฉด B๊ฐ ๋ค์ 'HI!'๋ผ๊ณ ๋ณด๋ด์ค๋ค. ( HI! = 3byte )
A โ B
A๋ B์๊ฒ 42๋ฒ๋ถํฐ (seq=42) ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ๋ค.
๋ํ A๋ B์๊ฒ 78๋ฒ๊น์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์๋ค๊ณ B์๊ฒ ์๋ ค์ค์ผํ๊ธฐ ๋๋ฌธ์ A๋ ACK๋ฅผ ๋ณด๋ธ๋ค.
์ฆ, A๋ B์๊ฒ ์ด๋ ๊ฒ ๋ณด๋ธ๋ค.
seq=42 (42๋ฒ ๋ถํฐ์ ๋ฐ์ดํฐ์ผ!),
ACK=79 (78๋ฒ๊น์ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์์ผ๋ 79๋ฒ๋ถํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค.)
B โ A
B๋ A์๊ฒ ์์ฒญ๋ฐ์ 79๋ฒ๋ถํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ฒ๋๋ค. (seq=79)
A์๊ฒ 42๋ฒ๋ถํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์๋ค๊ณ ACK๋ฅผ ๋ณด๋ด์ค์ผํ๋ค. (๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ 3byte๋ก ๋ช
์)
์ฆ, B๋ A์๊ฒ ์ด๋ ๊ฒ ๋ณด๋ธ๋ค.
seq=79 (๋๊ฐ ์์ฒญํ 79๋ฒ๋ถํฐ ๋ฐ์ดํฐ์ผ.)
ACK=45 (A๊ฐ 42๋ฒ๋ถํฐ ์์ํ๋ HI! ๋ผ๋ 3byte๋ฅผ ๋ณด๋๊ธฐ ๋๋ฌธ์ B๋ 42-44๋ฒ๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฐ์ดํฐ์ธ 45๋ฒ์ ์์ฒญํ๋ค.)
A โ B
A๋ B๊ฐ ์์ฒญํ๋ 45๋ฒ๋ถํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค์ผํ๋ค. (seq=45)
B์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์๋ค๊ณ ACK๋ฅผ ๋ณด๋ด์ค์ผํ๋ค.
์ฆ, A๋ B์๊ฒ ์ด๋ ๊ฒ ๋ณด๋ธ๋ค.
seq=45 (B๊ฐ ์์ฒญํ 45๋ฒ๋ถํฐ์ ๋ฐ์ดํฐ์ผ!)
ACK=82 (3byte์ธ HI!๋ฅผ 79๋ฒ๋ถํฐ ๋ฐ์์ผ๋ A๋ B์๊ฒ 79~81 ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ค์ ๋ฐ์ดํฐ์ธ 82๋ฒ์ ์์ฒญํ๋ค.)
Cumulative ACK
๋์ ACK
์์ ACK์ด ์ค๋ฅ๊ฐ ๋ฌ์ด๋ ๋ค์ ACK์ด ์ ๋์ฐฉํ๋ฉด sender๋ ์ค๋ฅ๋ ACK๋ ์ ๋์ฐฉํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ
ACK=30 ์ ๋ณด๋ด๋ ๋์ค์ ACK์ loss๊ฐ ๋ฌ๋ค. (sender๋ ACK loss์ธ์ง data loss์ธ์ง ๋ชจ๋ฅธ๋ค.)
ํ์ง๋ง ACK=40์ ์ ์์ ์ผ๋ก sender์๊ฒ ์ ๋ฌ์ด ๋์๋ค.
๐์ด๋ sender๋ ACK=30์ด ์ค์ง ์์๊ธฐ ๋๋ฌธ์ seq=30์ retransmit ํด์ค๊น?
์๋๋ค.
์๋ํ๋ฉด ACK=40์ด sender์๊ฒ ๋์ฐฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
ACK=40์ด๋ผ๋ ๋ป์ 39๋ฒ๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์์์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ ์ค๊ฐ์ ACK์ด loss๊ฐ ๋๋ ํ์ ACK์ด ์ ๋์ฐฉํ์ฌ retransmit์ ํ์ง ์๊ณ ์ ๋ฐ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ Cumulative ACK ์ด๋ผ๊ณ ํ๋ค.
๐๋ง์ฝ seq=20 ์ data loss๋ผ๋ฉด?
B๋ A์๊ฒ ACK=20์ ๋ณด๋ด์ 20๋ถํฐ ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ฐ์์ผํ๋ค.
Delayed ACK
์ฒ์ ACK์ ๋ณด๋ด์ง ์๊ณ ๊ธฐ๋ค๋ฆฌ๋ ACK์ด ์์ผ๋ฉด ๊ทธ ๋ ๋ฐ๋ก ๋ณด๋ธ๋ค.
TCP delays transmission of ACKs for up to 500ms
ACK์ cumulative ํ๊ธฐ ๋๋ฌธ์ ์ฒ์ ACK์ ๋ณด๋ด์ง ์๊ณ ๋๋ฒ์งธ ACK,
์ฆ ๊ธฐ๋ค๋ฆฌ๋ ACK(์ฒซ๋ฒ์งธ ACK์ ๋ณด๋ด์ง ์์๊ธฐ์ ์ฒซ๋ฒ์งธ ACK์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์์)์ด ์์ ์์ ๋ฐ๋ก ACK์ ๋ณด๋ด์ค๋ค.
์ฅ์
ํ์ง๋ง ์ด ๊ฒฝ์ฐ๋ ACK ๋จ๋
์ผ๋ก ๋ณด๋ผ๋์๋ง ํด๋น๋๋ค.
๋ง์ฝ receiver๊ฐ sender์๊ฒ ์์ฒญ์ ์๋ต์ผ๋ก ๋ณด๋ด์ค ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฐ๋ก ๋ฐ์ดํฐ์ header๋ก piggybacking ํด์ ๋ณด๋ด๋ฉด ๋๋ค.
์ฒ์ receiver ์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋ฉด 500MS ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ
sender์๊ฒ ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด piggybacking ํ๊ณ ,
๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ACK์ ํ ์ฐจ๋ก ์ฐ๋ค.
๊ทธ ๋ค๋ก sender๊ฐ ๋ณด๋ด๋ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ACK์ ๋ณด๋ด์ค๋ค.
sender์๊ฒ ๋ฐ์ดํฐ๊ฐ ์ค์ง ์์ผ๋ฉด(receiver๊ฐ 500MS ๋ฅผ ๊ธฐ๋ค๋ ธ๋๋ฐ๋ ์ค์ง ์์ผ๋ฉด) time out ์ด๋ค.
๐ Time out ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
sender๋ receiver์๊ฒ ACK์ ๋ฐ์ง ๋ชปํ๊ฒ์ด๋ฏ๋ก ACK์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ณด๋๋ segment๋ฅผ retransmit ํด์ค๋ค.
receiver ๋ time out์ด ๋๋ฉด ACK์ ๋ณด๋ด์ง ์๊ณ retransmit์ ๊ธฐ๋ค๋ฆฐ๋ค.