1. HTTP/1.0
2. HTTP/1.1
3. HTTP/2.0
4. HTTP/3.0
1. HTTP/1.0
- HTML ๋ฌธ์๋ง ๋ ๋ฆฌ๋ HTTP/0.9์ ๋ค๋ฅด๊ฒ ๋ค์ํ ํ์ผ(css, image ๋ฑ)์ ๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋จ
- ๋งค๋ฒ ์๋ก์ด ์ฐ๊ฒฐ๋ก ์ฑ๋ฅ ์ ํ
- ํ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ ๋ง๋ค ์๋ฒ ์ธก์์ ์ฐ๊ฒฐ ๋์
- ์์ฒญ ์ปจํ ์ธ ๋ง๋ค TCP ์ธ์ ์ ๋งบ์ด์ผ ํจ
- ์๋ฒ ๋ถํ ๋น์ฉ ์์น
- RTT(Round Trip Time) ์ฆ๊ฐ : ํจํท์ด ๋ชฉ์ ์ง์ ๋๋ฌํ๊ณ ๋์ ๋ค์ ์ถ๋ฐ์ง๋ก ๋์์ค๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด๋ฉฐ ํจํท ์๋ณต ์
- HTTP 1.0 ํ๊ฒฝ์์๋ ํ๋์ IP์ ์ฌ๋ฌ ๊ฐ์ ๋๋ฉ์ธ์ ์ด์ํ ์ ์์
- HTTP 1.0์ ๊ธฐ๋ณธ์ ์ผ๋ก Connection ๋น ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋์ ์ ์ก์ ๋ถ๊ฐ๋ฅํ๊ณ ํ๋์ ์์ฒญ์ ๋ํ ์๋ต์ด ์จ ํ ๋ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ฒ ๋๋๋ฐ,
- ์ ๋ง์ ๋ฉํฐ๋ฏธ๋์ด ๋ฆฌ์์ค๋ค์ด ์๋ ์ํฉ์์ ์ด๋ฌํ ํน์ง์ Network Latency๋ฅผ ๋ฐ์์ํด
- HTTP/1.0์์ RTT ๊ฐ์๋ฅผ ์ํด ์ด๋ฏธ์ง ์คํ๋ฆฌํ , ์ฝ๋ ์์ถ, base64์ธ์ฝ๋ฉ ๋ฑ ์ํ
2. HTTP/1.1
1) HTTP/1.0 vs. HTTP/1.1
- ์์ฒญ๋ง๋ค ๋งค๋ฒ TCP ์ฐ๊ฒฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ํ ๋ฒ TCP ์ด๊ธฐํ๋ฅผ ํ ์ดํ์ keep-alive ์ต์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ์ก์์ ํ ์ ์๊ฒ ๋จ
- HTTP/1.0์์๋ keep-alive ์ต์
์ด ์์์ง๋ง ํ์คํ๊ฐ ๋์ด ์์ง ์์๊ณ HTTP/1.1๋ถํฐ ํ์คํ๋์ ๊ธฐ๋ณธ ์ต์
์ผ๋ก ์ค์ ๋จ
2) HTTP/1.1 ํน์ง
- Persistent Connection
- ์ง์ ํ timeout ๋์ ์ปค๋ฅ์ ์ ๋ซ์ง ์๋ ๋ฐฉ์
- Persistent ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ํ ๊ฐ์ TCP ์ธ์ ์ ํตํด ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ธ ์์ฒญ์ด ๊ฐ๋ฅ
- ์์ฒญ ์ปจํ ์ธ ๋ง๋ค TCP ์ธ์ ์ ๋งบ์ด์ผํ๋ HTTP 1.0์ ๋ฐํด HTTP 1.1์ TCP ์ธ์ ์ฒ๋ฆฌ ๋ถํ๋ฅผ ์ค์ผ ์ ์๊ณ , ๊ทธ๋งํผ ํด๋ผ์ด์ธํธ ์๋ต์๋๊ฐ ๊ฐ์ ๋จ.
- Pipelining
- ํ๋์ ์ปค๋ฅ์
์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ์ (TCP ์์ ๋ ๊ฐ ์ด์์ HTTP ์์ฒญ์ ๋ด์)
- ํ๋์ ์ปค๋ฅ์
์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ์ (TCP ์์ ๋ ๊ฐ ์ด์์ HTTP ์์ฒญ์ ๋ด์)
- Host Header
- HTTP 1.0 ํ๊ฒฝ์์๋ ํ๋์ IP์ ์ฌ๋ฌ ๊ฐ์ ๋๋ฉ์ธ์ ์ด์ํ ์ ์์์ ๋ฐํด, HTTP 1.1์์ Host ํค๋์ ์ถ๊ฐ๋ฅผ ํตํด ๋ฒ์ธ์ผ ํธ์คํ ์ด ๊ฐ๋ฅ
- Imporved Authentication Procdure(๊ฐ๋ ฅํ ์ธ์ฆ ์ ์ฐจ)
- HTTP 1.1 ์์๋ 2๊ฐ์ ํค๋(proxy-authentication, proxy-authorization)๊ฐ ์ถ๊ฐ๋จ
- ์ค์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์๊ตฌํ๋ www-authentication ํค๋๋ HTTP 1.0์์๋ถํฐ ์ง์์ด ๋์ผ๋, ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ํ๋ก์๊ฐ ์์นํ๋ ๊ฒฝ์ฐ ํ๋ก์๊ฐ ์ฌ์ฉ์์ ์ธ์ฆ์ ์๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์์
3) HTTP/1.1์ ๋จ์
- HTTP Pipelining
- HTTP 1.0์ Network Latency๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ดํ๋ผ์ด๋์ด ๋์ ๋์์ง๋ง,
- ์ด๋ ์ ํํ ๊ตฌํํ๊ธฐ ํ๋ค ๋ฟ๋๋ฌ, HOL Blocking์ด ๋ฐ์ํจ
- HOL(Head of Line) Blocking
- ์ด๋ค ์์ฒญ์ ๋ณ๋ชฉ์ด ์๊ฒจ์ ์ ์ฒด latency๊ฐ ์ฆ๊ฐํ๋ ๊ฒ
- CP๋ฅผ ์ฌ์ฉํ๋ ํต์ ์์ ํจํท์ ๋ฌด์กฐ๊ฑด ์ ํํ ์์๋๋ก ์ฒ๋ฆฌ๋์ด์ผ ํจ. ์์ ์ธก์ ์ก์ ์ธก๊ณผ ์ฃผ๊ณ ๋ฐ์ ์ํ์ค ๋ฒํธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํจํท์ ์ฌ์กฐ๋ฆฝํด์ผ ํ๊ธฐ ๋๋ฌธ์.
- ๋ฐ๋ผ์, ์ค๊ฐ์ ํจํท์ด ์์ค๋ ๊ฒฝ์ฐ ์์ ํ ๋ฐ์ดํฐ๋ก ์ฌ์กฐ๋ฆฝํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ก์ ์ธก์ ํด๋น ํจํท์ด ์ ๋๋ก ์ ๋ฌ๋์ง ์์์ ๊ฒฝ์ฐ ์ฌ์ ์กํด์ผ ํจ
- ์๋ฒ๋ TCP์์ ์์ฒญ์ ๋ฐ์ ์์๋๋ก ์๋ต์ ํด์ผํ๋ฏ๋ก, ์์ ์์ฒญ์ ์ํด ๋ค์ ์์ฒญ์ด ์ง์ฐ๋จ
- ๋ฌด๊ฑฐ์ด Header
- Client-Server ๊ฐ ์ ๋ง์ http ์์ฒญ์ด ๋ฐ์ํ ๊ฒ์ด๊ณ , header์ ์ ๋ณด๋ ๋๋ถ๋ถ ๋์ผ
- ํ์ง๋ง HTTP 1.1์์๋ ํค๋๋ฅผ ์ค๋ณตํด์ ๋ณด๋ผ ๋ฟ๋ง ์๋๋ผ cookie ์ ๋ณด ์ญ์ ๋งค ์์ฒญ๋ง๋ค ํค๋์ ํฌํจ๋์ด ์ ์ก๋จ
- ์ฆ, ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ฐ ๋คํธ์ํฌ ์์์ด ์๋น๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์
3. HTTP/2.0
1) HTTP/1.1 vs. HTTP/2.0
- HTTP/1.1์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปค๋ฅ์
๋น ํ๋์ ์์ฒญ๊ณผ ์๋ต๋ง ์ฒ๋ฆฌํจ(์ฆ, ์ฌ๋ฌ ๊ฐ์ ์์ฒญ์ ํ ๋ฒ์ ์ ์กํ ์ ์๊ณ ์๋ต ๋ํ ๋ง์ฐฌ๊ฐ์ง)
- ๋ฐ๋ผ์ HTML ๋ฌธ์ ๋ด์ ํฌํจ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฆฌ์์ค ์์ฒญ, ์ฆ CSS ํ์ผ์ ๋ก๋ํ๋ link ํ๊ทธ, ์ด๋ฏธ์ง ํ์ผ์ ๋ก๋ํ๋ img ํ๊ทธ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๋ script ํ๊ทธ ๋ฑ์ ์ํ ๋ฆฌ์์ค ์์ฒญ์ด ๊ฐ๋ณ์ ์ผ๋ก ์ ์ก๋๊ณ ์๋ต ๋ํ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ก๋จ
- ๋ฐ๋ผ์ HTML ๋ฌธ์ ๋ด์ ํฌํจ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฆฌ์์ค ์์ฒญ, ์ฆ CSS ํ์ผ์ ๋ก๋ํ๋ link ํ๊ทธ, ์ด๋ฏธ์ง ํ์ผ์ ๋ก๋ํ๋ img ํ๊ทธ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๋ script ํ๊ทธ ๋ฑ์ ์ํ ๋ฆฌ์์ค ์์ฒญ์ด ๊ฐ๋ณ์ ์ผ๋ก ์ ์ก๋๊ณ ์๋ต ๋ํ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ก๋จ
- ์ด์ฒ๋ผ HTTP/1.1์ ๋ฆฌ์์ค์ ๋์ ์ ์ก์ด ๋ถ๊ฐ๋ฅํ ๊ตฌ์กฐ์ด๋ฏ๋ก ์์ฒญํ ๋ฆฌ์์ค์ ๊ฐ์์ ๋น๋กํ์ฌ ์๋ต ์๊ฐ๋ ์ฆ๊ฐํ๋ ๋จ์ ์ด ์์
- ๊ทธ์ ๋ฐํด HTTP/2๋ ์ปค๋ฅ์ ๋น ์ฌ๋ฌ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต, ์ฆ ๋ค์ค ์์ฒญ/์๋ต์ด ๊ฐ๋ฅํจ
- ์ฌ๋ฌ ๋ฆฌ์์ค์ ๋์ ์ ์ก์ด ๊ฐ๋ฅํ๋ฏ๋ก HTTP/1.1์ ๋นํด ํ์ด์ง ๋ก๋ ์๋๊ฐ ์ฝ 50% ์ ๋ ๋น ๋ฅด๋ค๊ณ ์๋ ค์ ธ ์์
2) HTTP/2.0 ํน์ง
- HTTP ๋ฉ์์ง ์ ์ก ๋ฐฉ์์ ๋ณํ
- ๋ฐ์ด๋๋ฆฌ ํ๋ ์ด๋ฐ(binary framing) ๊ณ์ธต ์ฌ์ฉ → ํ์ฑ, ์ ์ก ์๋↑, ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ↓
- ๋ฐ์ด๋๋ฆฌ ํ๋ ์ด๋ฐ(binary framing) ๊ณ์ธต ์ฌ์ฉ → ํ์ฑ, ์ ์ก ์๋↑, ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ↓
- Request and response multiplexing (I/O Multiplexing)
- HTTP 1.1์ HTTP Pipelining์ ๊ฐ์ ์์ผ๋ก ํ๋์ Connection์ ํตํด ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์
- ๋ํ, ์๋ต์ ์์ฒญ ์์์ ์๊ด์์ด Stream์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ HOL(Head Of Line) Blocking ๋ฌธ์ ๋ ํด๊ฒฐ
- ์ฆ ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ์ก์์ ํ๋ค๋ ๊ฒ. ์ด๋ฅผ ํตํด ํน์ ์คํธ๋ฆผ์ ํจํท์ด ์์ค๋์๋ค๊ณ ํ๋๋ผ๋ ํด๋น ์คํธ๋ฆผ์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ๋๋จธ์ง ์คํธ๋ฆผ์ ๋ฉ์ฉกํ๊ฒ ๋์ํ ์ ์์
- Stream Prioritization
- ๋ฆฌ์์ค๊ฐ ์ฐ์ ์์๋ฅผ ์ค์ ๊ฐ๋ฅ
- ์๋ต์ ๋ํ ์ฐ์ ์์๋ฅผ ์ ํด ์ฐ์ ์์๊ฐ ๋์์๋ก ์๋ต์ ๋นจ๋ฆฌ ํจ
- Server Push
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๊ธฐ ์ ์ HTTP/2 ํธํ ์๋ฒ๊ฐ ๋ฆฌ์์ค๋ฅผ HTTP/2 ํธํ ํด๋ผ์ด์ธํธ์ ๋ณด๋ผ ์ ์์
- ์๋ฒ ํธ์๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๊ฐ ํ์ํ ์ง ์๊ธฐ๋ ์ ์ ๋ฏธ๋ฆฌ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ์ฌ ๋๊ธฐ ์๊ฐ์ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ์ฑ๋ฅ ๊ธฐ์
- ์ฆ, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์์ด ์๋ต์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ต์ํํ์ฌ ์๋ฒ๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ด์ฃผ๋ ๋ฐฉ์
- Header Compression
- HTTP 1.1์ ๊ฒฝ์ฐ ์ด์ ์์ฒญ๊ณผ ์ค๋ณต๋๋ Header๋ ๋๊ฐ์ด ์ ์กํ๋๋ผ ๋คํธ์ํฌ ์์์ ๋ถํ์ํ๊ฒ ๋ญ๋นํ์์
- HTTP 2.0์ ๊ฒฝ์ฐ, ํค๋์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ํ์ด์ง ๋ก๋ ์๊ฐ ๊ฐ์
- Header Table๊ณผ Huffman Encoding์ ์ฌ์ฉํ๋ HPACK ์์ถ๋ฐฉ์์ผ๋ก ์ด๋ฅผ ๊ฐ์ ํ์์
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ฐ๊ฐ Header Table์ ๊ด๋ฆฌํ๊ณ ์ด์ ์์ฒญ๊ณผ ๋์ผํ ํ๋๋ table์ index๋ง ๋ณด๋ด๊ณ , ๋ณ๊ฒฝ๋๋ ๊ฐ์ Huffman Encoding ํ ๋ณด๋์ผ๋ก์ Header์ ํฌ๊ธฐ๋ฅผ ๊ฒฝ๋ํ
4. HTTP/3.0
- HTTP/3.0์ HTTP/2.0์์ ์ฌ์ฉํ๋ TCP ๋ TLS ๋ฐฉ์์ด ์๋ QUIC(Quick UDP Internet Connections)๋ฅผ ํตํด ์ค๊ณ๋จ
- http/3.0์์๋ ๋ฌด์กฐ๊ฑด https๋ฅผ ์ฌ์ฉ
- HTTP/2.0 ์์ ์ฅ์ ์ด์๋ ๋ฉํฐํ๋ ์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, "์ด๊ธฐ ์ฐ๊ฒฐ ์ค์ ์ ์ง์ฐ ์๊ฐ ๊ฐ์"๋ผ๋ ๋ํ์ ํน์ฑ์ด ์์
1) QUIC(Quick UDP Internet Connections)
- ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ
- ์๋ฐฉํฅ ์ค๋ฅ ์์ ๋งค์ปค๋์ฆ(FEC, Forward Error Correction) ์ ์ฉ
- ์ ์กํ ํจํท์ด ์์ค๋์๋ค๋ฉด ์์ ์ธก์์ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ์์ ํ๋ ๋ฐฉ์์ด๋ฉฐ ์ด์ ํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ๋ฎ์ ํจํท ์์ค๋ฅ ์ ์๋
- ํค๋ ์์ถ ๋๋ HPACK์ด ์๋ QPACK์ฌ์ฉ
- Q) TCP๊ฐ ์๋ UDP๋ฅผ ์ ํํ ์ด์ ?
- A) TCP ํค๋๋ ์ ๋ขฐ์ฑ์ ํ๋ณดํ์ง๋ง ์ง์ฐ์ ์ค์ด๊ธฐ ํ๋ ๊ตฌ์กฐ๊ณ UDP๋ ๋ฐ์ดํฐ ์ ์ก์ ์ง์คํ ์ค๊ณ๋ก ๋ณ๋์ ๊ธฐ๋ฅ์ด ์์
๋ฐ๋ผ์, ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ฉฐ, TCP์ Latency๋ฅผ ์ค์ด๋ฉด์ TCP๋งํผ ์ ํ์ฑ ํ๋ณด๊ฐ ๊ฐ๋ฅํจ.
2) QUIC์ ์ฅ์
- ์ ์ก ์๋ ํฅ์
- ์ฒซ ์ฐ๊ฒฐ ์ค์ ์์ ํ์ํ ์ ๋ณด์ ํจ๊ป ๋ฐ์ดํฐ๋ฅผ ์ ์ก → ์ฐ๊ฒฐ ์ฑ๊ณต ์ ์ค์ ์ ์บ์ฑํ์ฌ ๋ค์ ์ฐ๊ฒฐ ๋ ๋ฐ๋ก ์ฑ๋ฆฝ ๊ฐ๋ฅ
- Connection UUID๋ผ๋ ๊ณ ์ ํ ์๋ณ์๋ก ์๋ฒ์ ์ฐ๊ฒฐ → ์ปค๋ฅ์ ์๋ฆฝ ํ์X
- TLS(์ ์ก ๊ณ์ธต ๋ณด์, Transport Layer Security) ๊ธฐ๋ณธ ์ ์ฉ
- ๋ ๋ฆฝ ์คํธ๋ฆผ์ ์ด์ฉํ์ฌ ํฅ์๋ ๋ฉํฐํ๋ ์ค ๊ธฐ๋ฅ ์ ๊ณต
- IP Spoofing / Replay Attack์ ๋ฐฉ์งํด ๋ณด์์ฑ ํฅ์
- Spoofing: ๊ทผ๊ฑฐ๋ฆฌ ํต์ ๋ง(LAN) ํ์์ ์ฃผ์ ๊ฒฐ์ ํ๋กํ ์ฝ(ARP) ๋ฉ์ธ์ง๋ฅผ ์ด์ฉํด ์๋๋ฐฉ์ ๋ฐ์ดํฐ ํจํท์ ์ค๊ฐ์์ ๊ฐ๋ก์ฑ๋ ์ค๊ฐ์ ๊ณต๊ฒฉ ๊ธฐ๋ฒ
'Computer Science ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[cs] HTTP III - HTTPS vs. HTTP, ๊ณต๊ฐํค/๊ฐ์ธํค etc. (0) | 2024.07.12 |
---|---|
[cs] HTTP I - HTTP, URL etc. (2) | 2024.07.04 |
[cs] ๋คํธ์ํฌ III - ๋ก๋๋ฐธ๋ฐ์, ARP, MAC, NAT etc. (0) | 2024.07.01 |
[cs] ๋คํธ์ํฌ II - TCP/IP, PDU etc. (1) | 2024.06.30 |
[cs] ๋คํธ์ํฌ I - ํจํท, ๋ณ๋ชฉํ์ etc. (0) | 2024.06.27 |