TCP
TCP (Transmission Control Protocol)
ํจํท ์ ์ค ๋ฌธ์ ํด๊ฒฐ
์ ๋ขฐ์ฑ ๋ณด์ฅ
TCP ํค๋
IPํจํท์ ๋ฐ์ดํฐ ์์ญ์ ๋ด๊ณ , TCP ํค๋๋ฅผ ๋ถ์
ํฌํจ ๋ด์ฉ : ๋ฐ์ ์ง ์ฃผ์, ๋ชฉ์ ์ง ์ฃผ์, ์ํ์ค ๋ฒํธ, ์๋ ํฌ๊ธฐ, ํ๋๊ทธ
ํ๋๊ทธ (flag)
ACK(Acknowledgement) : ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌํ๋ค๋ ์๋ฏธ
SYN(Synchronize) : ๋๋ ์๋๋ฐฉ์๊ฒ ์ฐ๊ฒฐํด๋ ๋๋์ง ์ฐ๊ฒฐ ์์ฒญํ๋ ์๋ฏธ
FIN(Finish) : ํต์ ์ด ๋ง๋ฌด๋ฆฌ๋์ด ์ฐ๊ฒฐ์ ํด์ ๋ฅผ ์์ฒญํ๋ ํ๋๊ทธ
์ฐ๊ฒฐํ ํ๋กํ ์ฝ
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก ํต์ ํ ์ค๋น๊ฐ ๋๋์ง ํ์ธํจ
3๋ฐฉํฅ ํธ๋์
ฐ์ดํฌ(3-way handshake)
ํด๋ผ์ด์ธํธ๊ฐ SYN ํ๋๊ทธ๋ฅผ ์์์ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ํจ. ํด๋ผ์ด์ธํธ๋ SYN_SENT ์ํ๊ฐ ๋จ
์๋ฒ๋ ์ฐ๊ฒฐ์ ํ ์ ์์ผ๋ฉด ํด๋ผ์ด์ธํธ์๊ฒ ACK, SYN ํ๋๊ทธ๋ฅผ ์์์ ํจํท์ ๋ณด๋. ์๋ฒ๋ SYN_RECEIVED ์ํ๊ฐ ๋จ
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ๋ฐ์ ACK, SYNํ๋๊ทธ๊ฐ ์๋ ํจํท์ ํ์ธํ๋ฉด, ACK ํ๋๊ทธ๋ฅผ ์์ด ํจํท์ ๋ณด๋ด์ ์๋ตํจ. ํด๋ผ์ด์ธํธ๋ ESTABLISHED ์ํ๊ฐ ๋จ
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ACK์๋ต์ ๋ฐ์ผ๋ฉด ์๋ฒ๋ ESTABLISHED ์ํ๊ฐ ๋จ
4๋ฐฉํฅ ํธ๋์
ฐ์ดํฌ(4-way handshake)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒํํ FIN์ ๋ณด๋. ํด๋ผ์ด์ธํธ๋ FIN_WAIT ์ํ๊ฐ ๋จ
์๋ฒ๋ ACK๋ก ์๋ตํ๊ณ CLOSE_WAIT ํจ
์๋ฒ๋ ๋ฏธ์ฒ ๋ณด๋ด์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ง์ ๋ณด๋ (์ฌ์ ํ CLOSE_WAIT ์ํ)
์๋ฒ๋ FIN์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๊ณ , ํด๋ผ์ด์ธํธ์ ๋ง์ง๋ง ACK๋ฅผ ๊ธฐ๋ค๋ฆผ (LAST_ACK ์ํ๊ฐ ๋จ)
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ACKํ๋๊ทธ๊ฐ ๋ด๊ธด ํจํท์ ๋ณด๋ด ์ฐ๊ฒฐ์ ์ข ๋ฃํจ.
ํด๋ผ์ด์ธํธ๋ ๋ฏธ์ฒ ๋ฐ์ง ๋ชปํ ํจํท์ด ๋ค์ด์ค๋ ๋ฑ ํน์๋ชจ๋ฅผ ์ํฉ์ ๋๋นํด ์ ์ ๊ธฐ๋ค๋ฆผ (TIME_WAIT)
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ง์ง๋ง ACK๋ฅผ ๋ฐ์ผ๋ฉด CLOSE ์ํ๊ฐ ๋จ
์ผ์ ์๊ฐ ๊ธฐ๋ค๋ฆฐ ํด๋ผ์ด์ธํธ๋ CLOSE ์ํ๊ฐ ๋จ
ํ๋ฆ์ ์ด (flow control)
์๋ฏธ
์ ์ก์์ ์์ ์ ๊ฐ ๋ฐ์ดํฐ ์๋ ์ฐจ์ด ๋ฐ์๊ฐ๋ฅ
์ ์ก์๊ฐ ์์ ์๋ณด๋ค ๋น ๋ฅด๋ฉด ์์ค/์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ
๋ณด๋ด๋ ์ชฝ์ด ๋ฐ๋ ์ชฝ์ ์๋์ ๋ง์ถฐ์ ์ฃผ๋ ๊ฒ
๋ฐฉ์ 1 : ์ ์ง-๋๊ธฐ ๋ฐฉ์ (stop and wait)
๋งค ํจํท์ ๋ํด ์ ์กํ๊ณ ํ์ธ ์๋ต์ ๋ฐ์
์ ์ก์๋ ํ์ธ ์๋ต์ ๋ฐ์ ๋ค ๋ค์ ํจํท์ ์ ์กํจ. ์ผ์ ์๊ฐ ์๋ต์ด ์์ค๋ฉด ํด๋น ํจํท์ด ์ ์ค ๋๋ค๊ณ ํ๋จํ๊ณ ๋ค์ ๋ณด๋
์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ ค์ ์ ์์
๋ฐฉ์ 2 : ์ฌ๋ผ์ด๋ฉ ์๋ (sliding window)
์ ์ก์๋ ์์ ์๊ฐ ๋ฐ์ ์ ์๋ ๋งํผ์ ํฌ๊ธฐ๋งํผ ํ๋ฒ์ ์์๋๋ก ์ ์กํจ
๊ทธ ํฌ๊ธฐ๋ฅผ ์๋ ํฌ๊ธฐ(window size)๋ผ๊ณ ํ๋ฉฐ, 3-way ํธ๋์ ฐ์ดํฌ ๊ณผ์ ์์ ์ด ํฌ๊ธฐ๊ฐ ์ ํด์ง
์์ ์๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ACK ํจํท์ ๋ณด๋ด๋๋ฐ, ๋ง์ง๋ง์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ์ ๋ฒํธ๊ฐ ๋ช๋ฒ์ด์๋์ง ์ ๋ฌํจ
์ ์ก์๋ ์์ ์๊ฐ ๋ณด๋ด์จ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ ๋ฒํธ๋ฅผ ๋ณด๊ณ , ๊ทธ ๋ท ๋ถ๋ถ๋ถํฐ ๋ค์ ์ ๋ฌํจ
ํผ์ก ์ ์ด (congestion control)
์๋ฏธ
๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ผ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ์๋๊ฐ ๋ฌ๋ผ์ง
๋คํธ์ํฌ ์ํฉ์ ์๊ด์์ด ์ ์ก์์ ์์ ์๊ฐ ๋ฌดํฑ๋๊ณ ์ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ๋ค์ ๋ณด๋ด๋ฉด, ๋คํธ์ํฌ๊ฐ ๋ ํผ์กํด์ง๊ณ ๋ ๋๋ ค์ง๊ณ ๋ ์ ์ค๋จ
๋คํธ์ํฌ ๋ด ํจํท ์๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ๋ ํ์์ ํผ์ก์ด๋ผ๊ณ ํ๊ณ , ์ด๋ฅผ ์ ์ดํ๋ ๊ธฐ๋ฅ์ ํผ์ก ์ ์ด๋ผ๊ณ ํจ
์ ์ด ์๋ฆฌ
์ ์ก์์ ์์ ์๋ ์ฒ์๋ถํฐ ๋คํธ์ํฌ ์ํฉ์ ์ ์ ์์
์ผ๋จ ๋ฐ์ดํฐ๋ฅผ ์ฒ์ฒํ ๋ณด๋ด๊ณ , ์์ ์๊ฐ ์ ๋ฐ๋ ๊ฒ์ ํ์ธํ๋ฉด ์ ์ฐจ ๋ ๋นจ๋ฆฌ ๋ณด๋
๊ทธ๋ฌ๋ค๊ฐ ์์ ์๊ฐ ํ์ฐธ ์ ์ ์ ๋ฌํ ๋ฐ์ดํฐ๊ฐ์ง๋ง ๋ฐ์๋ค๊ณ ์๊ธฐํ๋ฉด, ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ค๋ ์ฌ์ค์ ์ธ์งํ๊ณ ์๋๋ฅผ ์ค์
๋ฐฉ์ 1 : ํฉ ์ฆ๊ฐ/๊ณฑ ๊ฐ์ (AIMD, Additive Increase/Multiplicative Decrease)
์ ์ก์๋ ์์ ์์๊ฒ ํจํท์ ํ๋์ฉ ๋ณด๋ธ ๋ค ์ ๋์ฐฉํ๋ค๋ ์๋ฐ์ ๋ฐ์ผ๋ฉด ์๋ ํฌ๊ธฐ๋ฅผ 1๊ฐ์ฉ ์ฆ๊ฐ์ํค๋ฉฐ ์ ์กํจ
1๊ฐ์ฉ ๋๋ ค๋ค๊ฐ๊ฐ ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ค๊ณ ํ๋จ๋๋ฉด ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์
๋คํธ์ํฌ๊ฐ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ผ๋ฉด ๋ค์ 1๊ฐ์ฉ ๋๋ ค๊ฐ๋ฉด์ ๋ณด๋
์ ์ก ์๋๊ฐ ์ฒ์ฒํ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ์ ์ก ์๋๋ฅผ ๋์ด๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์
๋ฐฉ์ 2 : ๋๋ฆฐ ์์ (slow start)
์๋ ํฌ๊ธฐ๋ฅผ 1๋ก ์์ํด์ 2๋ฐฐ์ฉ ์ฆ๊ฐ์ํด
๋คํธ์ํฌ๊ฐ ํผ์กํ๋ค๊ณ ํ๋จ๋๋ฉด ์๋ ํฌ๊ธฐ๋ฅผ 1๋ก ๊ธ๊ฒฉํ ์ค์
์๊ฐ์ด ์ง๋ ์๋ก ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์
ํค์๋
์ ๋ขฐ์ฑ
์ฐ๊ฒฐํ ํ๋กํ ์ฝ
ํค๋์ ํ๋๊ทธ
3๋ฐฉํฅ ํธ๋์ ฐ์ดํฌ
4๋ฐฉํฅ ํธ๋์ ฐ์ดํฌ
ํ๋ฆ์ ์ด (flow control)
์ ์ง-๋๊ธฐ ๋ฐฉ์ (stop and wait)
์ฌ๋ผ์ด๋ฉ ์๋(sliding window)
ํผ์ก ์ ์ด
UDP
์ ๋ขฐ์ฑ ๋ณด์ฅ ์ํด์ ๋น ๋ฆ
์ ์ก์์ ์์ ์ ์ฌ์ด์ ์ฐ๊ฒฐ์ ๋ณด์ฅํ์ง ์์
์ ์ก์๊ฐ ์์ ์์๊ฒ ์ผ๋ฐฉ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํจ
๋น์ฐ๊ฒฐํ : 3-way handshake ๊ฐ์ ์ฐ๊ฒฐ ํ์ธ ์ ์ฐจ ์์
ํจํท ์ฌ์ด์ ์์กด์ฑ ์์ : ํจํท ์์ ๋ณด์ฅ ์๋จ
TCP๋ณด๋ค ํค๋์ ์ ๋ณด๊ฐ ์ ์ด์ ์ฉ๋์ด ์์
ํผ์ก์ ์ด ๋ถ๊ฐ
๋ช๊ฐ ์ ์ค๋ผ๋ ์๊ด ์๋ ์๋น์ค์์ ์ฌ์ฉํจ
์) ์คํธ๋ฆฌ๋ฐ, ์จ๋ผ์ธ ๊ฒ์
Last updated