3. HTTP Message
Last updated
Last updated
3์ฅ ๋ชฉํ. HTTP Message๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค๊ณ ์ดํดํ๋์ง ๋ฐฐ์ธ ์ ์๋ค. HTTP: ์ธํฐ๋ท ๋ฐฐ๋ฌ์. HTTP Message: ๋ฌด์ธ๊ฐ ๋ด์ ๋ณด๋ด๋ ์ํฌ.
HTTP ๋ฉ์ธ์ง๋, HTTP ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก๋ค์ด๋ค.
๋ฐ์ดํฐ์ ๋ธ๋ก๋ค์ ๋ฉ์์ง ๋ด์ฉ๊ณผ ์๋ฏธ๋ฅผ ์ค๋ช ํ๋ ํ ์คํธ ๋ฉํ ์ ๋ณด๋ก ์์ํ๊ณ , ์ ํ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ฌ ์ ์๋ค.
ํด๋ผ์ด์ธํธ - ํ๋ก์ - ์๋ฒ ์ฌ์ด๋ฅผ ํ๋ฅธ๋ค.
๋ฉ์ธ์ง ๋ฐฉํฅ ์ฉ์ด: '์ธ๋ฐ์ด๋', '์์๋ฐ์ด๋', '์ ์คํธ๋ฆผ', '๋ค์ด์คํธ๋ฆผ'
โ ์ธ๋ฐ์ด๋: ์ ์๋ฒ๋ก ํฅํ๋ ๊ฒ.
โก ์์๋ฐ์ด๋: ๋ชจ๋ ์ฒ๋ฆฌ๊ฐ ๋๋๊ณ ๋ฉ์์ง๊ฐ ์ฌ์ฉ์ ์์ด์ ํธ๋ก ๋์์ค๋ ๊ฒ.
โข ๋ค์ด์คํธ๋ฆผ: ์์ฒญ/์๋ต ๋ฉ์ธ์ง์ ๊ด๊ณ์์ด ๋ฉ์์ง๋ ๋ค์ด์คํธ๋ฆผ์ผ๋ก ํ๋ฅธ๋ค.
โฃ ์ ์คํธ๋ฆผ: ๋ฐ์ก์๋ ์์ ์์ ์ ์คํธ๋ฆผ์ด๋ค.
[์ ์คํธ๋ฆผ, ๋ค์ด์คํธ๋ฆผ์ ๋ฐ์ก์,์์ ์์ ๋ํ ์ฉ์ด]
<์์ฒญ๊ณผ ์๋ต ๋ฉ์ธ์ง ์>
HTTP ๋ฉ์์ง๋ ๋จ์ํ, ๋ฐ์ดํฐ์ ๊ตฌ์กฐํ๋ ๋ธ๋ญ์ด๋ค.
๊ฐ ๋ฉ์ธ์ง๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ ์์ฒญ๋ฉ์ธ์ง ๋๋ ์๋ฒ๋ก ๋ถํฐ์ ์๋ต๋ฉ์ธ์ง ๋ ์ค ํ๋๋ฅผ ํฌํจํ๋ค. ๋ฉ์ธ์ง๋ [์์์ค | ํค๋ | ๋ณธ๋ฌธ] ์ธ ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
โ ์์์ค: ์ด๋ค ๋ฉ์ธ์ง ์ธ์ง ์์
โ ํค๋: ์์ฑ
โ ๋ณธ๋ฌธ: ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๊ณ ์์ ์๋ ์๋ค.
'์์์ค'๊ณผ 'ํค๋'๋ ์ค๋จ์๋ก ๋ถ๋ฆฌ๋ ์์คํค ๋ฌธ์์ด์ด๋ฉฐ, ๊ฐ ์ค์ ์บ๋ฆฌ์ง ๋ฆฌํด(Carriage return, CR), ๊ฐํ๋ฌธ์(Line Feed, LF)๋ก ๊ตฌ์ฑ๋ ๋๊ธ์์ ์ค๋ฐ๊ฟ ๋ฌธ์์ด(= 'CRLF')๋ก ๋๋๋ค.
'๋ณธ๋ฌธ'์ ๋จ์ํ ์ ํ์ ์ธ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ด๋ค. '์์์ค'์ด๋ 'ํค๋'์ ๋ฌ๋ฆฌ ํ ์คํธ๋ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์๋ ์๊ณ ๋น์ด์์ ์๋ ์๋ค.
๋ชจ๋ HTTP ๋ฉ์์ง๋ ์์ฒญ ๋ฉ์์ง| ์๋ต ๋ฉ์์ง๋ก ๋ถ๋ฅ๋๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ๊ฐ ๊ฐ๊ณ , ์๋ต๋ฉ์์ง๋ ์์ฒญ๋ฉ์์ง์ ์์์ค์์๋ง ์ฐจ์ด๊ฐ ์๋ค๋ ์ ์ ์ฃผ๋ชฉ.
์์ฒญ๋ฉ์์ง, ์๋ต๋ฉ์์ง ์
๋ฉ์๋: ํด๋ผ์ด์ธํธ์ธก์์ ์๋ฒ๊ฐ ๋ฆฌ์์ค์ ๋ํด ์ํํด์ฃผ๊ธธ ๋ฐ๋ผ๋ ๋์. 'GET', 'POST', 'HEAD', ...
์์ฒญ url: ์์ ํ ํน์ url์ ๊ฒฝ๋ก ๊ตฌ์ฑ ์์(2์ฅ์์ ๋ฐฐ์ด url ๋ฌธ๋ฒ์ ๋ฐ๋ผ ์์ฒญ)
๋ฒ์ : ๋ฉ์์ง์์ ์ฌ์ฉ์ค์ธ HTTP ๋ฒ์ HTTP/<๋ฉ์ด์ ๋ฒ์ >.<๋ง์ด๋๋ฒ์ >
์ํ์ฝ๋: ์์ฒญ ์ค ๋ฌด์จ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ค๋ช ํ๋ ์ธ์๋ฆฌ ์ซ์๋ก, ์ฒซ๋ฒ์งธ ์๋ฆฟ์๊ฐ ์ผ๋ฐ์ ์ธ ๋ถ๋ฅ๋ฅผ ๋ํ๋ธ๋ค.
์ฌ์ ๊ตฌ์ : ์ํ์ฝ๋๋ฅผ ์ฌ๋์ด ์ดํดํ๊ธฐ์ํด ์ค๋ช ํ ์งง์ ๋ฌธ๊ตฌ. ์ค๋ก์ง ์ฌ๋์ ์ฝํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์กด์ฌ.
ํค๋๋ค: ์ด๋ฆ, ์ฝ๋ก (:), ์ ํ์ ์ธ ๊ณต๋ฐฑ, ๊ฐ, CRLF๊ฐ ์์๋๋ก ๋ํ๋๋ 0๊ฐ ์ด์์ ํค๋๋ค.
์ํฐํฐ ๋ณธ๋ฌธ: ์์์ ๋ฐ์ดํฐ ๋ธ๋ก์ ํฌํจ. ํค๋๋ ์ํฐํฐ ๋ณธ๋ฌธ์ด ์๋๋ผ๋, ํค๋์ ์งํฉ์ ํญ์ ๋น์ค๋ก ๋๋์ผํ๋ค. (CRLF) . ํ์ง๋ง ์ค์๋ก ๋นผ๋จน์ ๊ฒฝ์ฐ ํธํ์ ์ํด CRLF๋ก ๋๋์ง ์๋ ๋ฉ์์ง๋ ๋ฐ์๋ค์ผ ์ ์์ด์ผํจ
๋ชจ๋ HTTP๋ฉ์์ง๋ ์์์ค๋ก ์์ํ๋ค. ์์ฒญ๋ฉ์์ง๋ ๋ฌด์์ ํด์ผํ ์ง, ์๋ต๋ฉ์์ง๋ ๋ฌด์จ์ผ์ด ์ผ์ด๋ฌ๋์ง ์๋ ค์ค๋ค.
์์ฒญ์ค(์์ฒญ ๋ฉ์์ง ์์์ค):
์์ฒญ๋ฉ์์ง๋ ์๋ฒ์๊ฒ ๋ฆฌ์์ค์ ๋ํด ๋ฌด์ธ๊ฐ ํด๋ฌ๋ผ๊ณ ๋ถํํ๋ค.
์์: GET /test/hi-there.txt HTTP/1.1
์๋ฒ์์ ์ด๋ค ๋์์ด ์ผ์ด๋์ผํ๋์ง ์ค๋ช ํด์ฃผ๋ ๋ฉ์๋ (GET)
๊ทธ ๋์์ ๋ํ ๋์์ ์ง์ํ๋ ์์ฒญURL (/test/hi-there)
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค HTTP๋ฒ์ ์ผ๋ก ๋งํ๋์ง ์๋ฒ์ ์๋ ค์ฃผ๋ HTTP ๋ฒ์ (HTTP/1.1)
๊ฐ ํ๋๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
์๋ต์ค(์๋ต ๋ฉ์์ง ์์์ค):
์๋ต ๋ฉ์์ง๋ ์ํ ๊ฒฐ๊ณผ์ ๋ํ ์ํ์ ๋ณด์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋๋ ค์ค๋ค.
์์: HTTP/1.1 200 OK
HTTP ๋ฒ์ (HTTP/1.1)
์ซ์๋ก๋ ์ํ ์ฝ๋(200)
์ํ์ํ์ ๋ํด ์ค๋ช ํด์ฃผ๋ ์ฌ์ ๊ตฌ์ (ok)
๊ฐ ํ๋๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ.
๋ฉ์๋
์์ฒญ์ ์์์ค์ ๋ฉ์๋๋ก ์์ํ๊ณ , ์๋ฒ์ ๋ฌด์์ ํด์ผํ ์ง ์๋ ค์ค๋ค.
HTTP๋ช ์ธ๋ ๊ณตํต ์์ฒญ ๋ฉ์๋์ ์งํฉ์ ์ ์ํ๋ค.
๋ฉ์๋์ ๋ฐ๋ผ์ ์์ฒญ๋ฉ์์ง์ ๋ณธ๋ฌธ์ด ์์์๋, ์์์๋ ์๋ค.
์์ฃผ์ฐ์ด๋ ๋ฉ์๋(7๊ฐ์ง): GET, HEAD, POST, PUT, TRACE, OPTION, DELETE
์ํ์ฝ๋
ํด๋ผ์ด์ธํธ์ ๋ฌด์จ์ผ์ด ์ผ์ด๋ฌ๋์ง ์๋ ค์ค๋ค. ์๋ต์ ์์์ค์ ์์นํ๋ค.
์ธ์๋ฆฌ ์ซ์๋ก ๋ ์ฝ๋๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฌถ์ธ๋ค.
์ ์๋ ๋ฒ์ ์ด์ธ์ ์ธ์ํ ์ ์๋ ์ํ์ฝ๋(์ 515)๋ฅผ ๋ฐ์ผ๋ฉด ๋ฒ์ฃผ์ ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ์์ผ๋ก ๊ฐ์ ํ๊ณ ๋ค๋ฃจ์ด์ผํ๋ค. (โ ์๋ฒ์๋ฌ๋ก ๋ณด๊ณ ๋ค๋ฃจ์ด์ผํ๋ค.)
3xx ๋ฆฌ๋ค์ด๋ ์ ์ํ์ฝ๋: ํด๋ผ์ด์ธํธ์ ๋ฆฌ์์ค๊ฐ ์ฎ๊ฒจ์ก๊ณ ์ด๋์ ์ฎ๊ฒจ์ก๋์ง ์๋ ค์ค๋ค.
4xx: ์๋ฒ๊ฐ ๋ค๋ฃฐ ์ ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณด๋ธ ๊ฒฝ์ฐ.
์ฌ์ ๊ตฌ์ : ์ํ์ฝ๋์ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ๋ฒ์ .
๋ฒ์ ๋ฒํธ: HTTP/x.y
ํ์์ผ๋ก ์์ฒญ, ์๋ต๋ฉ์์ง ์์ชฝ ๋ชจ๋ ๊ธฐ์ .
์์ ์ด ๋ฐ๋ฅด๋ ํ๋กํ ์ฝ ๋ฒ์ ์ ์๋์ ์๋ฆฌ๊ณ , ๋ํ ์๋์ ๋ฅ๋ ฅ๊ณผ ๋ฉ์์ง ํ์์ ๋ํ ๋จ์๋ฅผ ์ ๊ณตํ๋ค.
์์์ค ๋ค์์ 0๊ฐ, 1๊ฐ ํน์ ์ฌ๋ฌ๊ฒ์ HTTP ํค๋๊ฐ ์จ๋ค.
์์ฒญ๊ณผ ์๋ต๋ฉ์์ง์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฆ|๊ฐ ์์ ๋ชฉ๋ก์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. (์: Content-length:19
)
ํค๋ ๋ถ๋ฅ
์ผ๋ฐํค๋: ์์ฒญ, ์๋ต ์์ชฝ์ ๋ํ๋ ์ ์์
์์ฒญํค๋: ์์ฒญ์ ๋ํ ๋ถ๊ฐ์ ๋ณด ์ ๊ณต
์๋ตํค๋: ์๋ต์ ๋ํ ๋ถ๊ฐ์ ๋ณด ์ ๊ณต
Entityํค๋: ๋ณธ๋ฌธํฌ๊ธฐ, ์ฝํ ์ธ , ๋ฆฌ์์ค ๊ทธ ์์ฒด ์์
ํ์ฅํค๋: ๋ช ์ธ์ ์ ์๋์ง ์์ ์๋ก์ด ํค๋
HTTP ํค๋ ๊ฐ๋จํ ๋ฌธ๋ฒ์:
Date: Tue, 3 Oct 1997 02:16:03 GMT
[ ์ด๋ฆ:(๊ณต๋ฐฑ ์๋ต๊ฐ๋ฅ) ํ๋๊ฐ1, ํ๋๊ฐ2 , ... CRLF
]
ํค๋๊ฐ ๊ธธ์ด์ง๋ฉด ์ฌ๋ฌ์ค๋ก ์ชผ๊ฐค์ ์๋ค. ๋จ, ์ถ๊ฐ ์ค ์์ 1๊ฐ ์ด์์ ์คํ์ด์ค ํน์ ํญ ๋ฌธ์๊ฐ ์์ผํ๋ค.
์ํฐํฐ ๋ณธ๋ฌธ์ HTTP ๋ฉ์์ง์ ํ๋ฌผ์ด๋ผ ํ ์ ์๋ค.
์ด๋ฏธ์ง, ๋น๋์ค, HTML๋ฌธ์, ์ํํธ์จ์ด ์ฑ, ์ ์์ฐํธ ๋ฑ ์ฌ๋ฌ ์ข ๋ฅ์ ๋์งํธ ๋ฐ์ดํฐ๋ฅผ ์ค์ด ๋๋ฅผ์์๋ค.
HTTP๋ ์์ ํ ๋ฉ์๋๋ผ ๋ถ๋ฆฌ๋ ๋ฉ์๋ ์งํฉ์ ์ ์ํ๋ค.
GET, HEAD๋ ์์ ํ๋ค ํ ์ ์๋๋ฐ, ์์ฒญ์ ๊ฒฐ๊ณผ๋ก ์๋ฒ์ ์ด๋ ํ ์์ฉ๋ ์๋ค๋ ์๋ฏธ.
์์ ํ ๋ฉ์๋๊ฐ ์๋ฒ์ ์์ฉ์ ์ ๋ฐํ์ง ์๋๋ค๋ ๋ณด์ฅ์ ์์ง๋ง, ์์ ํ ๋ฉ์๋์ ๋ชฉ์ ์ ์๋ฒ์ ์ด๋ค ์ํฅ์ ์ค ์ ์๋ ์์ ํ์ง ์์ ๋ฉ์๋๊ฐ ์ฌ์ฉ๋ ๋ ์ฌ์ฉ์๋ค์๊ฒ ๊ทธ ์ฌ์ค์ ์๋ ค์ฃผ๋ HTTP ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ ์๋๋ก ํ๋ ๊ฒ์ ์๋ค.
๋ฆฌ์์ค ์กฐํ. ์ฃผ๋ก ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ๋ฌ๋ผ๊ณ ์์ฒญํ๊ธฐ ์ํด ์ฐ์.
์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ ์ฟผ๋ฆฌ๋ฅผ ํตํด ์ ๋ฌํจ. (๋ฐ๋๋ก ๋ฐ์ดํฐ ์ ์ก๊ฐ๋ฅํ๋ ์ง์ ์ํ ์ ์์)
GET์ฒ๋ผ ํ๋ํ์ง๋ง, ์๋ฒ๋ ์๋ต์ผ๋ก ํค๋๋ง ๋๋ ค์ค๋ค. (์ํฐํฐ ๋ณธ๋ฌธ์ ๊ฒฐ์ฝ ๋ฐํ๋์ง ์๋๋ค.)
๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ณ ๋ ๊ทธ์ ๋ํด ๋ฌด์์ธ๊ฐ(ํ์ ๋ฑ)๋ฅผ ์์๋ผ ์ ์๋ค.
์ํ์ฝ๋๋ฅผ ํตํด ๊ฐ์ฒด์ ์กด์ฌ ์ ๋ฌด๋ฅผ ํ์ธํ ์ ์๋ค.
๋ฆฌ์์ค ๋ณ๊ฒฝ ์ ๋ฌด๋ฅผ ๊ฒ์ฌํ ์ ์๋ค.
์๋ฒ ๊ฐ๋ฐ์๋ ๋ฐ๋์ ๋ฐํ๋๋ ํค๋๊ฐ GET์ผ๋ก ์ป๋ ๊ฒ๊ณผ ์ ํํ ์ผ์นํจ์ ๋ณด์ฅํด์ผํ๋ค.
์๋ฒ์ ๋ฌธ์๋ฅผ ์ด๋ค.
๋ฆฌ์์ค ๋์ฒด ์์ผ๋ฉด ์๋ก ์์ฑ
ํด๋์ ํ์ผ์ ๋ฃ๋ ์๋ฆฌ์ ๊ฐ์ด, ๊ธฐ์กด์ ํ์ผ์ด ์์์ผ๋ฉด ๋ฎ์ด์์ฐ๊ณ ์์ผ๋ฉด ์๋ก ์์ฑ(์์ ๋์ฒด, ๋ฎ์ด์์)
ํด๋ผ์ด์ธํธ์ชฝ์์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ค.(ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ ์์น๋ฅผ ์๊ณ URI ์ง์ )
HTML form์์ ํํ ์ฌ์ฉ๋๋ค.
์๋ฒ๊ฐ ์์ง ์๋ณํ์ง ์์ ์ ๋ฆฌ์์ค ์์ฑ (์๋ก์ด ๋ฆฌ์์ค ์์ฑ ๋ฐ ๋ฑ๋ก)
์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฑ๋กํ๋ค.
๋ฐ๋์ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
๋จ์ ๋ฐ์ดํฐ ์์ฑ, ๋ณ๊ฒฝ์ ๋์ด์ ํ๋ก์ธ์ค ์ฒ๋ฆฌ
๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ ๊ธฐ๋ฅ ์ํ๊ฐ๋ฅ.
๋ฐ๋ผ์ ๋ค๋ฅธ ๋ฉ์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
๋จ, GET์ด cache ์ฑ๋ฅ์ ๋ ๋๋ค.
๋ชฉ์ ์ง ์๋ฒ์์ '๋ฃจํ๋ฐฑ'์ง๋จ์ ์์. ํด๋ผ์ด์ธํธ~์๋ฒ ์ฌ์ด์ ๋ชจ๋ ์์ฒญ/์๋ต ์ฐ์๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด์ ๋ณด๋ธ ๋ฉ์์ง๊ฐ ๋ง๊ฐ์ก๋์ง, ์์ ๋ฌ๋์ง, ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์๋์ง ํ์ธ์ด ๊ฐ๋ฅํ๋ค. ์ฃผ๋ก ์ง๋จ์ ์ํด ์ฌ์ฉ๋๋ค.
์น ์๋ฒ์ ์ฌ๋ฌ๊ฐ์ง ์ข ๋ฅ์ ์ง์ ๋ฒ์์ ๋ํด ๋ฌผ์ด๋ณธ๋ค. ํน์ ๋ฆฌ์์ค์ ๋ํด ์ด๋ค ๋ฉ์๋๊ฐ ์ง์๋๋์ง ๋ฌผ์ด๋ณผ์์๋ค.
์๋ฒ์ ์์ฒญ URL๋ก ์ง์ ํ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ๊ฒ์ ์์ฒญํจ. ํด๋ผ์ด์ธํธ๋ ์ญ์ ๊ฐ ์ํ๋๋๊ฒ์ ๋ณด์ฅ๋ฐ์ง๋ ์์. HTTP ๋ช ์ธ์์๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์๋ฆฌ์ง ์๊ณ ์์ฒญ์ ๋ฌด์ํ๋ ๊ฒ์ ํ์ฉํ๋ค.
๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ
์๋ฒ์์ ์์ฒญ์ ์ ์๋ฐ์์ค ์ ์๋ค ๊ทธ๋ด ๋ โ PUT์ผ๋ก ๋์ฒด.