๋คํธ์ํฌ ๊ณ์ธต
OSI 7๊ณ์ธต
๋คํธ์ํฌ ํต์ ์ด ์ด๋ฃจ์ด์ง๋ ๊ณผ์ ์ 7๋จ๊ณ๋ก ๋๋ ๋คํธ์ํฌ ํ์ค ๋ชจ๋ธ
[7] ์์ฉ๊ณ์ธต: HTTP ๋ฑ์ ํ๋กํ ์ฝ์ ํ๋ก๊ทธ๋จ์ UI ํตํด ์ ๊ณต
[6] ํํ๊ณ์ธต: ๋ฐ์ดํฐ๋ฅผ ํ์คํ๋ ํ์์ผ๋ก ๋ณ๊ฒฝ
[5] ์ธ์
๊ณ์ธต: ์ธ์
์ ์ง ๋ฐ ํด์ ๋ฑ ํต์ ์ ์ด์ ๋๊ธฐํ ์งํ
[4] ์ ์ก๊ณ์ธต: TCP/UDP์ ๊ฐ์ ์ ์ก๋ฐฉ์๊ณผ ํฌํธ๋ฒํธ ๊ฒฐ์
[3] ๋คํธ์ํฌ ๊ณ์ธต: ์ต์ ๊ฒฝ๋ก ์ ํํ๋ ๋ผ์ฐํ
์ํ
[2] ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต: ๋ฐ์ดํฐ ํ๋ฆ ๊ด๋ฆฌ, ๋ฐ์ดํฐ์ ์ค๋ฅ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ ์ํ
[1] ๋ฌผ๋ฆฌ๊ณ์ธต : ๋ฐ์ดํฐ๋ฅผ ๋นํธ ๋จ์์ 0๊ณผ 1๋ก ๋ณํ ํ ์ ์ก/์ ๊ธฐ ์ ํธ๋ฅผ ๋ฐ์ดํฐ๋ก ๋ณต์
๊ฐ ๊ณ์ธต์ ๋
๋ฆฝ์ ์ผ๋ก ๋์
- ๋ฐ์ดํฐ ์บก์ํ: ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ ๋ ๊ฐ ๊ณ์ธต์์ ํ์ ์ ๋ณด ์ถ๊ฐํด ๋ฐ์ดํฐ ๊ฐ๊ณต โ ํค๋์ ํธ๋ ์ผ๋ฌ ๋ถ์ โ ์์ ๋ถ์ ๊ฐ์ ๊ณ์ธต์์ ๋ฐ์ดํฐ ํธํ์ฑ ๋์ด๊ธฐ ์ํจ
- ๋ฐ์ดํฐ ์ญ์บก์ํ: ๋ฐ์ ๋ฐ์ดํฐ์์ ํค๋์ ํธ๋ ์ผ๋ฌ ๋ถ์ํด ์ ๊ฑฐ
TCP/IP 4๊ณ์ธต
TCP/IP: ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๋คํธ์ํฌ ํ๋กํ ์ฝ
- TCP: ๋ฐ์ดํฐ๋ฅผ ๋๋ ๋จ์์ธ ํจํท์ ์ ๋ฌ ์ฌ๋ถ์ ์ ์ก ์์ ๋ณด์ฅํ๋ ํต์ ๋ฐฉ์
- IP: ํจํท์ ๋น ๋ฅด๊ฒ ๋ณด๋ด๊ธฐ ์ํ ํต์ ๋ฐฉ์
TCP/IP 4๊ณ์ธต: OSI 7๊ณ์ธต์ ๋จ์ํ ํ ๊ฒ
[4] ์์ฉ ๊ณ์ธต: ์ฌ์ฉ์์ ์ํํธ์จ์ด ์ฐ๊ฒฐ, HTTP/HTTPS/DNS
[3] ์ ์ก ๊ณ์ธต: ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ ๋ณด์ฅ, ํฌํธ๋ฒํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๋ฌ, TCP/UDP, ์ ์ก ๊ณ์ธต์ ๋ฐ์ดํฐ ๋จ์๋ ์ธ๊ทธ๋จผํธ
[2] ์ธํฐ๋ท ๊ณ์ธต: ๋ฐ์ดํฐ๋ฅผ ์ต์ข
๋ชฉ์ ์ง๊น์ง ๋๋ฌํ ์ ์๊ฒ ํจ, IP๋ ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ํจํท ์ ๋ฌ์ ๋ด๋นํ๋ฉฐ ๋ผ์ฐํ
๊ณผ ์ฃผ์ ์ง์ ๊ธฐ๋ฅ์ ์ํ
[1] ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ณ์ธต: ๋ฐ์ดํฐ๋ฅผ ์ ๊ธฐ ์ ํธ๋ก ๋ณํํ๊ณ MAC ์ฃผ์๋ฅผ ์ฌ์ฉํด ๊ธฐ๊ธฐ์ ๋ฐ์ดํฐ ์ ๋ฌ
TCP์ UDP
TCP
- ์ก์ ๋ถ์ ์์ ๋ถ์ ์ฐ๊ฒฐ์ ํ์ธํ๋ ์ฐ๊ฒฐํ ์๋น์ค
- ๊ฐ์ ํ์ ๋ฐฉ์
- ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ , ํจํท์ ์ ์กํ ๊ฒฝ๋ก์ธ ๊ฐ์ ํ์ ์ ์ค์ ํด ๋ชจ๋ ํจํท์ ๊ฐ์ ๊ฒฝ๋ก๋ก ์ ์ก
- ํจํท์ ์ ์ก ์์ ๋ณด์ฅ
- ํจํท์ ์์ ์ฌ๋ถ ํ์ธ
- ๋ฐ์ดํฐ ์์ค ์์ ๋ณด์ฅ โ ์ ๋ขฐ์ฑ ๋์
- ๋ฐ์ดํฐ์ ์ก์์ ์๋ ๋๋ฆผ
- ์ก์ ๋ถ์ ์์ ๋ถ์ 1:1 ํต์
TCP ํธ๋์
ฐ์ดํน
์ฐ๊ฒฐํ ์๋น์ค ์ง์์ ์ํด ์ก์ ๋ถ์ ์์ ๋ถ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ณผ์
์ฐ๊ฒฐ์ ์์ํ ๋๋ 3-way ํธ๋์
ฐ์ดํน, ์ฐ๊ฒฐ์ ์ข
๋ฃํ ๋๋ 4-way ํธ๋์
ฐ์ดํน ์ํ
์ด ๊ณผ์ ์์ ์ฐ๊ฒฐ ์ ์ด ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํด ํ๋๊ทธ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์
- SYN(synchronization): ์ฐ๊ฒฐ ์์ฑ ์ ์ฌ์ฉ
- FIN(finish): ์ฐ๊ฒฐ ๋์ ๋ ์ฌ์ฉ
- ACK(acknowledgement): ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด ์์ ์๊ฐ ๋ฐ์์์ ์๋ ค์ค ๋ ์ฌ์ฉ
- RST(reset): ์ฐ๊ฒฐ ์ฌ์ค์ ์ ์ฌ์ฉ
- PSH(push): ๋น ๋ฅธ ์๋ต์ด ํ์ํ ๋ฐ์ดํฐ ์ฆ์ ์ ์ก ์ ์ฌ์ฉ
- URG(urgent): ๋ค๋ฅธ ๋ฐ์ดํฐ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ ์ ์ก ์ ์ฌ์ฉ
3-way ํธ๋์
ฐ์ดํน
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ , ์ก์ ์์ ์์ ์์ ์ธ์
์ ์๋ฆฝํ๋ ๊ณผ์
- ์ก์ ๋ถ โ SYN(N) โ> ์์ ๋ถ
- ์ก์ ๋ถ๋ ์๋ต์ด ์ค๊ธฐ ์ ๊น์ง SYN_SENT ์ํ
- ์ก์ ๋ถ <โ ACK(N+1) + SYN(M) โ ์์ ๋ถ
- ์์ ๋ถ๋ SYN_RECEIVED ์ํ
- ์ก์ ๋ถ๊ฐ ACK+SYN ๋ฉ์ธ์ง ๋ฐ์ผ๋ฉด ESTABLISHED ์ํ ๋จ
- ์ก์ ๋ถ โ ACK(M+1) โ> ์์ ๋ถ
- ์์ ๋ถ๋ ๋ฉ์ธ์ง ๋ฐ๊ณ ESTABLISHED ์ํ ๋จ
4-way ํธ๋์
ฐ์ดํน
TDP ์ฐ๊ฒฐ ํด์ ํ๊ธฐ ์ํ ๊ณผ์
- ์ก์ ๋ถ โ FIN โ> ์์ ๋ถ
- ์ก์ ๋ถ๋ FIN_WAIT1 ์ํ
- ์ก์ ๋ถ <โ ACK โ ์์ ๋ถ
- ์์ ๋ถ๋ CLOSE_WAIT ์ํ + ์ฐ๊ฒฐ ์ข
๋ฃ ์ํ ์์
์์
- ์ก์ ๋ถ๋ ๋ฉ์ธ์ง ๋ฐ๊ณ FIN_WAIT2 ์ํ
- ์ก์ ๋ถ <โ FIN โ ์์ ๋ถ
- ์์ ๋ถ๋ LAST_ACK ์ํ
- ์ก์ ๋ถ โ ACK โ> ์์ ๋ถ
- ์ก์ ๋ถ๋ TIME_WAIT ์ํ โ ์ผ์ ์๊ฐ ์ง๋๋ฉด CLOSED ์ํ ๋จ
- FIN ๋ฉ์ธ์ง ์ ์ ๋ณด๋ธ ํจํท์ด FIN ๋ฉ์ธ์ง ๋ณด๋ค ์ง์ฐ๋์ด ๋ฐ์ํ๋ ํจํท ์ ์ค ๋๋น
- ์์ ๋ถ์ ACK ๋ฉ์ธ์ง ์ ๋ฌ๋์ง ์์ ์ฐ๊ฒฐ ํด์ ์ด๋ค์ง์ง ์๋ ๊ฒฝ์ฐ ๋๋น
- ์์ ๋ถ๋ ๋ฉ์ธ์ง ๋ฐ๊ณ CLOSED ์ํ
TCP Keep Alive
์ธ์
์ด ์ฐ๊ฒฐ๋๋ฉด ์ด๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ผ์ ์๊ฐ ๊ฒฝ๊ณผ ํ TCP Keep Alive ํจํท ๋์ ธ ์ ์ง ์ํ ํ์ธ
์ฐ๊ฒฐ ์ ์ง ์ํ๋ ์ชฝ์์ ๋ณด๋ / ์๋ต์ ๋ฐ์ผ๋ฉด ์๊ฐ ์ฒ์๋ถํฐ ๋ค์ ์ธก์ , ์๋ต ๋ฐ์ง ๋ชปํ๋ฉด ์ฐ๊ฒฐ ์ข
๋ฃ
โ ๋์ผํ ์ก์ ๋ถ๋ก๋ถํฐ ์ฌ์์ฒญ ์ค๋ ๊ฒฝ์ฐ ๋ถํ์ํ 3-way ํธ๋์
ฐ์ดํน ์ค์
โ FIN๋ฉ์ธ์ง ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ๋ถํ์ํ ์ฐ๊ฒฐ(์ข๋น์ปค๋ฅ์
) ๋ฐฉ์ง
TCP ์ ์ด ๋ฐฉ๋ฒ
ํ๋ฆ์ ์ด
๋ฐ์ดํฐ ์ก์ ๋ถ์ ์์ ๋ถ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ์ฐจ์ด ๋๋ฌธ์ ์๊ธฐ๋ ๋ฐ์ดํฐ ์์ค ๋ฐฉ์ง
- ์ ์ง-๋๊ธฐ(stop-wait)
- ๋ฐ์ดํฐ ๋ณด๋ธ ํ ACK ๋ฉ์ธ์ง ๋ฐ์ ๋๊น์ง ๋ค์ ๋ฐ์ดํฐ ๋ณด๋ด์ง ์๊ณ ๊ธฐ๋ค๋ฆผ
- ์ผ์ ์๊ฐ ๋์ ACK ๋ฉ์ธ์ง ๋ฐ์ง ๋ชปํ๋ฉด ํจํท ์ฌ์ ์ก
- ์๊ฐ ๋ฉด์์ ๋นํจ์จ์
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(sliding window)
- ์์ ๋ถ์์ ์ค์ ํ ์๋์ฐ ํฌ๊ธฐ๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ๋ณด๋ผ ์ ์๊ฒ ํด ๋ฐ์ดํฐ ํ๋ฆ ๋์ ์ ์ด
- ์๋์ฐ ํฌ๊ธฐ: ์๋ต ๋ฐ์ง ์๊ณ ๋ณด๋ผ ์ ์๋ ๋ฐ์ดํฐ์ ์ต๋ ๊ฐ์, 3-way ํธ๋์
ฐ์ดํน ๊ณผ์ ์์ ์ ํด์ง
- ์๋์ฐ ํฌ๊ธฐ N์ผ๋, n๋ฒ๋ถํฐ n+N-1๋ฒ ๋ฐ์ดํฐ๊น์ง ์ก์ ํ ์ํ์์ n๋ฒ ๋ฐ์ดํฐ์ ๋ํด ACK ๋ฉ์ธ์ง ๋ฐ์ผ๋ฉด n+N๋ฒ ๋ฐ์ดํฐ ๋ณด๋ผ์ ์์
ํผ์ก์ ์ด
์ก์ ๋ถ์ ๋ฐ์ดํฐ ์ ๋ฌ ์๋์ ๋คํธ์ํฌ ์๋ ์ฐจ์ด๋ก ๋ฐ์ดํฐ ์์ค ๋ฐ์ ๋ฐฉ์ง
ํผ์ก์ ๋คํธ์ํฌ์ ํจํท ์๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ๋ ์ฆ์์ ์๋ฏธํ๋ฉฐ, TCP๋ ํผ์ก ์๋์ฐ ํฌ๊ธฐ ์กฐ์ ํด ํผ์ก์ ๋์
- AIMD(Additive Increase Multiplicative Decrease)
- ๋ฐ์ดํฐ ์ ๋ฌ ์ ํฉ ์ฆ๊ฐ ๋ฐฉ์์ผ๋ก ํผ์ก ์๋์ฐ ํฌ๊ธฐ ๋ํด๊ฐ๋ฉฐ ํค์(์ ํ ์ฆ๊ฐ)
- ๋ฐ์ดํฐ ์์ค ๋ฐ์ ์ ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ฅผ ๊ณฑ ๊ฐ์ ๋ฐฉ์์ ์ ์ฉํด ๋ฐฐ์ ๋จ์๋ก ์ค์(์ง์ ๊ฐ์)
- ๋ฐ์ดํฐ ์ ์ค ๋ฐ์ํ๋ฉด ์ฆ๊ฐํญ ๋๋น ๊ฐ์ํญ์ด ํฌ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ๋๊ฒ ์ฌ์ฉํ๊ธฐ๊น์ง ์๊ฐ์ด ์ค๋๊ฑธ๋ฆผ
- ๋๋ฆฐ ์์(slow start)
- ์๋์ฐ ํฌ๊ธฐ๊ฐ 1์ธ ์ํ์์ ์์ํด ACK ์์ ํ ๋๋ง๋ค ์๋์ฐ ํฌ๊ธฐ ์ง์ ํจ์ ํํ๋ก ์ฆ๊ฐ
- ํผ์ก ๋ฐ์ ์ ์๋์ฐ ํฌ๊ธฐ 1๋ก ์ค์
- ํผ์ก ํํผ(congestion avoidance)
- ์๋์ฐ ํฌ๊ธฐ์ ๋ํ ์๊ณ์ ์ ํ๋ ๋ฐฉ์
- ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ง์ ํจ์ ํํ๋ก ์ฆ๊ฐ ์ํค๋ค๊ฐ, ์๋์ฐ ํฌ๊ธฐ๊ฐ ์๊ณ์ ์ ๋๋ฌํ๋ฉด ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ํจ
- ACK ๋ฉ์ธ์ง ๋ฐ์ง ๋ชปํด ํ์์์ ๋ฐ์ํ๋ฉด ์๋์ฐ ํฌ๊ธฐ์ ์ ๋ฐ์ ์๊ณ์ ์ผ๋ก ์ค์ , ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ณ๊ฒฝ
- ๋น ๋ฅธ ํ๋ณต(fast recovery)
- ํผ์ก ๋ฐ์ ์ ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ธ ํ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๋ฐฉ์
- ํผ์ก์ด ์ฒ์ ๋ฐ์ํ๋ฉด AIMD ๋ฐฉ์์ผ๋ก ๋์
- ๋น ๋ฅธ ์ฌ์ ์ก(fast retransmit)
- Duplicate ACK๊ฐ 3๋ฒ ๋ฐ์ํ๋ฉด ํด๋น ์์ ์ ์๋์ฐ ํฌ๊ธฐ๋ฅผ 1/2๋ก ์ค์
- Duplicate ACK: ํจํท์ด ์์๋๋ก ๋์ฐฉํ์ง ์์ ๋ฐ์์ผ ํ ์ฐจ๋ก์ ํจํท์ ACK ๋ฉ์ธ์ง์ ํจ๊ป ์์ฒญ, 3๋ฒ ๋ฐ์ ์ ํผ์ก์ด ๋ฐ์ํ๋ค๊ณ ํ๋จ
TCP ํผ์ก ์ ์ด ์ ์ฑ
- TCP Tahoe(ํํธ)
- ๋๋ฆฐ ์์ ์ฌ์ฉํด ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ง์์ ์ผ๋ก ํค์, ์๊ณ์ ๋์ด๊ฐ๋ฉด AIMD ๋ฐฉ์์ผ๋ก ์ ํ(์ ํ ์ฆ๊ฐ)
- ํผ์ก ๋ฐ์ ์ ํผ์ก์ด ๋ฐ์ํ ์๋์ฐ ํฌ๊ธฐ์ ์ ๋ฐ์ ์๊ณ์ (ssthresh)์ผ๋ก ์ค์ , ํผ์ก ์๋์ฐ ํฌ๊ธฐ 1๋ก ์ด๊ธฐํ
- TCP Reno(๋ ๋
ธ)
- ์ด๋ฐ์๋ ๋๋ฆฐ ์์ ์ฌ์ฉ, ์๊ณ์ ๋์ด๊ฐ๋ฉด AIMD ๋ฐฉ์์ผ๋ก ์ ํ(์ ํ ์ฆ๊ฐ)
- 3 Duplicate ACK ๋ฐ์ ์: ํผ์ก ์๋์ฐ ํฌ๊ธฐ ์ ๋ฐ์ผ๋ก ์ค์ด๊ณ , ์ค์ธ ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์๊ณ์ (ssthresh)์ผ๋ก ์ค์
- ํ์์์ ๋ฐ์ ์: ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ฅผ 1๋ก ์ด๊ธฐํ, ์๊ณ์ (ssthresh) ๊ฐ ๋ณ๊ฒฝ X
์ค๋ฅ ์ ์ด
๋ฐ์ดํฐ์ ์ค๋ฅ ๋๋ ์ ์ค์ด ๋ฐ์ํ ๋ ๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ค๋ฅ๋ฅผ ์ ์ดํ๋ ๋ฐฉ์
- ๋ฐ์ดํฐ์ ์ค๋ฅ ๋๋ ์ ์ค์ด ๋ฐ์ํจ์ ์ธ์งํ๋ ๊ฒฝ์ฐ
- ์์ ๋ถ์์ ์๋ชป๋ ๋ฐ์ดํฐ ๋ฐ์๋ค๋ NAK ๋ฉ์ธ์ง ๋ณด๋ธ ๊ฒฝ์ฐ
- 3 Duplicate ACK
- ์์ ๋ถ๋ก๋ถํฐ ACK ๋ฉ์ธ์ง ๋ฐ์ง ๋ชปํด ํ์์์ ๋ฐ์
- ์ ์ง-๋๊ธฐ
- ํ์์์ ๋ฐ์ ์ ํด๋น ํจํท ๋ค์ ๋ณด๋ด๋ ๋ฐฉ์
- Go-Back-N ARQ
- ๋๋ฝ ๋ฐ์ดํฐ ์์ผ๋ฉด ์ก์ ๋ถ์์ ํด๋น ๋ฐ์ดํฐ ์ดํ ๋ชจ๋ ํจํท ์ฌ์ ์ก
- 0~2 ํจํท์ ๋ณด๋ด๊ณ ACK 3 ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ผ๋ฉด ํจํท 3๋ถํฐ ๋ค์ ๋ณด๋ / 3~5 ํจํท ๋ณด๋ด๊ณ ACK 4 ๋ฉ์ธ์ง ๋ฐ์ผ๋ฉด ํจํท4, 5 ์ฌ์ ์ก
- Selective-Repeat ARQ
- ๋๋ฝ ๋ฐ์ดํฐ ์์ผ๋ฉด ์์ ๋ถ์์ ํด๋น ๋ฐ์ดํฐ๋ง ์ฌ์ ์ก ์์ฒญ
- 0~2 ํจํท ์ ์์ ํ๋ฉด ACK 3 ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ / 3~5 ํจํท ๋ณด๋์๋ ํจํท 4 ๋ฐ์ง ๋ชปํ๋ค๋ฉด ํจํท 4 ๋ณด๋ด๋ผ๋ ์๋ฏธ๋ก ACK 4 ๋ฉ์ธ์ง ๋ณด๋ / ํจํท 4 ๋ฐ์ผ๋ฉด, ํจํท 6 ์์ฒญ
- ํน์ ํจํท๋ง์ ์ ์กํ๋ค๋ ํจ์จ์ฑ์ด ์์ง๋ง, ๋ฐ์ ํจํท์ ์ฌ์ ๋ ฌํ๋ ๋ก์ง์ด ์ถ๊ฐ์ ์ผ๋ก ํ์
UDP
- ์ก์ ๋ถ์ ์์ ๋ถ์ ์ฐ๊ฒฐ ๋ณด์ฅ๋์ง ์๋ ๋น์ฐ๊ฒฐํ ์๋น์ค
- ๋ฐ์ดํฐ๊ทธ๋จ ํจํท ๊ตํ ๋ฐฉ์
- ํจํท๋ง๋ค ์ต์ ์ ๊ฒฝ๋ก๋ก ์ ์ก๋๋ ๋ฐฉ์
- ๋ณด๋ธ ํจํท์ ์์์ ๋์ฐฉํ๋ ํจํท์ ์์๊ฐ ๋ค๋ฅผ ์ ์์
- ํจํท์ ์์ ์ฌ๋ถ ํ์ธํ์ง ์์
- 1:1, 1:N, N:N ํต์
- ๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ ๋ฎ์
- ๋ฐ์ดํฐ์ ์ ์ก ์๋ ๋น ๋ฆ
UDP ์ค๋ฅ ๊ฒ์ถ
- ์ต์ํ์ ์ ๋ขฐ์ฑ ๋ณด์ฅ์ ์ํด ์ฒดํฌ์ฌ(checksum) ๋ฐฉ์์ผ๋ก ์ค๋ฅ ๊ฒ์ถ
- ์ฒดํฌ์ฌ์ ๋ง๋ค๊ธฐ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ํ๊ณ , ์ค๋ฒํ๋ก๋๋ ์บ๋ฆฌ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์บ๋ฆฌ๋ฅผ ๋ผ์ ๋ฐ์ดํฐ์ ๋ค์ ๋ํ ํ 1์ ๋ณด์ ์ทจํด ์ฒดํฌ์ฌ ๋ง๋ฆ
- ์ฒดํฌ์ฌ์ ์ด์ฉํด๋ ์ค๋ฅ 100% ๊ฒ์ถํ ์ ์๋ ๊ฒ ์๋
- ์ ํ ์ฌํญ์ผ๋ก, ์ก์ ๋ถ์์ ์ฒดํฌ์ฌ ๊ฐ์ 0์ผ๋ก ๋ณด๋ด๋ฉด ์์ ๋ถ๋ ์ฒดํฌ์ฌ ๊ณ์ฐํ์ง ์์
HTTP
HTTP
์ธํฐ๋ท์์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ
๋น์ฐ๊ฒฐ์ฑ
ํด๋ผ์ด์ธํธ์์ ์์ฒญ ๋ณด๋ธ ํ ์๋ฒ๋ก๋ถํฐ ์๋ต ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ ๋์
์ฐ๊ฒฐ ์ ์งํ์ง ์์์ผ๋ก์จ ์์ ์๋
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ ์ ์์ด ๋์ผ ํด๋ผ์ด์ธํธ์ ์ฐ์์ ์ธ ์์ฒญ์ ๋ํด ์ฐ๊ฒฐ, ์ฐ๊ฒฐ ํด์ ๋ฐ๋ณต โ ์์ ๋ญ๋น
โ ์ผ์ ์๊ฐ ๋์ ์ฐ๊ฒฐ ์ ์งํ ์ ์๋๋ก HTTP Keep Alive ์ฌ์ฉ
โ ๋ง์ง๋ง ์๋ต ์ดํ ์ผ์ ์๊ฐ๋์ ์ฐ๊ฒฐ ์ ์งํด ๋์ผ ํด๋ผ์ด์ธํธ์ ์ฌ์์ฒญ์ ๋ํด ์ฐ๊ฒฐ ๊ณผ์ ์๋ต
๋ฌด์ํ
์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ์ํ ์ ์ฅํ์ง ์์
ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ณ ์๊ฑฐ๋, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ์์ฒญ ์ฌํญ ๋ชจ๋ ์ ์ฅํด์ผํจ
- ์ฟ ํค: ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์ ์ฅ๋๋ ํค์ ๊ฐ์ด ๋ค์ด ์๋ ์์ ๋ฐ์ดํฐ ํ์ผ
- ์ธ์
: ์๋ฒ์ ์ ์ฅ๋๋ ์ฐ๊ฒฐ ๊ด๋ จ ์ ๋ณด
์๋ฒ ํ์ฅ์ฑ์ด ๋์, ์์ฒญ์ ์๋ตํ๋ ์๋ฒ๊ฐ ๋ฐ๋์ด๋ ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฅผ ๊ณ์ ํ์ฅํด๋ ๋จ
HTTP ๋ฉ์ธ์ง
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ํ๊ธฐ ์ํด ์ฃผ๊ณ ๋ฐ๋ ์ ํํ๋ ๋ฐ์ดํฐ
- request line: ์์ฒญ URI, ์์ฒญ ๋ฐฉ๋ฒ, HTTP ๋ฒ์ ๋ฑ ํฌํจ
- status line: ์์ฒญ์ ๋ํ HTTP ์ํ ์ฝ๋, HTTP ๋ฒ์ ํฌํจ
- header: ํค-๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ํค๋ ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ
- blank: ํค๋์ ๋์ ๋ํ๋ด๋ ๋น ์ค, ํค๋์ ๋ฐ๋ ๊ตฌ๋ถ
- body: POST์ธ ๊ฒฝ์ฐ์๋ง ๋ฐ๋๊ฐ ์๊ณ , ๊ทธ ์ธ๋ ๋น์ด ์๋ ์ํ๋ก ์ ๋ฌ
HTTP ์ํ์ฝ๋
- 1xx: ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ ๋ฐ์ ์ฒ๋ฆฌ ์ค
- 2xx: ์์ฒญ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ
- 200: ์์ฒญ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํจ
- 3xx: ์์ฒญ ์ฒ๋ฆฌ ์ํด ์ถ๊ธฐ ์ฒ๋ฆฌ ํ์
- 4xx: ํด๋ผ์ด์ธํธ ์ค๋ฅ
- 401: ์ธ์ฆ๋์ง ์์
- 403: ์ ๊ทผ ์คํจ
- 404: ํด๋ผ์ด์ธํธ์์ ์์ฒญํ ์์ ์ฐพ์ง ๋ชปํจ
- 5xx: ์๋ฒ ์ค๋ฅ
- 500: ์๋ฒ ๋ด๋ถ ์ค๋ฅ ๋ฐ์
HTTPS
๋ณด์ ๊ณ์ธต์ธ SSL/TLS ์ด์ฉํด HTTP์ ๋ณด์ ๊ฐํํ ์น ํต์ ํ๋กํ ์ฝ
๋ฐ์ดํฐ๋ฅผ ์ก์ ํ ๋ ๋ณด์ ๊ณ์ธต์์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด ์ ์ก ๊ณ์ธต์ผ๋ก ์ ๋ฌ, ์์ ํ ๋ ๋ณด์๊ณ์ธต์์ ๋ฐ์ดํฐ ๋ฐ์ ๋ณตํธํ ํ ์์ฉ ๊ณ์ธต์ผ๋ก ์ ๋ฌ
์ํธํ ๋ฐฉ์
- ๋์นญ ํค ์ํธํ ๋ฐฉ์
- ๋ฐ์ดํฐ์ ์ํธํ์ ๋ณตํธํ์ ๊ฐ์ ํค์ธ ๋์นญ ํค ์ฌ์ฉ
- ์์ ์๊ฐ ๊ฐ์ง ํค๋ฅผ ์ก์ ์์๊ฒ ์ ๋ฌ, ์์ ์๊ฐ ๊ฐ๋๋ผ๋ ์ก์ ์๊ฐ ๋ค๋ฅด๋ฉด ํค ๋ค๋ฆ
- ์ก์ ์๋ ๋ฐ์ ํค๋ก ๋ฐ์ดํฐ ์ํธํ ํ ๋ณด๋, ์์ ์๋ ๋์ผ ํค๋ก ๋ฐ์ดํฐ ๋ณตํธํ
- ๋์นญ ํค ์ ์ถ์ ์ฃผ์ํด์ผ ํจ
- ๊ณต๊ฐ ํค ์ํธํ ๋ฐฉ์
- ์ํธํ์ ๋ณตํธํ๋ฅผ ๋ค๋ฅธ ํค๋ก ํ๋ ๋ฐฉ์
- ์ํธํํ ๋๋ ๊ณต๊ฐ ํค, ๋ณตํธํํ ๋๋ ๋น๋ฐ ํค ์ฌ์ฉ
- ์์ ์๋ ๊ณต๊ฐ ํค ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณต, ํด๋ผ์ด์ธํธ ๋ฌ๋ผ๋ ๊ณต๊ฐ ํค ๊ฐ์
- ์ก์ ์๋ ๋ฐ์ ํค๋ก ๋ฐ์ดํฐ ์ํธํ, ์์ ์๋ ๋น๋ฐ ํค๋ก ๋ฐ์ดํฐ ๋ณตํธํ
- ๋น๋ฐ ํค๊ฐ ์์ด์ผ๋ง ๋ณตํธํ ๊ฐ๋ฅํด ๊ณต๊ฐ ํค ์ ์ถ ์ผ๋ คํ์ง ์์๋ ๋จ
์นํ์ด์ง ์ ์ ๊ณผ์
- ์ฌ์ฉ์๊ฐ URL์ ์น ๋ธ๋ผ์ฐ์ ์ ์
๋ ฅํ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ ์
๋ ฅํ URL์ ๋ฐํ์ผ๋ก DNS ์๋ฒ์ ์ฐ๊ฒฐํ IP๋ฅผ ์์ฒญํ๋ค.
- DNS ์๋ฒ๋ IP ์ฃผ์๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์ ์๋ต์ผ๋ก ์ ๊ณตํ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ DNS ์๋ฒ์์ ๋ฐ์ IP๋ฅผ ํตํด ์น ์๋ฒ์ TCP/IP ์ฐ๊ฒฐ์ ํ๊ณ HTTP ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์น ์๋ฒ๋ ๋ฐ์ HTTP ์์ฒญ์ ์๋ตํ๋ค. ์๋ต์ ์น ํ์ด์ง์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ํฌํจํ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ ์๋ต์ ๋ฐํ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์น ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋ค.
REST
HTTP ํต์ ํ์ฉ์ ์ํด ๊ณ ์๋ ์ํคํ
์ฒ
URI๋ก ์์์ ๋ช
์ํ๊ณ HTTP ๋ฉ์๋๋ก CRUD ์ฐ์ฐ์ ํ๋ ์ํํธ์จ์ด ์ํคํ
์ฒ
HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ฏ๋ก ๋ณ๋ ์ธํ๋ผ ๊ตฌ์ถ ํ์ ์์, HTTP ํ๋กํ ์ฝ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์
REST API
REST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ API
- ํด๋ผ์ด์ธํธ๊ฐ URI๋ก ์๋ณํ ์์์ ๋ํด HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํด REST API๋ก ์์ฒญ
- REST API๊ฐ HTTP ์์ฒญ ๋ฉ์ธ์ง์ ์ค๋ ค ์๋ฒ์ ์ ๋ฌ๋จ
- ์๋ฒ์์๋ ์์ ํ HTTP ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์์ฒญ ์ฌํญ์ ํ์ธ ํ ์ฒ๋ฆฌ, HTTP ์๋ต ๋ฐํ
- ์๋ต ๋ฉ์ธ์ง๋ ์์์ ๋ํ ์ ๋ณด๋ฅผ JSON/XML ๋ฑ์ ํํ๋ก ํฌํจ, ํด๋ผ์ด์ธํธ๋ ํด๋น ํํ์ ์ ๋ณด ์์
HTTP ๋ฉ์๋
- POST: ๋ฐ์ดํฐ ์์ฑ(Create)
- GET: ๋ฐ์ดํฐ ์กฐํ(Read)
- PUT: ๋ฐ์ดํฐ ๊ฐฑ์ (Update)
- DELETE: ๋ฐ์ดํฐ ์ ๊ฑฐ(Delete)