๐ ๋คํธ์ํฌ ํต์ ๊ณผ ์์ผ - YangJJune/U-Compass GitHub Wiki
์๋ก
์ด๋ฒ์ ๋๋ฆผํ๊ธฐ์ ๋ผ๋ ๊ต๋ด ํ๋์ ํฉ๊ฒฉํ์ฌ U-Compass๋ผ๋ ์๋น์ค๋ฅผ ์ ์ํ๊ณ ์ ํ๋ค. ์ค๊ฐ๋ฐํ ์ ๊น์ง๋ ์์ผ ํต์ ์ ๋ํ์ฌ ๊ณต๋ถํ๊ณ ์ฐ๊ตฌํ ๋ค, ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ต์ข ๋ฐํ ๋ U-Compass ์ดํ์ ์ ์ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
๋ญ ํ ๊ฒ์ธ๊ฐ? U-Compass ๋?
์์์ U-Compass๋ผ๋ ํ๋ก์ ํธ๋ฅผ ์ํด ๊ณต๋ถ ๋ฐ ์ฐ๊ตฌ๋ฅผ ์งํํ๋ค๊ณ ํ์๋ค. ๋ฐ๋ผ์ U-Compass๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ์ ํด์ผํ๋ค๊ณ ๋ณธ๋ค. U-Compass๋ ์น๊ตฌ ๊ฐ์ ์ค์๊ฐ ์์น์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ์๋น์ค์ด๋ค. ์ฌ๊ธฐ์ ์ฃผ๋ชฉํด์ผํ๋ ์ ์ ์ค์๊ฐ์ด๋ผ๋ ์ , ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ค๋ ํน์ฑ, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ฐ์ผ ์ฑ์ด๋ผ๋ ๊ฒ์ด๋ค. ์ด๋ ํ์ฐ์ ์ผ๋ก ์ด๋ ํ ๊ตฌ์กฐ๋ก ์์ผ ํต์ ๋๋ HTTP ํต์ ์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋น ๋ฅด๊ณ , ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋์ง ๋ฑ์ ๊ณ ๋ คํ์ฌ๋ง ํ๋ค. ๋ฐ๋ผ์ 2๋ฌ ๊ฐ ์ด์ ๋ํ ์ฐ๊ตฌ๋ฅผ ์งํํ ๊ฒ์ด๋ค.
๋คํธ์ํฌ๋
๋คํธ์ํฌ๋ ๋ ์ด์์ ์ปดํจํฐ์ ์ด๋ค์ ์ฐ๊ฒฐํ๋ ๋งํฌ์ ์กฐํฉ์ ๋๋ค. ๋ฌผ๋ฆฌ์ ๋คํธ์ํฌ๋ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ ํ๋์จ์ด(์ด๋ํฐ, ์ผ์ด๋ธ ๋ฐ ์ ํ์ ๊ณผ ๊ฐ์ ์ฅ๋น)์ ๋๋ค. ์ํํธ์จ์ด ๋ฐ ๊ฐ๋ ๋ชจ๋ธ์ด ๋ ผ๋ฆฌ์ ๋คํธ์ํฌ๋ฅผ ํ์ฑํฉ๋๋ค. ๋ค๋ฅธ ์ ํ์ ๋คํธ์ํฌ ๋ฐ ์๋ฎฌ๋ ์ดํฐ๋ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ง์ด ์ฒ์๋ณด๋ ์ธ์์๊ฒ ์ด๋ ค์ธ ์ ์๋๋ฐ ๊ฐ๋จํ ๋งํด ๋ ์ปดํจํฐ๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋คํธ์ํฌ๋ผ๊ณ ํ ์ ์๋ค.
OSI ๋ชจ๋ธ?
๊ทธ๋ฐ๋ฐ ์์์ ์ฝ๊ฒ ๋งํ๊ธด ํ์ง๋ง ๋ ์ปดํจํฐ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์ ๋ ๋จ์ํ ์ผ์ด ์๋๋ค. ์ด๋ฐ์ ๋ฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ๊ธฐ์ ์ด ์ฒ๋ฆฌ์ ๋ํ์ฌ 7๊ฐ์ง ๊ณ์ธต์ผ๋ก ๋ถ๋ฅํ ๋ชจ๋ธ์ด ์๋ค. ๊ทธ๊ฒ์ด OSI 7๊ณ์ธต ๋ชจ๋ธ์ด๋ค (OSI Model)
๊ฐ๊ฐ์ layer์ ๋ํด ๊ฐ๋จํ ์ง๊ณ ๋์ด๊ฐ๊ฒ ๋ค
Application Layer - ์ ์ ๊ฐ ์ํธ์์ฉํ๋ ๋ถ๋ถ๋ค์ ์ด๊ดํ๋ ๋ ์ด์ด Presentation Layer - data๊ฐ ์ฌ์ฉ๊ฐ๋ฅํ format์ธ์ง ๋ณด์ฆ ๋ฐ ๋ฐ์ดํฐ ์ํธํ๋ฅผ ๋ด๋นํ๋ ๋ ์ด์ด Session Layer - connection์ ์ ์งํ๋ ๋ ์ด์ด (ํฌํธ์ ์ธ์ ๊ด๋ฆฌ) Transport Layer - TCP์ UDP ๊ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ ์ด์ด Network Layer - ์ด๋ค physical path๋ฅผ ํตํด data๋ฅผ ์ ๋ฌํ ์ง ์ ํ๋ ๋ ์ด์ด Data Link Layer - ๋คํธ์ํฌ ์์์ data์ format์ ์ ์ํ๋ ๋ ์ด์ด Physical Layer - ๊ฐ์ฅ ํ๋จ ๊ณ์ธต์ธ ๋งํผ raw bit ๋ก ์ด๋ฃจ์ด์ง stream์ ๋ณด๋ด๋ ๋ ์ด์ด
๋คํธ์ํฌ ํต์ ์ด๋?
์ปดํจํฐ๋ ์ฅ์น๋ค์ด ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ด๋ค. ๋คํธ์ํฌ ํต์ ์ ์ ๋ณด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ๊ท์น๊ณผ ๋ฐฉ๋ฒ์ ์ ์ํ ๋ค์ํ ํต์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง๋ฉฐ,์ด๋ฌํ ํต์ ์ ๋ฌผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ(์: ์ผ์ด๋ธ, Wi-Fi)์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฌ๋ฌ ์์คํ ์ด ์ํธ์์ฉํ๊ณ ํ๋ ฅํ ์ ์๋ค. ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ HTTP ํต์ ๊ณผ ์์ผ ํต์ ์ ๋ํด ๋ค๋ฃฌ๋ค
HTTP ํต์ ์ด๋?
์น์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค. HTTP๋ ์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ์ ํต์ ์ ์ฌ์ฉ๋๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ์๋ต์ ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๊ฐ ์๋ต์ ๋ฐํํ๋ค.
- GET, POST, PUT, DELETE ๋ฑ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ข ๋ฅ๋ฅผ ์ ์ํ๋ค.
- ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์ํ ์ฝ๋๋ฅผ ๋ฐํํ์ฌ ์์ฒญ์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค(์: 200 OK, 404 Not Found).
- ๋จ๋ฐ์ ์ด๋ค. (์ ์ง๋์ง ์๋๋ค)
Socket
์์ผ(Socket)์ ๋คํธ์ํฌ ์์์ ํต์ ์ ํ๊ธฐ ์ํ ์ข ๋จ์ (endpoint)์ด๋ค. ์์ผ์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ํด ํ์ํ๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์์ผ์ ์ด์์ฒด์ ์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ํตํด ์๋ณ๋๋ค.
HTTP ํต์ ๊ณผ Socket์ ๋น๊ต
์ฅ๋จ์ ๋น๊ต
HTTP ํต์
์ฅ์
- ์น ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ํต์ ์ ์ฝ๊ฒ ์ค์ ํ ์ ์์ด ์ฌ์ฉ์ด ๊ฐํธํ๋ค.
- HTTP๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์ค ํ๋กํ ์ฝ๋ก, ๋ค์ํ ํ๋ซํผ๊ณผ ์ธ์ด์์ ์ง์๋๋ค.
- ์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ๋ช ํํ๊ฒ ์ ๋ฌํ๋ ์ํ ์ฝ๋๋ฅผ ํตํด ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
๋จ์
- ๊ฐ ์์ฒญ์ด ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ด๋ ต๊ณ , ์ธ์ ๊ด๋ฆฌ๊ฐ ๋ณต์กํ ์ ์๋ค.
- ๋งค ์์ฒญ๋ง๋ค ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ํด์ ํด์ผ ํ๋ฏ๋ก, ๋๋์ ์์ฒญ ์ฒ๋ฆฌ ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
Socket
์ฅ์
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ํตํด ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
- ๋ค์ํ ํ๋กํ ์ฝ(TCP, UDP)์ ์ฌ์ฉํ ์ ์์ด ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์ต์ ํํ ์ ์๋ค.
- ์ฐ๊ฒฐ์ด ์ ์ง๋๋ฏ๋ก ์ํ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
๋จ์
- ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์๋์ ์ผ๋ก ๋ณต์กํ์ฌ ๊ตฌํ์ด ์ด๋ ค์ธ ์ ์๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก, ์ถ๊ฐ์ ์ธ ๋ณด์ ์กฐ์น๊ฐ ํ์ํ๋ค.