[๋คํธ์ํฌ] HTTP
๐ HTTP๋?
HyperText Transfer Protocol์ ์ฝ์๋ก HTML๋ฌธ์์ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํด์ฃผ๋ ํ๋กํ ์ฝ์ ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ์ ์ก๋ฟ๋ง ์๋๋ผ ์๋ฒ๊ฐ์ ์ ์ก์๋ HTTP๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉฐ ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
โช ๊ธฐ๋ฐ ํ๋กํ ์ฝ
- TCP: HTTP.1.1, HTTP/2: HTTP/1.1, HTTP/2
- UDP: HTTP/3
- ํ์ฌ HTTP/1.1 ์ฃผ๋ก ์ฌ์ฉ, HTTP/2, HTTP/3๋ ์ ์ ์ฆ๊ฐ
๐ HTTP ํน์ง
1. ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- Request Response ๊ตฌ์กฐ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐํ๋ค.
- ์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ตํ๋ค.
2. ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ดํธ๋ฆฌ์ค Stateless: ์ํ๋ฅผ ๋ณด์กดํ์ง ์์), ๋น์ฐ๊ฒฐ์ฑ
-
Stateless
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ๋๊ธด๋ค.
- ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๊ฐ์๊ธฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ๋๊ฑฐ ํฌ์ ํ ์ ์๋ค.
- ๋ฐ๋ผ์ ๋ฌด์ํ๋ ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์์ด ๋ฌดํํ ์๋ฒ ์ฆ์ค์ด ๊ฐ๋ฅํ๊ณ ์ค์ผ์ผ ์์(์ํ ํ์ฅ)์ ์ ๋ฆฌํ๋ค.
-
Stateless ํ๊ณ
- ๋ก๊ทธ์ธ์ด ํ์ํ ํ์ด์ง์ ๊ฒฝ์ฐ ๋ฑ์๋ ์๋ฒ๊ฐ ์ํ๋ฅผ ์ ์งํด์ผํ๋ค.
- ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด์ ์ํ๋ฅผ ์ ์งํ๋ค.
- ์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋๋ฌด ๋ง์ด ๋ณด๋ธ๋ค๋ ๋จ์ ์ด ์๋ค.
- ๋น์ฐ๊ฒฐ์ฑ
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ต์ ํ๊ณ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์์.
- HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ต
- 1์๊ฐ ๋์ ์์ฒ๋ช ์ด ์๋น์ค๋ฅผ ์ด์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ์์
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์.
- ๋น์ฐ๊ฒฐ์ฑ์ ํ๊ณ์ ๊ทน๋ณต
- TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ - 3 way handshake ์๊ฐ ์ถ๊ฐ
- ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ๋ฑ ์๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋
- ์ง๊ธ์ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
- HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ
3. HTTP ๋ฉ์์ง๋ฅผ ํตํด์ ํต์
๐ด ์์ ๋ผ์ธ
-
์์ฒญ ๋ฉ์์ง
- HTTP ๋ฉ์๋ (ex. GET: ์กฐํ): ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
- ์์ฒญ ๋์ (/search?q=hello&hl=ko): ์ ๋๊ฒฝ๋ก=โ/โ๋ก ์์ํ๋ ๊ฒฝ๋ก
- HTTP Version
-
์๋ต ๋ฉ์์ง
- HTTP ๋ฒ์
- HTTP ์ํ ์ฝ๋: ์์ฒญ ์ฑ๊ณต ๋๋ ์คํจ(200: ์ฑ๊ณต, 400: ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ. 500: ์๋ฒ ๋ด๋ถ ์ค๋ฅ)
- ์ด์ ๋ฌธ๊ตฌ: ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช ๊ธ
๐ก HTTP ํค๋
- header-filed = field-name โ:โ OWS field-value OWS (OWS: ๋์ด์ฐ๊ธฐ ํ์ฉ)
- field-name ์ ๋์๋ฌธ์ ๊ตฌ๋ถ ์์
- ์ฉ๋
- HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด
- ์) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ..
- ํ์คํค๋๊ฐ ๋ง์. . ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ
๐ต HTTP ๋ฉ์์ง ๋ฐ๋
- ์ค์ ์ ์กํ ๋ฐ์ดํฐ
- HTML๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
๐ฌ ์ต์ ๋๊ธ