๐ HTTP
- HTTP : HyperText Transfer Protocol
- ๋ฌธ์ ๊ฐ ๋งํฌ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋กํ ์ฝ์ด์ง๋ง ํ์ฌ ๊ฑฐ์ ๋ชจ๋ ์๋ฃ๋ฅผ ์ ์กํ ์ ์๋ค.
- HTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML (API)
- ์๋ฒ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP๋ฅผ ์ฌ์ฉํ๋ค.
โ HTTP ๋ฒ์
- HTTP/1.1 : ํ์ฌ ์ฌ์ฉ๋๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ, ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํจ, ๊ฐ์ฅ ์ค์ํ ๋ฒ์
- HTTP/2์ HTTP/3์ 1.1 ๋ฒ์ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ ๋ฒ์ ์ด๋ค.
- 1.1๊ณผ 2๋ TCP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ฉฐ 3 way handshake๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ ์กํด์ผ ํ ๋ฐ์ดํฐ๊ฐ ๋ง๊ณ ์๋๊ฐ UDP ๋ณด๋ค๋ ๋๋ฆฌ๋ค.
- ๋ฐ๋ฉด 3์ UDP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ์ฑ๋ฅ์ ์ต์ ํํ์๋ค.
โ HTTP ํน์ง
- ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ
- ๋ฌด์ํ(Stateless) ํ๋กํ ์ฝ, ๋น์ฐ๊ฒฐ์ฑ
- HTTP ๋ฉ์ธ์ง๋ฅผ ํตํด ํต์
- ๋จ์ํจ, ํ์ฅ ๊ฐ๋ฅ
๐ ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- Request Response ๊ตฌ์กฐ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋๊ธฐ (HTTP ๋ฉ์ธ์ง๋ฅผ ํตํด ํต์ )
- ์๋ฒ๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๊ตฌ๋ถํ๋ฉด ํด๋ผ์ด์ธํธ ์ชฝ์ UI, ์ฌ์ฉ์ฑ์ ์ง์คํ ์ ์๊ณ ์๋ฒ ์ชฝ์ ๋น์ฆ๋์ค ๋ก์ง, DB ๋ฑ์ ์ง์คํ ์ ์๋ค → ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ ํ ์ ์์ e.g. ๋์ฉ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋๋ก ๋ณ๊ฒฝํ ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ ํ์๊ฐ ์์
๐ ๋ฌด์ํ ํ๋กํ ์ฝ
โ ์ํ ์ ์ง(Stateful)
- ํญ์ ๊ฐ์ ์๋ฒ๊ฐ ์ ์ง๋์ด์ผ ํจ
- ์ค๊ฐ์ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ฒ์๋ถํฐ ์์ฒญ์ ๋ค์ ํด์ผํจ
โ ๋ฌด์ํ (Stateless)
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ(๋ฌธ๋งฅ)๋ฅผ ๋ณด์กดํ์ง ์์
- ์ฅ์ : ์๋ฒ ํ์ฅ์ฑ์ด ๋์(์ค์ผ์ผ ์์ - ์ํ ํ์ฅ ์ ๋ฆฌ)
- ๋จ์ : ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ผ ํจ (์ ์กํด์ผ ํ ๋ฐ์ดํฐ ์์ด ๋ง์)
→ ์ต๋ํ ๋ฌด์ํ๋ก ์ค๊ณํ๋ ๊ฒ์ด ์ข์ (e.g. ๋์ฉ๋ ํธ๋ํฝ ๋ฐ์์ ์๋ฒ ์ฆ์ค ํธ๋ฆฌ)
โ ์ค๋ฌด ํ๊ณ
- ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธํ ์ํ๋ฅผ ์๋ฒ์ ์ ์งํด์ผ ํ๋ค. → ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด์ ์ ์ง
- ์ํ ์ ์ง๋ ๊ผญ ํ์ํ ๊ฒฝ์ฐ์ ์ต์ํ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๐ ๋น์ฐ๊ฒฐ์ฑ
โ ์ฐ๊ฒฐ ์ ์ง
- ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์ ์ดํ์ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ์๋ตํ๋ค.
- ์ฐ๊ฒฐ์ ์ ์งํ๊ฒ ๋๋ฉด ์๋ฒ๋ ์์์ ๊ณ์ ์๋ชจํ๊ฒ ๋๋ค.
โ ์ฐ๊ฒฐ ์ ์ง X
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ง ์ฐ๊ฒฐ
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
โ ํ๊ณ์ ๊ทน๋ณต
- ์ฐ๊ฒฐ์ ๋งบ์ ๋ TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํ๋ฏ๋ก 3 way handshakeํ๋ ์๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ ์๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋ ๋๋ค.
- ํ์ฌ๋ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ผ๋ฉฐ 2, 3๋ฒ์ ์์ ๋์ฑ ์ต์ ํ๊ฐ ๋์๋ค.
โ HTTP ์ง์ ์ฐ๊ฒฐ
- HTTP ์ด๊ธฐ : ๊ฐ ์์์ ์ฃผ๊ณ ๋ฐ์ ๋๋ง๋ค ์ฐ๊ฒฐ์ ์๋ก ๋งบ์
- HTTP ์ง์ ์ฐ๊ฒฐ : ๋ฆฌ์์ค๋ฅผ ์์ฒญํ์ ๋ ๊ด๋ จ๋ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ๋ฐ์ ๋๊น์ง ์ฐ๊ฒฐ์ ์ง์ํจ
๐ HTTP ๋ฉ์ธ์ง
๐ป HTTP ๋ฉ์ธ์ง ๊ตฌ์กฐ
- start-line, header, CRLF, message body๋ก ๊ตฌ์ฑ
โ ์์ ๋ผ์ธ (start-line)
๐ป ์์ฒญ ๋ฉ์ธ์ง
- start-line = request-line
- request-line = method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์ํฐ)
- HTTP ๋ฉ์๋
- ์ข ๋ฅ : GET (๋ฆฌ์์ค ์กฐํ), POST (์์ฒญ ๋ด์ญ ์ฒ๋ฆฌ), PUT, DELETE
- ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
- ์์ฒญ ๋์
- ์ ๋๊ฒฝ๋ก[?์ฟผ๋ฆฌ]
- HTTP Version
๐ป ์๋ต ๋ฉ์ธ์ง
- start-line = status-line
- status-line = HTTP-version SP status-code SP reason-phrase CRLF
- HTTP ๋ฒ์
- HTTP ์ํ ์ฝ๋ : ์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
- 200 : ์ฑ๊ณต
- 400 : ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ
- 500 : ์๋ฒ ๋ด๋ถ ์ค๋ฅ
- ์ด์ ๋ฌธ๊ตฌ : ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช ๊ธ
โ ํค๋ (header)
๐ป ๊ตฌ์กฐ
- header-field = field-name ":" OWS field-value OWS (OWS : ๋์ด์ฐ๊ธฐ ํ์ฉ)
- field-name์ ๋์๋ฌธ์ ๊ตฌ๋ถ X
๐ป ์ฉ๋
- HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด๋ฅผ ๋ด๊ณ ์์
- e.g. ๋ฉ์ธ์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์ธ์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) ์ ๋ณด, ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ..
- ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ
โ ๋ฉ์ธ์ง ๋ฐ๋ (message body)
- ์ค์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์
- HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ ใ ๊ฐ๋ฅ
๊ฐ์ ์๋ฃ
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํ๋ฐ | ๊ฐ์
์ค๋ฌด์ ๊ผญ ํ์ํ HTTP ํต์ฌ ๊ธฐ๋ฅ๊ณผ ์ฌ๋ฐ๋ฅธ HTTP API ์ค๊ณ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ...
www.inflearn.com
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] API URI ์ค๊ณ์ HTTP ๋ฉ์๋ (0) | 2022.03.13 |
---|---|
[HTTP] URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (0) | 2022.03.12 |
[HTTP] ์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2022.03.10 |