๐ HTTP ๋ฒ์
HTTP 1.0 - ๋น์ฐ๊ฒฐ
โก๏ธ HTTP ํค๋(header) ๊ฐ๋
์ด ๋์
๋์ด ์์ฒญ๊ณผ ์๋ต์ ์ถ๊ฐ๋๋ฉฐ, ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ํ๋กํ ์ฝ์ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋๋ก ๊ฐ์
ํ๊ณ
- ์ปค๋ฅ์
ํ๋๋น ์์ฒญ ํ๋์ ์๋ต ํ๋๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
-> TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผํ๋ฏ๋ก 3 way handshake ์๊ฐ์ด ์ถ๊ฐ
HTTP 1.1 - ์ง์์ ์ธ ์ฐ๊ฒฐ
โก๏ธ ์ง์์ ์ธ ์ฐ๊ฒฐ(Persistant Connections)
- HTTP ์ง์ ์ฐ๊ฒฐ์์๋ ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ง๊ณ ๋ ๋ค ๊ฐ๊ฐ์ ์์๋ค์ ์์ฒญํ๊ณ , ๋ชจ๋ ์์์ ๋ํ ์๋ต์ด ๋์์จ ํ์ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ค.
โก๏ธ Pipelining ์ถ๊ฐ
- ์ ์์ฒญ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด๊ณ , ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ด ๋ฑ์ฅ
ํ๊ณ
- Head Of Line Blocking (HOL): ์ ์์ฒญ์ ์๋ต ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆฌ๋ฉด ๋ค ์์ฒญ์ Blocking ๋์ด๋ฒ๋ฆฐ๋ค.
-> Pipelining์ผ๋ก ํ๋์ ์ปค๋ฅ์
์ ์ฌ๋ฌ ์์ฒญ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ฒฐ๊ตญ ๋์์ ์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํด ์๋ต์ผ๋ก ์ฃผ์ง๋ ๋ชปํ์์
HTTP 2.0 - Stream
โก๏ธ Multiplexed Streams
- ๋ฉ์์ง๊ฐ ์ด์งํ๋ ํ
์คํธ์ธ frame์ผ๋ก ๋๋์ด ์์ฒญ๋ง๋ค ๊ตฌ๋ถ๋๋ Stream์ ํตํด ์ ๋ฌ
์ฆ, frame์ด ๊ฐ ์์ฒญ์ Stream์ ํตํด ์ ๋ฌ๋๋ฉฐ, ํ๋์ ์ปค๋ฅ์
์์ ์ฌ๋ฌ๊ฐ์ Stream์ ๊ฐ์ง ์ ์๊ฒ๋์ด ๋ค์คํ(multiplexing)๊ฐ ๊ฐ๋ฅํด์ง
- ๋์์ ์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง
- Stream์ ํตํด์ ๊ฐ ์์ฒญ์ ์๋ต์ ์์๊ฐ ์๋ฏธ๊ฐ ์์ด์ ธ, HOL Blocking์ด ์์ฐ์ค๋ฝ๊ฒ ํด๊ฒฐ๋จ
ํ๊ณ
- ๊ฐ ์์ฒญ๋ง๋ค Stream์ผ๋ก ๊ตฌ๋ถํด์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง๋ง, TCP ๊ณ ์ ์ HOL Blocking์ด ์กด์ฌ
-> ์๋ก ๋ค๋ฅธ Stream์ด ์ ์ก๋๊ณ ์์ ๋, ํ๋์ Stream์์ ์ ์ค์ด ๋ฐ์๋๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ํด๊ฒฐ๋ ๋๊น์ง ์ง์ฐ๋๋ ํ์์ด ๋ฐ์๋๊ธฐ ๋๋ฌธ
HTTP 3.0 - UDP ๊ธฐ๋ฐ
โก๏ธ QUIC ๊ธฐ๋ฐ์ผ๋ก ๋์
- Quic ์ด๋ Google์์ ๊ฐ๋ฐํ UDP ๊ธฐ๋ฐ์ ์ ์ก ํ๋กํ ์ฝ
- Google์์ TCP์ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ก ์ฑ๋ฅ ํฅ์์ด ์ด๋ ต๋ค๊ณ ํ๋จํ์ฌ UDP ๊ธฐ๋ฐ์ ์ ํ
- QUIC์ TCP์ Stream์ ํ๋์ chain์ผ๋ก ์ฐ๊ฒฐ๋๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ๊ฐ Stream๋น ๋
๋ฆฝ๋ Stream chain์ ๊ตฌ์ฑํ์ฌ TCP HOL Blocking์ ํด๊ฒฐ
๐ ์ฐธ๊ณ
HTTP (1) - version ๋ณ ํน์ง (0.9 / 1.0 / 2.0 / 3.0)