๐ ๊ตฌ๊ธ์ ์ ๋์์ ๋ฐ์ ์์ฑ๋ ๊ธ์ ๋๋ค. ์ฐธ๊ณ ํ ์๋ฃ ๋ฐ ๋ด์ฉ ์ธ์ฉ ์ถ์ฒ๋ ๋งจ ์๋์ ๊ธฐ์ฌํด๋์ต๋๋ค.
HTTP์ ๋ณํ
HTTP๋ ์น์์์ Client์ Server ๊ฐ ํต์ ์ ์ํ Protocol์ ๋๋ค. ์๋ ์์ด๋ ์น์ ๋ด์ ๋์ด์๊ณ , HTTP/0.9๋ฅผ ์์์ผ๋ก HTTP/2๊น์ง ๋ค์ํ ๋ฒ์ ์ด ์ถ์๋์ต๋๋ค. ๋ํ์ ์ธ 1.1 ๋ฒ์ ๊ณผ 2 ๋ฒ์ ์ ๊น๊ฒ ์์๋ณด๊ณ ๋๋จธ์ง ๋ฒ์ ๋ค์ ์ด๋ค ๊ฒ๋ค์ด์๋์ง๋ง ์์๋ณด๊ฒ ์ต๋๋ค.
HTTP/0.9
HTTP์ ์ด๊ธฐ ๋ฒ์ ์
๋๋ค. ์ฒ์์๋ ๋ฒ์ ์ ๋ณด๊ฐ ์์์ผ๋ ์ฐจํ ๊ตฌ๋ถ์ ์ํด 0.9๋ผ๊ณ ๋ถ๋ฆฌ๊ฒ ๋์ต๋๋ค. ๊ต์ฅํ ๋จ์ํ์ฌ ๋ฆฌ์์ค์ ๋ํด ์ ๊ทผ ๊ฐ๋ฅํ ๋ฉ์๋๋ GET
์ด ์ ์ผํ์ต๋๋ค. HTTP ํค๋๊ฐ ์์ด HTML ํ์ผ๋ง ์ ์กํ ์ ์์์ผ๋ฉฐ ๋ค๋ฅธ ์ ํ์ ๋ฌธ์๋ ์ ์กํ ์ ์์์ต๋๋ค. ๋ํ ์ํ ํน์ ์ค๋ฅ ์ฝ๋๊ฐ ์์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ ์ํฉ ์ ํด๋น ํ์ผ ๋ด๋ถ์ ๋ฌธ์ ์ ๋ํ ์ค๋ช
์ ํฌํจํด ๋ณด๋ด์ก๋ค๊ณ ํฉ๋๋ค.
HTTP/1.0
HTTP/0.9๋ณด๋ค ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๋ชจ๋ ์ตํต์ฑ์ ๊ฐ์ง๋๋ก ํ์ฅ๋์ต๋๋ค. ์์ฒญ์์๋ ๋ฒ์ ์ ๋ณด๊ฐ ๋ถ์ด ์ ์ก๋๊ธฐ ์์ํ๊ณ , ์๋ต์์ ์ํ ์ฝ๋๊ฐ ์๋ต๊ฐ ์์ ๋ถ๋ถ์ ํฌํจ๋์ด ์ ์ก๋๊ธฐ ์์ํ์ต๋๋ค. HTTP ํด๋๊ฐ ์์ฒญ๊ณผ ์๋ต ๋ ๊ณณ์ ๋์
๋๊ณ , ํค๋์ 'Content-Type'์ผ๋ก ๋ฉํ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ๋ฉ์๋๋ POST
, HEAD
๊ฐ ์ถ๊ฐ๋์ต๋๋ค.
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
<IMG SRC="/myimage.gif">
</HTML>
HTTP/1.1 - ํ์ค ํ๋กํ ์ฝ
1.0 ๋ฒ์ ์ด ๋์จ์ง ๋ช ๋ฌ ์๋์ 1997๋ ์ด HTTP์ ์ฒซ ๋ฒ์งธ ํ์ค ๋ฒ์ ์ธ 1.1 ๋ฒ์ ์ด ๊ณต๊ฐ๋์ต๋๋ค. ๊ธฐ์กด์ ๋ชจํธํ๋ ๋ถ๋ถ๋ค์ ๊ฐ์ ํ๊ณ , ํต์ ์ ๋น์ฉ์ ๋ฎ์ถ ์ ์๋ ๋ถ๋ถ๋ค์ด ์ถ๊ฐ๋์ต๋๋ค.
์๋์ ์์ฑํ ๊ฒ๋ค๋ณด๋ค ๋ ๋ง์ ๊ฒ๋ค์ด ์ถ๊ฐ๋์ผ๋ ๊ถ๊ธํ์ ๋ถ๋ค์ MDN์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
OPTION
,PUT
,DELETE
,TRACE
๊ฐ ์ถ๊ฐ๋์ต๋๋ค.- ์ปค๋ฅ์ ์ด ์ฌ์ฌ์ฉ๋ ์ ์๊ฒ ๋์ต๋๋ค. ํ์๋ ๋จ์ผ ์๋ณธ ๋ฌธ์ ๋ด๋ก ์๋ฒ ๋๋ ๋ฆฌ์์ค๋ค์ ๋์คํ๋ ์ดํ๊ธฐ ์ํด, ์ด๋ฏธ ์ฌ์ฉ๋ ์ปค๋ฅ์ ์ ๋ค์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ์ ์ฝํฉ๋๋ค.
- ํ์ดํ๋ผ์ด๋(pipelining)์ ์ถ๊ฐํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์์ฒญ์ ๋ํ ์๋ต์ด ์์ ํ ์ ์ก๋๊ธฐ ์ด์ ์ ๋ ๋ฒ์งธ ์์ฒญ ์ ์ก์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
HTTP/1.0์์๋ ๋จ๊ธฐ ์ปค๋ฅ์
(Short-lived connections
)์ ์ด์ฉํ์ต๋๋ค. ๋จ๊ธฐ ์ปค๋ฅ์
์ ๊ฐ๊ฐ์ HTTP ์์ฒญ๋ง๋ค TCP handshake๊ฐ ์คํ๋ฉ๋๋ค. TCP ์ปค๋ฅ์
์ ์ง์์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์ํ์์ ํต์ ์ด ์ง์๋์ ๋ ํจ์จ์ ์ผ๋ก ์๋ํฉ๋๋ค. ์ด๋ฐ TCP์ ํจ์จ์ ์ธ ํน์ฑ์ ์ฌ์ฉํ์ง ์๋ ๋จ๊ธฐ ์ปค๋ฅ์
์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ๋ฐ์ ์์ต๋๋ค.
๊ทธ๋์ HTTP/1.1์๋ ์ง์์ ์ธ ์ปค๋ฅ์
(Persistent connection
)์ด ์ถ๊ฐ๋์ต๋๋ค. ์ผ์ ์๊ฐ ๋์ ์ปค๋ฅ์
์ ์ด์ด๋๊ณ ๊ทธ ์๊ฐ ๋์ HTTP ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ์์
๋๋ค. TCP ์ปค๋ฅ์
์ ํญ์ ์ ์ง๋๋ ๊ฒ์ด ์๋๋ผ ์ต์ํ ์ผ๋ง๋ ์ด๋ ค์์ด์ผํ ์ง ์ค์ ํด์ค์ผ ํฉ๋๋ค. ์ง์์ ์ธ ์ปค๋ฅ์
์ TCP handshake ๋น์ฉ์ด ํฌ๊ฒ ์ค์ด๋ค์ด์ ์ด์ ๋ฐฉ์๋ณด๋ค ํจ์จ์ ์
๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์๋ ์๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค.
- ์์ฒญ์ด ๋ค์ด์ค์ง ์๋ ์ํฉ์๋ ์๋ฒ ๋ฆฌ์์ค๋ฅผ ์๋นํฉ๋๋ค.
- DoS Attack์ ๋นํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ ์์ฒญ ๋น ํ๋์ ์๋ต ๋ฐ์ ํ ์ ์์ต๋๋ค. ์ฆ, ๋์ ์ ์ก์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ค ์ค ํนํ ์ธ ๋ฒ์งธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HTTP Pipelining
๊ธฐ์ ์ด ์ถ๊ฐ๋์ต๋๋ค. HTTP Pipelining
์ ํ ๋ฒ์ ์ปค๋ฅ์
์ ํตํด ์ฌ๋ฌ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ๋ฐ์ ์ ์๋ ๊ธฐ์ ์ ์๋ฏธํฉ๋๋ค. ์ด๋ก ์ ์ผ๋ก๋ ์ปค๋ฅ์
์ ์ง์ฐ์ ํผํ ์ ์์์ง๋ง ํ์ดํ๋ผ์ด๋
์ ์ ํํ ๊ตฌํํด๋ด๊ธฐ ๋ณต์กํ ๋ฌธ์ ๋๋ฌธ์ ํ์ค์ ๊ทธ๋ ์ง ๋ชปํฉ๋๋ค. ์ ์ก ์ค์ธ ๋ฆฌ์์ค์ ํฌ๊ธฐ, RTT, ๋์ญํญ์ ๋ฅ๋ ฅ์ ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ ์์น ๋น๊ตํด๋ณด๋ฉด ๋ฏธ๋ฏธํ ์์ค์ ํฅ์์ ๊ฐ์ ธ์ต๋๋ค.
๋ํ ์๋ต์ ์ค์๋์ ๋ฐ๋ผ ์๋ต๋๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ ์ค์ํ ์๋ต์ ์ค์ํ ์๋ต์ด ๋ฐ๋ ค ํ์ด์ง ๋ ์ด์์ ์ค์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ฆ, HTTP HOL
๋ฌธ์ ๊ฐ ์๊น๋๋ค. ์ค์ํ ๋ด์ฉ์ด๋ HTTP HOL
์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
HTTP HOL
ํ๋์ TCP ์ฐ๊ฒฐ์์ 3๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ป์ผ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ HTTP์ ์์ฒญ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| --- a.png --- |
| --- b.png --- |
| --- c.png --- |
a.png, b.png, c.png ์์๋๋ก ์ฌ์ง์ ์์ฒญํ๊ณ ์๋ฒ์์ ์ฒ๋ฆฌ๋๋ ๋๋ก ๋ณด๋ธ ์์ฒญ์ ์ ๋งํผ ์๋ต์ ๋ฐ์ต๋๋ค. ์ดํด๊ฐ ์ ์๊ฐ์ ๋ค๋ฉด ์์ ์๋ ์ธ ๋ฒ์งธ ์ฌ์ง์ ๋ณด์๋ฉด ์ดํด๊ฐ ์ ๊ฐ์ค๊ฒ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์ฒซ ๋ฒ์งธ๋ก ์์ฒญ์ ํ a.png์ ํ์ผ์ด ๋๋ฌด ํฌ๊ฑฐ๋ ์์ฒญ์ด๋ ์๋ต์์ ํจํท ์ ์ค์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์๋ต์ฒ๋ฆฌ๊ฐ ๋ฆ์ด์ง๋ฉด ์๋์ ๊ฐ์ ํ์์ด ๋ฐ์ํฉ๋๋ค.
| ------------------ a.png ----------------- |
| --- b.png --- |
| --- c.png --- |
์ด๋ฐ ์ํฉ์ด ๋ฐ์ํ๋ค๋ฉด a.png์ ์๋ต์ด ์ฒ๋ฆฌ๋๊ธฐ ์ ๊น์ง b.png์ c.png๋ ๋๊ธฐ๋ฅผ ํ๊ฒ ๋ฉ๋๋ค. ์ด์ ๊ฐ์ ํ์์ HTTP์ Head of Line Blocking
(HTTP HOL
)์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ด๋ ํ์ดํ๋ผ์ด๋
๋ฟ๋ง ์๋๋ผ HTTP/1.1์ ํฐ ๋ฌธ์ ์ ์ค ํ๋์
๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด Domain Sharding, Image Sprites ๋ฑ์ ๊ธฐ์ ๋ ๋์
ํ์ง๋ง(์์ธํ ์ค๋ช
์ ์ฌ๊ธธ ํด๋ฆญํ์ธ์) ๊ฒฐ๊ตญ ๊ทผ๋ณธ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ด ๋์ง๋ ๋ชปํ์ต๋๋ค.
HTTP/2์ ๋ฑ์ฅ
2010๋
, Google์ SPDY
ํ๋กํ ์ฝ์ ๊ตฌํํฉ๋๋ค. SPDY
๋ HTTP ํค๋๋ฅผ ๋จ์ํํ์ฌ ์์ถํ์ฌ ์ ์กํ๊ณ , ๊ธฐ์กด์ ๋ณด๋๋ HTTP ํค๋์ ๊ฐ์ ๋ด์ฉ์ ํค๋๊ฐ ์ฌ์ ์ก๋ ๊ฒฝ์ฐ ํด๋๋ ๋นผ๊ณ ์ ์กํฉ๋๋ค. ์ดํ ๋ค๋ฅธ ๋ด์ฉ์ ํค๋๊ฐ ์ ์ก๋ ๊ฒฝ์ฐ ์ด ๋ค๋ฅธ ๋ถ๋ถ๋ง ์์ถํ์ฌ ์ ์ก์ ํฉ๋๋ค.(๋ค๋ฅธ ๊ธฐ์ ๋ค๋ ๋ ์์ต๋๋ค!) SPDY๋ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฌ์คฌ๊ณ , ์ดํ HTTP/2์ ์ด์์ SPDY
๊ท๊ฒฉ์ด ์ฐธ๊ณ ๋๊ฒ ๋ฉ๋๋ค.
์ด์ ๋ถํฐ HTTP/2์ ํฐ ํน์ง๋ค์ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Binary protocol
์ด์ ๋ฐ์ด๋๋ฆฌ ํ๋กํ ์ฝ
์ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ์กด์ ํ
์คํธ ํ๋กํ ์ฝ
์๋ ์ ํ ๋ค๋ฆ
๋๋ค! ๊ธฐ์กด์ ํตํฉ๋์ด ์ ํ์๋ ํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ํค๋ ๋ถ๋ถ๊ณผ ๋ฐ์ดํฐ ๋ถ๋ถ์ผ๋ก ๋๋๊ณ ์ด๋ฅผ ๋ฐ์ด๋๋ฆฌ๋ก ์ธ์ฝ๋ฉํ์ฌ ์ ์กํฉ๋๋ค. HTTP์ ์ฒด๊ณ(Methods, Headers, verbs ๋ฑ๋ฑ)๋ ๋ฐ๋์ง ์์ง๋ง, ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ์๋ก๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋ฐ์ด๋๋ฆฌ ์ธ์ฝ๋ฉ
๋ฉ์ปค๋์ฆ์ด ํ์ํด์ก์ต๋๋ค.
Stream, Message & Frame
Binary Framing
๋งค์ปค๋์ฆ์ด ๋์
๋๋ฉด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๊ตํ ๋ฐฉ์์ด ๋ฐ๋์์ต๋๋ค. ๊ทธ์ ๋ฐ๋ผ ์๋ก์ด ์ฉ์ด๋ค์ด ๋ฑ์ฅํ๋๋ฐ ์์ผ๋ก์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๊ฒ ์ต๋๋ค!
Stream
: ์ปค๋ฅ์ ๋ด์์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ค์ ํ๋ฆ์ ๋๋ค. ํ๋ ์ด์์ ๋ฉ์ธ์ง๊ฐ ์ ๋ฌ๋ ์ ์์ต๋๋ค.Message
: ์์ฒญ ๋๋ ์๋ต์ ๋จ์์ ๋๋ค. ์ฌ๋ฌ ๊ฐ์ ํ๋ ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.Frame
: HTTP/2 ํต์ ์ ์ต์ ๋จ์์ ๋๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด์๋ฉด ํ ๋ฒ์ ์ปค๋ฅ์ ์ N๊ฐ์ ์คํธ๋ฆผ์ด ์ ์ก๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ํ ๋ฒ์ ์ปค๋ฅ์ ์์ ์์ฒญ์ด๋ ์๋ต์ ์ฌ๋ฌ ๊ฐ ๋ณด๋ผ ์ ์๋๋ฐ ์ด๋์ ์ซ์ ์ ํ์ ์์ต๋๋ค. ๋๋ถ์ด ๊ฐ ์คํธ๋ฆผ์๋ ๊ณ ์ ์ ์๋ณ์์ ์ฐ์ ์์ ์ ๋ณด๊ฐ ์๊ฒผ์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ์ ์์์ ๋ฐ๋ผ์ ์คํธ๋ฆผ์ด ์ ์ก๋๊ณ ๊ณ ์ ์ ์๋ณ์๋ฅผ ํตํด ์ด ํ๋ ์๋ค์ ๋ค์ ์กฐ๋ฆฝํ ์ ์์ต๋๋ค.
Multiplexing
HTTP/1.x์ ๋ฌธ์ ์ ์ Domain Sharding
์ผ๋ก ํด๊ฒฐํ์์ต๋๋ค. ์ด์ ๋ Multiplexing
์ ํตํด ์ฌ๋ฌ ๊ฐ์ ์์ฒญ์ด๋ ์๋ต์ ํ ๋ฒ์ ์ปค๋ฅ์
์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์์์ ์ค๋ช
ํ๋ฏ์ด, ์ด ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ HTTP ๋ฉ์ธ์ง๋ฅผ ๋
๋ฆฝ๋ ํ๋ ์์ผ๋ก ์ธ๋ถํํ๊ณ , ์ฐ์ ์์์ ๋ฐ๋ผ ํ๋ ์์ ์ธํฐ๋ฆฌ๋นํ ๋ค์ ์ ์กํฉ๋๋ค. ๋ฐ๋ ์ชฝ์์๋ ๊ณ ์ ์ ์๋ณ์๋ฅผ ํตํด ์ด ํ๋ ์๋ค์ ๋ค์ ์กฐ๋ฆฝํฉ๋๋ค. ์๋ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ์๋ฉด ์ดํดํ๊ธฐ ํธํ์ค ๊ฒ๋๋ค.
์ด ๊ธฐ์ ์ ํตํด HTTP ํต์ ์ ์ฑ๋ฅ ํฅ์์ ์์ฒญ๋ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค. ๋๋ถ์ด HTTP/1.x ๊ธฐ์ ์์ ์ฌ์ฉํ๋ Image Sprites
๋ Domain Sharding
๊ณผ ๊ฐ์ ๊ธฐ์ ๋ค์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์๋ ๋ฉ๋๋ค. ๋๋ถ์ด ์ฐ์ ์์ ๋ณ๋ก ์ ์ก๋๊ธฐ ๋๋ฌธ์ ํ์ด์ง ๋ก๋ฉ์ด ํจ์จ์ ์ผ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
Server Push
HTTP/2์๋ ์๋ฒ ํธ์
๋ผ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๋ ์ถ๊ฐ๋์ต๋๋ค. HTTP/1.x์์๋ ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ํ๋๋ฅผ ๋ณด๋ด๋ฉด ๊ทธ์ ๋ํ ์๋ต์ ๋จ ํ๋๋ง ๋ณด๋ผ ์ ์์์ต๋๋ค. HTTP/2๋ถํฐ ์๋ฒ ํธ์
๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด์, ํด๋ผ์ด์ธํธ์์ ์๋ ์์ฒญํ ์๋ต ๋ฟ๋ง ์๋๋ผ ์์ผ๋ก ํด๋ผ์ด์ธํธ์์ ์์ฒญํ ์ถ๊ฐ์ ์ธ ๋ฆฌ์์ค๋ค์ ๋ฏธ๋ฆฌ ์๋ตํด์ค๋๋ค. ์ด๋ PUSH_PROMISE
ํ๋ ์์ ํตํด ๊ตฌํ๋ ๊ธฐ์ ์ด๊ณ ์ด ๋ํ ์ค์ํ ๊ธฐ์ ์ด๋ ์ฌ๊ธฐ์์ ์์ธํ ์ฝ์ด๋ณด์๊ธธ ๊ถํฉ๋๋ค.
์ฝ๊ณ ์๋ฅผ ๋ค์ด ์ค๋ช ํด๋ณด์๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ index.html ํ๋๋ฅผ ์์ฒญํฉ๋๋ค. ์ด HTML ์์๋ CSS, img, js ๋ฑ ๋ง์ ์ถ๊ฐ ๋ฆฌ์์ค๋ค์ด ํ์ํ๋ค๋ ๊ฒ์ด ์ ํ์์ต๋๋ค. HTML/1.x ํต์ ์ธ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ HTML์ ์๋ต๋ฐ์ ๋ค HTML ๋ฌธ์๋ฅผ ํด์ํด ํ์ํ ๋ฆฌ์์ค๋ค ๋ค์ ์์ฒญํฉ๋๋ค. HTTP/2 ํต์ ๋ถํฐ๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ด๋ค ๋ฆฌ์์ค๋ค์ ๋ณด๋ด์ผํ๋์ง ๋ฏธ๋ฆฌ ์๊ณ ์์ด, HTML์ ์ ์กํ๋ฉด์ ๋์์ HTML๋ฌธ์์ ํฌํจ๋ ๋ฆฌ์์ค๋ค์ ๊ฐ์ด ํธ์ํด์ค๋๋ค.
Header Compression
HTTP ํค๋์๋ ์ ์ก๋๋ ๋ฆฌ์์ค์ ์์ฑ์ด ์์ฑ๋์ด ์์ต๋๋ค. HTTP/1.x์ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฉํ๋ฐ์ดํฐ๋ค์ ํญ์ ํ
์คํธ๋ก ์ ์ก๋๊ณ ์ด๋ ์ ์ก ๋น 500~800 ๋ฐ์ดํธ์ ์ค๋ฒํค๋๊ฐ ์ถ๊ฐ๋์ต๋๋ค. HTTP/2์์๋ ์ด๋ฐ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ ์ HPACK ์์ถ
์ ํตํด ์์ฒญ ๋ฐ ์๋ต ํค๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ถํฉ๋๋ค. HPACK
์ ๋ํด ๊ฐ๋จํ ์ค๋ช
ํด๋ณด์๋ฉด
- ์ด์ ์ ๋ณด๋ธ ํค๋ ํ๋์ ์์ธ ๋ชฉ๋ก์ ์๋ฒ๊ฐ ์ ์งํ๊ณ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํด ์ค๋ณต๋๋ ํค๋ ํ๋๋ฅผ ์ ์ธํ ํค๋ ํ๋๋ง ์ ์กํฉ๋๋ค. ์ฝ๊ฒ ๋งํด ์ด์ ํค๋์์ ๋ฌ๋ผ์ง ๊ฐ๋ง ์ ์กํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์ Huffman ์ฝ๋๋ฅผ ํตํด ์ธ์ฝ๋ฉํฉ๋๋ค.
์์ ๊ธฐ์ ๋ค ๋ฟ๋ง ์๋๋ผ ํ๋ฆ ์ ์ด, One connection per origin ๋ฑ์ ๊ธฐ์ ๋ก ๊ธฐ์กด์ HTTP/1.x ๋ณด๋ค ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ TCP ํต์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ฌ๊ธฐ์์ ์ง์ ํ์ธํด๋ณผ ์ ์์ต๋๋ค.
[์ถ์ฒ]
https://developers.google.com/web/fundamentals/performance/http2?hl=ko
https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP