[๋คํธ์ํฌ] HTTP/2
HTTP/2๋ SPDY ํ๋กํ ์ฝ์์ ํ์๋ HTTP/1.x๋ณด๋ค ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ , ์๋ต ์๊ฐ์ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์์ผ๋ฉฐ ๋ฉํฐํ๋ ์ฑ, ํค๋ ์์ถ, ์๋ฒ ํธ์, ์์ฒญ์ ์ฐ์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ ํ๋กํ ์ฝ์ด๋ค.
* SPDY ํ๋กํ ์ฝ : HTTP 1.1์ ์ฌ๋ฌ ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ธฐ ์ํด์ ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ๋นํ์ค ๊ฐ๋ฐฉํ ํ๋กํ ์ฝ
https://ko.wikipedia.org/wiki/SPDY
SPDY - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์
์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ . SPDY(์คํผ๋/speedy/๋ก ๋ฐ์)[1]๋ ์น ์ฝํ ์ธ ๋ฅผ ์ ์กํ ๋ชฉ์ ์ผ๋ก ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ๋นํ์ค ๊ฐ๋ฐฉํ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ด๋ค. SPDY๋ ์น ํ์ด์ง ๋ถํ ๋ ์ดํด์๋ฅผ ์ค์ด๊ณ ์น
ko.wikipedia.org
๋ฉํฐํ๋ ์ฑ
๋ฉํฐํ๋ ์ฑ์ด๋ ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ์ก์์ ํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด ํน์ ์คํธ๋ฆผ์ ํจํท์ด ์์ค๋์๋ค๊ณ ํ๋๋ผ๋ ํด๋น ์คํธ๋ฆผ์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ๋๋จธ์ง ์คํธ๋ฆผ์ ๋ฉ์ฉกํ๊ฒ ๋์ํ ์ ์๋ค.
* ์คํธ๋ฆผ(stream) : ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ์ผ๋ จ์ ๋ฐ์ดํฐ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ ํ๋ฆ
์ฆ, ํ ์ฅ์น์์ ๋ค๋ฅธ ์ฅ์น๋ก ๋ณด๋ด์ง๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ ํ๋ฆ์ด๋ค.
์ ๊ทธ๋ฆผ์ ํ ์ฐ๊ฒฐ ์์ ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ์บก์ฒํ ๋ชจ์ต์ด๋ค. ๋ณ๋ ฌ์ ์ธ ์คํธ๋ฆผ๋ค์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๊ณ ์๋ค.
ํ ๊ฐ์ ์คํธ๋ฆผ์ด ํ ์์ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ค. ํ๋์ ์ปค๋ฅ์ ์์ ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ด ๋์์ ๋ง๋ค์ด์ง ์ ์์ผ๋ฏ๋ก, ์ฌ๋ฌ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ๊ฒ ์ญ์ ๊ฐ๋ฅํ๋ค.
๋จ์ผ ์ฐ๊ฒฐ์ ํตํด ๋ณ๋ ฌ๋ก ์ฌ๋ฌ ์์ฒญ์ ๋ฐ์ ์ ์๊ณ , ์๋ต์ ์ค ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด์ ํ ์ฐ๊ฒฐ์ ํ๋์ ์์ฒญ๊ณผ ํ๋์ ์๋ต๋ง ๋ฐ์ ์ ์์ด์ HTTP/1.x์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ HOL Blocking์ ํด๊ฒฐํ ์ ์๋ค.
ํค๋ ์์ถ
HTTP/1.x์๋ ํฌ๊ธฐ๊ฐ ํฐ ํค๋๋๋ฌธ์ ํต์ ์๋๊ฐ ๋๋ ค์ง๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์ด๋ฅผ HTTP/2์์๋ ํค๋ ์์ถ์ ์จ์ ํด๊ฒฐํ๋๋ฐ, ํํ๋ง ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ HPACK ์์ถ ํ์์ ๊ฐ์ง๋ค.
ํํ๋ง ์ฝ๋ฉ(huffman coding)
๋ฌธ์์ด์ ๋ฌธ์ ๋จ์๋ก ์ชผ๊ฐ์ ๋น๋์๋ฅผ ์ผ๋ค. ๊ทธ๋ฆฌ๊ณ ๋น๋๊ฐ ๋์ ์ ๋ณด๋ ์ ์ ๋นํธ ์๋ฅผ ์ฌ์ฉํ์ฌ ํํํ๊ณ , ๋น๋๊ฐ ๋ฎ์ ์ ๋ณด๋ ๋นํธ ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์ฌ ํํํด์, ์ ์ฒด ๋ฐ์ดํฐ์ ํํ์ ํ์ํ ๋นํธ ์์ ์ค์ด๋ ์๋ฆฌ์ด๋ค.
์๋ฅผ ๋ค์ด, 'AABBAC'๋ผ๋ ๋ฌธ์์ด์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์ด๊ธฐ ์ํ์์ ๋ฌธ์ ํ ๊ฐ์ 1 byte๋ฅผ ์ฐจ์งํ๋ฏ๋ก, ์ด 6 byte(=48 bits)์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ๋ฌธ์์ด์ด๋ค.
๋ฌธ์ 'A' ์ ๋น๋์๊ฐ 3, 'B'์ ๋น๋์๊ฐ 2, 'C'์ ๋น๋์๊ฐ 1์ด๋ฏ๋ก ๊ฐ์ฅ ํฐ ๋น๋์๋ฅผ ๊ฐ์ง 'A'๋ฅผ 1 bit์ง๋ฆฌ 0์ผ๋ก ํํํ๊ณ 'B'์ 'C'๋ฅผ ๊ฐ๊ฐ 01๊ณผ 11๋ก ํํํ๋ค. ๊ทธ๋ฌ๋ฉด 'AABBAC'๋ ํ ์๋ฆฌ๋น 1bit๋ฅผ ์ฐจ์งํ๋ ๋นํธ๋ก ๋ณํ๋์ด 000101011์ด๋ผ๋ ์์ด๋ก ๋ณํ๋๊ณ , ์ด ์์ด์ 9 bits๊ฐ ๋๊ธฐ ๋๋ฌธ์ 6byte(=48bits)์์ 9 bits๋ก ์์ถ๋๋ค.
์ด์ ๊ฐ์ด ๋นํธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์์ ์ด์งํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์์ธํ ์๋ฆฌ๋ ์๋ ๋ธ๋ก๊ทธ์์ ํ์ธํ ์ ์๋ค.
https://lipcoder.tistory.com/187
ํํ๋ง(Huffman) ํธ๋ฆฌ๋ฅผ ์ด์ฉํ ํ ์คํธ ์์ถ
๊ฐ์ ํํ๋ง ์ฝ๋ฉ(Huffman coding)์ ํ ์คํธ ์์ถ์ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ผ๋ก, ์๋ณธ ๋ฐ์ดํฐ์์ ์์ฃผ ์ถํํ๋ ๋ฌธ์๋ ์ ์ ๋นํธ์ ์ฝ๋๋ก ๋ณํํ์ฌ ํํํ๊ณ ์ถํ ๋น๋๊ฐ ๋ฎ์ ๋ฌธ์๋ ๋ง์ ๋น
lipcoder.tistory.com
์๋ฒ ํธ์
HTTP/1.1์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํด์ผ ํ์ผ์ ๋ค์ด๋ฐ์ ์ ์์๋ค๋ฉด, HTTP/2๋ ํด๋ผ์ด์ธํธ ์์ฒญ์์ด ์๋ฒ๊ฐ ๋ฐ๋ก ๋ฆฌ์์ค๋ฅผ ํธ์ํ ์ ์๋ค.
html์๋ css๋ js ํ์ผ์ด ํฌํจ๋๊ธฐ ๋ง๋ จ์ธ๋ฐ, html์ ์ฝ์ผ๋ฉด์ ๊ทธ ์์ ๋ค์ด ์๋ css ํ์ผ์ ์๋ฒ์์ ํธ์ํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋จผ์ ์ ์กํ ์ ์๋ค. ์๋ฒ์์ html ์์ฒญ์ ๋ฐ์ ์๋ต์ ๋ณด๋ด๊ณ , ๊ทธ์ ํ์ํ css๋ js ํ์ผ์ ์์์ ๋จผ์ ์ ์กํด์ฃผ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๊ฐ
css, js ์์ฒญ์ ์ถ๊ฐ๋ก ๋ณด๋ด์ง ์์๋ ๋๋ค.