HTTP๋?
Hyper Text Transfer Protocol์ ์ฝ์๋ก, ํ์ฉํ๋ฉด HTML ํ
์คํธ ๋ฟ ์๋๋ผ ๋ค์ํ ํ์ผ์ ์ ์กํ ์ ์๋ค.
HTML
, TEXT
, ์ด๋ฏธ์ง
, ์์ฑ
, ์์
, ํ์ผ
, JSON
, XML
, ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋
1. HTTP์ ํน์ง
1-1. ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ถ๋ฆฌ๋์ด ์๋ค.
ํด๋ผ์ด์ธํธ
- ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ๋๊ธฐ
์๋ฒ
- ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต์ ์ค๋ค
๊ตฌ์กฐ๋ฅผ ๋ถ๋ฆฌํ ๊ฒ์ ๋ํ ์ด์
ํด๋ผ์ด์ธํธ
๋ UI๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์ ์ง์คํ ์ ์๋ค์๋ฒ
๋ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ค
๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ ์ํค๋ ๋ฐ์๋ ์ฉ์ดํ๋ค.
1-2.๋ฌด์ํ(stateless)
stateful๊ณผ stateless์ ์ฐจ์ด๋?
์์
์น๊ฐ๊ณผ ๋งคํ ์ง์์ ๋ํ
Stateful
์น๊ฐ: ์์ธ์์ ์ ์ฃผ ๊ฐ๋ KTX๋ ์ผ๋ง์ธ๊ฐ์?
์ง์: 25,000์์ ๋๋ค.
์น๊ฐ: 2์ฅ ์ฃผ์ธ์.
์ง์: 50,000์์ ๋๋ค. ๊ฒฐ์ ๋ ๋ฌด์์ผ๋ก ํ์๊ฒ ์ต๋๊น? (KTX ๋ ธ์ ๊ณผ ์ฃผ๋ฌธ ์๋์ ๋ํ ์ํ๋ฅผ ์ ์ง)
์น๊ฐ: ์ฒดํฌ์นด๋์ ๋๋ค.
์ง์: ๊ฒฐ์ ๊ณผ ์๋ฃ๋์์ต๋๋ค. (KTX ๋ ธ์ ๊ณผ ์ฃผ๋ฌธ ์๋, ๊ฒฐ์ ์๋จ์ ๋ํ ์ํ๋ฅผ ์ ์ง)
=> ๋ํ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋ง๋ค(์์ฒญ๊ณผ ์๋ต) ์๋๋ ๋ฌธ๋งฅ์ ์ํ๋ฅผ ์ ์งํ๋ค.
stateless
์น๊ฐ: ์์ธ์์ ์ ์ฃผ ๊ฐ๋ KTX๋ ์ผ๋ง์ธ๊ฐ์?
์ง์: 25,000์์ ๋๋ค.
์น๊ฐ: 2์ฅ ์ฃผ์ธ์.
์ง์: ??? ๋ฌด์์ 2์ฅ ๊ตฌ๋งคํ์๋ ๊ฑด๊ฐ์???
์น๊ฐ: ์๊น ๋งํ์์์๐ณ. ์์ธ์์ ์ ์ฃผ ๊ฐ๋ KTX์!!!
์ง์: ๋ช ์ฅ์ธ์ง, ๊ฒฐ์ ์๋จ์ ๋ฌด์์ธ์ง ํ ๋ฒ์ ์๊ธฐํด์ฃผ์ธ์!
=> ๋ํ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋ง๋ค(์์ฒญ๊ณผ ์๋ต) ์๋๋๋ฌธ๋งฅ์ ์ํ๋ฅผ ์์ง ๋ชปํ๋ค.
๋ฐ๋ผ์ ํ๊บผ๋ฒ์ ์ด์ผ๊ธฐ ํด์ผํ๋ค.
โ์์ธ์์ ์ ์ฃผ๊ฐ๋ KTX 2์ฅ ์ฒดํฌ์นด๋๋ก ๊ฒฐ์ ํ ๊ฒ์!โ
-
stateful
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด์ ์ํ๋ฅผ ๋ณด์กดํ๋ค
์ํ๋ฅผ ์ ์งํด์ผํจ์ผ๋ก, ๋ ๊ฐ์ ์๋ฒ๊ฐ ์ ์ง๋์ด์ผ ํ๋ค. -
๋ฌด์ํ(stateless)
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค
์ํ๋ฅผ ์ ์งํ์ง ์์ผ๋ฏ๋ก, ์ด๋ ์๋ฒ๊ฐ ์๋ตํด๋ ์๊ดธ์ด ์๋ค.
๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ํญ ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ์ฆ์คํด ํด๊ฒฐํ ์ ์๋ค.
ํ์ง๋งโฆ
=> ๋ชจ๋ ๊ฒ์ stateless๋ก ์ค๊ณํ ์ ์๋ค
๋จ์ํ ๋ก๊ทธ์ธ๋ง ๋ณด๋๋ผ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง์์ผ ์ฃผ์ด์ผ ํ๋ค.
์ด ๊ฒฝ์ฐ์๋
๋ธ๋ผ์ฐ์ ์ฟ ํค
๋์๋ฒ ์ธ์
๋ฑ์ ์ฌ์ฉํด ์ํ๋ฅผ ์ ์งํ๋ค.
1-3. ๋น์ฐ๊ฒฐ์ฑ(connectionless)
๋น์ฐ๊ฒฐ์ฑ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด
๋ฐ๋ก TCP/IP ์ฐ๊ฒฐ์ ๋์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๊ฒ
์ด๋ค.
์ด๋ฅผ ํตํด ์๋ฒ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์๋ง์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์๋ ๋์ํ ์ ์๊ฒ ํ๋ค.
HTTP๋ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ค.
์ ์ฒ๋ช
์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์ ์ญ๊ฐ ์ดํ๋ก ์๋ค.
์๋ฅผ ๋ค์ด ๊ตฌ๊ธ์ ์ ์ฒ๋ช
์ด ์ด์ฉํด๋ ๊ฒ์์ ์ ์ฒ๋ช
์ด ๋์์ ์ด์ฉํ์ง๋ ์๋๋ค.
ํ์ง๋งโฆ. ์๋ง๋ช
์ด ๋์์ ์ด์ฉํ๋ ๊ฒฝ์ฐ๋ ์๋ ๊ฒ ๊ฐ๋คโฆโฆ
๋ง์น ์ด๋ฒ์ ๋ด๊ฐ ์คํจํ ํ ํธ๋ K๋ฆฌ๊ทธ ๊ฒฝ๊ธฐ์ฒ๋ผโฆ..
- ๋น์ฐ๊ฒฐ์ฑ์
์ฅ์
- HTTP๋ ์ธํฐ๋ท ์์์ ๋ถํน์ ๋ค์์ ํต์ ํ๊ฒฝ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์๋ค.
- ๋ฐ๋ผ์ ์๋ฒ์์ ๋ค์์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํด์ผ ํ๋ค๋ฉด, ์ด์ ๋ฐ๋ฅธ ๋ง์ ๋ฆฌ์์ค๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ฐ๊ฒฐ์ ์ ์งํ๊ธฐ ์ํ ๋ฆฌ์์ค๋ฅผ ์ค์ฌ ๋ ๋ง์ ์ฐ๊ฒฐ์ ํ ์ ์๋ค
- ๋น์ฐ๊ฒฐ์ฑ์
๋จ์
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ๊ณ ์์ง ์๋ค.
- ๋ฐ๋ผ์ ๋์ผํ ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ์์ฒญ์ ๋งค๋ฒ ์๋กญ๊ฒ ์ฐ๊ฒฐ ์๋/ํด์ ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ๋ค.
์ฐ๊ฒฐ/ํด์ ์ ๋ํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค
KeppAlive
์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด HTTP์ KeepAlive ์์ฑ์ ์ฌ์ฉํ ์ ์๋ค.
์ง์ ๋ ์๊ฐ๋์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์์ ํจํท ๊ตํ์ด ์์ ๊ฒฝ์ฐ, ์๋๋ฐฉ์ ์๋ถ๋ฅผ ๋ฌป๊ธฐ์ํด ํจํท์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ๋งํ๋ค.
์ด ๋ ํจํท์ ๋ฐ์์ด ์์ผ๋ฉด ์ ์์ ๋๋๋ค.
ํ์ง๋ง ์ฃผ๊ธฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ฒดํฌํ๋ค๋ ๊ฒ์ ์๋ฒฝํ ํด๊ฒฐ์ฑ ์ด ์๋๋ค. ์๋ฒ๊ฐ ๋ฐ์ ๋์๋ ํ๋ก์ธ์ค ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๊ธฐ ๋๋ฌธ์,KeepAlive๋ก ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ฏ๋ก ์ฃผ์ํด์ผํ๋ค.
1-3. HTTP ์ํ์ฝ๋(status)์ ๋ฉ์๋(method)
- HTTP ์ํ์ฝ๋(status)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด, ์๋ฒ๋ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ ์ํ๋ฅผ ์ซ์๋ก ๋ฐํํ๋๋ฐ ์ด๋ฅผ ์๋ต์ฝ๋๋ผ๊ณ ํ๋ค.
HTTP ์๋ต์๋ ์ํ ์ฝ๋๋ฅผ ํค๋์ ์ถ๊ฐํ์ฌ ์๋ต์ ํ๋ค.
HTTP ์๋ต ์ฝ๋๋ ์ฝ์์ด๋ฉฐ, ๋ชจ๋๊ฐ ์ดํดํ ์ ์๋ ์ฌ๋ฐ๋ฅธ ์ฝ๋๋ฅผ ์๋ตํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- HTTP Method
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์์ฒญ์ ํ ๋, ์ด๋ ํ ๋ชฉ์ ์ ๊ฐ๋ ํ์์ธ์ง HTTP ๋ฉ์๋์ ๋ช
์ํ๋ค.
1-4. ํค๋(header)
HTTP ํ๋กํ ์ฝ ์์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ํจํท ๋จ์๋ก ์๊ฒ ์ชผ๊ฐ์ ํต์ ์ ํ๋ค.
๋ฐ์ดํฐ ์ ์ก ๋จ์์ธ ํจํท์๋ ์์ฒญ/์๋ต์ ๋ํ ๋ฉ์์ง
๊ฐ ๋ด๊ฒจ ์๋ค.
ํจํท์ ๊ตฌ์กฐ
- ์์๋ผ์ธ ( Request Line )
- ํค๋ ( Header )
- ๋ณธ๋ฌธ ( Body )
2. ์ํ๋ฅผ ๊ธฐ์ตํ๋ ๋ฐฉ๋ฒ
์๋น์ค๋ฅผ ์ด์ํ๋ ค๋ฉด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํด์ผํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๊ทธ๋ผ ์ด๋ป๊ฒ ๊ธฐ์ตํ๊ฒ ํ ์ ์์๊น?
2-1. ์ฟ ํค
HTTP๋ ์ด ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด, ๋ธ๋ผ์ฐ์ ๋จ์์ ์ฟ ํค๋ฅผ ์ ์ฅ
ํด์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ ์ ์๊ฒ ํ๋ค.
- ๋จ์
ํ์ง๋ง ์ฟ ํค๋ ์ฌ์ฉ์ ์ ๋ณด๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ค.
๋ฐ๋ผ์ ์๋ณ์กฐ์ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์๋ณด์์ ์ทจ์ฝ
ํ๋ค!
2-2. ์ธ์
์ฟ ํค์ ๋ฌ๋ฆฌ ์ธ์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ
๋ฐ๋ผ์ ์ฟ ํค๋ณด๋ค๋ ์์ ํ๋ค.
- ๋จ์
์ด ์ธ์
์ ๋ณด๋ ์ค๊ฐ์ ํ์ทจ ๋นํ ์ ์์ด์ ๋ณด์์ด ์๋ฒฝํ์ง ์๋ค.
์ธ์ ์ ์ฌ์ฉํ๋ฉด ์๋ฒ์ ์ฌ์ฉ์๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฏ๋ก, ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ๋์ ์ ์์๊ฐ ๋ง์ ์๋น์ค๋์๋ฒ๊ฐ ๊ณผ๋ถํ
๋๋ค.
์์ธํ ์ฟ ํค์ ์ธ์ ์ค๋ช (๋งํฌ)
2-3. ํ ํฐ์ ์ฌ์ฉํ๋ OAuth, JWT
์ฟ ํค์ ์ธ์
์ ๋ฌธ์ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ํ ํฐ(Token) ๊ธฐ๋ฐ์ ์ธ์ฆ ๋ฐฉ์์ด ๋์
๋์๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ ํต์ฌ์ ๋ณดํธํ ๋ฐ์ดํฐ๋ฅผ ํ ํฐ์ผ๋ก ์นํํด์ ์๋ณธ ๋ฐ์ดํฐ ๋์ ํ ํฐ์ ์ฌ์ฉ
ํ๋ ๊ธฐ์ ์ด๋ค.
๊ทธ๋์ ์ค๊ฐ์ ํ ํฐ์ ํ์ทจ๋นํด๋, ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด์์ฑ์ ๋์ผ ์ ์๋ค.
๋ํฌ์ ์ผ๋ก OAuth
, JWT
๊ฐ ์๋ค.