HTTP(HyperText Transfer Protocol)
HTML/TEXT, IMAGE, ์์ฑ, ์์, ํ์ผ, JSON, XML ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ก ๊ฐ๋ฅํ ํ๋กํ ์ฝ๋ก, ํ์ฌ ๋คํธ์ํฌ ํต์ ์์ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด๋ค. ์ฃผ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์์ ์์ฒญ/์๋ต์ ์ฃผ๊ณ ๋ฐ๋๋ฐ ์ฌ์ฉ๋๊ณ ์๋ค.
์ญ์ฌ
HTTP/0.9: ์ด๊ธฐ ๋ฒ์ (GET ๋ฉ์๋๋ง ์ง์ / ํค๋ ์์)
HTTP/1.0: ๋ฉ์๋์ ํค๋๋ฅผ ์ถ๊ฐ๋ก ์ง์ํ๋ ๋ฒ์ (์ง์ ์ฐ๊ฒฐ ๋ฏธ์ง์)
HTTP/1.1: ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฒ์ ์ผ๋ก, ์ง์ ์ฐ๊ฒฐ, ํ์ดํ๋ผ์ด๋(pipelining)์ ์ง์ํ์ฌ ์ฑ๋ฅ ํฅ์
HTTP/2: HTTP/1.1์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค๊ณ๋ ๋ฒ์ ์ผ๋ก, ํค๋ ์์ถ, ์คํธ๋ฆผ ๋ค์คํ ๋ฑ์ผ๋ก ์ฑ๋ฅ์ ๊ฐ์
HTTP/3: TCP ๋์ UDP ํ๋กํ ์ฝ ์์์ ์๋ํ๋ฉฐ, ๊ธฐ์กด TCP ๊ธฐ๋ฐ์ ๋ฌธ์ ์ ์ ๊ฐ์ ํ์ฌ ๋ ๋น ๋ฅธ ์ฑ๋ฅ ์ ๊ณต
์ ์ก ๊ณ์ธต๊ณผ HTTP
TCP: HTTP/1.1, HTTP/2
UDP: HTTP/3
HTTP/3๋ UDP ํ๋กํ ์ฝ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ์ฑ๋ฅ์ ์ต์ ํํ๋๋ก ์๋ก ์ค๊ณ๋ ํ๋กํ ์ฝ์ด๋ค. (์ฐธ๊ณ ๋งํฌ)
HTTP ํน์ง
์์ฒญ-์๋ต ๊ธฐ๋ฐ์
Client
-Server
๊ตฌ์กฐ๋ฅผ ๊ฐ์งrequest
๋ฅผ ๋ณด๋ด๋ฉดresponse
๋ก ๋์์ค๋ฉฐ,request
์์ด๋response
๊ฐ ์กด์ฌํ์ง ์์์ํ๋ฅผ ์ ์งํ์ง ์์(
stateless
)HTMP / ์ด๋ฏธ์ง / ์์ / ํ์ผ / JSON / XML ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ก ๊ฐ๋ฅ(๋ฏธ๋์ด ๋ ๋ฆฝ์ )
๋น์ฐ๊ฒฐ์ฑ(
connectionless
)์ง์ ์ฐ๊ฒฐ(
Keep-Alive
)์ ํตํด ํ๋์ TCP ์ปค๋ฅ์ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌ(Three-way Handshake๋ฅผ ํ ๋ฒ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ํฅ์)GET
/POST
/PUT
/HEAD
/DELETE
/OPTIONS
๋ฉ์๋ ์กด์ฌ
์ ์ก ๋ฐฉ์
HTTP๋ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋๋ฐ, ์ด ๋ฐฉ์์ ๋ฉ์์ง ์ ์ก ์ ์ฌ์ฉํ๋ ํค๋์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
์ ์ก ๋ฐฉ์ | ์ฌ์ฉ ํค๋ | ์ค๋ช |
---|---|---|
๋จ์ ์ ์ก(Simplest Transfer) | Content-Length | ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ๋ฅผ ์๋ ค์ค |
์์ถ ์ ์ก(Compressed Transfer) | Content-Encoding | ๋ฉ์์ง ๋ฐ๋๋ฅผ ์์ถํ ๋ฐฉ์์ ์๋ ค์ค |
๋ถํ ์ ์ก(Chunked Transfer) | Transfer-Encoding | ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋์ด ์ ์ก |
๋ฒ์ ์ ์ก(Ranged Transfer) | Content-Range | ๋ฉ์์ง ๋ฐ๋์ ์ผ๋ถ๋ง ์์ฒญ |
Content Negotiation
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ด๋ค ์ปจํ ์ธ ๋ฅผ ์ํ๋์ง ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก, ์๋ฒ๋ ์ด ์ ๋ณด๋ฅผ ํตํด ๊ฐ์ฅ ์ ์ ํ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์๋ค.
ํด๋ผ์ด์ธํธ๋
request message
์ Accept* ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์๋ฒ๋
response message
์ Content* ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต์ธ์ด ํ๊ทธ(
Accept-Language
) / ๋ฌธ์์ (Accept-Charset
) / ์ธ์ฝ๋ฉ(Accept-Encoding
) / ๋ฏธ๋์ด ํ์ (Accept
) ๋ฑ์ ์ฌ์ฉ0 ~ 1 ์ฌ์ด์ Quality Value(QValue)๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ ์์๋ฅผ ๋ํ๋(
Accept-Language: ko-KR, en-US;q=0.9, en;q=0.8
)
Status Code
request
์ ๋ํ ์๋ฒ์ ์๋ต ์ํ๋ฅผ ๋ํ๋ด๋ ์ธ ์๋ฆฌ ์ซ์ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์๋ต ์ํ๋ฅผ ํฌ๊ฒ 5๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค.
code | class | description |
---|---|---|
1xx | information | ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์๋ค์ฌ ์ฒ๋ฆฌ ์ค |
2xx | success | ๋ฆฌํ์คํธ ์ ์ ์ฒ๋ฆฌ |
3xx | redirection | ๋ฆฌํ์คํธ๋ฅผ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ ํ๋ ํ์ |
4xx | client error | ๋ฆฌํ์คํธ ์ดํด ๋ถ๊ฐ๋ฅ |
5xx | server error | ์๋ฒ๊ฐ ๋ฆฌํ์คํธ ์ฒ๋ฆฌ ์คํจ |
์์ธํ ๋ด์ฉ์ HTTP Status ์ฐธ๊ณ
MIME(Multipurpose Internet Mail Extensions)
ํ
์คํธ/์์/์ด๋ฏธ์ง ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๊ธฐ๋ฅ์ผ๋ก Content-Type
ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ข
๋ฅ๋ฅผ ๋ํ๋ธ๋ค.
์น ์๋ฒ์์ MIME ํ์
์ ์ง์ ํ๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฃฐ ์ ์๋ ๊ฐ์ฒด์ธ์ง ํ์ธํ๊ณ , ํด๋น ํ์
์ ๋ง๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ด๋ฏธ์ง ๋ฑ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์์คํค(ASCII) ๋ฌธ์์ด์ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ฐ์ดํฐ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ ๋ฑ์ ๊ท์
ํ์ฅ ์ฌ์์ ์๋ ๋ฉํฐํํธ(Multipart)๋ผ๊ณ ํ๋ ์ฌ๋ฌ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์์ฉํ๋ ๋ฐฉ๋ฒ ์ฌ์ฉ
HTTP
๋ ๋ฉํฐํํธ์ ๋์ํ๊ณ ์์ด ํ๋์ ๋ฉ์์ง ๋ฐ๋ ๋ด๋ถ์ ์ฌ๋ฌ ์ํฐํฐ๋ฅผ ํฌํจ์ํฌ ์ ์์์ ์ก ๋ฐฉ์
multipart/form-data: Web ํผ์ผ๋ก๋ถํฐ ํ์ผ ์ ๋ก๋์ ์ฌ์ฉ
multipart/byteranges: ์ํ ์ฝ๋ 206(Partial Content)
response message
๊ฐ ๋ณต์ ๋ฒ์์ ๋ด์ฉ์ ํฌํจํ ๋ ์ฌ์ฉ
์ฐธ๊ณ ์๋ฃ
Last updated