๋ชฉ์ฐจ
HTTP๋?
Hyper Text Transfer Protocol์ ๋๋ฌธ์์ด๋ก ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ์ด๋ค. ์ด๊ธฐ์๋ HTML๊ณผ ๊ฐ์ ํ์ดํผํ ์คํธ๋ฅผ ์ฃผ๋ก ์ ์กํ์ง๋ง, ์ต๊ทผ์๋ Plain text, JSON, XML ๋ฑ ๋ค์ํ ํํ์ ์ ๋ณด๋ ์ ์กํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด ํ๋กํ ์ฝ์ด๋ค.
* ํ์ดํผ ํ ์คํธ: ์ฐธ์กฐ(ํ์ดํผ๋งํฌ)๋ฅผ ํตํด ํ ๋ฌธ์์์ ๋ค๋ฅธ ๋ฌธ์๋ก ์ฆ์ ์ ๊ทผํ ์ ์๋ ํ ์คํธ์ด๋ค. ๊ธฐ์กด์ ๋ฌธ์๊ฐ ์์ฐจ์ ์ด๋ฉด์ ์์ดํ ๊ตฌ์กฐ๋ผ๋ฉด, ํ์ดํผํ ์คํธ๋ ๋งํฌ์ ๋ฐ๋ผ ๊ทธ ์ฐจ๋ก๊ฐ ๋ฐ๋๋ ์์์ ์ด๋ฉด์ ๋์ดํ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
* ์ดํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด ํ๋กํ ์ฝ: ์ปดํจํฐ ๋คํธ์ํฌ์์ ์ธํฐ๋ท ํ๋กํ ์ฝ ์ปดํจํฐ ๋คํธ์ํฌ๋ฅผ ํตํ๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์์ ์ํด ์ค๊ณ๋์ด ํต์ ํ๋กํ ์ฝ๊ณผ ๋ฐฉ์์ ์ํด ๋ณด์ ๋ ์ถ์ ๊ณ์ธต์ด๋ค.
HTTP ํน์ง
ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ
ํด๋ผ์ด์ธํธ๋ UI/UX์ ์ง์คํ๊ณ ์๋ฒ์์ ๋น์ง๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฑ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ถ๋ฆฌํ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ์ด๋ค.
๐ง ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ๋?
ํด๋ผ์ด์ธํธ๋ ์ ์ ์ ์ํธ์์ฉ์ ๋ด๋นํ๊ณ , ์๋ฒ๋ ๋ฆฌ์์ค ์์ฒญ๊ณผ ์๋ต์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๋๋ก ์ญํ ์ด ๋ถ๋ฆฌ๋์ด ์๋ ๊ตฌ์กฐ์ด๋ค. HTTP ํ๋กํ ์ฝ์ ํตํด ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ฐ request์ response๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ํด๋ผ์ด์ธํธ
์๋ฒ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋จ๋ง๊ธฐ์ ์น์ ์ ๊ทผํ๋ ๋จ๋ง๊ธฐ ๋ด ์ํํธ์จ์ด๋ฅผ ์ง์นญํ๋ ๊ฒ์ผ๋ก ๋ณดํต์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ํ๋ธ๋ค. ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ์ฌ ์๋น์ ์์ฒญ์ ๋ณด๋ด๋ ์ญํ ์ ํ๋ค.
- ์๋ฒ
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ณด๋ธ๋ค. ์ด๋ ํ ํํ๋ก๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์๋ต์ ์ ๊ณตํ๋ฉด ์๋ฒ๊ฐ ๋ ์ ์๋ค.
TCP/IP ๊ธฐ๋ฐ
๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฃผ์ ํ๋กํ ์ฝ๋ก TCP/IP ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ๊ณผ ์๋ต์ ์ ์กํ๋ค.
๐ง TCP/IP ํ๋กํ ์ฝ์ด๋?
์ ์ก ์ ์ด ํ๋กํ ์ฝ์ธ TCP์ ์ธํฐ๋ท ํ๋กํ ์ฝ์ธ IP์ ํฉ์ฑ์ด๋ก ์ธํฐ๋ท ๋์์ ์ค์ฌ์ด ๋๋ ํต์ ๊ท์ฝ์ด๋ค.
- TCP ์ญํ : ๋ฐ์ดํฐ ํ๋ฆ ๊ด๋ฆฌ, ๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฆ
- IP ์ญํ : ํจํท ๋ชฉ์ ์ง ์ฃผ์ ์ง์ , ๊ฒฝ๋ก ์ ์ด, ๋น์ ๋ขฐ์ฑ, ๋น์ฐ๊ฒฐํ
IP๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋จ์์ธ ๋ฐ์ดํฐ๊ทธ๋จ์ด ๋ชฉ์ ์ง์ ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌํ๋ ๊ฒ์ ๋ณด์ฅํ์ง ์๋ ๋น์ ๋ขฐ์ฑ์ ํน์ง๊ณผ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๊ทธ๋จ์ ์ํ์ ๋ณด๋ฅผ ์ ์งํ์ง ์์ผ๋ฉฐ ๊ฐ ๋ฐ์ดํฐ๊ทธ๋จ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ๋น์ฐ๊ฒฐํ์ ํน์ง์ ๊ฐ๋๋ค. ๋ฐ๋ผ์ ์ ์ก ์ ์ด ํ๋กํ ์ฝ์ธ TCP์ ํจ๊ป ์ฌ์ฉํ๋ค.
์ฆ, TCP/IP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ๊ฒ์ IP ์ฃผ์ ์ง์ ๊ณผ TCP์ ์์ ์ ์ธ ์ ์ก ํน์ฑ์ ํ์ฉํด ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ์ํํ๋ฉฐ ์์๋๋ก, ์ ๋ขฐํ ์ ์๋ ๋ฐ์ดํฐ ๊ตํ์ด ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ์ด๋ค.
๋น์ฐ๊ฒฐ์ฑ(Connectionless)
์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์งํ์ง ์๋ ๋น์ฐ๊ฒฐ์ฑ ํ๋กํ ์ฝ(Connectionless)์ด๋ค.
๐ง ๋น์ฐ๊ฒฐ์ฑ์ด๋?
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํ ๋ฒ ์ฐ๊ฒฐ์ ๋งบ๊ณ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์๋ฒ๊ฐ ์๋ต์ ๋ง์น๋ฉด ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฌ๋ ์ฑ์ง์ด๋ค.
์ฐ๊ฒฐ์ ์ ์งํ๋ฉด ๋ฆฌ์์ค๊ฐ ๊ณ์ ์ฌ์ฉ๋๊ณ , ๋ถ์กฑํด์ง๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์ด์ฉํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ์ฐ๊ฒฐ์ ์ํด ๋น์ฐ๊ฒฐ ์งํฅ์ผ๋ก ์ค๊ณ๋์๋ค. ํ์ง๋ง, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ๊ณ ์์ง ์์ ๋์ผํ ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ์์ฒญ์ ๋ํด ๋งค๋ฒ ์๋ก์ด ์ฐ๊ฒฐ ์๋/ํด์ ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํด 3 way handshake ์๊ฐ์ด ์ถ๊ฐ๋์ด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์๋ค.
HTTP 1.0๋ถํฐ๋ keep-alive ํค๋๋ฅผ ํตํด ์ฐ๊ฒฐ์ ์ ์งํ ์ ์๋ค.(HTTP 1.1๋ถํฐ ๋ณ๋ ๋ช ์๊ฐ ์์ผ๋ฉด ๋ชจ๋ ์ฐ๊ฒฐ์ด ์ง์์ฐ๊ฒฐ๋ก ๊ฐ์ฃผ) ์์ ํ๋๋ฅผ ์์ฒญํ์ ๋ ์ด์ ๋ฌถ์ฌ์๋ ๋ชจ๋ ์์์ ์์ฒญํ๊ธฐ ์ํด ์ฐ๊ฒฐ์ ์ ์งํ ์ํ๋ก ์ฐ๊ฒฐ ํ์๊ฐ ์ค์ด๋ค์ด ํจ์จ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฌด์ํ์ฑ(Stateless)
๊ฐ๊ฐ์ ์์ฒญ์ ๋ ๋ฆฝ์ ์ธ ํธ๋์ญ์ ์ผ๋ก ์ทจ๊ธํ๋ ๋ฌด์ํ ํ๋กํ ์ฝ(Stateless)์ด๋ค.
๐ง ๋ฌด์ํ๋?
๋น์ฐ๊ฒฐ์ฑ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ ์ ์์ด ๋งค๋ฒ ์๋ก์ด ์ธ์ฆ์ ํด์ผ ํ๋ค. ์ด๋ฌํ ๋ฒ๊ฑฐ๋ก์์ ํด๊ฒฐํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
- ์ฟ ํค/์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ
๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ์ด ๋๋ฉด ์๋ฒ๋ ํด๋น ํด๋ผ์ด์ธํธ์ ๋ํด ์ ์ผํ ๊ฐ์ธ ์ธ์ ID๋ฅผ ๋ถ์ฌํ๊ณ ์ธ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ค. HTTP ํค๋์ ์ค์ด ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ธ์ ID๋ฅผ ํฌํจํ๋ ์ฟ ํค๋ฅผ ์ ์ฅํ๊ณ ์๊ณ , ์ดํ ์์ฒญ ์ ํค๋์ ์ฟ ํค์ ์ธ์ ID๋ฅผ ๋ด์์ ์ ์กํ๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฟ ํค ๋ด ์ธ์ ID์ ์ธ์ ์คํ ๋ฆฌ์ง์ ๋ด๊ธด ์ธ์ ID๋ฅผ ๋์กฐํด ์ธ์ฆ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
์ฆ, ์ธ์ ์ ์๋ฒ์์ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด์ด๊ณ ์ฟ ํค๋ ์๋ฒ์์ ๋ฐ๊ธ๋ ์ธ์ ์ ์ด๊ธฐ ์ํ ํค ๊ฐ์ธ ์ธ์ ID๋ฅผ ๋ณด๊ดํ๋ ๊ณณ์ด๋ค.
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ
ํ ํฐ์ ์ธ์ฆ์ ์ํด ์ฌ์ฉ๋๋ ์ํธํ๋ ๋ฌธ์์ด์ด๋ค. ์๋ฒ๋ ํ ํฐ์ ์์ฑํด์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๊ณ , ํด๋ผ์ด์ธํธ๋ HTTP ํค๋์ ์ค์ด ์๋ฒ์ ์ ์กํ๋ฉฐ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ค. ํ ํฐ์ ์ฌ์ฉํ๋ฉด ์๋ฒ๋ ์ธ์ ์ ์์กดํ์ง ์๊ณ ํด๋ผ์ด์ธํธ์ธก์์ ๋ค์ด์ค๋ ์์ฒญ๋ง์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ํ๋ฅผ ์ ์งํ์ง ์์ผ๋ฏ๋ก Statelessํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ํ ํฐ์ ์ ํ๋ ์๋ช ์ ๊ฐ์ง๊ณ ๋ง๋ฃ๋๋ฉด ์๋ก ์์ฑ๋์ด์ผ ํ๋ค.
HTTP ๋ฉ์์ง ๊ตฌ์กฐ
์์ฒญ(Request) ๋ฉ์์ง ๊ตฌ์กฐ
- ์์ฒญ๋ฌธ(์์ฒญ ๋ฉ์๋, URL, HTTP ๋ฒ์ )
- ํค๋: ์์ฒญ์ ๋ํ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ก key/Value ํ์์ผ๋ก ๋ํ๋
- ๋ฐ๋: ์ค์ง์ ์ธ ๋ฐ์ดํฐ
GET https://plustory.tistory.com HTTP/1.1
User-Agent: Mozilla/5.0 ...
Upgrade-Insecure-Requests: 1 ...
์๋ต(Response) ๋ฉ์์ง ๊ตฌ์กฐ
- ์ํ๋ฌธ(HTTP ๋ฒ์ , ์ํ์ฝ๋, ์ํ์ด๋ฆ)
- ํค๋: ์๋ต์ ๋ํ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ก key/Value ํ์์ผ๋ก ๋ํ๋
- ๋ฐ๋: ์ค์ง์ ์ธ ๋ฐ์ดํฐ, HTML์ด ๋ด๊ฒจ์๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๋ ๋๋ง ํจ
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 22222
Content-Type: text/html; charset=utf-8charset=utf-88
<!DOCTYPE html><html lang="ko"><head>...
HTTP ์์ฒญ ๋ฉ์๋
- GET: ์๋ฃ ์์ฒญ
- POST: ์๋ฃ ์์ฑ
- PUT: ์๋ฃ ์์
- DELETE: ์๋ฃ ์ญ์
HTTP ์๋ต ์ํ์ฝ๋
- 100~109: ๋ฉ์์ง ์ ๋ณด
- 200~206: ์์ฒญ ์ฑ๊ณต
- 300~305: ๋ฆฌ๋ค์ด๋ ์
- 400~415: ํด๋ผ์ด์ธํธ ์๋ฌ
- 500~505: ์๋ฒ ์๋ฌ
* ์ฐธ๊ณ ์๋ฃ *
์ดํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด๋?
์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ๊ณผ ํ ํฐ๊ธฐ๋ฐ ์ธ์ฆ
'๊ฐ๋ฐ > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
RESTful API ์ค๊ณ ์์น / ๋ค์ด๋ฐ ๊ท์น (0) | 2023.05.08 |
---|---|
HTTP RESTful API / ์์ ์ฑ๊ณผ ๋ฉฑ๋ฑ์ฑ (0) | 2023.02.22 |
in-memory / cache / redis / memcached (0) | 2022.07.10 |
์ธํฐ๋ท์ ์ด๋ป๊ฒ ์๋๋ ๊น์? (0) | 2021.10.07 |
๋๊ธ