์ฐธ๊ณ ์๋ฃ : Tech Interview, Tech Interview
๐ OSI 7๊ณ์ธต
7๊ณ์ธต์ ๋๋๋ ์ด์
ํต์ ์ด ์ผ์ด๋๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ ์ ์๊ณ , ํน์ ํ ๊ณณ์ ์ด์์ด ์๊ธฐ๋ฉด ๊ทธ ๋จ๊ณ๋ง ์์ ํ ์ ์๊ธฐ ๋๋ฌธ
- ์ปดํจํฐ ๋คํธ์ํฌ ํ๋กํ ์ฝ ๋์์ธ๊ณผ ํต์ ์ ๊ณ์ธต์ผ๋ก ๋๋์ด ์ค๋ช
ํ ๊ฒ์ด๋ค.
- ํ๋กํ ์ฝ์ ๊ธฐ๋ฅ๋ณ๋ก ๋๋ ๊ฒ
- ๊ฐ ๊ณ์ธต์ ํ์ ๊ณ์ธต์ ๊ธฐ๋ฅ๋ง์ ์ด์ฉํ๊ณ , ์์ ๊ณ์ธต์๊ฒ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํ์ ๊ณ์ธต๋ค์ ํ๋์จ์ด๋ก, ์์ ๊ณ์ธต๋ค์ ์ํํธ์จ์ด๋ก ๊ตฌํ๋๋ค.
- ๋ฌผ๋ฆฌ ๊ณ์ธต(Physical layer)
- ๋คํธ์ํฌ์ ๊ธฐ๋ณธ ๋คํธ์ํฌ๋ก ํ๋์จ์ด ์ ์ก ๊ธฐ์ ์ ์ด๋ฃฌ๋ค.(๋ฆฌํผํฐ, ์ผ์ด๋ธ, ํ๋ธ)
- ๋จ์ง ๋ฐ์ดํฐ๋ฅผ ์ ๊ธฐ์ ์ธ ์ ํธ๋ก ๋ณํํด์ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ๋ฅ์ ์งํ(์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ญํ ๋ง ํ๋ค.)
- ๋
ผ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ(๋์ ์์ค์ ๊ธฐ๋ฅ)๋ฅผ ๊ธฐ์ด๋ก ํ๋ ํ์ ๊ณ์ธต์ด๋ค.
- ์ ์ก ๋จ์๋ Bit์ด๋ค.
- ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต(Data link layer)
- Point to Point ๊ฐ ์ ๋ขฐ์ฑ์๋ ์ ์ก์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ณ์ธต์ผ๋ก CRC ๊ธฐ๋ฐ์ ์ค๋ฅ ์ ์ด์ ํ๋ฆ ์ ์ด๊ฐ ํ์ํ๋ค.
- ๋ฌผ๋ฆฌ ๊ณ์ธต์ผ๋ก ์ก์์ ๋๋ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์ฌ ์์ ํ๊ฒ ์ ๋ฌ๋๋๋ก ๋์์ฃผ๋ ์ญํ (๋ธ๋ฆฟ์ง, ์ค์์น)
- ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต์ ๊ฐ์ฅ ์ ์๋ ค์ง ์๋ ์ด๋๋ท์ด๋ค.
- ์ฃผ์ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ ๋น๋ฐ๋๋ค.
- Mac ์ฃผ์๋ฅผ ํตํด ํต์ ํ๋ค.
- ์ ์ก ๋จ์๋ Frame์ด๋ค.(ํ๋ ์์ Mac ์ฃผ์๋ฅผ ๋ถ์ฌํ๊ณ ์๋ฌ๊ฒ์ถ, ์ฌ์ ์ก, ํ๋ฆ์ ์ด ์งํ)
- ๋คํธ์ํฌ ๊ณ์ธต(Network layer)
- ์ฌ๋ฌ ๊ฐ์ ๋
ธ๋๋ฅผ ๊ฑฐ์น ๋๋ง๋ค ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํ๋ ๊ณ์ธต์ผ๋ก ๋ค์ํ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ๋ค์ ํตํด ์ ๋ฌํ๊ณ , ๊ทธ ๊ณผ์ ์์ ์ ์ก ๊ณ์ธต์ด ์๊ตฌํ๋ ์๋น์ค ํ์ง(QoS)๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ , ์ ์ฐจ์ ์๋จ์ ์ ๊ณตํ๋ค.
- ์ฆ, ๋ฐ์ดํฐ๋ฅผ ๋ชฉ์ ์ง๊น์ง ๊ฐ์ฅ ์์ ํ๊ณ ๋น ๋ฅด๊ฒ ์ ๋ฌํ๋ ๊ธฐ๋ฅ(๋ผ์ฐํฐ, IP)
- ๋ผ์ฐํ
, ํ๋ฆ ์ ์ด, ์ค๋ฅ ์ ์ด, ์ธ๊ทธ๋ฉํ
์ด์
๋ฑ์ ์ํํ๋ค.
- ๋ผ์ฐํฐ๋ฅผ ํตํด ์ด๋ํ ๊ฒฝ๋ก๋ฅผ ์ ํํ์ฌ IP ์ฃผ์๋ฅผ ์ง์ ํ๊ณ , ํด๋น ๊ฒฝ๋ก์ ๋ฐ๋ผ ํจํท์ ์ ๋ฌ
- ์ ์ก ๋จ์๋ Datagram(Packet)์ด๋ค.
- ์ ์ก ๊ณ์ธต(Transport layer)
- ์ ๋๋จ(end to end)์ ์ฌ์ฉ์๋ค์ด ์ ๋ขฐ์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํด์ฃผ์ด, ์์ ๊ณ์ธต๋ค์ด ๋ฐ์ดํฐ ์ ๋ฌ์ ์ ํจ์ฑ์ด๋ ํจ์จ์ฑ์ ์๊ฐํ์ง ์๋๋ก ํด์ค๋ค.
- TCP(์ ๋ขฐ์ฑ, ์ฐ๊ฒฐ์งํฅ์ )์ UDP(๋น์ ๋ขฐ์ฑ, ๋น์ฐ๊ฒฐ์ฑ, ์ค์๊ฐ) ํ๋กํ ์ฝ์ ํตํด ํต์ ์ ํ์ฑํํ๋ค.
- ํฌํธ๋ฅผ ์ด์ด๋๊ณ , ํ๋ก๊ทธ๋จ๋ค์ด ์ ์ก์ ํ ์ ์๋๋ก ์ ๊ณต
- ์ ์ก ๋จ์๋ Segment์ด๋ค.
- ์ธ์
๊ณ์ธต(Session layer)
- ๋ฐ์ดํฐ๊ฐ ํต์ ํ๊ธฐ ์ํ ๋
ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ค.(API, Socket)
- ์ ๋๋จ์ ์์ฉ ํ๋ก์ธ์ค๊ฐ ํต์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- ๋์ ์ก์์ ๋ฐฉ์(duplex), ๋ฐ์ด์ค ๋ฐฉ์(half-duplex), ์ ์ด์ค ๋ฐฉ์(Full Duplex)์ ํต์ ๊ณผ ํจ๊ป ์ฒดํฌ ํฌ์ธํ
๊ณผ ์ข
๋ฃ, ๋ค์์์ ๊ณผ์ ๋ฑ์ ์ํํ๋ค.
- TCP/IP์ธ์
์ ๋ง๋ค๊ณ ์์ ๋ ์ญํ
- TCP/IP๋ ์ธํฐ๋ท ํ๋กํ ์ฝ ์ค ๊ฐ์ฅ ์ค์ํ ์ญํ ์ ํ๋ TCP์ IP์ ํฉ์ฑ์ด๋ก ๋ฐ์ดํฐ์ ํ๋ฆ ๊ด๋ฆฌ, ์ ํ์ฑ ํ์ธ, ํจํท์ ๋ชฉ์ ์ง ๋ณด์ฅ์ ๋ด๋นํ๋ค.
- ๋ฐ์ดํฐ์ ์ ํ์ฑ ํ์ธ์ TCP๊ฐ, ํจํท์ ๋ชฉ์ ์ง๊น์ง ์ ์กํ๋ ์ผ์ IP๊ฐ ๋ด๋นํ๋ค.
- ํํ ๊ณ์ธต(Presentation layer)
- ๋ฐ์ดํฐ ํํ์ ๋ํ ๋
๋ฆฝ์ฑ์ ์ ๊ณตํ๊ณ ์ํธํํ๋ ์ญํ ์ ๋ด๋น(JPEG, MPEG ๋ฑ)
- ์ฝ๋ ๊ฐ์ ๋ฒ์ญ์ ๋ด๋นํ์ฌ ์ฌ์ฉ์ ์์คํ
์์ ๋ฐ์ดํฐ์ ํ์์ ์ฐจ์ด๋ฅผ ๋ค๋ฃจ๋ ๋ถ๋ด์ ์์ฉ ๊ณ์ธต์ผ๋ก๋ถํฐ ๋์ด์ค๋ค.
- MIME ์ธ์ฝ๋ฉ์ด๋ ์ํธํ ๋ฑ์ ๋์์ด ์ด๋ฃจ์ด์ง๋ค.
- ์์ฉ ๊ณ์ธต(Application layer)
- ์์ฉ ํ๋ก์ธ์ค์ ์ง์ ๊ด๊ณํ์ฌ ์ผ๋ฐ์ ์ธ ์์ฉ ์๋น์ค๋ฅผ ์ํํ๋ค.(HTTP, FTP, DNS ๋ฑ)
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ์ ์์ฐํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๋ฑ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
๐ TCP์ UDP
๐ ๋คํธ์ํฌ ๊ณ์ธต ์ค ์ ์ก ๊ณ์ธต์์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ด๋ค.
๐ TCP
- ์ธํฐ๋ท ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ธ์ง์ ํํ(์ธ๊ทธ๋จผํธ๋ผ๋ ๋ธ๋ก ๋จ์)๋ก ๋ณด๋ด๊ธฐ ์ํด IP์ ํจ๊ป ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ด๋ค.
- TCP์ IP๋ฅผ ํจ๊ป ์ฌ์ฉํ๋๋ฐ, IP๊ฐ ๋ฐ์ดํฐ์ ๋ฐฐ๋ฌ์ ์ฒ๋ฆฌํ๋ค๋ฉด TCP๋ ํจํท์ ์ถ์ ๋ฐ ๊ด๋ฆฌํ๋ค.
๐ TCP์ ํน์ง
- ์ฐ๊ฒฐํ ์๋น์ค๋ก ๊ฐ์ ํ์ ๋ฐฉ์์ ์ ๊ณตํ๋ค.
- 3-way handshaking๊ณผ์ ์ ํตํด ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ 4-way handshaking์ ํตํด ํด์ ํ๋ค.(๋ฐ์์ ์์ธํ ์ค๋ช
)
- ํ๋ฆ ์ ์ด ๋ฐ ํผ์ก ์ ์ด๋ฅผ ์ ๊ณตํ๋ค.
- ํ๋ฆ ์ ์ด : ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ๋ ๊ณณ๊ณผ ์์ ํ๋ ๊ณณ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์กฐ์ ํ์ฌ ์์ ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ(์ ์ก์๋๋ฅผ ๋ค๋ฃธ)
- ์์ ์ธก์ด ์ก์ ์ธก๋ณด๋ค ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๋ฉด ๋ฌธ์ ์์ง๋ง, ์ก์ ์ธก์ ์๋๊ฐ ๋น ๋ฅผ ๊ฒฝ์ฐ ๋ฌธ์
- ์์ ์ธก์์ ์ ํ๋ ์ ์ฅ ์ฉ๋์ ์ด๊ณผํ ์ดํ์ ๋์ฐฉํ ๋ฐ์ดํฐ๋ ์์ค๋ ์ ์๋ค.
- ํด๊ฒฐ๋ฐฉ๋ฒ
- Stop and Wait : ๋งค๋ฒ ์ ์กํ ํจํท์ ๋ํด ํ์ธ ์๋ต์ ๋ฐ์์ผ๋ง ๊ทธ ๋ค์ ํจํท์ ์ ์กํ๋ ๋ฐฉ๋ฒ
- Sliding Window : ์์ ์ธก์์ ์ค์ ํ ์๋์ฐ ํฌ๊ธฐ๋งํผ ์ก์ ์ธก์์ ํ์ธ์๋ต์์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ์ ์๊ฒํ์ฌ ๋ฐ์ดํฐ ํ๋ฆ์ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ์ ์ด๊ธฐ๋ฒ
- ํผ์ก ์ ์ด : ๋คํธ์ํฌ ๋ด์ ํจํท ์๊ฐ ๋์น๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ๋ฐฉ์งํ๋ ๊ฒ(ํผ์ก ๋ถ๊ดด ํ์์ ๋ง์)
- ๋คํธ์ํฌ์ ํผ์ก์ ํผํ๊ธฐ ์ํด ์ก์ ์ธก์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ์ ์ก์๋๋ฅผ ๊ฐ์ ๋ก ์ค์ธ๋ค.
- ํด๊ฒฐ๋ฐฉ๋ฒ
- AIMD : ์ฒ์์ ํจํท์ ํ๋์ฉ ๋ณด๋ด๊ณ ์ด๊ฒ์ด ๋ฌธ์ ์์ด ๋์ฐฉํ๋ฉด window ํฌ๊ธฐ๋ฅผ 1์ฉ ์ฆ๊ฐ์์ผ๊ฐ๋ฉฐ ์ ์กํ๋ ๋ฐฉ๋ฒ(์คํจํ๋ฉด ํจํท์ ๋ณด๋ด๋ ์๋๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ธ๋ค.)
- Slow Start : AIMD ๋ฐฉ์์ ์ฒ์ ์ ์ก ์๋๋ฅผ ์ฌ๋ฆฌ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋จ์ ์ ๋ณด์ํ์ฌ ์ง์ ํจ์ ๊ผด๋ก ์ฆ๊ฐํ๋ค.
- Fast Retransmit, Fast Recovery
- ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ค.
- UDP๋ณด๋ค ์๋๊ฐ ๋๋ฆฌ๋ค.
- ์ ์ด์ค(Full-Duplex), ์ ๋์ (Point to Point) ๋ฐฉ์์ด๋ค.
- ์ ์ด์ค : ์ ์ก์ด ์๋ฐฉํฅ์ผ๋ก ๋์์ ์ผ์ด๋ ์ ์๋ค.
- ์ ๋์ : ๊ฐ ์ฐ๊ฒฐ์ด ์ ํํ 2๊ฐ์ ์ข
๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ฐ์์ฑ๋ณด๋ค ์ ๋ขฐ์ฑ์ด ์ค์ํ ์๋น์ค์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ
ex) ํ์ผ ์ ์ก
๐ UDP
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๊ทธ๋จ(๋
๋ฆฝ์ ์ธ ๊ด๊ณ๋ฅผ ์ง๋๋ ํจํท)๋จ์๋ก ์ฒ๋ฆฌํ๋ ํ๋กํ ์ฝ์ด๋ค.
- ์ ์ก ๊ณ์ธต์ด๋ค.
๐ UDP์ ํน์ง
- ๋น์ฐ๊ฒฐํ ์๋น์ค๋ก ๋ฐ์ดํฐ๊ทธ๋จ ๋ฐฉ์์ ์ ๊ณตํ๋ค.
- ๋
ผ๋ฆฌ์ ์ธ ๊ฒฝ๋ก๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ํจํท์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ ์ก๋๊ณ ๋
๋ฆฝ์ ์ธ ๊ด๊ณ๋ฅผ ์ง๋๊ฒ ๋๋ค.
- ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ ํธ ์ ์ฐจ๋ฅผ ๊ฑฐ์น์ง ์๋๋ค.
- UDPํค๋์ checksum ํ๋๋ฅผ ํตํด ์ต์ํ์ ์ค๋ฅ๋ง ๊ฒ์ถํ๋ค.
- ์ ๋ขฐ์ฑ์ด ๋ฎ๋ค.
- TCP๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด๋ค.
์ ๋ขฐ์ฑ๋ณด๋ค๋ ์ฐ์์ฑ์ด ์ค์ํ ์๋น์ค์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ
ex) ์ค์๊ฐ ์๋น์ค
๐ DNS(Domain Name Service)์์ UDP๋ฅผ ์ฌ์ฉํ๋ ์ด์
- DNS๋?
- TCP/IP ๋คํธ์ํฌ ์์์ ์ฌ๋์ด ๊ธฐ์ตํ๊ธฐ ์ฝ๊ฒ ๋ฌธ์๋ก ๋ง๋ค์ด์ง ๋๋ฉ์ธ์ ์ปดํจํฐ๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์ซ์๋ก ๋ ์ธํฐ๋ท ์ฃผ์(IP)๋ก ๋ฐ๊พธ๋ ์์คํ
- DNS๋ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ๊ฒฝ์ฐ์ธ๋ฐ TCP๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ ๋๊น์ง ์ธ์
ํ๋ฆฝ์ ์ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ , ์ก์ ํ ๋ฐ์ดํฐ๊ฐ ์์ ๋์๋์ง ์ ๊ฒํ๋ ๊ณผ์ ์ด ํ์ํ๋ฏ๋ก, Protocol overhead๊ฐ UDP์ ๋นํด์ ํฌ๋ค.
- DNS๋ ์์ฉ ๊ณ์ธต ํ๋กํ ์ฝ์ด๋ค.
- ๋ชจ๋ ์์ฉ ๊ณ์ธต ํ๋กํ ์ฝ์ TCP, UDP ์ค ํ๋์ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผํ๋ค.
- ์ด์
- DNS request๋ UDP segment์ ๋ค์ด๊ฐ ์ ๋๋ก ์๋ค.
- 3 way handshaking์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ ํ์๊ฐ ์๋ค.
- UDP๋ not reliable์ด์ง๋ง reliability๋ Timeout ์ถ๊ฐ๋, resend ์์
์ ํตํด ์์ฉ ๊ณ์ธต์ ์ถ๊ฐํ ์ ์๋ค.
- DNS๋ UDP๋ฅผ 53๋ฒ port์์ ์ฌ์ฉํ๋ค.
โก๏ธ ๋ง์ฝ ๋ฐ์ดํฐ๊ฐ 512 ๋ฐ์ดํธ๋ฅผ ๋๊ฑฐ๋ ์๋ต์ ๋ชป๋ฐ๋ ๊ฒฝ์ฐ TCP๋ก ํ๋ค.
๐ข TCP์ UDP ๋น๊ต
TCP์ UDP์ ์ฐจ์ด๋ฅผ ์์ธํ ์์๋ณด์
โ๏ธ TCP์ UDP๋ ์ ๋์ค๊ฒ ๋์๋๊ฐ?
- IP์ ์ญํ ์ Host to Host๋ง์ ์ง์ํ๋ค. ์ฅ์น์์ ์ฅ์น๋ก ์ด๋์ IP๋ก ํด๊ฒฐ๋์ง๋ง, ํ๋์ ์ฅ๋น์์์ ์๋ง์ ํ๋ก๊ทธ๋จ๋ค์ ํต์ ์ ํ ๊ฒฝ์ฐ์๋ IP๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์๋ค.
- IP์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ICMP์์ ์๋ ค์ฃผ๊ธฐ๋ง ํ ๋ฟ ๋์ฒํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ IP๋ณด๋ค ์์์ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค.
- ICMP : ์ธํฐ๋ท ์ ์ด ๋ฉ์์ง ํ๋กํ ์ฝ๋ก ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ์ก๋ฐ๋๋ฐ ์ฃผ๋ก ์ฐ์ธ๋ค.
โญ๏ธ ๋ฐ๋ผ์ 1๋ฒ์ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ํฌํธ ๋ฒํธ๊ฐ ๋์ค๊ฒ ๋์๊ณ , 2๋ฒ์ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ์์ ํ๋กํ ์ฝ์ธ TCP์ UDP๊ฐ ๋์ค๊ฒ ๋์๋ค.
โ๏ธ TCP์ UDP๊ฐ ์ด๋ป๊ฒ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋๊ฐ?
- TCP
- ๋ฐ์ดํฐ์ ๋ถ์ค, ์ค๋ณต, ์์๊ฐ ๋ค๋ฐ๋ ๋ฑ์ ์๋์ผ๋ก ๋ณด์ ํด์ค์ ์ก์์ ๋ฐ์ดํฐ์ ์ ํํ ์ ๋ฌ์ ํ ์ ์๋๋ก ํด์ค๋ค.
- UDP
- IP๊ฐ ์ ๊ณตํ๋ ์ ๋์ ์์ค๋ง์ ์ ๊ณตํ๋ ๊ฐ๋จํ IP์์ ๊ณ์ธต์ ํ๋กํ ์ฝ๋ก TCP์๋ ๋ค๋ฅด๊ฒ ์๋ฌ๊ฐ ๋ ์๋ ์๊ณ , ์ฌ์ ์ก์ด๋ ์์๊ฐ ๋ค๋ฐ๋ ์๋ ์์ด์ ์ด ๊ฒฝ์ฐ, ์ดํ๋ฆฌ์ผ์ด์
์์ ์ฒ๋ฆฌํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์กด์ฌํ๋ค.
TCP์ 3 way handshake์ 4 way handshake
๐ TCP๋ ์ฅ์น๋ค ์ฌ์ด์ ๋
ผ๋ฆฌ์ ์ธ ์ ์์ ์ฑ๋ฆฝํ๊ธฐ ์ํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํ์ฌ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ์ฐ๊ฒฐํ ์๋น์ค์ด๋ค.
๐ 3-way handshake๋?
- TCP ํต์ ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๊ณผ์ ์ด๋ค.
- ์์ชฝ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ค๋น๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ณด์ฅํ๊ณ , ์ค์ ๋ก ๋ฐ์ดํฐ ์ ๋ฌ์ด ์์ํ๊ธฐ ์ ์ ํ ์ชฝ์ด ๋ค๋ฅธ ์ชฝ์ด ์ค๋น๋์๋ค๋ ๊ฒ์ ์ ์ ์๋๋ก ํ๋ค.
- ์ฆ, TCP/IP ํ๋กํ ์ฝ์ ์ด์ฉํด์ ํต์ ์ ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ๋จผ์ ์ ํํ ์ ์ก์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋๋ฐฉ ์ปดํจํฐ์ ์ฌ์ ์ ์ธ์
์ ์๋ฆฝํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
- A ํ๋ก์ธ์ค(Client)๊ฐ B ํ๋ก์ธ์ค(Server)์ ์ฐ๊ฒฐ์ ์์ฒญ
- A -> B : SYN
- ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A๊ฐ ์๋ฒ ํ๋ก์ธ์ค B์๊ฒ ์ฐ๊ฒฐ ์์ฒญ ๋ฉ์์ง ์ ์ก(SYN)
- ์ก์ ์๊ฐ ์ต์ด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ Sequence Number๋ฅผ ์์์ ๋๋ค ์ซ์๋ก ์ง์ ํ๊ณ , SYN ํ๋๊ทธ ๋นํธ๋ฅผ 1๋ก ์ค์ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ๋ค.
- PORT ์ํ - B : LISTEN, A : CLOSED
- B -> A : SYN + ACK
- ์๋ฒ ํ๋ก์ธ์ค B๊ฐ SYN์ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A๋ก ๋ฐ์๋ค๋ ์ ํธ์ธ ACK์ ํฌํธ๋ฅผ ์ด์ด๋ฌ๋ผ๋ SYN ํจํท์ ์ ์ก
- ์์ ์๋ Acknowledgement Number ํ๋๋ฅผ (Sequence Number +1)๋ก ์ง์ ํ๊ณ , SYN๊ณผ ACK ํ๋๊ทธ ๋นํธ๋ฅผ 1๋ก ์ค์ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ๋ค.
- PORT ์ํ - B : SYN_RCV, A : CLOSED
- A -> B : ACK
- PORT ์ํ - B ; SYN_RCV, A : ESTABLISHED
- ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A๋ ์๋ฒ ํ๋ก์ธ์ค B์ ์๋ต์ธ ACK์ SYN ํจํท์ ๋ฐ๊ณ , ์๋ฝ ํ์ธ ์ ํธ์ธ ACK๋ฅผ ์๋ฒ ํ๋ก์ธ์ค B๋ก ๋ณด๋ธ๋ค.
- ์ด๋, ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ด ๋จ๊ณ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
- PORT ์ํ - B : ESTABLISHED, A : ESTABLISHED
โญ๏ธ ์ด๋ ๊ฒ ์ด 3๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋๋ค.
๐ 4-way handshake๋?
- TCP์ ์ฐ๊ฒฐ์ ํด์ ํ๋ ๊ณผ์
- A ํ๋ก์ธ์ค(Client)๊ฐ B ํ๋ก์ธ์ค(Server)์ ์ฐ๊ฒฐ ํด์ ๋ฅผ ์์ฒญ
- A -> B : FIN
- ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A๊ฐ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฒ ๋ค๋ FIN ํ๋๊ทธ๋ฅผ ์ ์ก
- ์๋ฒ ํ๋ก์ธ์ค B๊ฐ FIN ํ๋๊ทธ๋ก ์๋ตํ๊ธฐ ์ ๊น์ง ์ฐ๊ฒฐ์ ๊ณ์ ์ ์ง
- B -> A : ACK
- ์๋ฒ ํ๋ก์ธ์ค B๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A๋ก ๋ณด๋ด๊ณ ์์ ์ ํต์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. (์ด ์ํ๊ฐ TIME_WAIT ์ํ)
- ์์ ์๋ Acknowledgement Number ํ๋๋ฅผ (Sequence Number + 1)๋ก ์ง์ ํ๊ณ , ACK ํ๋๊ทธ ๋นํธ๋ฅผ 1๋ก ์ค์ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์์ ์ด ์ ์กํ ๋ฐ์ดํฐ๊ฐ ๋จ์์๋ค๋ฉด ์ด์ด์ ๊ณ์ ์ ์กํ๋ค.
- B -> A : FIN
- ์๋ฒ ํ๋ก์ธ์ค B๊ฐ ํต์ ์ด ๋๋ฌ์ผ๋ฉด(๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋๋ค๋ฉด) ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์๋ค๋ ์๋ฏธ๋ก ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A์๊ฒ FIN ํ๋๊ทธ๋ฅผ ์ ์ก
- A -> B : ACK
- ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค A๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ์๋ฒ ํ๋ก์ธ์ค B์ ์ ์ก
- ์์ง ์๋ฒ๋ก๋ถํฐ ๋ฐ์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก TIME_WAIT์ ํตํด ๊ธฐ๋ค๋ฆฐ๋ค.
- ์๋ฒ B๋ ACK๋ฅผ ๋ฐ์ ์ดํ ์์ผ์ ๋ซ๋๋ค.(CLOSED)
- TIME_WAIT ์๊ฐ์ด ๋๋๋ฉด ํด๋ผ์ด์ธํธ A๋ ๋ซ๋๋ค.(CLOSED)
โญ๏ธ ์ด๋ ๊ฒ ์ด 4๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.
โก ์ฐธ๊ณ - ํฌํธ(PORT) ์ํ ์ ๋ณด
- CLOSED: ํฌํธ๊ฐ ๋ซํ ์ํ
- LISTEN: ํฌํธ๊ฐ ์ด๋ฆฐ ์ํ๋ก ์ฐ๊ฒฐ ์์ฒญ ๋๊ธฐ ์ค
- SYN_RCV: SYNC ์์ฒญ์ ๋ฐ๊ณ ์๋๋ฐฉ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ค
- ESTABLISHED: ํฌํธ ์ฐ๊ฒฐ ์ํ
โก ์ฐธ๊ณ - ํ๋๊ทธ ์ ๋ณด
- TCP Header์๋ CONTROL BIT(ํ๋๊ทธ ๋นํธ, 6bit)๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ๊ฐ์ bit๋ "URG-ACK-PSH-RST-SYN-FIN"์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
- ์ฆ, ํด๋น ์์น์ bit๊ฐ 1์ด๋ฉด ํด๋น ํจํท์ด ์ด๋ ํ ๋ด์ฉ์ ๋ด๊ณ ์๋ ํจํท์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
- SYN(Synchronize Sequence Number) / 000010
- ์ฐ๊ฒฐ ์ค์ . Sequence Number๋ฅผ ๋๋ค์ผ๋ก ์ค์ ํ์ฌ ์ธ์
์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ๋ฉฐ, ์ด๊ธฐ์ Sequence Number๋ฅผ ์ ์กํ๋ค.
- ACK(Acknowledgement) / 010000
- ์๋ต ํ์ธ. ํจํท์ ๋ฐ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- Acknowledgement Number ํ๋๊ฐ ์ ํจํ์ง๋ฅผ ๋ํ๋ธ๋ค.
- ์๋จ ํ๋ก์ธ์ค๊ฐ ์ฌ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ต์ด ์ฐ๊ฒฐ ์ค์ ๊ณผ์ ์์ ์ ์ก๋๋ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ธํ ๋ชจ๋ ์ธ๊ทธ๋จผํธ์ ACK ๋นํธ๋ 1๋ก ์ง์ ๋๋ค๊ณ ์๊ฐํ ์ ์๋ค.
- FIN(Finish) / 000001
- ์ฐ๊ฒฐ ํด์ . ์ธ์
์ฐ๊ฒฐ์ ์ข
๋ฃ์ํฌ ๋ ์ฌ์ฉ๋๋ฉฐ, ๋ ์ด์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ฏธํ๋ค.
๐ฅ TCP ๊ด๋ จ ์ง๋ฌธ 1
- Q. TCP์ ์ฐ๊ฒฐ ์ค์ ๊ณผ์ (3๋จ๊ณ)๊ณผ ์ฐ๊ฒฐ ์ข
๋ฃ ๊ณผ์ (4๋จ๊ณ)์ด ๋จ๊ณ๊ฐ ์ฐจ์ด๋๋ ์ด์ ?
- A. Client๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ๋ง์ณค๋ค๊ณ ํ๋๋ผ๋ Server๋ ์์ง ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ๋จ์์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋จ FIN์ ๋ํ ACK๋ง ๋ณด๋ด๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ ์กํ ํ์ ์์ ๋ FIN ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ด๋ จ Reference
๐ ๋์นญํค์ ๊ณต๊ฐํค
๐ ๋์นญํค(Symmetric Key)
์ํธํ์ ๋ณตํธํ์ ๊ฐ์ ์ํธํค(๋์นญํค)๋ฅผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋์ผํ ํค๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์, ๋งค์ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
- ๊ทธ๋ฌ๋ ๋์นญํค ์ ๋ฌ๊ณผ์ ์์ ํดํน ์ํ์ ๋
ธ์ถ๋๋ค.
๐ ๊ณต๊ฐํค(Public Key)
์ํธํ์ ๋ณตํธํ์ ์ฌ์ฉํ๋ ์ํธํค๋ฅผ ๋ถ๋ฆฌํ ์๊ณ ๋ฆฌ์ฆ
- ์์ ์ด ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ์ํธํค(๋น๋ฐํค)๋ก๋ง ๋ณตํธํํ ์ ์๋ ์ํธํค(๊ณต๊ฐํค)๋ฅผ ๋์ค์ ๊ณต๊ฐํ๋ค.
๐ ๊ณต๊ฐํค ์ํธํ ๋ฐฉ์ ๊ณผ์
- A๊ฐ ์น ์์ ๊ณต๊ฐ๋ 'B์ ๊ณต๊ฐํค'๋ฅผ ์ด์ฉํด ํ๋ฌธ์ ์ํธํํ์ฌ B์๊ฒ ๋ณด๋
- B๋ ์์ ์ ๋น๋ฐํค๋ก ๋ณตํธํํ ํ๋ฌธ์ ํ์ธ, A์ ๊ณต๊ฐํค๋ก ์๋ต์ ์ํธํํ์ฌ A์๊ฒ ๋ณด๋
- A๋ ์์ ์ ๋น๋ฐํค๋ก ์ํธํ๋ ์๋ต๋ฌธ์ ๋ณตํธํํจ
๐ HTTP์ HTTPS
๐ HTTP ํ๋กํ ์ฝ
- HyperText Transfer Protocol
- ์น ์์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ/์๋ต์ผ๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ
๐ HTTP์ ํน์ง
- ์ฃผ๋ก HTML ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ ์ฐ์ธ๋ค.
- TCP์ UDP๋ฅผ ์ฌ์ฉํ๋ฉฐ, 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
- ๋น์ฐ๊ฒฐ(Connectionless) : ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์๋ฒ์ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ์ ์ ํ ์๋ต์ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด๋ฉด ๋ฐ๋ก ์ฐ๊ฒฐ์ด ๋๊ธด๋ค.
- ๋ฌด์ํ(Stateless) : ์ฐ๊ฒฐ์ ๋๋ ์๊ฐ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ํต์ ์ ๋๋๋ฉฐ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ์ง ์๋๋ค.
๐ HTTPS ํ๋กํ ์ฝ
- HyperText Transfer Protocol over Secure Socket Layer
- ๋๋ HTTP over TLS, HTTP over SSL, HTTP Secure
- ์ธํฐ๋ท ์์์ ์ ๋ณด๋ฅผ ์ํธํํ๋ SSL ํ๋กํ ์ฝ์ ์ฌ์ฉ(๊ณต๊ฐํค ์ํธํ ๋ฐฉ์)
- ์น ํต์ ํ๋กํ ์ฝ์ธ HTTP์ ๋ณด์์ด ๊ฐํ๋ ๋ฒ์ ์ ํ๋กํ ์ฝ(HTTP๋ ํ
์คํธ ๊ตํ์ด๋ฏ๋ก, ๋๊ตฐ๊ฐ ๋คํธ์ํฌ์์ ์ ํธ๋ฅผ ๊ฐ๋ก์ฑ๋ฉด ๋ด์ฉ์ด ๋
ธ์ถ๋๋ค.)
๐ HTTPS์ ํน์ง
- HTTPS์ ๊ธฐ๋ณธ TCP/IP ํฌํธ๋ก 443๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
- HTTPS๋ ์์ผ ํต์ ์์ ์ผ๋ฐ ํ
์คํธ๋ฅผ ์ด์ฉํ๋ ๋์ ์, ์น ์์์ ์ ๋ณด๋ฅผ ์ํธํํ๋ SSL์ด๋ TLS ํ๋กํ ์ฝ์ ํตํด ์ธ์
๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ค.
- ๋ ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ฑ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ฌ์ฉํ ์ธ์ฆ์ ์ ๊ณต
- ์ ์ ํ ๋ณดํธ๋ฅผ ๋ณด์ฅํ๋ค.(์ค๊ฐ์์ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ค.)
๊ธ์ต์ ๋ณด๋ ๋ฉ์ผ ๋ฑ ์ค์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ HTTPS๋ฅผ, ์๋ฌด๋ ๋ด๋ ์๊ด ์๋ ํ์ด์ง๋ HTTP๋ฅผ ์ฌ์ฉํ๋ค.
โก HTTPS์ ์๋ฆฌ
- ๊ณต๊ฐํค ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์
- ์ํธํ, ๋ณตํธํ์ํฌ ์ ์๋ ์๋ก ๋ค๋ฅธ ํค(๊ณต๊ฐํค, ๊ฐ์ธํค)๋ฅผ ์ด์ฉํ ์ํธํ ๋ฐฉ๋ฒ
- ๊ณต๊ฐํค: ๋ชจ๋์๊ฒ ๊ณต๊ฐ. ๊ณต์บํค ์ ์ฅ์์ ๋ฑ๋ก
- ๊ฐ์ธํค(๋น๊ณต๊ฐํค): ๊ฐ์ธ์๊ฒ๋ง ๊ณต๊ฐ. ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ์์๋ ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋น๊ณต๊ฐํค
- ํด๋ผ์ด์ธํธ -> ์๋ฒ
- ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ๊ณต๊ฐํค๋ก ์ํธํ (๊ณต๊ฐํค๋ฅผ ์ป์ ์ธ์ฆ๋ ์ฌ์ฉ์)
- ์๋ฒ๋ก ์ ์ก (๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก์ฑ๋ ๊ฐ์ธํค๊ฐ ์์ผ๋ฏ๋ก ๋ณตํธํํ ์ ์์)
- ์๋ฒ์ ๊ฐ์ธํค๋ฅผ ํตํด ๋ณตํธํํ์ฌ ์์ฒญ ์ฒ๋ฆฌ
๐ HTTPS์ ์ฅ๋จ์
- ์ฅ์
- ๋คํธ์ํฌ ์์์ ์ด๋, ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์์ ํ๋ค.
- ๋จ์
- ์ํธํ๋ฅผ ํ๋ ๊ณผ์ ์ด ์น ์๋ฒ์ ๋ถํ๋ฅผ ์ค๋ค.
- HTTPS๋ ์ค์น ๋ฐ ์ธ์ฆ์๋ฅผ ์ ์งํ๋๋ฐ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
- HTTP์ ๋นํด ๋๋ฆฌ๋ค.
๐ GET ๋ฉ์๋์ POST ๋ฉ์๋
๐ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํด์ ์๋ฒ์ ๋ฐ์ดํฐ(์์ฒญ ์ ๋ณด)๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์
๐ GET ๋ฉ์๋
- ์ ๋ณด๋ฅผ ์กฐํํ๊ธฐ ์ํ ๋ฉ์๋
- ๊ฐ์ ธ์ค๋ ๊ฒ(Select)
๐ ํน์ง
- URL์ ์์ฒญ ์ ๋ณด๋ฅผ ๋ถ์ฌ์ ์ ์กํ๋ค.
- URL์ ๋์ '?'๊ฐ ๋ถ๊ณ , ์์ฒญ ์ ๋ณด๊ฐ ํด์ฌ ํํ์ ์์ ์ด๋ฃฌ๋ค.
- ์์ฒญ ์ ๋ณด๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ์๋ '&'๋ก ๊ตฌ๋ถํ๋ค.
ex) www.urladdress.xyz?name1=value1&name2=value2
- Body๋ ๋น์ด์๋ ์ํ๋ก ์ ์กํ๊ณ ๊ธธ์ด ์ ํ์ด ์์ด์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ด๋ ต๋ค.
- ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ๋์ผ๋ก ํ์ธํ ์ ์๋ค.
- POST ๋ฐฉ์๋ณด๋ค ๋น ๋ฅด๋ค.
- ๊ทธ๋ฌ๋, POST ๋ฐฉ์๋ณด๋ค ๋ณด์์ ์ทจ์ฝํจ
๐ POST ๋ฉ์๋
- ์๋ฒ์ ๊ฐ์ด๋ ์ํ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํ ์ฉ๋์ ๋ฉ์๋
- ์ํํ๋ ๊ฒ(Insert, Update, Delete)
๐ ํน์ง
- Body ์์ ์จ๊ฒจ์ ์์ฒญ ์ ๋ณด๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ์ ์ ํฉํ๋ค.
- ํด๋ผ์ด์ธํธ ์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ์ฌ ์๋ฒ๋ก ์ ์กํ๊ณ , ์ด๋ฅผ ๋ฐ์ ์๋ฒ ์ชฝ์ด ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋์ฝ๋ฉํ๋ค.
- GET ๋ฐฉ์๋ณด๋ค ๋ณด์์ ์์ ํ๋ค.
๐ ์ฟ ํค์ ์ธ์
๐ข ์ฟ ํค์ ์ธ์
์ ํ์์ฑ
- HTTP ํ๋กํ ์ฝ์ ๋น์ฐ๊ฒฐ ์งํฅ(Connectionless)๊ณผ ์ํ์ ๋ณด๋ฅผ ์ ์งํ์ง ์๋(Stateless) ํน์ง๋๋ฌธ์ ๋ชจ๋ ์์ฒญ ๊ฐ ์์กด๊ด๊ณ๊ฐ ์๋ค.
- ์ฆ, ํ์ฌ ์ ์ํ ์ฌ์ฉ์๊ฐ ์ด์ ์ ์ ์ํ๋ ์ฌ์ฉ์์ ๊ฐ์ ์ฌ์ฉ์์ธ์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ๊ณ์ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค ๋ญ๋น๊ฐ ์ค์ด๋๋ ๊ฒ์ด ํฐ ์ฅ์ ์ด์ง๋ง, ํต์ ํ ๋๋ง๋ค ์๋ก ์ฐ๊ฒฐํด์ผํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๋ ๋งค ์์ฒญ๋ง๋ค ์ธ์ฆํด์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ค.
- ๊ทธ๋์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๊ธฐ์ ๋ก
์ฟ ํค์ ์ธ์
์ด ์๋ค.
๐ ์ฟ ํค(Cookie)๋?
- ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์ ์ฅ๋๋ ํค์ ๊ฐ์ด ๋ค์ด์๋ ํ์ผ์ด๋ค.
- ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด(
์ด๋ฆ, ๊ฐ, ๊ฒฝ๋ก ๋ฑ
)๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ์ฌ ์ฐธ์กฐํ๋ค.
- ๐ ๊ตฌ์ฑ์์ : ์ด๋ฆ(name), ๊ฐ(value), ๋ง๋ฃ์๊ฐ(Expires), ๋๋ฉ์ธ(Domain), ๊ฒฝ๋ก(Path), ๋ณด์ ์ฌ๋ถ(Secure) ๋ฑ
๐ ๋์ ๋ฐฉ์
- ์น๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์์ฒญ
- ์ํ๋ฅผ ์ ์งํ๊ณ ์ถ์ ๊ฐ์ ์ฟ ํค(cookie)๋ก ์์ฑ
- ์๋ฒ๊ฐ ์๋ตํ ๋ HTTP ํค๋(Set-Cookie)์ ์ฟ ํค๋ฅผ ํฌํจํด์ ์ ์ก
SetโCookie: id=doy
- ์ ๋ฌ๋ฐ์ ์ฟ ํค๋ ์น๋ธ๋ผ์ฐ์ ์์ ๊ด๋ฆฌํ๊ณ ์๋ค๊ฐ, ๋ค์ ์์ฒญ ๋ ์ฟ ํค๋ฅผ HTTP ํค๋์ ๋ฃ์ด์ ์ ์ก
cookie: id=doy
- ์๋ฒ์์๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์ฝ์ด ์ด์ ์ํ ์ ๋ณด๋ฅผ ํ์ธํ ํ ์๋ต
- ์ฟ ํค ์ฌ์ฉ ์
- ์์ด๋, ๋น๋ฐ๋ฒํธ ์ ์ฅ
- ์ผํ๋ชฐ ์ฅ๋ฐ๊ตฌ๋
๐ ์ธ์
(Session)์ด๋?
- ์ผ์ ์๊ฐ ๋์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ํ๋์ ์ํ๋ก ๋ณด๊ณ ๊ทธ ์ํ๋ฅผ ์ ์งํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฆ, ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์๋ฒ์ ์ ์ํ ์ดํ๋ถํฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํ ๋๊น์ง ์ ์ง๋๋ ์ํ์ด๋ค.
๐ ๋์ ๋ฐฉ์
- ์น๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์์ฒญ
- ์๋ฒ๊ฐ ํด๋น ์น๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)์ ์ ์ผํ ID(Session ID)๋ฅผ ๋ถ์ฌํจ
- ์๋ฒ๊ฐ ์๋ตํ ๋ HTTP ํค๋(Set-Cookie)์ Session ID๋ฅผ ํฌํจํด์ ์ ์ก,
์ฟ ํค์ Session ID๋ฅผ JSESSIONID ๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅ
SetโCookie: JSESSIONID=xslei13f
- ์น๋ธ๋ผ์ฐ์ ๋ ์ดํ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ธฐ๊น์ง ๋ค์ ์์ฒญ ๋ ๋ถ์ฌ๋ Session ID๊ฐ ๋ด๊ฒจ์๋ ์ฟ ํค๋ฅผ HTTP ํค๋์ ๋ฃ์ด์ ์ ์ก
Cookie: JSESSIONID=xslei13f
- ์๋ฒ๋ ์ธ์
ID๋ฅผ ํ์ธํ๊ณ , ํด๋น ์ธ์
์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ํ์ธํ ํ ์๋ต
์ธ์
๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ค.
์ฆ, ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ์๋จ์ ์ฟ ํค ์ด๋ค.
๐ข ์ฟ ํค์ ์ธ์
์ ์ฐจ์ด์
- ์ ์ฅ ์์น
- ์ฟ ํค : ํด๋ผ์ด์ธํธ
- ์ธ์
: ์๋ฒ
- ๋ณด์
- ์ฟ ํค : ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋ฏ๋ก ๋ณด์์ ์ทจ์ฝํ๋ค.
- ์ธ์
: ์ฟ ํค๋ฅผ ์ด์ฉํด Session ID๋ง ์ ์ฅํ๊ณ ์ด ๊ฐ์ผ๋ก ๊ตฌ๋ถํด์ ์๋ฒ์์ ์ฒ๋ฆฌํ๋ฏ๋ก ๋น๊ต์ ๋ณด์์ฑ์ด ์ข๋ค.
- ๋ผ์ดํ์ฌ์ดํด
- ์ฟ ํค : ๋ง๋ฃ์๊ฐ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํด๋ ๊ณ์ํด์ ๋จ์ ์์ ์ ์๋ค.
- ์ธ์
: ๋ง๋ฃ์๊ฐ์ ์ ํ ์ ์์ง๋ง ๋ธ๋ผ์ฐ์ ๊ฐ ์ข
๋ฃ๋๋ฉด ๋ง๋ฃ์๊ฐ์ ์๊ด์์ด ์ญ์ ๋๋ค.
- ์๋
- ์ฟ ํค : ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋์ด์ ์๋ฒ์ ์์ฒญ ์ ๋น ๋ฅด๋ค.
- ์ธ์
: ์ค์ ์ ์ฅ๋ ์ ๋ณด๊ฐ ์๋ฒ์ ์์ผ๋ฏ๋ก ์๋ฒ์ ์ฒ๋ฆฌ๊ฐ ํ์ํด ์ฟ ํค๋ณด๋ค ๋๋ฆฌ๋ค.
๐ DNS
๐ REST์ RESTful์ ๊ฐ๋
๐ REST๋
- REST์ ์ ์
- ์๋ ์์ด๋ ์น(www)๊ณผ ๊ฐ์ ๋ถ์ฐ ํ์ดํผ ๋ฏธ๋์ด ์์คํ
์ ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํคํ
์ฒ์ ํ์
- ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ๊ธฐ์กด ๊ธฐ์ ๊ณผ HTTP ํํ ์ฝ์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ค.
- ๊ตฌ์ ์ฒ์ธ ๊ฐ๋
- HTTP URI๋ฅผ ํตํด ์์์ ๋ช
์ํ๊ณ HTTP Method(POST, GET, PUT, DELETE)๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD๋ฅผ ์ ์ฉํ๋ ๊ฒ
- ์ฅ๋จ์
- ์ฅ์
- ์ฌ๋ฌ ๊ฐ์ง ์๋น์ค ๋์์ธ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํ
- API์ ๊ธฐ๋ณธ์ ์ถฉ์คํ ์งํค๋ฉด์ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅ
- ๋จ์
- ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ
์คํธํ ์ผ์ด ๋ง์ ์๋น์ค๋ฉด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ URL๋ณด๋ค ๋ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ค.
- ๊ตฌํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ๋๋ก ์ง์ํด์ฃผ์ง ๋ชปํ๋ค.
- ํ์ํ ์ด์
- ์ ํ๋ฆฌ์ผ์ด์
๋ถ๋ฆฌ ๋ฐ ํตํฉ
- ๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋ฑ์ฅ
- ์ฆ, ์ต๊ทผ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์๋๋ก์ด๋ํฐ, ์์ดํฐ๊ณผ ๊ฐ์ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์์๋ ํต์ ํ ์ ์์ด์ผ ํ๋ค.
- ๊ตฌ์ฑ์์
- ์์(Resource) : URI
- ๋ชจ๋ ์์์ ๊ณ ์ ํ ID๊ฐ ์กด์ฌํ๊ณ , ์ด ์์์ Server์ ์กด์ฌํ๋ค.
- ID๋ '/groups/:group_id'์ ๊ฐ์ HTTP URI์ด๋ค.
- ํ์(Verb) : HTTP Method
- HTTP ํ๋กํ ์ฝ์ Method๋ฅผ ์ฌ์ฉํ๋ค.
- HTTP ํ๋กํ ์ฝ์ GET, POST, PUT, DELETE, HEAD์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
- ํํ
- Client๋ URI๋ฅผ ์ด์ฉํด ์์์ ์ง์ ํ๊ณ ํด๋น ์์์ ์ํ์ ๋ํ ์กฐ์์ ์์ฒญํ๋ฉด Server๋ ์ด์ ์ ์ ํ ์๋ต์ ๋ณด๋ธ๋ค.
- REST์์ ํ๋์ ์์์ JSON, NML, TEST, RSS ๋ฑ ์ฌ๋ฌ ํํ์ ์๋ต์ผ๋ก ๋ํ๋ด์ด์ง๋ค.
- ์ผ๋ฐ์ ์ผ๋ก JSON์ด๋ XML์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ํน์ง
- Server-Client(์๋ฒ - ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ)
- Stateless(๋ฌด์ํ)
- Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- Layered System(๊ณ์ธตํ)
- Code-On-Demand
- Uniform Interface(์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
๐ REST API
- REST API์ ์ ์ : REST ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ ๊ฒ
- ํน์ง
- ์ฌ๋ด ์์คํ
๋ค์ REST ๊ธฐ๋ฐ์ผ๋ก ์์คํ
์ ๋ถ์ฐํด ์ ์ง๋ณด์ ๋ฐ ์ด์ฉ์ ํธํ๊ฒ ํ ์ ์๋ค.
- REST๋ HTTP ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ฏ๋ก ,HTTP๋ฅผ ์ง์ํ๋ ํ๋ก๊ทธ๋จ ์ธ์ด๋ก ํด๋ผ์ด์ธํธ, ์๋ฒ๋ฅผ ๊ตฌํํ ์ ์๋ค.
- ์ค๊ณ ๊ท์น
- URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค.
- ๋ช
์ฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ด ์๋ฌธ์ ๋ณต์ํ์ ์ฌ์ฉํ๋ค.
- ex)
GET /members/1
- ์์์ ๋ํ ํ์๋ HTTP Method(GET, PUT, POST, DELETE ๋ฑ)๋ก ํํํ๋ค.
- ์ฌ๋์ ๊ตฌ๋ถ์(/)๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
- ex)
http://restapi.example.com/houses/apartments
- URI ๋ง์ง๋ง ๋ฌธ์๋ก ์ฌ๋์(/)๋ฅผ ํฌํจํ์ง ์๋๋ค.
- ๊ธด URI์
ฉ๋ก๋ฅผ ์ฌ์ฉํด์ผํ๋ฉด ํ์ดํ(-)์ ์ด์ฉํด ๊ฐ๋
์ฑ์ ๋์ธ๋ค.
- ๋ฐ์ค(_)์ URI์ ์ฌ์ฉํ์ง ์๋๋ค.
- URI ๊ฒฝ๋ก์๋ ์๋ฌธ์๊ฐ ์ ํฉํ๋ค.
- ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค.
- Accept header๋ฅผ ์ฌ์ฉํ๋ค.
- ex)
http://restapi.example.com/members/soccer/345/photo.jpg (x)
- ex)
GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg (o)
๐ RESTful
- RESTful์ ๊ฐ๋
- ์ผ๋ฐ์ ์ผ๋ก REST๋ผ๋ ์ํคํ
์ฒ๋ฅผ ๊ตฌํํ๋ ์น ์๋น์ค๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ฉ์ด
- ์ฆ, REST ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ์์คํ
์ RESTful์ด๋ ์ฉ์ด๋ก ์ง์นญ๋๋ค.
- ๊ณต์์ ์ผ๋ก ๋ฐํํ ๊ฒ์ ์๋๋ค.(์๋ฌต์ )
- ๋ชฉ์
- ์ดํดํ๊ธฐ ์ฝ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด REST API๋ฅผ ๋ง๋๋ ๊ฒ
- ์ฑ๋ฅ ํฅ์์ ํฌ์ปค์ค๊ฐ ์๋ ๊ฒ์ด ์๋๋ผ, ์ดํด๋ ๋ฐ ํธํ์ฑ์ ๋์ฌ์ฃผ๋๊ฒ ๋ชฉ์ ์ด๋ฏ๋ก, ์ฑ๋ฅ์ด ์ค์ํ ์ํฉ์์๋ ๊ตณ์ด RESTful API๋ฅผ ๊ตฌํํ ํ์๋ ์๋ค.
๐ Socket.io์ WebSocket์ ์ฐจ์ด
๐ WebSocket
- ๊ฐ๋
: ์น ํ์ด์ง์ ํ๊ณ์์ ๋ฒ์ด๋ ์ค์๊ฐ์ผ๋ก ์ํธ์์ฉํ๋ ์น ์๋น์ค๋ฅผ ๋ง๋๋ ํ์ค ๊ธฐ์
- ๋ฐฐ๊ฒฝ
- ์ค์๊ฐ ์น์ ๊ตฌํํ๊ธฐ ์ํด์๋ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํด์ผํ๋๋ฐ HTTP ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก์ ๋จ๋ฐฉํฅ ํต์ ์ ์ํด ๋ง๋ค์ด์ง ๋ฐฉ๋ฒ์ด๋ค.
- ์๋ฐฉํฅ ํต์ ์ ๊ตฌํํ ๋๋ Polling, Streaming ๋ฐฉ์์ ์ฝ๋๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ค.
- ํ์ง๋ง ์ด ๋ฐฉ๋ฒ๋ค์ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ตฌํ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ ๊ฐ๋ฐ์ด ์ด๋ ต๋ค๋ ๋ฌธ์ ์ ์ด ์์๋๋ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง๊ฒ ๋์๋ค.
- ํน์ง
- ์์ผ์ ์ด์ฉํด ์์ ๋กญ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
- HTTP์ ๋ง์ฐฌ๊ฐ์ง๋ก 80ํฌํธ๋ฅผ ํตํด ์น ์๋ฒ์ ์ฐ๊ฒฐํ๋ค.
- http:// ๋์ ws://๋ก ์์ํ๋ค.
- ์น ์๋ฒ๋ WebSocket ๊ธฐ๋ฅ์ ์ง์ํด์ผ ํ๋ค.(Node.js, Jetty ๋ฑ)
- ํ๋กํ ์ฝ์ด ํ์ ๋ ์ํ๊ฐ ์๋์ฌ์ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ง์ํ๋ WebSocket ๋ฒ์ ์ด ๋ค๋ฅด๋ค.
- ์ฆ,
๋ฏธ๋์ ๊ธฐ์ ์ด์ง ์์ง ์ธํฐ๋ท ๊ธฐ์
์์ ์๋ฒ์ ์ผ๋ก๋ผ๋ ์จ ๋ณผ ์ ์๋ ๊ธฐ์ ์ด ์๋๋ค.(???)
- ์ฅ์
- HTTP Request๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก ๊ธฐ์กด์ 80, 443 ํฌํธ๋ก ์ ์ํ์ฌ ์ถ๊ฐ๋ก ๋ฐฉํ๋ฒฝ์ ์ด์ง ์๊ณ ๋ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
- HTTP ๊ท๊ฒฉ์ธ CORS ์ ์ฉ์ด๋ ์ธ์ฆ ๋ฑ์ ๊ธฐ์กด๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉ
๐ Socket.io
- ๊ฐ๋
- WebSocket, AJAX Long Polling, Streaming ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ์ ํ๋์ API๋ก ์ถ์ํํ ๊ฒ์ด๋ค.
- ์ฆ, JavaScript๋ฅผ ์ด์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ข
๋ฅ์ ์๊ด์์ด ์ค์๊ฐ ์น์ ๊ตฌํํ ์ ์๋ค.
- ํน์ง
- ํ์ฌ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ธฐ์ ์ด๋ค.(
WebSocket๋ ๋ฏธ๋์ ๊ธฐ์ )
- WebSocket์ ์ง์ํ๋ ์ฌ๋ฌ ์๋ฒ ๊ตฌํ์ฒด๊ฐ ๋ง์ง๋ง Socket.io๋ Node.js ํ๋ ๋ฐ์ ์๋ค.
- ์ฅ์
- Socket.io๋ก ๊ฐ๋ฐํ์ฌ ํด๋ผ์ด์ธํธ๋ก ํธ์ฌํ๋ฉด WebSocket์ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ด๋ถ์ ์ผ๋ก ํธ์ฌ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ค๋ค.
- ์ฆ, WebSocket์ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ผ๋ ํธ์ฌ ๋ฉ์์ง๋ฅผ ์ผ๊ด๋ ๋ชจ๋๋ก ๋ณด๋ผ ์ ์๋ค.
๐ ๋ก๋๋ฐธ๋ฐ์ฑ
์์ฆ ์๋์ ์น์ฌ์ดํธ์ ์ ์ํ๋ ์ธ์์ด ๊ธ๊ฒฉํ ๋์ด๋๊ฒ ๋์ด์ ๋ชจ๋ ํธ๋ํฝ์ ๊ฐ๋นํ๊ธฐ์ 1๋์ ์๋ฒ๋ก ๋ถ์กฑํ๋ค. ๋ฐ๋ผ์ ํ๋์จ์ด์ ์ฑ๋ฅ์ ์ฌ๋ฆฌ๊ฑฐ๋(Scale-up) ์ฌ๋ฌ๋์ ์๋ฒ๊ฐ ๋๋ ์ ์ผํด์ผํ๋๋ฐ(Scale-out) Scale-out๋ฐฉ์์ด ํจ๊ณผ์ ์ด๋ค. ์ด ๋ ์ฌ๋ฌ ์๋ฒ์๊ฒ ๊ท ๋ฑํ๊ฒ ํธ๋ํฝ์ ๋ถ์ฐ์์ผ์ฃผ๋ ๊ฒ์ด ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด๋ค.
- ๋ถ์ฐ์ ์น ์๋น์ค๋ก, Load Balancer๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋๊ณ , ๋ถํ๊ฐ ์ผ์ด๋์ง ์๋๋ก ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ์์ผ์ฃผ๋ ๋ฐฉ์์ด๋ค.
๐ ์๋ฒ ์ ํ ๋ฐฉ์
- ๋ผ์ด๋ ๋ก๋น : CPU ์ค์ผ์ค๋ง์ ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์
- ๋ผ์ด๋ ๋ก๋น์ด๋? : ์ฐ์ ์์๋ฅผ ๋์ง ์๊ณ ์์๋๋ก ์ฆ, ์๊ฐ๋จ์๋ก ํ ๋นํ๋ ๋ฐฉ์
- Least Connections : ์ฐ๊ฒฐ ๊ฐ์๊ฐ ๊ฐ์ฅ ์ ์ ์๋ฒ ์ ํ(ํธ๋ํฝ์ผ๋ก ์ธํด ์ธ์
์ด ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ ๊ถ์ฅ)
- Source : ์ฌ์ฉ์ IP๋ฅผ ํด์ฑํ์ฌ ๋ถ๋ฐฐ(ํน์ ์ฌ์ฉ์๊ฐ ํญ์ ๊ฐ์ ์๋ฒ๋ก ์ฐ๊ฒฐ๋๋ ๊ฒ ๋ณด์ฅ)
๐ ์ฅ์ ๋๋น : ์๋ฒ๋ฅผ ๋ถ๋ฐฐํ๋ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ด์คํํ์ฌ ๋๋นํ๋ค.(Active ์ํ์ Passive ์ํ)