HTTP(HyperText Transfer Protocol)
HTTP ๋ฉ์์ง์ ๋ชจ๋ ๊ฒ์ ๋ด์์ ์ ์ก
- HTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML (API)
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
- ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP ์ฌ์ฉ
HTTP ์ญ์ฌ
- HTTP/0.9 1991๋ : GET ๋ฉ์๋๋ง ์ง์, HTTP ํค๋ X
- HTTP/1.0 1996๋ : ๋ฉ์๋, ํค๋ ์ถ๊ฐ
- HTTP/1.1 1997๋ : ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ, ์ฐ๋ฆฌ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๋ฒ์
RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)
- HTTP/2 2015๋ : ์ฑ๋ฅ ๊ฐ์
- HTTP/3 ์งํ์ค: TCP ๋์ ์ UDP ์ฌ์ฉ, ์ฑ๋ฅ ๊ฐ์
๊ธฐ๋ฐ ํ๋กํ ์ฝ
TCP: HTTP1.1, HTTP/2
UDP: HTTP/3
ํ์ฌ HTTP/1.1 ์ฃผ๋ก ์ฌ์ฉ
HTTP/2, HTTP/2๋ ์ ์ ์ฆ๊ฐ
HTTP ํน์ง
- ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ด์ค๋ฆฌ์ค), ๋น์ฐ๊ฒฐ์ฑ
- HTTP ๋ฉ์์ง
- ๋จ์ํจ, ํ์ฅ ๊ฐ๋ฅ
1. ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- Request Response ๊ตฌ์กฐ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐ
- ์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต
2. ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ด์ค๋ฆฌ์ค)
: ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์์
์ฅ์ : ์๋ฒ ํ์ฅ์ฑ์ด ๋์(์ค์ผ์ผ ์์)
๋จ์ : ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ ๋ฐ์ดํฐ ์ ์ก
Stateful, Stateless ์ฐจ์ด
Stateful: ์ํ ์ ์ง
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด์ ์ํ๋ฅผ ๋ณด์กด(๋ฌธ๋งฅ ๋ณด์กด)
- ์ค๊ฐ์ ์๋ฒ๊ฐ ๋ฐ๋๋ฉด, ์๋น์ค ์ฅ์ ๋ฐ์ → ํญ์ ๊ฐ์ ์๋ฒ๊ฐ ์ ์ง๋์ด์ผ ํจ
ex) ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋๋ฉด ์๋จ(์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋ ๋ ์ํ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์ ์์๊ฒ ๋ฏธ๋ฆฌ ์๋ ค์ผํจ)
- ๋ฌธ์ ์ : ํด๋ผ์ด์ธํธ๋ ํ ์๋ฒ์ ๊ณ์ ํต์ ์ ํด์ผํ๋๋ฐ, ์ค๊ฐ์ ํด๋น ์๋ฒ๊ฐ ์ฃฝ์ด๋ฒ๋ฆฌ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ฒ์๋ถํฐ ๋ค์ ์์ฒญํด์ผํจ
Stateless: ๋ฌด์ํ
- ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๊ทธ๋ ์๋ฒ์๊ฒ ์ ๋ฌํ๋ฏ๋ก, ์ค๊ฐ์ ์๋ฒ๊ฐ ๋ฐ๋์ด๋ ์๋ฌด ๋ฌธ์ ์์ → ์๋ฌด ์๋ฒ๋ ํธ์ถํด๋ ๋จ
- ๊ฐ์๊ธฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ๋๊ฑฐ ํฌ์ ๊ฐ๋ฅ
- ๋ฌด์ํ๋ ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์์ → ๋ฌดํํ ์๋ฒ ์ฆ์ค ๊ฐ๋ฅ
ex) ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋์ด๋ ๋จ(๊ฐ์๊ธฐ ๊ณ ๊ฐ์ด ์ฆ๊ฐํด๋ ์ ์ ๋๊ฑฐ ํฌ์ ๊ฐ๋ฅ)
- ์ค๊ฐ์ ์๋ฒ๊ฐ ์ฅ์ ๊ฐ ๋ฐ์ํด๋, ํด๋ผ์ด์ธํธ๋ ๋ค๋ฅธ ์๋ฒ๋ก ์์ฒญํ ์ ์์
- ์ค์ผ์ผ ์์: ์ํ ํ์ฅ ์ ๋ฆฌ
- ๋์ฉ๋ ํธ๋ํฝ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ ์ฉ
- ๋ฌธ์ ์ : ๋ฐ์ดํฐ๋ฅผ ๋๋ฌด ๋ง์ด ๋ณด๋
๋ฌด์ํ์ ํ๊ณ์
๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ก ์ค๊ณํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์๋ ๊ฒฝ์ฐ๋ ์์
๋ฌด์ํ
ex) ๋ก๊ทธ์ธ์ด ํ์์๋ ๋จ์ํ ์๋น์ค ์๊ฐ ํ๋ฉด
์ํ ์ ์ง
ex) ๋ก๊ทธ์ธ
๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ๋ค๋ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง
์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด์ ์ํ ์ ์ง
์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉ
3. ๋น ์ฐ๊ฒฐ์ฑ(connectionless)
TCP/IP๋ ์ฐ๊ฒฐ์ ์ ์งํจ
์ฐ๊ฒฐ์ ์ ์งํ๋ ๋ชจ๋ธ์ ๊ฒฝ์ฐ
ํด๋ผ์ด์ธํธ1๊ณผ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์, ๊ทธ ์ดํ ํด๋ผ์ด์ธํธ2์ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์(์ด๋, ํด๋ผ์ด์ธํธ1์ ์๋ฒ์ ๊ณ์ ์ฐ๊ฒฐ์ ์ ์งํจ) → ์ด๋ฐ ๊ฒฝ์ฐ, ์์ฒญ/์๋ต์ ์ฃผ๊ณ ๋ฐ์ง ์๋ ํด๋ผ์ด์ธํธ์๋ ์ฐ๊ฒฐ์ ์ ์งํด์ผ ํ๋ฏ๋ก ์๋ฒ ์์์ด ์๋ชจ๋จ
์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ ๊ฒฝ์ฐ
ํด๋ผ์ด์ธํธ1๊ณผ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ํ(์์ฒญ, ์๋ต) ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆผ, ๊ทธ ํ ํด๋ผ์ด์ธํธ2์ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ํ ์ฐ๊ฒฐ์ ๋์(์๋ก ํ์ํ ๊ฒ๋ง ์ฃผ๊ณ ๋ฐ๊ณ ์ฐ๊ฒฐ์ ๋์) → ์ด๋ฌํ ๊ฒฝ์ฐ, ์๋ฒ ์ ์ฅ์์๋ ์์์ ํ์ฌ ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ๋๋ง ์ฐ๊ฒฐ์ ํ๊ณ ๋์ด๋ฒ๋ ค์, ์๋ฒ๊ฐ ์ ์งํ๋ ์์์ ์ต์ํ์ผ๋ก ์ค์
๋จ์ : ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์๋ ์ฐ๊ฒฐ์ ์ ์งํ๋ ๊ณผ์ ์ด ํญ์ ์์ด์ผํจ
๋น ์ฐ๊ฒฐ์ฑ
- HTTP๋ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ต
- 1์๊ฐ ๋์ ์์ฒ๋ช
์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์์
- ex) ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณ์ ์ฐ์ํด์ ๊ฒ์ ๋ฒํผ์ ๋๋ฅด์ง๋ ์๋๋ค.
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
๋จ์
TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ - 3 way handshake ์๊ฐ ์ถ๊ฐ
์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋
์ง๊ธ์ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ
HTTP ์ง์ ์ฐ๊ฒฐ: ์ฐ๊ฒฐ ํ, ์์ฒญ/์๋ต์ด ๋๋ ๋๊น์ง ์ฐ๊ฒฐ ์ ์ง(๋ด๋ถ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฆ-๋ช ์ด๋์ ์ ์ง ๋ฑ๋ฑ)
[์ด๊ธฐ HTTP ๋์ ์๋ฆฌ]

