- ๐ HTTP ํต์ ์ด๋?
- ๐ HTTP ํ๋กํ ์ฝ์ ํน์ง
- ๐ HTTP ํต์ ์ ์์ฒญ๊ณผ ์๋ต (Request, Response)
- ๐ ์ฐธ์กฐ
HTTP๋ Hyper Text Ytansfer Protocal์ ์ฝ์๋ก, ์น๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ์ฌ์ด์์ HTML ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ฐ ์ฐ์ด๋ ํต์ ํ๋กํ ์ฝ์ด๋ค.
์ด์ฐฝ๊ธฐ์๋ HTML ๋ฌธ์๋ฅผ ์ก์์ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ง๋ง, ์ต๊ทผ์๋ JSON๊ณผ ๊ฐ์ ๊ฒ ๋ํ ์ ์กํ ์ ์๋ค.
HTPP๋ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ๋ก๋ TCP๋ฅผ ์ฌ์ฉํ๊ณ , ๋คํธ์ํฌ ๊ณ์ธต ํ๋กํ ์ฝ๋ก๋ IP๋ฅผ ์ฌ์ฉํ๋ค.
์ด ๋์ ํฉ์ณ์ TCP/IP๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ ์ปดํจํฐ๋ฅผ ์ ํ๊ณ , ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ปดํจํฐ๊ฐ ์ด๋ค ์ปดํจํฐ์ ํต์ ํ ์ง ๊ฒฐ์ ํ๋ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ถ๊ฐ์ ์ผ๋ก, HTTP์์์ ๊ธฐ๋ณธ ํฌํธ๋ 80๋ฒ ํฌํธ์ด๋ค.
HTTP์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ณ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐํํ๋ค.
์ด๊ฒ์ ์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์งํ์ง ์๋ ๋น์ฐ๊ฒฐ์ฑ ํ๋กํ ์ฝ์ด๋ฉฐ, ์์ฒญ๊ณผ ์๋ต(request, response)๋ฐฉ์์ ํตํด ํ๋กํ ์ฝ์ด ์ด๋ฃจ์ด์ง๋ค.
์ฌ๊ธฐ์, ์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์งํ์ง ์๋๋ค๋ ๋ง์ ์๋ฒ๋ ์๋ต ๋ฉ์์ง๋ฅผ ๋ฐํํ ํ์ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์ฅํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์, HTTP ํ๋กํ ์ฝ์ ์ํ๊ฐ ์๋ ํ๋กํ ์ฝ ์ฆ, ๋ฌด์ํ์ฑ(stateless)๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
์์ฒญ๊ณผ ์๋ต์ ์ดํดํ๊ธฐ ์ํด์๋ ๋จผ์ ํด๋ผ์ด์ธํธ(Client)์ ์๋ฒ(Server)๋ฅผ ์ดํดํด์ผ ํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๋ณด๋ด๋ ์ชฝ์ ์๋ฏธํ๋ฉฐ ์๋ฒ๋ ์์ฒญ์ ๋ฐ๋ ์ชฝ์ ์๋ฏธํ๋ค.
Http Request์ ๊ตฌ์กฐ๋ Request Line, Header Lines, Body๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Request Line
Header
Body
request์ ๋ง์ง๋ง ๋ถ๋ถ์ ๋ค์ด๊ฐ๋ค. ๋ชจ๋ ์์ฒญ์ ๋ค์ด๊ฐ์ง๋ ์๊ณ Get, HEAD, DELETE, OPTIONS์ฒ๋ผ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ์์ฒญ์ body๋ฅผ ํ์๋ก ํ์ง ์๋๋ค.
๋ฐ๋๋ ๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ(single-resource bodies), ๋ค์ค-๋ฆฌ์์ค ๋ณธ๋ฌธ(multiple-resource bodies)์ผ๋ก ๋๋ ์ง๋ค.
Http Response์ ๊ตฌ์กฐ๋ Status Line, Header Lines, Body๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Status Line
Header
Body
response์ ๋ง์ง๋ง ๋ถ๋ถ์ ๋ค์ด๊ฐ๋ค. ๋ชจ๋ ์๋ต์ ๋ค์ด๊ฐ์ง๋ ์๊ณ 201, 204 ๊ฐ์ ์ํ ์ฝ๋๋ฅผ ๊ฐ์ง ์๋ต์๋ ๋ณดํต ๋ณธ๋ฌธ์ด ์๋ค.
response body๋ ์ด๋ฏธ ๊ธธ์ด๊ฐ ์๋ ค์ง ๋จ์ผ ํ์ผ๋ก ๊ตฌ์ฑ๋ ํค๋ ๋ ๊ฐ(Content-Type, Content-Length)๋ฅผ ๊ฐ์ง ๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ, ๊ธธ์ด๋ฅผ ๋ชจ๋ฅด๋ ๋จ์ผ ํ์ผ๋ก ๊ตฌ์ฑ๋ ๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ, ์๋ก ๋ค๋ฅธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฉํฐํํธ๋ก ์ด๋ฃจ์ด์ง ๋ค์ค-๋ฆฌ์์ค ๋ณธ๋ฌธ ์ด๋ ๊ฒ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋ ์ ์๋ค.