๐ง๐ป๐ป ๊ธ์ ์์ํ๊ธฐ์ ์์..
- ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ์์ ์์ฃผ ๋์ค๋ ์ง๋ฌธ์ ๋ชจ์ ํ ๋ฒ์ ์ ๋ฆฌํ ํฌ์คํธ์ ๋๋ค.
- ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์ ์ค๋นํ๋ ์ฌ๋์ผ๋ก, ์ ํํ์ง ์์ ์ ๋ณด๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ๋ ์ฌ๋ฐ๋ฅธ ๋ต์ ์๊ณ ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ฐ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
- ํ์๋ Java ๊ธฐ๋ฐ์ ๋ฐฑ์๋ ์์ง๋์ด๋ฅผ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธ ๋ด๋ถ์ Java ํน์ ๋ฐฑ์๋ ๊ด๋ จ ์ฉ์ด๊ฐ ๋์ฌ ์ ์์ต๋๋ค. Java๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, ์์ ์ ์ง๋ฌด ์ธ์ด ๋ฐ ํ๋ ์์ํฌ ๊ด์ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
๐ง๐ป๐ป ๋คํธ์ํฌ ๋ฉด์ ์ง๋ฌธ
๐ก 1. OSI 7 Layer์ ๊ฐ ๊ณ์ธต์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- 7๊ณ์ธต (Application Layer, ์์ฉ๊ณ์ธต) : ์ต์ข ๋ชฉ์ ์ง๋ก ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ดํด ์๋น์ค๋ฅผ ์ํํ๋ ๊ณ์ธต์ ๋๋ค. HTTP, FTP, DNS๋ฑ์ด 7๊ณ์ธต์ ์ํฉ๋๋ค.
- 6๊ณ์ธต (Presentation Layer, ํํ๊ณ์ธต) : ๋ฐ์ดํฐ ์์ถ ํน์ ๋ณํ์ด ์ด๋ค์ง๋ ๊ณ์ธต์ผ๋ก, ๋ฐ์ดํฐ์ ํ์์ ์ ์ํฉ๋๋ค. JPEG, MPEG๋ฑ์ด 6๊ณ์ธต์ ์ํฉ๋๋ค.
- 5๊ณ์ธต (Session Layer, ์ธ์ ๊ณ์ธต) : ๋ฐ์ดํฐ๊ฐ ํต์ ํ๊ธฐ ์ํ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ ๊ณ์ธต์ผ๋ก, ์ธ์ ์ ์์ฑํด ํต์ ํฉ๋๋ค. API๋ Socket์ด 5๊ณ์ธต์ ์ํฉ๋๋ค.
- 4๊ณ์ธต (Transport Layer, ์ ์ก๊ณ์ธต) : ์ข ๋จ ๊ฐ ์ฌ์ฉ์๋ค์๊ฒ ์ ๋ขฐ์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณ์ธต์ ๋๋ค. ๊ฐ ๋ฐ์ดํฐ์ ๋จ์๋ ์ธ๊ทธ๋จผํธ์ ๋๋ค. TCP์ UDP๊ฐ 4๊ณ์ธต์ ์ํฉ๋๋ค.
- 3๊ณ์ธต (Network Layer, ๋คํธ์ํฌ๊ณ์ธต) : IP๋ฅผ ์ง์ ํ๊ณ ๋ผ์ฐํฐ๋ก ๊ฒฝ๋ก๋ฅผ ์ ํํด ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณ์ธต์ ๋๋ค. ๊ฐ ๋ฐ์ดํฐ์ ๋จ์๋ ํจํท์ ๋๋ค. Router๊ฐ 3๊ณ์ธต์ ์ํฉ๋๋ค.
- 2๊ณ์ธต (Datalink Layer, ๋ฐ์ดํฐ๋งํฌ๊ณ์ธต) : ์ ๋ขฐ์ฑ ์๋ ์ ์ก์ ์ํด ์๋ฌ ๊ฒ์ถ, ํ๋ฆ์ ์ด๋ฅผ ๋ด๋นํ๋ฉฐ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ก์ด ์ผ์ด๋๋ ๊ณ์ธต์ ๋๋ค. ๋ฐ์ดํฐ์ ๋จ์๋ ํ๋ ์์ ๋๋ค. Ethernet์ด 2๊ณ์ธต์ ์ํฉ๋๋ค.
- 1๊ณ์ธต (Physical Layer, ๋ฌผ๋ฆฌ๊ณ์ธต) : ๋ฐ์ดํฐ๋ฅผ ์ ๊ธฐ ์ ํธ๋ก ๋ณ๊ฒฝํ๋ ๊ณ์ธต์ผ๋ก, ๋ฐ์ดํฐ ๋จ์๋ ๋นํธ์ ๋๋ค.
์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๋ถํ ํ ์ด์ ๋, ํต์ ์ด ์ผ์ด๋๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ ์ ์๊ณ ๋ฌธ์ ๋ฐ์ ์ ํด๋น ๋จ๊ณ๋ง ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ก 2. ์ ์ก๊ณ์ธต๊ณผ ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต ๋ชจ๋ ์ ๋ขฐ์ฑ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ฐ, ์ด๋ค ์ฐจ์ด๊ฐ ์๋์?
์ ์ก๊ณ์ธต์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋, ์ข ๋จ๊ฐ์ ํธ์คํธ์ ์ ๋ขฐ์ฑ ๊ด๋ จ ๊ธฐ๋ฅ(ํ๋ฆ์ ์ด, ํผ์ก์ ์ด, ์ค๋ฅ์ ์ด)๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ํธ์คํธ ์ฌ์ด์ ์ ์ก์ผ๋ก ์ง์ ๋ฌถ์ฌ์๋ ํธ์คํธ-๋ ธ๋ ํน์ ๋ ธ๋-๋ ธ๋ ๊ฐ์ ์ ๋ขฐ์ฑ ๊ด๋ จ ๊ธฐ๋ฅ(์ค๋ฅ์ ์ด, ํ๋ฆ์ ์ด, ํ์ ์ ์ด)๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ ์ค ์์ฝ : ์ ์ก๊ณ์ธต์ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ (์ข ๋จ๊ฐ ํธ์คํธ) / ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต์ ๋ฌผ๋ฆฌ์ ์ฐ๊ฒฐ (์ธ์ ํ ๋ ธ๋ or ํธ์คํธ)
๐ก 3. ์ ์ก๊ณ์ธต์ด ๋ฐ์ดํฐ ๋ถ์ค์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์ ์ก๊ณ์ธต์์ ๋ฐ์ดํฐ๋ฅผ 'ํจํท'๋จ์๋ก ์ชผ๊ฐ์ด ๊ฐ์ ๋ชฉ์ ์ง๋ก ์ ์กํฉ๋๋ค. ํจํท์ ๊ฐ๊ฐ ๋ฒํธ๋ฅผ ๋ถ์ฌํด ๋ชฉ์ ์ง์์ ํจํท์ ์ฌ์กฐ๋ฆฝํด์ ํจํท์ ๋ถ์ค ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
๐ก 4. ์ ์ก๊ณ์ธต์ด ์ ๊ณตํ๋ ์ ๋ขฐ์ฑ ๊ด๋ จ ๊ธฐ๋ฅ ์ค, ํ๋ฆ์ ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์ก์ ์ธก๊ณผ ์์ ์ธก ์ฌ์ด์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์ ์ดํ๊ธฐ ์ํด์ ์ก์ ์ธก์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์กฐ์ ํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์์ ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
ํ๋ฆ์ ์ด ๊ธฐ๋ฒ์ผ๋ก ์ฌ๋ผ์ด๋ ์๋์ฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฌ๋ผ์ด๋ ์๋์ฐ ํฌ๊ธฐ ๋งํผ ํจํท์ ์ ์กํ๊ณ ์์ ์์๊ฒ์ ACK๊ฐ ์ค์ง ์์ผ๋ฉด ์๋์ฐ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ์ง ์์ต๋๋ค.
์ ์ก๋ ํจํท์ ์ ๋ฐ์๋ค๋ ACK์ ํธ๊ฐ ์์ ์๋ก๋ถํฐ ์ก์ ์๋ก ๋์์ค๋ฉด ACK์ ์๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๊ฐ ์ด๋ํฉ๋๋ค.
์ด๋ฌํ ๋ก์ง์ ํตํด ํ ๋ฒ์ ๋ค๋์ ํจํท์ด ์ ์ก๋์ด ์์ ์์ ๋ฒํผ๊ฐ ์ค๋ฒํ๋ก์ฐ๋๋ ํ์์ ๋ง์ ์ ์์ต๋๋ค.
๐ก 5. ์ ์ก๊ณ์ธต์ด ์ ๊ณตํ๋ ์ ๋ขฐ์ฑ ๊ด๋ จ ๊ธฐ๋ฅ ์ค, ์ค๋ฅ์ ์ด(์ฌ์ ์ก ํ๋กํ ์ฝ)์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์ค๋ฅ์ ์ด๋, ํจํท์ด ์์๋์๊ฑฐ๋ ์์ค๋ ๊ฒฝ์ฐ, ์ฌ์ ์ก์ ํตํด ์ค๋ฅ๋ฅผ ๋ณต๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ ์ก ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
์ฌ์ ์ก ํ๋กํ ์ฝ์ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ฌ์ ์ก์ ๋นํจ์จ์ ์ด๋ฏ๋ก ์ ์์๋ก ์ข์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
1) Stop and Wait
ACK๋ฅผ ๋ฐ๊ณ ๋์ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ ๋๋ค. ํ๋ฆ์ ์ด์์์ ์ฌ๋ผ์ด๋ฉ์๋์ฐ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ฏ๋ก, ๋์ฑ ๋ ํจ์จ์ ์ธ ์ฌ์ ์ก ํ๋กํ ์ฝ์ด ํ์ํฉ๋๋ค.
2) Go-Back-N
์ฐ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ค๊ฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ง์ ๋ถํฐ ์ฌ์ ์กํ๋ ํ๋กํ ์ฝ์ ๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์ ์ก๋ ๋ฐ์ดํฐ๊น์ง ์ฌ์ ์กํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋นํจ์จ์ ์ธ ์ธก๋ฉด์ด ์์ต๋๋ค.
3) Selective Repeat (SR)
์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ฐ์ดํฐ๋ง ์ฌ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค. ๋ค๋ง, ์์ ์ธก ๋ฒํผ์ ๋ฐ์ดํฐ๊ฐ ์์ฐจ์ ์ด์ง ์๋ค๋ ๊ฒ์ด ๋จ์ ์ ๋๋ค. ์ ๋ ฌ์ ๊ณผ์ ์ด ์ถ๊ฐ๋ก ํ์ํ๊ณ , ๋ณ๋์ ๋ฒํผ๊ฐ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ Go-Back-N ์ฌ์ ์ก ํ๋กํ ์ฝ๊ณผ ๋น๊ตํ์ฌ ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐ก 6. ์ ์ก๊ณ์ธต์ด ์ ๊ณตํ๋ ์ ๋ขฐ์ฑ ๊ด๋ จ ๊ธฐ๋ฅ ์ค, ํผ์ก์ ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋คํธ์ํฌ์ ํผ์ก์ ํผํ๊ธฐ ์ํด ์ก์ ์ธก์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ์ ์ดํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ํผ์ก์, ๋คํธ์ํฌ ๋ด์ ํจํท์ ์๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ๋ ํ์์ ์๋ฏธํฉ๋๋ค.
์ด๋ฌํ ํผ์ก ํ์์ ๋ฐฉ์งํ๊ณ ์ ๊ฑฐํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ด ํผ์ก์ ์ด ์ ๋๋ค.
1) AIMD ๋ฐฉ์ (Additive Increase / Multiplicative Decrease)
- ์ฒ์ ํจํท ํ๋๋ฅผ ๋ณด๋ด ๋ฌธ์ ๊ฐ ์๋ค๋ฉด Window Size๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์
- ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด Window Size๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ธ๋ค.
- ์ด๊ธฐ์ ๋์ ๋์ญํญ์ ์ฌ์ฉํ์ง ๋ชปํ์ฌ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ๋คํธ์ํฌ๊ฐ ํผ์กํด์ง๋ ์ํฉ์ ๋ฏธ๋ฆฌ ๊ฐ์งํ์ง ๋ชปํ๋ค.
2) Slow Start ๋ฐฉ์
- ์ฒ์ ํจํท์ ํ๋์ฉ ๋ณด๋ด๋ ๊ฒ์ ๊ฐ์ง๋ง ๋งค ์ ์ก๋ง๋ค 2๋ฐฐ์ฉ ์ฆ๊ฐํ์ฌ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ง์ํจ์์ ์ผ๋ก ์ฆ๊ฐํ๋ค.
- ์ ์ก๋๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์๊ณ๊ฐ์ ๋๋ฌํ๋ฉด ํผ์ก ํํผ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ค.
- ํผ์ก ํ์์ด ๋ฐ์ํ๋ฉด Window size๋ฅผ 1๋ก ์ค์ธ๋ค.
- ํผ์ก ํ์์ด ๋ฐ์ํ๋ Window Size ์ ๋ฐ ๊น์ง๋ ์ง์ํจ์ ๊ผด๋ก ์ฆ๊ฐํ๊ณ ์ดํ๋ถํฐ๋ 1์ฉ ์ฆ๊ฐํ๋ค.
3) Fast Recovery ๋ฐฉ์
- ํผ์ก ์ 1๋ก ์ค์ด์ง ์๊ณ ์ ๋ฐ์ผ๋ก ์ค์ด๊ณ ์ ํ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์
- ํผ์ก ์ํฉ์ ํ ๋ฒ ๊ฒช์ ์ดํ๋ก๋ AIMD ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
4) ํผ์ก ํํผ ๋ฐฉ์
- ์๊ณ๊ฐ์ ๋์ด๊ฐ๋ฉด 1์ฉ๋ง ์ ํ์ ์ผ๋ก ์ฆ๊ฐ์ํค๋ ๋ฐฉ์
๐ก 7. DNS๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
Domain Name Server์ ์ฝ์ด๋ก, IP์ฃผ์๋ฅผ ๋ฌธ์๋ก ํํํ ์ฃผ์๋ก ๋ฐ๊พธ๋ ์์คํ ํน์ ์๋ฒ๋ฅผ ์๋ฏธํฉ๋๋ค.
๐ก 8. www.google.com ๋๋ฉ์ธ์ ๋ธ๋ผ์ฐ์ ์ ์ ๋ ฅํ์ ๋ ์ผ์ด๋๋ ์ผ์ ์์ฐจ์ ์ผ๋ก ์ค๋ช ํด์ฃผ์ธ์.
1) www.google.com์ ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํฉ๋๋ค.
2) ๋ธ๋ผ์ฐ์ ๋ ์บ์ฑ๋ DNS ๊ธฐ๋ก(๋ธ๋ผ์ฐ์ ์บ์, OS ์บ์, ๋ผ์ฐํฐ ์บ์, ISP ์บ์)์ ํตํด ํด๋น ๋๋ฉ์ธ ์ฃผ์์ ๋์๋๋ IP์ฃผ์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
3) ์์ฒญํ URL์ด ์บ์์ ์๋ ๊ฒฝ์ฐ, ISP์ DNS ์๋ฒ๊ฐ www.google.com์ ํธ์คํ ํ๊ณ ์๋ ์๋ฒ์ IP์ฃผ์๋ฅผ ์ฐพ๊ธฐ ์ํด DNS Query๋ฅผ ๋ณด๋ด ์ฐพ์ต๋๋ค.
4) ๋ธ๋ผ์ฐ์ ๋ www.google.com์ ํด๋นํ๋ IP ์ฃผ์๋ฅผ ํ๋ํด ํด๋น ์๋ฒ์ TCP ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค. (3-way handshake)
5) TCP ์ฐ๊ฒฐ์ด ์๋ฃ๋๋ฉด, ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์ HTTP Request๋ฅผ ๋ณด๋ ๋๋ค.
6) ์๋ฒ๋ ํด๋น Request๋ฅผ ์ฒ๋ฆฌํ๊ณ Response๋ฅผ ์์ฑํด ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ ๋๋ค.
7) ๋ธ๋ผ์ฐ์ ๋ ํด๋น Response๋ฅผ ์ฝ์ด๋ค์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋๋ค.
๐ก 9. TCP Connection ์ 3-way handshaking์ ํ๋ค๊ณ ํ๋๋ฐ, ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์๊ฒ ์ด์?
TCP๋ ์ ๋ขฐ์ฑ์๋ ์ ์ก์ ์ํด 1:1๋ก ์๋ก ์ ์ฐ๊ฒฐ๋์์์ ํ์ธํ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. ์ด ๊ณผ์ ์ด ๋ฐ๋ก 3-way handshaking์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
1) Client๊ฐ Server์๊ฒ ์ ์ ์์ฒญ SYN ํจํท์ ๋ณด๋ ๋๋ค.
2) ์๋ฒ๋ SYN ํจํท์ ๋ฐ๊ณ , ํด๋น ์์ฒญ์ ์๋ฝํ๋ ACK์ Client์ ์ฐ๊ฒฐํ๊ฒ ๋ค๋ SYN ํจํท์ ๋์์ ๋ณด๋ ๋๋ค.
3) Client๋ ์๋ฒ์๊ฒ ํ์ธ ์๋ต์ผ๋ก ACK ํจํท์ ๋ณด๋ ๋๋ค.
์ด์ฒ๋ผ, ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋๊ฐ SYN์ ACK๋ฅผ ์๋ก ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ ์๋ฃํ๋ฉด ๋น๋ก์ ์ฐ๊ฒฐ์ด ๋์๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
๐ก 10. ๊ทธ๋ ๋ค๋ฉด TCP Connection์ ํด์ ํ๋ ๊ฒฝ์ฐ๋ ์ด๋ป๋์?
3-way handshaking์ด ์๋, 4-way handshacking์ ์งํํฉ๋๋ค.
1) Client๊ฐ Server์๊ฒ FIN ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.
2) Server๋ Client๊ฐ ๋ณด๋ด์จ FIN ์ ํธ์ ์๋ตํ๋ ACK ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.
3) Server๋ Client์๊ฒ FIN ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.
4) Client๋ Server๊ฐ ๋ณด๋ด์จ FIN ์ ํธ์ ์๋ตํ๋ ACK ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.
๐ก 11. ์ฐ๊ฒฐํด์ ์ 4-way handshacking์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
1) Client๋ Server์๊ฒ ๋ฐ์ดํฐ ์์ฒญ์ ๋ชจ๋ ๋ณด๋๋คํ๋๋ผ๋, Server๋ Client์๊ฒ ๋ณด๋ด์ผ ํ ๋ฐ์ดํฐ๊ฐ ๋จ์์์ ์ ์๊ธฐ ๋๋ฌธ์ FIN๊ณผ ACK๋ฅผ ํ ๋ฒ์ ๋ณด๋ด์ง ์๊ณ , ์๋ฒ ์ธก์์ ๋ณด๋ผ ๋ฐ์ดํฐ ๋ง์ ๋ค ๋ณด๋์ ๊ฒฝ์ฐ FIN ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
๐ก 12. ๊ทธ๋ ๋ค๋ฉด, Server๊ฐ Client์๊ฒ FIN ํ๋๊ทธ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ์ ์กํ ํจํท์ด ์ง์ฐ์ด๋ ์ ์ค๋ก ์ธํด ์ฌ์ ์ก์ด ์ผ์ด๋ FIN ํจํท๋ณด๋ค ๋ฆ๊ฒ ๋์ฐฉํ๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ๋์?
์ด๋ฐ ์ผ์ ๋ฐฉ์งํ๊ธฐ ์ํด์, Server๋ก๋ถํฐ Client๊ฐ FIN ํ๋๊ทธ๋ฅผ ๋ฐ๋๋ผ๋ ๋ฐ๋ก ์ธ์ ์ ์ข ๋ฃ์ํค์ง ์๊ณ ์ผ์ ์๊ฐ ์์ฌ ํจํท์ ๊ธฐ๋ค๋ฆฌ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. (10๋ฒ ๋ฌธ์ ์ 4๋ฒ ์ดํ)
๐ก 13. ํฌํธ๊ฐ ๋ฌด์์ด๊ณ , ์์ผ์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
ํฌํธ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ณํ๊ธฐ ์ํด์ ํธ์คํธ ๋ด๋ถ์ ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ๋ ๊ณ ์ ํ ๊ฐ์ ๋๋ค.
ํ๋์ IP ์ฃผ์ ๋ด์ ๊ฐ๋ณ์ ์ผ๋ก ๋ถ์ฌ๋ ํต์ ํ๋ก์ธ์ค์ ๋๋ค.
์์ผ์ ๋คํธ์ํฌ ์์์ ๋์ํ๋ ํ๋ก๊ทธ๋จ ๊ฐ ํต์ ์ ์ข ์ฐฉ์ ์ผ๋ก, ๋ ์์คํ ์ฌ์ด์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ๋ด๋ ๊ฐ์ฒด์ ๋๋ค.
์์ผ์ ์ด๊ธฐ ์ํด์๋ IP, ํฌํธ๋ฒํธ, ํ๋กํ ์ฝ์ด ํ์ํ๋ฉฐ, ์ก์์ ์ ๋ชจ๋ ์์ผ์ ์ด์ด์ผ ํฉ๋๋ค. ํ๋์ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ํฌํธ๋ฅผ ๊ฐ์ง๊ณ ์ฌ๋ฌ๊ฐ์ ์์ผ์ ์ด ์ ์์ต๋๋ค.
๐ก 14. TCP์ UDP์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
TCP | UDP | |
์ฐ๊ฒฐ์ฑ | ์ฐ๊ฒฐํ ์๋น์ค๋ฅผ ์ง์ํจ | ๋น์ฐ๊ฒฐํ ์๋น์ค๋ฅผ ์ง์ํจ |
์ ๋ขฐ์ฑ | ํ๋ฆ์ ์ด, ํผ์ก์ ์ด, ์ค๋ฅ์ ์ด๋ก ์ ๋ขฐ์ฑ ๋ณด์ฅ | checksum ํ๋๋ก ์ต์ํ์ ์ค๋ฅ๋ง ๋ณด์ฅ |
์๋ | UDP์ ๋นํด ๋๋ฆผ | TCP์ ๋นํด ๋น ๋ฆ |
์ฐ๊ฒฐ๊ณผ์ | 3-way handshacking / 4-way handshacking | X |
์บ์คํธ | ์ ๋์บ์คํธ (1:1) | ๋ฉํฐ์บ์คํธ, ๋ธ๋ก๋์บ์คํธ (1:N, 1:์ ์ฒด) |
ํน์ง | http ํ๊ฒฝ์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ, ์ ์ก์ด ์๋ฐฉํฅ์ผ๋ก ๋์์ ๊ฐ๋ฅ, ์ ๋์ ๋ฐฉ์ | ์ ์ก์ ์ํ ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก ์์, ์ ์ก ์์ ๋ณด์ฅ X, ์์ ์ฌ๋ถ ํ์ธ X |
UDP์ TCP๋ ๊ฐ๊ฐ ๋ณ๋์ ํฌํธ ์ฃผ์ ๊ณต๊ฐ์ ๊ด๋ฆฌํ๋ฏ๋ก ๊ฐ์ ํฌํธ๋ฒํธ๋ฅผ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๋ ํ๋กํ ์ฝ ๊ฐ๊ฐ ๋์ผํ ํฌํธ๋ฒํธ๋ฅผ ํ ๋นํด๋ ์๋ก ๋ค๋ฅธ ํฌํธ๋ก ๊ฐ์ฃผํฉ๋๋ค.
checksum์ ํค๋์ ๋ฐ์ดํฐ์ ์๋ฌ ์ฉ๋๋ก ์ฌ์ฉ๋์ง๋ง, UDP๋ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณ๋ค๋ฅธ ์กฐ์น๋ฅผ ์ทจํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณต๊ตฌ๋ฅผ ์ํ ํ๋๊ฐ ๋ถํ์ํ๊ธฐ ๋๋ฌธ์ TCP ํค๋์ ๋นํด ๊ฐ๋จํฉ๋๋ค.
๐ก 15. HTTP์ ํน์ง์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
HTTP ํ๋กํ ์ฝ์ ํฌ๊ฒ 2๊ฐ์ง ํน์ง์ด ์์ต๋๋ค.
- ๋น์ฐ๊ฒฐ์งํฅ (connectionless) : client๊ฐ server์ request๋ฅผ ๋ณด๋ด๊ณ , ์๋ฒ๊ฐ ํด๋น ์์ฒญ์ ๋ง๋ response๋ฅผ ๋ณด๋ด๋ฉด ๋ฐ๋ก ์ฐ๊ฒฐ์ ๋์ต๋๋ค.
- ์ํ ๋น์ ์ฅ (stateless) : ์ฐ๊ฒฐ์ ๋๋ ์๊ฐ client์ server์ ํต์ ์ ๋๋๋ฉฐ, ์ํ์ ๋ณด๋ฅผ ์ ์งํ์ง ์๋ ํน์ง์ด ์์ต๋๋ค.
ํ์ง๋ง, ๊ฐ๋์ฉ ์ด '์ํ'์ ๋ํ ์ ์ฅ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ด์ ์ฟ ํค์ ์ธ์ ์ด ๋ฑ์ฅํ๊ฒ ๋ฉ๋๋ค.
๐ก 16. HTTP์ HTTPS์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
1) HTTP
- world wide web์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ
- client-server๊ฐ์ request-response ํ๋กํ ์ฝ
- ์ฃผ๋ก HTML ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ฐ ์ฌ์ฉํจ
2) HTTPS
- HTTP์ ๋ณด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ํ๋กํ ์ฝ
- HTTP๋ TEXT๋ก ์์์ ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ์ค๊ฐ์ ๊ฐ๋ก์ฑ๋ค๋ฉด, ๋ด์ฉ์ด ์ ์ถ๋๋ ์ฌ๊ณ ๊ฐ ์๊น
- ๋ฐ๋ผ์ SSL, TLS๋ฅผ ์ด์ฉํด ์ํธํ๋ฅผ ๊ฑฐ์ณ ์ฃผ๊ณ ๋ฐ์ (์์ฉ-์ ์ก ๊ณ์ธต ์ฌ์ด์ ์์น)
- HTTP Request์ Response ๋ฐ์ดํฐ๋ ๋คํธ์ํฌ๋ก ๋ณด๋ด์ง๊ธฐ ์ , ์ ์ก-์์ฉ ๊ณ์ธต ์ฌ์ด์์ ์ํธํ ๋จ.
- Body ๋ถ๋ถ๋ง ์ํธํ, Header๋ ์ํธํ X
- Client๊ฐ Server๋ก ์ ์์ ์์ฒญํ๋ฉด, Server๋ ๊ณต๊ฐํค๋ฅผ Client์๊ฒ ์ ๋ฌ. Client๋ ์์ ์ ๋์นญํค๋ฅผ ๋ฐ์ ๊ณต๊ฐํค๋ก ์ํธํํด์ Server์ ์ ๋ฌ. Server๋ ๊ฐ์ธํค๋ก ๋ณตํธํํด์ Client์ ๋์นญํค๋ฅผ ํ๋. ์ป์ด๋ธ ๋์นญํค๋ฅผ ์ฌ์ฉํด ์ํธ๋ฌธ์ ์ฃผ๊ณ ๋ฐ์
- ์ํธํ ๋น์ฉ์ด ๋ฐ์ํ๊ณ , ์ํธํ ๊ณผ์ ์์ ์๋ฒ์ ๋ถํ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ฉด ์ฌ์ธ์ฆ ์๊ฐ์ด ์์๋จ.
๐ก 17. HTTP Method์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ์ค๋ช ํด์ฃผ์ธ์.
GET | ์กฐํ, ๋ฆฌ์์ค ์์ฒญ |
POST | ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์์ ์์ฑํจ |
PUT | ์์ฒญ๋ ์์์ด ์์ผ๋ฉด ์์ฑ, ์์ผ๋ฉด ์ ๊ฒ์ผ๋ก ์ ์ฒด ๊ฐฑ์ |
PATCH | ์์์ ์ผ๋ถ๋ถ๋ง ์์ |
DELETE | ์์ฒญ๋ ์์์ ์ญ์ |
๐ก 18. ๋ฉฑ๋ฑ์ฑ์ ๋ํด ์ค๋ช ํ๊ณ , HTTP ๋ฉ์๋์์๋ ์ด๋ค ๋ฉ์๋๊ฐ ๋ฉฑ๋ฑ์ฑ ๋ฉ์๋์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
ํน์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ๋ฒ ์์ฒญํ๋๋ฐ, ๋งค๋ฒ ์์ฒญ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํด๋น ๋ฉ์๋๋ฅผ ๋ฉฑ๋ฑ์ฑ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
GET, PUT, DELETE๋ฅผ ๋ฉฑ๋ฑ์ฑ ๋ฉ์๋์ ์ํ๊ณ POST๋ ๋ฉฑ๋ฑ์ฑ ๋ฉ์๋๊ฐ ์๋๋๋ค.
(POST ์์ฒญ์ ๋ฐ๋ณตํ๋ฉด ๊ฐ์ ๋ด์ฉ์ด๋๋ผ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๊ณ์ ์ถ๊ฐ๋๋ค.)
๐ก 19. HTTP์ Keep-alive ํค๋์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
HTTP๋ ๋งค๋ฒ ์ฐ๊ฒฐ์ ๋๊ณ ์๋ก ์์ฑํฉ๋๋ค. ํน์ ์๊ฐ๊น์ง๋ ์ ๊ทผ์ด ์๋๋ผ๋ ์ฐ๊ฒฐ์ํ๋ฅผ ์ ์งํ๋๋ก ํ๋ ํค๋์ ๋๋ค.
HTTP 1.1๋ถํฐ ์ง์ํฉ๋๋ค.
๐ก 20. HTTP 1.0 vs HTTP 1.1 vs HTTP 2.0์ ๊ฐ๊ฐ ๋น๊ตํด์ ์ค๋ช ํด์ฃผ์ธ์.
์ ๋ฐ์ดํธ ์์ .
๐ก 21. CORS๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (Cross-Origin Resource Sharing, CORS)๋ ์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํด ํ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ฃผ๋ ์ฒด์ ์ ๋๋ค.
Web Application์ ๋ฆฌ์์ค๊ฐ ์์ ์ ์ถ์ฒ(๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ)์ ๋ค๋ฅผ ๋ ๊ต์ฐจ ์ถ์ฒ HTTP ์์ฒญ์ ๋ณด๋ ๋๋ค.
๐ก 22. REST API์ RESTful ํ๋ค๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
REST๋ HTTP URI๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ HTTP Method๋ฅผ ํตํด ์์์ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋ ์ํคํ ์ฒ์ ๋๋ค.
์ด๋ฌํ REST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ API๋ฅผ REST API๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
RESTful ํ๋ค๋ ๊ฒ์, REST ์๋ฆฌ๋ฅผ ์ ๋ฐ๋ฅด๋ ์์คํ ์ RESTful ํ๋ค๊ณ ํํํฉ๋๋ค.
REST ์๋ฆฌ์๋ ๋ค์ํ ์กฐ๊ฑด๋ค์ด ํฌํจ๋์ด์์ต๋๋ค.
- URI ์์ฑ ์กฐ๊ฑด
- HTTP Method๋ก ํ์ ํํ
- self-descriptive
- HATEOAS ๋ฑ๋ฑ.
HTTP์ ์์์ ์ ๋๋ก ํ์ฉํ๊ณ ์์ง ์๋ค๋ฉด RESTํ์ง ์๋ค๊ณ ํ ์ ์์ต๋๋ค.
๐ก 23. ์ฟ ํค์ ์ธ์ ์ด ์ ํ์ํ์ง, ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์ค๋ช ํด์ฃผ์ธ์.
HTTP ํ๋กํ ์ฝ์ ๋น์ฐ๊ฒฐํ, ๋ฌด์ํ์ ํน์ฑ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, server๋ client๊ฐ ๋๊ตฌ์ธ์ง ๋งค๋ฒ ํ์ธ์ด ํ์ํฉ๋๋ค.
์ด๋ฌํ ํน์ฑ์ ๋ณด์ํ๊ธฐ ์ํด์ ์ฟ ํค์ ์ธ์ ์ด ํ์ํ์ต๋๋ค.
1) ์ฟ ํค : ํด๋ผ์ด์ธํธ ๋ก์ปฌ(ํ๋๋์คํฌ)์ ์ ์ฅ๋๋ ํค์ ๊ฐ์ด ๋ค์ด์๋ ์์ ๋ฐ์ดํฐ ํ์ผ
2) ์ธ์ : ์ผ์ ์๊ฐ ๋์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ๋ค์ด์ค๋ ์ผ๋ จ์ ์๊ตฌ๋ฅผ ํ๋์ ์ํ๋ก ๋ณด๊ณ ๊ทธ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ.
์ฟ ํค | ์ธ์ | |
์ ์ฅ์์น | ํด๋ผ์ด์ธํธ | ์๋ฒ |
๋ผ์ดํ์ฌ์ดํด | ๋ง๋ฃ๊ธฐ๊ฐ ๋ถ์ฌ | ๋ธ๋ผ์ฐ์ ์ข ๋ฃ ์ ์๋ฉธ |
์๋ | ์๋ฒ ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์์ด ๋ ๋น ๋ฅด๋ค. | ์๋ฒ ํต์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆผ. |
๋ณด์ | ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์์ด ์ทจ์ฝ | ์๋ฒ์์ ๊ด๋ฆฌํด ๋น๊ต์ ์์ |
์ธ์ ์ ์๋ฒ์ ์์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋ง์ ์๋ก ์๋ชจ๋๋ ์์์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ํฉ์ ์ ๊ณ ๋ คํด์ ์ฌ์ฉํด์ผ ํ๋ค.
๐ก 24. ๋ง์ฝ session์ ๊ฐ์ ๊ฐ์ ธ์ค๋ key๋ฅผ "user"๋ผ๊ณ ํฉ์๋ค, ์ฌ์ฉ์ A๊ฐ ์ ์ํด๋, B๊ฐ ์ ์ํด๋ "user"๋ผ๋ key๋ฅผ ํตํด ๊ฐ์ ธ์ค๋๋ฐ ์ด๋ป๊ฒ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐ์ ์ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์.
์ธ์ ์ ๊ฒฝ์ฐ, ์ํ ์ ๋ณด๋ ์๋ฒ์ ์ ์ฅ๋์ด์์ง๋ง ํด๋น ์ํ ์ ๋ณด๋ฅผ ์ด๋ํ ์ ์๋ ํค๋ฅผ JSESSIONID๋ผ๋ ์ฟ ํค๋ก ๋ง๋ค์ด ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ๋ ๋ง๋ค ํด๋น ์ฟ ํค๋ฅผ ์๋ฒ๋ก ํจ๊ป ์ ์กํ๊ณ , ์๋ฒ๋ ํด๋น ํค ๊ฐ์ ํ์ธํด Session์ ๋งค์นญํด ์ด๋ค ์ฌ์ฉ์์ธ์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ด๋ถ์ ์ผ๋ก ๋ณด๋ฉด ๋ค๋ฅธ Session ๊ฐ์ฒด์ ์ ๊ทผํ ๊ฒ์ ๋๋ค.
๐ก 25. Session์ ์๋ฒ์ ์ ์ฅ๋๊ณ , Cookie๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋๋ฐ, ์ฟ ํค๊ฐ ์๋๋ ์ํฉ์์ ์ธ์ ์ ์ฌ์ฉํ ์ ์์๊น์?
์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์์๋ URL ๋ค์ชฝ์ Parameter ๊ฐ์ผ๋ก ์ ๋ฌํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๐ก 26. JWT Token์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
JWT๋ JSON ํฌ๋งท์ ์ด์ฉํ๋ Claim ๊ธฐ๋ฐ์ ์น ํ ํฐ์ด๋ฉฐ, ํ ํฐ ์์ฒด๋ฅผ ์ ๋ณด๋ก ์ฌ์ฉํ๋ Self-Contained ๋ฐฉ์์ผ๋ก ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํฉ๋๋ค.
JWT๋ ํค๋(Header).๋ด์ฉ(Payload).์๋ช (Signature)๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ํํธ๋ฅผ ์ (.)์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
ํค๋(Header) : ํ ํฐ์ ํ์ ๊ณผ ํด์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ(๋ฐฉ์์ง์ )์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๋ด์ฉ(Payload) : ํ ํฐ์ ์ฌ์ฉ์๊ฐ ๋ด๊ณ ์ ํ๋ ์ ๋ณด๋ฅผ ๋ด๋๋ค. ๋ด์ฉ์๋ Claim์ด ๋ด๊ฒจ์๊ณ , JSON(Key/Value)ํํ์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์๋ช (Signature) : ํ ํฐ์ ์ธ์ฝ๋ฉํ๊ฑฐ๋ ์ ํจ์ฑ ๊ฒ์ฆํ ๋ ์ฌ์ฉํ๋ ๊ณ ์ ํ ์ํธํ ์ฝ๋์ด๋ค. ํค๋์ ๋ด์ฉ์ ๊ฐ์ ์ธ์ฝ๋ฉํ๋ค.
๐ก 27. URI์ URL์ด ๋ฌด์์ด ๋ค๋ฅธ์ง ์ค๋ช ํด์ฃผ์ธ์.
URI
URI๋ ํน์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ํตํฉ ์์ ์๋ณ์(Uniform Resource Identifier)๋ฅผ ์๋ฏธํฉ๋๋ค. ์น ๊ธฐ์ ์์ ์ฌ์ฉํ๋ ๋ ผ๋ฆฌ์ ๋๋ ๋ฌผ๋ฆฌ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ๊ณ ์ ํ ๋ฌธ์์ด ์ํ์ค์ ๋๋ค.
URL
URL์ ํํ ์น ์ฃผ์๋ผ๊ณ ๋ ํ๋ฉฐ, ์ปดํจํฐ ๋คํธ์ํฌ ์์์ ๋ฆฌ์์ค๊ฐ ์ด๋ ์๋์ง ์๋ ค์ฃผ๊ธฐ ์ํ ๊ท์ฝ์ ๋๋ค. URI์ ์๋ธ์ ์ ๋๋ค.
๐ก 28. GET๊ณผ POST๊ฐ ๋ค๋ฅธ ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
GET์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํค๋์ ์ถ๊ฐํ์ฌ ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค.
URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋๋ฏ๋ก ๋ณด์์ ์ผ๋ก ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์๋ ์๋ฉ๋๋ค.
POST๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ๋๋ ์์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ์ถ๊ฐํ์ฌ ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค.
์์ ํ ์์ ํ๋ค๋ ๊ฒ์ ์๋์ง๋ง URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ง ์์ GET ๋ณด๋ค๋ ์์ ํฉ๋๋ค.
๋ํ, GET์ ์บ์ฑ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ฉฑ๋ฑ์ฑ ๋ฉ์๋์ ๋๋ค.
๋ฐ๋ฉด POST๋ ์บ์ฑ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ๋ฉฑ๋ฑ์ฑ ๋ฉ์๋๊ฐ ์๋๋๋ค.
๐ก 29. ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ๊ณผ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ๊ฐ๊ฐ ์ด๋ ๊ฒฝ์ฐ์ ์ ํฉํ์ง ์ค๋ช ํด์ฃผ์ธ์.
์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฏ๋ก Statefulํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ,
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ํ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์์ผ๋ฏ๋ก Statelessํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉํ๋ฉด ๋จ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์๋ฒ์ ์ธ์ ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํ๋ฉด ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ์ค ์ ์์ด ํ์ฅ์ฑ์ด ๋ฎ์ต๋๋ค.
2. ํด์ปค๊ฐ ํ์น ์ฟ ํค๋ฅผ ์ด์ฉํด ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ์์ฒญ์ธ์ง ์ ์ ์์ต๋๋ค. (์ธ์ ํ์ด์ฌํน ๊ณต๊ฒฉ)
๋จ์ผ ๋๋ฉ์ธ์ด๋ผ๋ฉด ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉํ๊ณ , ์๋๋ผ๋ฉด ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ธ์ ์ ๊ด๋ฆฌํ ๋ ์ฌ์ฉ๋๋ ์ฟ ํค๋ ๋จ์ผ ๋๋ฉ์ธ ๋ฐ ์๋ธ ๋๋ฉ์ธ์์๋ง ์๋ํ๋๋ก ์ค๊ณ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋๋ฉ์ธ์์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. (CORS ๋ฌธ์ : ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (Cross-Origin Resource Sharing, CORS)๋ ์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํด ํ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ฃผ๋ ์ฒด์ ์ ๋๋ค.)
๐ก 30. Connection Timeout๊ณผ Read Timeout์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์๋ฒ ์์ฒด์ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์ฌ์ ๋ก ์ ๊ทผ์ ์คํจํ์ ์ ์ ์ฉ๋๋ ๊ฒ์ด Connection Timeout์ ๋๋ค.
์ฆ, ์ ๊ทผ์ ์๋ํ๋ ์๊ฐ ์ ํ์ด Connection Timeout ๋๋ ๊ฒ์ ๋งํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์์ ์ฑ๊ณต ํ์ผ๋ ์๋ฒ๊ฐ ๋ก์ง์ ์ํํ๋ ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด ์ ๋๋ก ์๋ต์ ๋ชป ์ค ์ํ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ํด์ ํ๋ ๊ฒ์ด Read Timeout์ ๋๋ค.
์ด ๊ฒฝ์ฐ๋ ํด๋ผ์ด์ธํธ๋ ํด๋น ์ํฉ์ ์ค๋ฅ๋ก ์ธ์งํ๊ณ , ์๋ฒ๋ ๊ณ์ ๋ก์ง์ ์ํํ๊ณ ์์ด ์ฑ๊ณต์ผ๋ก ์ธ์งํด
์ ์ฌ์ด๋๊ฐ ์ฑํฌ๊ฐ ๋ง์ง ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ๋์ต๋๋ค.
๐ก 31. ๊ณต์ธ IP์ ์ฌ์ค IP์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ ์ ์๋์?
- ๊ณต์ธ IP๋ ISP(์ธํฐ๋ท ์๋น์ค ๊ณต๊ธ์)๊ฐ ์ ๊ณตํ๋ IP ์ฃผ์์ด๋ฉฐ, ์ธ๋ถ์ ๊ณต๊ฐ๋์ด ์๋ IP์ฃผ์ ์ ๋๋ค.
- ์ฌ์ค IP๋ ์ผ๋ฐ ๊ฐ์ ์ด๋ ํ์ฌ ๋ด ๋ฑ์ ํ ๋น๋ ๋คํธ์ํฌ IP ์ฃผ์์ด๋ฉฐ, IPv4์ ์ฃผ์๋ถ์กฑ์ผ๋ก ์ธํด ์๋ธ๋ทํ ๋ IP์ด๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํฐ(๊ณต์ ๊ธฐ)์ ์ํด ๋ก์ปฌ ๋คํธ์ํฌ์์ PC๋ ์ฅ์น์ ํ ๋น๋ฉ๋๋ค.
- ์ฌ์ค IP ์ฃผ์๋ง์ผ๋ก๋ ์ธํฐ๋ท์ ์ง์ ์ฐ๊ฒฐํ ์ ์๊ณ , ๋ผ์ฐํฐ๋ฅผ ํตํด 1๊ฐ์ ๊ณต์ธ IP๋ฅผ ํ ๋นํ๊ณ , ๋ผ์ฐํฐ์ ์ฐ๊ฒฐ๋ ๊ฐ์ธ PC๋ ์ฌ์ค IP๋ฅผ ๊ฐ๊ฐ ํ ๋น ๋ฐ์ ์ธํฐ๋ท์ ์ ์ ํ ์ ์์ต๋๋ค.
๐ก 32. UDP๊ฐ TCP์ ๋นํด ๊ฐ๋ ์ฅ์ ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
- ์ต์์ ์ก๋ฅ ๋ง ๋ณด์ฅ๋๋ฉด ๋๊ณ , ์ง์ฐ๋ฅ ์ ๋ฏผ๊ฐํ ๊ฒฝ์ฐ์ UDP๊ฐ TCP๋ณด๋ค ๋ซ์ต๋๋ค.
- ์ฐ๊ฒฐ ์ค์ ์ ์ํ ์ง์ฐ์ด ์์ต๋๋ค. (3-way handshacking)
- ์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ํด๋ผ์ด์ธํธ๋ฅผ ์์ฉํ ์ ์์ต๋๋ค. (TCP๋ ์ฐ๊ฒฐ์ ์ ์งํ๋ฏ๋ก ์ก์์ ๋ฒํผ, ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ๊ณ ์์ด์ผ ํจ.)
- TCP๋ ์ธ๊ทธ๋จผํธ๋ง๋ค 20๋ฐ์ดํธ์ ์ค๋ฒํค๋๋ฅผ ๊ฐ์ต๋๋ค. UDP๋ 8๋ฐ์ดํธ์ ์ค๋ฒํค๋๋ฅผ ๊ฐ์ต๋๋ค.
- ์ดํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ฉด UDP๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๊ตฌํํ ์ ์์ต๋๋ค.
๐ก 33. UDP์ Checksum ํ๋๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
๋ชจ๋ ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต์ด ์ค๋ฅ๊ฒ์ฌ๋ฅผ ํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ข ๋จ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก ์๋น์ค๊ฐ ์ค๋ฅ๊ฒ์ฌ๋ฅผ ์ ๊ณตํ๋ค๋ฉด ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต์์ ์ค๋ฅ๊ฒ์ฌ๋ฅผ ์ ๊ณตํ์ง ์๋ ๊ฒฝ์ฐ UDP๊ฐ ์ ๊ณตํด์ผ ํ๊ธฐ ๋๋ฌธ์ Checksum ํ๋๊ฐ ์กด์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋, UDP๋ ์ ๋ขฐ์ฑ ์๋ ํ๋กํ ์ฝ์ด ์๋๋๋ค. ์ฒดํฌ์ฌ์ ํตํด ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ๋๋ผ๋ ์ค๋ฅ๋ฅผ ํ๋ณตํ๊ธฐ ์ํด์ ์ด๋ค ์ผ๋ ํ์ง ์์ต๋๋ค.
๐โ๏ธ ๋ค๋ฅธ ์ง๋ฌธ ๋๋น ์๋ฃ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โ ์๋ฃ๊ตฌ์กฐ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โก ์๊ณ ๋ฆฌ์ฆ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โข ๋ฐ์ดํฐ๋ฒ ์ด์ค
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฃ ๋คํธ์ํฌ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โค ์ด์์ฒด์
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฅ ์๋ฐ(Java)
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฆ ๋ฐฑ์๋(Java Spring ๊ธฐ๋ฐ)
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โง ๊ฐ๋ฐ๊ณตํต / ์ธ์ฑ๋ฉด์