[HTTP ์ง์ ์ฐ๊ฒฐ ๋์ ์๋ฆฌ]

HTTP ๋ฉ์์ง
HTTP ์์ฒญ ๋ฉ์์ง์ HTTP ์๋ต ๋ฉ์์ง์ ๊ตฌ์กฐ๋ ๋ค๋ฆ
HTTP ๋ฉ์์ง ๊ตฌ์กฐ

- ๊ณต๋ฐฑ ๋ผ์ธ์ ๋ฌด์กฐ๊ฑด ์์ด์ผ ํจ
HTTP ์์ฒญ ๋ฉ์์ง
์์ฒญ ๋ฉ์์ง๋ body ๋ณธ๋ฌธ์ ๊ฐ์ง ์ ์์

HTTP ์๋ต ๋ฉ์์ง

1) ์์ ๋ผ์ธ
์์ฒญ ๋ฉ์์ง
start-line=request-line/status-line
request-line=method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์ํฐ)
- โญ๏ธ HTTP ๋ฉ์๋(GET: ์กฐํ)
- ์ข ๋ฅ: GET, POST, PUT, DELETE
- ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
- GET: ๋ฆฌ์์ค ์กฐํ
- POST: ์์ฒญ ๋ด์ญ ์ฒ๋ฆฌ
- ์์ฒญ ๋์(/search?q=hello&hl=ko)
- absolute-path[?query] (์ ๋๊ฒฝ๋ก[?์ฟผ๋ฆฌ])
- ์ ๋๊ฒฝ๋ก="/"๋ก ์์ํ๋ ๊ฒฝ๋ก
- HTTP Version
์๋ต ๋ฉ์์ง
start-line=request-line/status-line
status-line = HTTP-version SP status-code SP reason-phrase CRLF
- HTTP ๋ฒ์
- HTTP ์ํ ์ฝ๋: ์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
- 200: ์ฑ๊ณต
- 400: ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ
- 500: ์๋ฒ ๋ด๋ถ ์ค๋ฅ
- ์ด์ ๋ฌธ๊ตฌ: ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช ๊ธ
2) HTTP ํค๋
header-field = field-name ":" OWS field-value OWS (OWS: ๋์ด์ฐ๊ธฐ ํ์ฉ)
field-name์ ๋์๋ฌธ์ ๊ตฌ๋ฌธ ์์
<์ฉ๋>
- HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด ํฌํจ
- ex) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ๋ณด, ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด...
- ํ์ค ํค๋๊ฐ ๋๋ฌด ๋ง์
- ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ
3) HTTP ๋ฉ์์ง ๋ฐ๋
<์ฉ๋>
- ์ค์ ์ ์กํ ๋ฐ์ดํฐ
- HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
'์น ์๋น์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| HTTP ์ํ์ฝ๋ (0) | 2022.12.02 |
|---|---|
| HTTP ๋ฉ์๋ ํ์ฉ (0) | 2022.12.01 |
| HTTP ๋ฉ์๋ (0) | 2022.11.30 |
| URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (0) | 2022.11.29 |
| ์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2022.11.29 |