Application Layer๋ OS๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๊ณ์ธต์ด๋ค.
-> ๊ทธ ์๋น์ค๋ UDP or TCP์ด๋ฉฐ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
Transport Layer๋ OS์ ์กด์ฌํ๋ค.
APP๊ณ์ธต์์ ๋ง๋ค์ด์ง ๊ฒ์ ๋ฐ์ดํฐ์ ๋จ์๋ฅผ '๋ฉ์ธ์ง'๋ผ๊ณ ํ๋ค.
Transport Layer ์ ์ก๋จ์๋ segment์ด๋ฉฐ ๋ฉ์ธ์ง๋ segment์ด๋ฉฐ Data ์์ญ์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
Multiplexing : ์ฌ๋ฌ๊ณณ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ํต๋ก๋ก ๋ด๋ ค๋ณด๋ด๋ ๊ฒ
demultiplexing : ๋ฐ๋์ด๋ค. ์ฌ๊ธฐ์ port๋๋ฒ๋ฅผ ๋ณด๊ณ ์ฌ๋ ค๋ณด๋ด์ค๋ค.
Transport Layer์์ ์ด๋ฃจ์ด์ง๋ค.
-> Transport Layer๋ socket ์ธํฐํ์ด์ค๋ฅผ ์ง์ ๋ค๋ฃจ๋ ๊ณ์ธต์ด๊ธฐ ๋๋ฌธ์ด๋ค.
UDP/TCP ๋ชจ๋ ํค๋์ port๋๋ฒ๊ฐ ์กด์ฌํ๋ค.
-> Multiplexing/demultiplexing์ ํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ค ํ๋กํ ์ฝ์ด๋ ํค๋๋ฅผ ์ดํดํ๋ฉด ์ด๋ค ์ญํ ์ ํ๋์ง ์ ์ ์์ผ๋ฉฐ Header๋ฅผ ์ต์ํ์ผ๋ก ํ๋ ๊ฒ์ด ์ฐ๋ฆฌ์ ๋ชฉํ์ด๋ค.
-> header๋ ๊ฒฐ๊ตญ์ ์ค๋ฒํค๋์ด๊ธฐ ๋๋ฌธ์ด๋ค.
chectsum์ ํตํด ์ค๋ฅ๊ฐ ์๋ ๋ฐ์ดํฐ๋ ๋ฐ์ง ์๋๋ค.
๋ฐ๋ผ์, UDP๋ error Detection, Multiplexing/demultiplexing ๋๊ฐ์ง์ ์ญํ ์ ํ๋ค.
TCP๋ unreliable channel์์ ์ผ์ด๋๋ ์๋ฌ๋ ์ ์ค์ ๋ชจ๋ ํด๊ฒฐํ๊ณ receiver์ชฝ์์ ์์ ํ๊ฒ ๋ฐ์ ์ ์๋๋ก ํด์ค๋ค.
receiver ์ ์ฅ์์ ์ฌ์ ์ก์ ํ๋จํด์ฃผ๋ ํ๋๊ฐ sequence number์ด๋ค.
๋ฉ์ธ์ง์๋ฅผ ์ชผ๊ฐ์ segment์ ๋ฃ๊ฒ ๋๋๋ฐ ์ชผ๊ฐ์ง ๋ฉ์ธ์ง์ ๋งจ ์ฒ์ ๋ฐ์ดํธ์ซ์๊ฐ segment header sequence number๊ฐ ๋๋ค.
ACK #10 : ๋๋ 9๋ฒ๊น์ง ์ ๋ฐ์๋ค. 10๋ฒ์ ์ํด
timer๋ ์ ๋นํ๊ฒ ์ก๋๊ฒ ์ค์ํ๋ค.
-> ๋๋ฌด ์งง์ผ๋ฉด ACk๊ฐ ๋์์ค๊ธฐ ์ ์ ์ฌ์ ์กํ ์ ์๊ณ ๋๋ฌด ๊ธธ๋ฉด ์ ์ค์ ๋ํ ๋๋น๊ฐ ๋๋ฌด ๋๋ ค์ง๋ค.
-> ๋ฐ๋ผ์, segment์ RTT๊ฐ ์ผ๋ง๋ ๊ฑธ๋ ธ๋์ง๋ฅผ ์ฐธ๊ณ ํด์ timer๋ฅผ ์ก์ผ๋ฉด ์ข์ ๊ฒ์ด๋ค.
-> RTT๊ฐ ์ผ๋ง๋ ๊ฑธ๋ ธ๋์ง ์ธก์ ํ ๊ฒ์ 'SampleRTT'๋ผ๊ณ ํ๋ค.
๊ทธ๋ฌ๋ SampleRTT๋ ๋งค๋ฒ ๋ค๋ฅผ๊ฒ์ด๋ค.
-> queuing delay๋๋ฌธ์ด๋ค.
timer๋ sender buffer์ ๋งจ ์ฒ์์๋ง ๋ฌผ๋ ค์์ผ๋ฉฐ timer๊ฐ ์ข ๋ฃ๋๋ฉด SEND_BASE์ ๋ฌผ๋ ค์๋ segment๋ง ์ฌ์ ์กํ๋ค.
๋ง์ฝ ACK #50 ์ ๋ฐ์๋ค๋ฉด ๊ทธ ์ ์ ์๋ segment๋ค์ beffer์์ ์์ ๊ณ ACK #50์ ํด๋นํ๋ segment๋ก SEND_BASE์ timer๋ฅผ ์ฎ๊ธด๋ค.
timer๊ฐ ํฐ์ง๊ธฐ ์ ์ ๊ฐ์ ACK๋ฅผ 3๊ฐ ๋ฐ์ผ๋ฉด ์ฌ์ ์ก์ ํด์ค๋ค.(์ค๋ฆฌ์ง๋ ACK ์ ์ธ 3๊ฐ)
SendBuf๋ ์ฌ์ ์ก์ ์ํด ์กด์ฌํ๋ค.
RecvBuf๋ ๋ฐ์ Segment๋ฅผ ์์๋๋ก ์ฌ๋ ค์ฃผ๊ธฐ ์ํด ์กด์ฌํ๋ค.
๋จ์ recvBuf์ ์์ header์ receive window์ ์จ์ ๋ณด๋ด์ฃผ์.
-> ๋ณด๋ด๋ ์
์ฅ์์ ์ผ๋ง๋ ๋ณด๋ด์ผ ํ ์ง ์ ์ ์๋ค!
recvBuf๊ฐ ๊ฝ์ฐจ๊ฒ ๋๋ฉด sender๋ segment๋ฅผ ๋ณด๋ด์ง ์๊ฒ ๋๋ค.
-> ๊ทธ๋ฌ๋ recvBuf์ ๊ณต๊ฐ์ด ๋จ๊ฒ๋ผ๋ ๋ฐ๋ segment๊ฐ ์๊ธฐ ๋๋ฌธ์ recv์ ์ํ๋ฅผ sender์๊ฒ ์๋ฆด ๋ฐฉ๋ฒ์ด ์๋ค.
-> ๊ต์ฐฉ์ํ(Deadlock)์ด ๋ฐ ์ํ๊ฒ ๋๋ค.
-> sender๋ ์ผ์ ์๊ฐ๋ง๋ค segment(1byte)๋ฅผ ๋ณด๋ด์ ์๋๋ฐฉ์ recvBuf๋ฅผ ํ์ธํ์!
App Layer์์ ๋ด๋ ค๋ณด๋ธ ๋ฉ์ธ์ง๋ฅผ segment์ ๋ด๋ ์๋์ ๋ฐ๋ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
-> ๋ฐ์ดํฐ ์์ญ์ ์กฐ๊ธ ์ฑ์๋ณด๋ด๊ฒ ๋๋ฉด ์ค๋ฒํค๋๊ฐ ๋ง์ด ๋ฐ์ํ๊ฒ ๋๋ค.
-> ๊ทธ๋ฌ๋ MSS๋ฅผ ๊ฝ ์ฑ์ธ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ฉด ์๊ฐ๋ญ๋น๊ฐ ๋๋ค.
-> ์ ์ ํ ๋ณด๋ด๋ ํ์ด๋ฐ์ ์ด๋ป๊ฒ ๋ ์ง ๊ณ ๋ฏผํด์ผ ํ๋ค.
๋ค์ ์์์ ๋ฐ๋ผ ๋ณด๋ด์
1. 1 byte๋ผ๋ ์์ผ๋ฉด ๋ฌด์กฐ๊ฑด ๋ณด๋ธ๋ค.
2. MSS๊ฐ ๋ค ์ฑ์์ง๋ฉด ๋ฌด์กฐ๊ฑด ๋ณด๋ธ๋ค. or ACK๊ฐ ์ค๋ฉด ๋ช byte๊ฐ ์ฑ์์ก๋ ๋ณด๋ธ๋ค.
Recv์
์ฅ์์ buffer๊ฐ MSS๋ณด๋ค ์๋ค๋ฉด ACK๋ฅผ ๋ณด๋ผ ๋ buf์ ๋จ์ ๊ณต๊ฐ์ด 0์ด๋ผ๊ณ ํ์.
-> ๊ทธ๋์ผ sender์
์ฅ์์ ๋ณด๋ด์ง ์์ ๊ฒ์ด๋ค.
์๋๋ segment๋ฅผ ๋ฐ์ผ๋ฉด ๋ฐ๋ก๋ฐ๋ก ACK๋ฅผ ํด์ค์ผ ํ๋๋ฐ ํจ์จ์ฑ์ ์ํด ์ผ์ ์๊ฐ์ด ์ง๋ ํ ACK๋ฅผ ๋ณด๋ด์.
์ง๊ธ๊น์ง๋ Connection์ด ๋์ด์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด์ผ๊ธฐ ํ๋ค.
-> ์ง๊ธ๋ถํฐ๋ Connection์ ๋งบ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํด๋ณด์.
๋ง์ง๋ง์ ACKbit๋ฅผ ๋ณด๋์์๋ ๊ธฐ๋ค๋ฆฌ๋ ์ด์ ๋ Recv์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ค์ด ์ ์ค ๋์์ ์ ์๋ค.
-> ๋ฐ๋ผ์ ์ฌ์ ์ก์ ํด์ผ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ค๋ฆฐ๋ค.
window์ ํฌ๊ธฐ๋ recvBuf์ ํฌ๊ธฐ๋ network ์ํฉ์ ๋ฐ๋ผ ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋๋ฆด ์ ์๋ ํฌ๊ธฐ๊ณ ์ ํด์ง๋ค.
network์ํฉ์ ์ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ์์ธกํด์ผํ๋ค.
congestion์ด ๋ฐ์ํ๋ฉด ๊ฐ์ ๋ฉ์ธ์ง๋ฅผ ๋ ๋ณด๋ ๊ฒ์ด๋ฏ๋ก throughput์ด ๋จ์ด์ง๊ฒ ๋๋ค.
์
์คํธ๋ฆผ์์ ๋์จ ๋ฐ์ดํฐ๋ค์ด ์์์ ์๋ชจํ๊ณ ๋๋๋๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ค์ด ๋ญ๋น๋๋ ๊ฒ์ด๋ค.
-> ๋๋๋๋ฉด retransmit์ ํด์ผํ๊ณ retransmit์ ๋ณด๋ด์ผ ํ๋ ๋ฐ์ดํฐ์ ์์ ์ค์ด๊ฒ ๋๋ค.
ACK๊ฐ ๋์์ค๋ฉด ๋คํธ์ํฌ ์ํฉ์ด ๊ด์ฐฎ๋ค๋ ๊ฒ์ผ๋ก ์ธ์งํ๊ณ ์ ์ง์ ์ผ๋ก window์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ์.
๋ง์ฝ ACK๊ฐ ๋์์ค์ง ์์๋ค๋ฉด ๋คํธ์ํฌ ์ํฉ์ด ์ข์ง ์๋ค๊ณ ํ๋จํด์ window์ ํฌ๊ธฐ๋ฅผ ํ ์ค์ด์.
window์ ํฌ๊ธฐ๋ ๋คํธ์ํฌ์ flowcontrol์ ์ํด ๊ณ์ ๋ฐ๋๋ค.
ssthresh์ดํ์๋ window์ ํฌ๊ธฐ๋ฅผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐํ๋ค.
-> ๊ทธ์ ๊น์ง๋ ์ต์คํผ๋จ์
ํ๊ฒ ์ฆ๊ฐํ๋ค.
์ ์ค๋๋ค๊ณ ํ๋จ๋๋ ๊ทผ๊ฑฐ๋?
1. Fast retransmit -> ๋คํธ์ํฌ ์ํฉ ๋์์ง ์์
2. timeOut -> ๋คํธ์ํฌ ์ํฉ ์์ข์ (์์ ๋ชป๋ฐ์์ผ๋๊น)