http
http๋ TCP/IP ๊ธฐ๋ฐ์ ํต์ ํ๋กํ ์ฝ๋ก world wide web์์ html file์ด๋ image file ๋ฑ์ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
http ๋ช ์ธ๋ ์ด๋ป๊ฒ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ์ง ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ด๋ป๊ฒ ์๋ต์ ํ ์ง ๊ตฌ์ฒดํ ์ํจ๊ฒ์ ๋งํ๋ค.
http์ ํน์ง 3๊ฐ์ง ์์๋ณด๊ธฐ
1. ๋น์ฐ๊ฒฐ์ฑ: client๊ฐ server์๊ฒ request๋ฅผ ๋ณด๋ด๊ณ server๊ฐ client์๊ฒ response๋ฅผ ์ฃผ๋ฉด ๊ทธ ๋๊ณผ์ ์ฐ๊ฒฐ์ ๋์ด์ง๋ค. ์ฆ, ํญ์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ ์๋๋ผ๋ ๋ป์ด๋ค.
2. media independent: ์ด๋ค ํ์ ์ ๋ฐ์ดํฐ์ด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์๋ค. ๋จ, ๋ฐ์ดํฐ์ ๋ํ ์ ์ ํ ๋ง์ํ์ ์ ๊ตฌ์ฒดํ ํด์ผ ํ๋ค.
3. stateless: (1) ๋ฒ์ ํน์ฑ์ผ๋ก ์ธํด request ์ดํ์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ์ธ์์ ํ ์ ์๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ฟ ํค์ ์ธ์ ์ด ์๋ค.
http์ Requests
์์ ๊ฐ์ด ์ฐจ๋ก๋๋ก Request line, header, empty line, body๋ฅผ ํฌํจํ๋ค.
request line
SP๋ก ๊ตฌ๋ถ์ด ๋์ด์๊ณ CRLF๋ก ๋์ด ๋๋ค. Method์๋ ์ฐ๋ฆฌ๊ฐ ํํ ์๋ GET, POST ๋ฑ์ด ์๋ค
์์1)
์์2)
Content-type์ ์๋ฒ์๊ฒ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ณด๋ด์ง ๊ฑด์ง๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
length๋ message body์ ์๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ฅผ ๋ํ๋ธ๋ค.
Http์ Response
request์ ๋น์ทํ๋ฐ empty line์ผ๋ก header์ body๊ฐ ๊ตฌ๋ณ๋์ด ์๋ ๊ฒ๋ ๊ฐ๋ค
status line์ ์ฃผ์ ๊ตฌ์ฑ์ผ๋ก๋ http์ version๊ณผ status-code๊ฐ ์๋ค.
http response์ ์ํ์ฝ๋
1xx: request๊ฐ ๋ฐ์์ก๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๋ค๋ ์ํ์ฝ๋์ด๋ค
2xx: ์๋ฒ๊ฐ ์ฑ๊ณต์ ์ผ๋ก request๋ฅผ ๋ฐ์๊ณ ์ฒ๋ฆฌํ๋ค๋ ์๋ฏธ์ ์ํ์ฝ๋์ด๋ค.
3xx: ์์์ ๋์ ์๋ ๊ฒ๊ณผ ๊ฐ์ด ์ด๋ค ์ผ์ด ์ถ๊ฐ๋ก ์คํ๋์ด์ผ ํ๋ค๋ ๊ฒ์ธ๋ฐ redirect ์ฆ, ํ์ด์ง ์ ํ๊ฐ์ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ๋ณด๋ฉด๋๋ค.
4xx: request๊ฐ ์ ํจํ์ง ์์ ๋ฌธ๋ฒ ๋ฑ์ ์ ๋ ฅํ์ ๋์ ์ํ์ฝ๋์ด๋ค. ์๋ฅผ๋ค์ด 404๋ ์กด์ฌํ์ง ์๋ ํ์ด์ง๋ฅผ ์ ๋ ฅํ์ ๋ ๋ํ๋๊ณ 400์ ๋ณด๋ธ request๊ฐ ์๋ฒ์ ๋ฐ์ดํฐ์ ๋ถ์ผ์น ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
5xx: ์๋ฒ๊ฐ request๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ๋ค์ด 500์ ์๋ฒ๊ฐ request๋ฅผ ์ฒ๋ฆฌํ๋ค ์ค๋ฅ๊ฐ ๋ฌ์๋ ๋ฆฌํด๋๋ค.