Request-Line OR Status-Line
[Header CRLF]
CRLF
[ Body ]
Start Line
- ํค๋ ์ค X๊ฐ ๋ถ์ ๊ฒฝ์ฐ, ์ปค์คํ
ํค๋์
Pragma
: ์๋ ์บ์ ์ ์ฑ
Deprecated
Cache-Control
: ์บ์ ์ ์ฑ
์ธ๋ฐ, ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๊ฒ๋ค
Connection
: close, keep-alive ๋ ๊ฐ์ ์ต์
์ด ์์
Stateless Protocol
- HTTP๋ ์ํ๊ฐ ์๋ ํ๋กํ ์ฝ์ด๋ค.
- ์ฆ, ์ด์ Request์ ๋ํด์ ๊ณ ๋ คํ์ง ์๋๋ค๋ ๊ฒ
- ํฐ๋ฏธ๋ ๊ฐ์ ๊ฒฝ์ฐ, ์ด์ ์์ฒญ์ ์ข
์์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ค
- TCP ํต์ ์ ํ๊ฒ๋๋ฉด ์ฐ๊ฒฐ๊ณผ์ ์ ์ค๋ฒํค๋๊ฐ ์๊น
- ๊ทธ๋ฐ๋ฐ ์ด์ฐจํผ ๊ณ์ ์์ฒญ, ์๋ต์ ํ ๊ฑฐ๋ผ๋ฉด ์์ฒญ ๋ณด๋ผ๋๋ง๋ค ์ด๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋๋ ๊ฒ์ ๋นํจ์จ์
- ๊ทธ๋์ ํด๋น ํค๋๊ฐ ์๋ค.
- ๊ทธ๋ฐ๋ฐ ์ด๊ฒ ๋ฌธ์ ๊ฐ ์์ ์๋ ์๋ค.
- ๋์ฉ๋ ์๋น์ค ๊ฐ์ ๊ฒฝ์ฐ์ ํด๋น ์ต์
์ ํจ๋ค๋ ๊ฒ์ ์์ผํ๋๋ฅผ ์ ์ ํ๊ณ ์๋ค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ
- ๋ง์ฝ ํน์ ์ด๋ฒคํธ๋ฅผ ์งํํด์ ์๊ฐ์ ์ผ๋ก ์ฌ๋๋ค์ด ์์ฒญ ๋ชฐ๋ฆฐ๋ค๊ณ ํด๋ณด์. ์ด ์ํฉ์ด๋ฉด ์ผ๋ ๊ฒ์ด ์ข์๊น, ๋๋ ๊ฒ์ด ์ข์๊น?
- ๋๋ ๊ฒฝ์ฐ
- ๋ ๋ง์ ํด๋ผ์ด์ธํธ๋ค ์ฒ๋ฆฌํ ์ ์๋ค.
- ํค๋ ๊ฒฝ์ฐ (์์ฆ)
- ๊ทผ๋ฐ ๋๊ฒ ๋์์ ๋, ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ฐ ํ์ด์ง๋ ๋ด์ง๋ง, ์ด๋ฏธ์ง๋ ๋จ์ง ์๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
- ๋ค์ ์ฌ์์ฒญ์ ํ๋๋ฐ, ๊ทธ๋ด ๊ฒฝ์ฐ ํด๋น ์์ฒญ์ด ๋ค๋ก ๋ฐ๋ฆฌ๊ฒ ๋๊ธฐ ๋๋ฌธ
- ์ฆ, ์ด๋ ๊ฒ ๋๋ฉด ํ์ฌ๋์ด ๋๋ผ๋ ์๋น์ค ํ์ง์ด ์๋นํ ๋จ์ด์ง๊ฒ ๋๋ค.
- ๋ณดํต ๋ค์ด์์ ์ฌ์ดํธ ์ ์ฒด๋ฅผ ๋ณด๊ณ , ๋ก๊ทธ์ธ์ ํ๋ ์ด๋ ํ ํ๋์ ์ทจํ๋ ๊ฒ๊น์ง๊ฐ ํ๋์ ์ก์
์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ฆ์๋ keep alive๋ฅผ ํค๋, ํด๋น ์ฐ๊ฒฐ ์ง์ ์๊ฐ์ ์ค์ด๋ ๊ฒ์ผ๋ก ๋ณํํ๋ ์ถ์ธ์ด๋ค.
Blank Line
- header์ body๋ฅผ ๊ตฌ๋ถํด์ฃผ๋ ๋ผ์ธ์ด๋ค.
- CR (Carriage return)
- LF (Line Feed)
- ํ์๊ธฐ์์ ๋ฐ์ํ ์ด์
- ์ด์ ์๋ ์ข
์ด๊ฐ ์์ง์ด๊ณ ์์ดํํ๋ ๊ฒ์ ํ์๊ธฐ์ ์ค์์ ์์นํ์
- ์ด ๋, ์ข
์ด๋ฅผ ์์ง์ด๊ฒ ๋ง๋๋ ๊ฒ์
carriage
๋ผ ๋ถ๋ ์
- ํ์ค์ ๋ค ์น๊ฒ๋๋ฉด, ์ผ์ชฝ์ผ๋ก ์ฎ๊ฒจ์ก๋ ์ข
์ด๋ฅผ ๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ฒจ์ผ ํจ
- ์ด ๊ณผ์ ์์ ๋์จ ๊ฒ์ด Carriage return
- ๋ ๋ค์์ค์ ์ณ์ผํ๊ธฐ ๋๋ฌธ์ ์ข
์ด๋ฅผ ์๋ก ์ฌ๋ ค์ผ ํจ
- ์ด ๊ณผ์ ์์ ๋์จ ๊ฒ์ด Line feed
- ํ์ฌ
- ์ด์ ๋ Carriage Return์ ํ ํ์๊ฐ ์์
- Line Feed๋ง ์ฌ์ฉํ๋ฉด ์๋ฏธ๋ฅผ ์ถฉ๋ถํ ์ ๋ฌํ ์๊ฐ ์์
- ํ์ง๋ง..
- Window: CRLF ์ฌ์ฉ
\r\n
- Unix ๊ณ์ด: LF๋ง ์ฌ์ฉ
\n
- ์๋ํฐ์์๋ ์ด๋ฅผ ๋๊ฐ์ด ์ธ์ํด์ฃผ๋, ์ด์ HTTP ๋ฉ์์ง๋ฅผ ์ง์ ์์ฑํ ๊ฒฝ์ฐ,
\r\n
์ด ์์ด์ ๊ณค์ญ์ ์น๋ ๋ ๊ฒฝํ์ด ์์
Body
- ํ
์คํธ ๋ฐ์ดํฐ
- ์ผ๋ฐ ํ
์คํธ, JSON, XML, HTML ๋ฑ
- ์ด์ง ๋ฐ์ดํฐ
- ์ด๋ฏธ์ง, ์ค๋์ค, ๋น๋์ค ๋ฑ
- ํผ ๋ฐ์ดํฐ
- HTML ํผ์ ํตํด ์ ์ถ๋ ๋ฐ์ดํฐ
- ๊ธฐํ ํ์