2021.05.03 - [BASIC] - 01. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํฐ๋ท ๋คํธ์ํฌ
2021.05.03 - [๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ] - 02. HTTP ์น ๊ธฐ๋ณธ ์ง์ - URI
HTTP - HyperText Transfer Protocol
HTML, TEXT, IMAGE, ์์ฑ, ์์, ํ์ผ, JSON, XML ๋ฑ๋ฑ ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP๋ฅผ ์ฌ์ฉํ๋ค.
HTTP์ ๋ฐ์
HTTP/0.9(GET๋ง ์ง์ HTTP ํค๋ X)
-> HTTP/1.0 (๋ฉ์๋, ํค๋ ์ถ๊ฐ)
-> HTTP/1.1 (๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ, ๊ฐ์ฅ ์ค์ํ ๋ฒ์ ) -> TCP๊ธฐ๋ฐ ํ๋กํ ์ฝ
-> HTTP/2 (์ฑ๋ฅ๊ฐ์ ) -> TCP๊ธฐ๋ฐ ํ๋กํ ์ฝ
-> HTTP/3 (์งํ์ค: TCP ๋์ ์ UDP์ฌ์ฉ, ์ฑ๋ฅ ๊ฐ์ ) -> UDP๊ธฐ๋ฐ ํ๋กํ ์ฝ
ํด๋ผ์ด์ธํธ / ์๋ฒ ๊ตฌ์กฐ
Request / Response๊ตฌ์กฐ
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ด ์ฌ๋ ๊น์ง ๋๊ธฐ
2. ์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ตํ๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ํ๋๋ก ๋์ด์๋ค๊ฐ ๋ถ๋ฆฌ๋์๋ค.
-> ๋ฐ์ดํฐ๋ ์๋ฒ๊ฐ ์ง์ค, ์ฌ์ฉ์ฑ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์คํ์ฌ ๋ ๋ฆฝ์ ์ผ๋ก ์ง์ค์ด ๊ฐ๋ฅํ๋ค.
์ ) ์๋น์ค ํธ๋ํฝ์ด ๊ฐ์๊ธฐ ํ ๋ ํด๋ผ์ด์ธํธ ์์ ํ์ ์์ด ์๋ฒ์์ ์ํคํ ์ณ ๋ณ๊ฒฝ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
1. ๋ฌด์ํ ํ๋กํ ์ฝ
๋ฌด์ํ๋ ๋ฌด์จ๋ป์ผ๊น?
Stateful๊ณผ Stateless์ ์ฐจ์ด
Stateful -> ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ฌ ๋ค์ ์์ฒญ์ด ๋ค์ด์๋ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์ ์๋ค.
Stateless -> ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
-> ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌดํ ์๋ฒ ์ฆ์ค์ด ๊ฐ๋ฅํ๋ค.
-> ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ง์์ผ๋ฉด ๋ชจ๋ฅธ๋ค.
์๋ฅผ ๋ค์ด๋ณด๋ฉด session ๋ก๊ทธ์ธ์ ์ฌ์ฉํ์ ๋ ์๋ฒ์์ session์ ์ ์ฅํ๋ค.
ํ์ง๋ง token์ ์ฌ์ฉํ๋ค๋ฉด ์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ Request ๋ง๋ค token์ ํ์ธํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ์๋ณํ๋ค.
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค
- ์๋ฒ ํ์ฅ์ฑ์ด ๋๋ค ( ์ค์ผ์ผ ์์ )
- ํ์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ผํ๋ค. ( ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ผ ํจ )
- ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ๋ค๋ ์ํ๋ฅผ ์ ์ง ํ๊ธฐ ์ด๋ ต๋ค
-> ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ์๋ฒ์ ์ธ์ ์ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ค. -> ์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉ
-> ๋ฌด์จ๋ป์ผ๊น?
์ฌ์ฉ์๊ฐ ์น์๋ฒ์ ์ ๊ทผ ํ ๋ ๋ณด๋ด๋ Request Header ์ฟ ํค์ ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์๋ ์ธ์ ID๊ฐ์ ์ง์ด ๋ฃ์ด ์ด ID์ ์กด์ฌ์ฌ๋ถ๋ฅผ ํตํด ์ฌ์ฉ์ ์๋ณ ๋ฐ ์ํ ์ ์ง๋ฅผ ๋์์ฃผ๋ ๋ฐฉ๋ฒ์ ์ธ์ ์ด๋ผ๊ณ ํ๋ค.
์ธ์ ID๋ ๋จ์ํ ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์๋ ์๋ฏธ์๋ ๋ฌธ์๋ง๋ค๋ก ๋ง๋ค์ด์ ธ ์ฟ ํค์ ์๋ฒ ์ ์ฅ์์ ๋์์์ ์ฅ๋๊ณ , ํด๋ผ์ด์ธํธ์ Request๋ง๋ค ์ธ์ ID๋ฅผ ์๋ฒ์ธก์ ์ ์ฅ๋ ์ธ์ ID์ ๋น๊ตํ์ฌ ์๋ณ๋๋ค.
์ถ์ฒ medium.com/@ddinggu/session์-ํ์ฉํ-๋ก๊ทธ์ธ-์ํ์ ์ง-df31db7f1089
๋ฌธ์ ์ ์ ์๋ฒ์์ ๋ง์ ์ธ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋์ด์๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ธ์ ์ ์ ์ฅํ๋ ์๋ฒ๋ฅผ ๋๊ฑฐ๋, ํ ํฐ ๊ธฐ๋ฐ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋๊ฒ๋ ๋ฐฉ๋ฒ์ด๋ค. ์) jwt
2. ๋น ์ฐ๊ฒฐ์ฑ
์ฐ๊ฒฐ์ ์ ์งํ๋ ๋ชจ๋ธ์ผ ๊ฒฝ์ฐ ์๋ฒ ์์์ด ๊ณ์ ์๋ชจํ์ง๋ง
์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋น ์ฐ๊ฒฐ์ฑ ๋ชจ๋ธ์ ์ต์ํ์ ์์์ ์ ์งํ๊ณ ์์ฒญํ ๋๋ง ์ฐ๊ฒฐํ๋ค.
- HTTP ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ตํ๋ค.
- 1์๊ฐ ๋์ ์์ฒ๋ช ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์ ๋ค. -> ํ ์์ฒญ์ ์ฐ์ํด์ ๋ณด๋ด์ง ์๋ ์ด์
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง ์์ฒญ์ด ์์ ๋ ๋ง๋ค
TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํ๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML, javascript, css, img ๋ฑ ์๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋ ๋๋ค. -> HTTP ์ง์ ์ฐ๊ฒฐ๋ก ๋ฌธ์ ํด๊ฒฐ
HTTP ์ด๊ธฐ - ์ฐ๊ฒฐ ์ข ๋ฃ๋ฅผ ๋ฐ๋ณตํ์ฌ ์์๋ญ๋น
HTTP ํ์ฌ - ์ง์ ์ฐ๊ฒฐ
HTML ์ ๋ณด๋ฅผ ๋ชจ๋ ๋ฐ์ ๋ ๊น์ง ์ง์ ์ฐ๊ฒฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ค.
HTTP ๋ฉ์์ง์ ๊ตฌ์กฐ
์์ฒญ ๋ฉ์์ง
start-line ์์๋ผ์ธ GET /search?q=heelo&hl=ko HTTP/1.1 HTTP ๋ฉ์๋, ์์ฒญ๋์, HTTP Version
header ํค๋ Host: www.google.com
empty line ๊ณต๋ฐฑ๋ผ์ธ(crlf)
message body POST์ผ ๊ฒฝ์ฐ BODY, ๋ฌผ๋ก GET๋ ๋์ง๋ง ๊ถ์ฅํ์ง ์์.
์๋ต ๋ฉ์์ง
start-line ์์๋ผ์ธ HTTP/1.1 200 OK HTTP Version, HTTP ์ํ์ฝ๋, ์ด์ ๋ฌธ๊ตฌ
header ํค๋ Content-Type: text/html;charset=UTF-8
Content-Length: 3423
empty line ๊ณต๋ฐฑ๋ผ์ธ(crlf)
message body <html> <body>...</body></html>
header์ ์ฉ๋
HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด๊ฐ ํฌํจ๋์ด์๋ค. ์๋ฅผ๋ค์ด ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ๋ฑ.. ํ์์ ์์์ ํค๋ ์ถ๊ฐ๋ ๊ฐ๋ฅํ๋ค.
body์ ์ฉ๋
์ค์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ค. HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ ...
๋จ์ํ๋ฉฐ ํ์ฅ๊ฐ๋ฅํ๋ค
'๐ป Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
06. HTTP ์น ๊ธฐ๋ณธ ์ง์ - HTTP ์ํ์ฝ๋ ์๊ฐ (0) | 2021.05.04 |
---|---|
05. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก (0) | 2021.05.04 |
04. HTTP ์น ๊ธฐ๋ณธ ์ง์ - HTTP API (0) | 2021.05.03 |
02. HTTP ์น ๊ธฐ๋ณธ ์ง์ - URI (0) | 2021.05.03 |
01. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2021.05.03 |