๐ท ๋ชจ๋ ๊ฒ์ด HTTP
HyperText Transfer Protocol
1๏ธโฃ HTTP ๋ฉ์์ง์ ๋ชจ๋ ๊ฒ์ ์ ์ก
- HTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML (API)
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
- ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP ์ฌ์ฉ
โก๏ธ ์ง๊ธ์ HTTP ์๋!
2๏ธโฃ 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 ์ฌ์ฉ, ์ฑ๋ฅ ๊ฐ์
3๏ธโฃ ๊ธฐ๋ฐ ํ๋กํ ์ฝ
- TCP: HTTP/1.1, HTTP/2
- UDP: HTTP/3
- ํ์ฌ HTTP/1.1 ์ฃผ๋ก ์ฌ์ฉ
HTTP/2, HTTP/3 ๋ ์ ์ ์ฆ๊ฐ
4๏ธโฃ ํน์ง
- ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ
์ด์ค๋ฆฌ์ค), ๋น์ฐ๊ฒฐ์ฑ
- HTTP ๋ฉ์์ง
- ๋จ์ํจ, ํ์ฅ ๊ฐ๋ฅ
๐ท ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- Request Response ๊ตฌ์กฐ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐ
- ์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต
- ๋
๋ฆฝ์ ์ธ ์งํ์ด ๊ฐ๋ฅํด์ง๋ค
๐ท Stateful, Stateless
โ๏ธ Stateless
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋ ๊ฒ
โ๏ธ Stateful, Stateless ์ฐจ์ด
์ํ ์ ์ง(Stateful) : ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋๋ฉด ์๋๋ค.
(์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋ ๋ ์ํ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์ ์์๊ฒ ๋ฏธ๋ฆฌ ์๋ ค์ค์ผ ํ๋ค.)
๋ฌด์ํ(Statekess) : ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋์ด๋ ๋๋ค.
- ๊ฐ์๊ธฐ ๊ณ ๊ฐ์ด ์ฆ๊ฐํด๋ ์ ์์ ๋๊ฑฐ ํฌ์
ํ ์ ์๋ค.
- ๊ฐ์๊ธฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ๋๊ฑฐ ํฌ์
ํ ์ ์๋ค.
- ๋ฌด์ํ๋ ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค โก๏ธ ๋ฌดํํ ์๋ฒ ์ฆ์ค ๊ฐ๋ฅ
โ๏ธ Stateless ์ค๋ฌด ํ๊ณ
- ๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ก ์ค๊ณ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ๋ฌด์ํ
- ์) ๋ก๊ทธ์ธ์ด ํ์ ์๋ ๋จ์ํ ์๋น์ค ์๊ฐ ํ๋ฉด
- ์ํ ์ ์ง
- ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ๋ค๋ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง
- ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์
๋ฑ์ ์ฌ์ฉํด์ ์ํ ์ ์ง
- ์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉ
๐ท ๋น ์ฐ๊ฒฐ์ฑ(connectionless)
โ๏ธ ๋น์ฐ๊ฒฐ์ฑ ์ด๋?
- HTTP๋ TCP/IP์ ๋ค๋ฅด๊ฒ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ(์ด ๋จ์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ตํจ!)
- 1์๊ฐ ๋์ ์์ฒ๋ช
์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ค ํ๋๋ผ๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์๋ค
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค!
โ๏ธ ํ๊ณ์ ๊ทน๋ณต
- TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ โก๏ธ 3 way handshake ์๊ฐ์ด ์ถ๊ฐ
- ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋ ๋จ โก๏ธ ๋นํจ์จ์
- ์ง๊ธ์ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
- HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ
๐ท HTTP ๋ฉ์์ง
HTTP ์์ฒญ๊ณผ ์๋ต ๋ฉ์์ง๋ ์กฐ๊ธ ๋ค๋ฅธ ํ์์ ๊ฐ์ง๋ค!
1๏ธโฃ ์์ ๋ผ์ธ - ์์ฒญ ๋ฉ์์ง
- HTTP ๋ฉ์๋ (GET: ์กฐํ)
- ์์ฒญ ๋์ (/search?q=hello&hl=ko)
- HTTP Version
โ๏ธ HTTP ๋ฉ์๋
- ์ข
๋ฅ: GET, POST, PUT, DELETE...
- ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
โ๏ธ HTTP ์์ฒญ ๋์
- absolute-path?query
- ์ ๋๊ฒฝ๋ก= "/" ๋ก ์์ํ๋ ๊ฒฝ๋ก
2๏ธโฃ ์์ ๋ผ์ธ - ์๋ต ๋ฉ์์ง
- HTTP ๋ฒ์
- HTTP ์ํ ์ฝ๋: ์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
- 200 : ์ฑ๊ณต
- 400 : ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ
- 500 : ์๋ฒ ์ค๋ฅ
- ์ด์ ๋ฌธ๊ตฌ : ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช
๊ธ
3๏ธโฃ HTTP ํค๋
- HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด
์ ) ๋ฉ์์ง ๋ฐ๋ ๋ด์ฉ, ๋ฐ๋ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ๋ฑ ๋ฑ .. ๋งค์ฐ ๋ง์ ^^*
4๏ธโฃ HTTP ๋ฉ์์ง ๋ฐ๋
- ์ค์ ์ ์กํ ๋ฐ์ดํฐ
- HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
์ญ ์ญ ๋๊ฐ๋ด
์๋ค