10. HTTP/2.0
์ด ์ฑ ์ 8๋ฒ์งธ ์ด์์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์
๋ฑ์ฅ ๋ฐฐ๊ฒฝ
http/1.1 : ๊ตฌํ์ ๋จ์์ฑ๊ณผ ์ ๊ทผ์ฑ ์์ฃผ
๋ฌธ์ : ํ์ ์ง์ฐ
์๋ต์ ๋ฐ์์ผ๋ง ์์ฒญ์ ๋ณด๋ผ ์ ์์
(์ฐํ์ ์ธ) ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ณ๋ ฌ ์ปค๋ฅ์
ํ์ดํ๋ผ์ธ ์ปค๋ฅ์
๋์ : ์๋ก์ด ํ๋กํ ์ฝ
WAKA
Microsoft S+M (Speed + Mobility)
SPDY (2.0์ ๊ธฐ๋ฐ)
SPDY์ ํน์ง
ํค๋ ์์ถ โ ๋์ญํญ ์ ์ฝ
1 TCP ๋ค์ค ์ปค๋ฅ์ (ํ์ ์ง์ฐ ์ค์)
์๋ฒ ํธ์
SPDY์ ๊ธฐ๋ฐํ HTTP 2.0
ํ๋ ์
๋ชจ๋ ๋ฉ์์ง๋ฅผ ๋ด๋ ์๋จ.
์์ฒญ ๋๋ ์๋ต์ด ๋ด๊ฒจ ์์.
ํ๋ ์์ ์ข
๋ฅ
๋ฐ์ดํฐ (DATA)
ํค๋ (HEADERS)
์ฐ์ ์์ (PRIORITY)
์คํธ๋ฆผ ๋ฆฌ์ (RST_STREAM)
SETTINGS, PUSH_PROMISE, ... ๋ฑ ์ด 10๊ฐ์ง
์คํธ๋ฆผ
ํ ์์ HTTP ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ๋จ์.
ํ๋ ์๋ค์ ๋ ๋ฆฝ๋ ์๋ฐฉํฅ ์ํธ์ค.
ํ๋์ ์ปค๋ฅ์ ์ ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ด ์์ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ TCP ์ปค๋ฅ์ ์ ๋ง๋๋ ํจ๊ณผ.
์ฌ๋ฌ ์์ฒญ์ด ๋์์ ๋ณด๋ด์ง ์ ์๊ณ ์ฐ์ ์์๋ ๊ฐ์ง ์ ์๋ค.
์ฌ๋ฌ ์คํธ๋ฆผ์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ธ๋ก๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ฆ์ ์ด ๊ธฐ๋ฒ์ ์ฌ์ฉ.
์คํธ๋ฆผ ์๋ณ์
ํ TCP ์ปค๋ฅ์ ์์ ์คํธ๋ฆผ์ ์๋ณํ๋ 31๋นํธ ํ๋
ํด๋ผ์ด์ธํธ๊ฐ ๋ง๋ค๋ฉด : ํ์
์๋ฒ๊ฐ ๋ง๋ค๋ฉด : ์ง์
์คํธ๋ฆผ ์๋ณ์๋ ์ ์ ์ฆ๊ฐํด์ผ๋ง ํ๋ค.
๊ท์น์ ์ด๊ธฐ๋ฉด PROTOCOL_ERROR (์ปค๋ฅ์ ์๋ฌ)
์๋ณ์๋ ์๋ฒ์ ํด๋ผ๊ฐ ํ์ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ฆ
ํ ๋ฒ ์ฌ์ฉํ ์๋ณ์ ์ฌ์ฌ์ฉ ๋ถ๊ฐ
์๋ณ์๊ฐ ๊ณ ๊ฐ๋๋ฉด ๋ค์ ์ปค๋ฅ์ ๋งบ์
ํค๋ ์์ถ
HPACK ๋ช ์ธ์ ๋ฐ๋ผ ์์ถํ ๋ค ์ฒญํฌ๋ก ์ ์ก
๋ฐ๋ ์ชฝ์์๋ ํญ์ ์์ถ์ ํ์ด์ผ๋ง ํ๋ค.
์์ถ ์ฝํ
์คํธ
HPACK์ ์์ถ์ ํ๊ณ , ํด์ ํ ๋ ์์ถ ์ฝํ ์คํธ๋ผ๋ ๊ฒ์ด ๋ณ๊ฒฝ ๋จ.
๊ฐ ํผ์ด์์ ์์ถ์ ํด์ ํ๋ค๊ณ ๊ธฐ๋ํ๊ณ ์์.
๊ทธ๋ฌ๋ฏ๋ก ํค๋๋ฅผ ์ฐ์ง ์๊ณ ๋ฒ๋ฆฐ๋ค๊ณ ํ๋๋ผ๋ ๋ฌด์กฐ๊ฑด ์์ถ์ ํด์ ํด์ผ ํจ.
๊ทธ๋ด ์ ์๋ค๋ฉด COMPRESSION_ERROR (์ปค๋ฅ์ ์๋ฌ, ์ข ๋ฃ)
์๋ฒ ํธ์
์ด๋ค HTML ํ์ผ์ ์์ฒญํ ๋ ์๋ฒ์์ ์ด ํ์ผ์ด ๋งํฌํ๊ณ ์๋ CSS, JS, ์ด๋ฏธ์ง ๋ฑ์ ํด๋ผ์ด์ธํธ์์ ์์ฒญํ๊ธฐ ์ ์ ๊ฐ์ด ๋ฐํ ํด์ค ์ ์์.
PUSH_PROMISE
์๋ฒ ํธ์๋ฅผ ์ํ๊ณ ์ ํ ๋ ํด๋ผ์ ์ ์์ฒญ์ ์ํด ๋ง๋ค์ด์ง ์คํธ๋ฆผ์ ์ ์กํ๋ ํ๋ ์
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ ํธ์ํ๊ณ ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๋ณด๋ด์ผ ํจ
์ด ํ๋ ์์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ ํด๋น ์คํธ๋ฆผ์
์์ฝ๋จ
์ํ๋ก ๋ง๋ฆ.ํด๋น ์คํธ๋ฆผ์ด ๋ซํ๊ธฐ ์ ๊น์ง ์๋ฒํธ์ ๋์์ธ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉด ์ ๋จ.
RST_STREAM
PUSH_PROMISE ํ๋ ์์ ๋ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ ํธ์๋ฅผ ์์น ์์ ๋ ๋ณด๋ด๋ ํ๋ ์
๋ฐ๋ก PUSH_PROMISE ํ๋ ์์ผ๋ก ๋ถํฐ ์์ฝ๋ ์คํธ๋ฆผ์ด ๋ซํ๊ฒ ๋จ.
์ฃผ์์
์ค๊ฐ์ ํ๋ก์๊ฐ ์๋ฒ ํธ์์ ์๋์๋ ๋ณ๊ฐ๋ก ์์น ์๋ ์ ์ก / ์์น ์๋ ๋ฏธ์ ์ก์ด ์ด๋ฃจ์ด์ง ์ ์์
์์ ํ๊ณ ์บ์ ๊ฐ๋ฅํ๊ณ ๋ณธ๋ฌธ์ ํฌํจํ์ง ์๋ ์์ฒญ์ ๋ํด์๋ง ํธ์ ๊ฐ๋ฅ
ํธ์ํ ๋ฆฌ์์ค๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ช ์์ ์ผ๋ก ๋ณด๋ธ ๊ฒ๊ณผ ์ฐ๊ด์ด ์์ด์ผ๋ง ํจ
ํด๋ผ๋ ์๋ฒ๊ฐ ํธ์ํ ๋ฆฌ์์ค๋ฅผ CORS์ ๋ฐ๋ผ ๊ฒ์ฌํด์ผ ํจ. = ๋ค๋ฅธ origin ์์ ์จ ๋ฆฌ์์ค๋ ๊ฑฐ๋ถํด์ผ ํจ.
์๋ฒ ํธ์๋ฅผ ๋๊ณ ์ถ๋ค๋ฉด SETTING_ENABLE_PUSH = 0 ์ผ๋ก ์ค์
์๋ ค์ง ๋ณด์ ์ด์
์ค๊ฐ์ ์บก์ํ ๊ณต๊ฒฉ
Intermediary Encapsulation Attacks
2.0 ๋ฉ์์ง๋ฅผ ํ๋ก์๊ฐ 1.1 ๋ฉ์์ง๋ก ๋ณํํ ๋ ์๋ฏธ ๋ณ์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค.
2.0 ๋ฉ์์ง๋ ํค๋ ํ๋์ ์ด๋ฆ๊ณผ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ๋ก ์ธ์ฝ๋ฉ
์ด๋ก์จ ์ด๋ค ๋ฌธ์์ด์ด๋ ํค๋ ํ๋๋ก ์์ฑํ ์ ์๋ค
์ ์์ ์ธ 2.0 ์์ฒญ/์๋ต์ ๋ถ๋ฒ์ ์ธ 1.1 ๋ฉ์์ง๋ก ๋ฒ์ญ๋๊ฒ ํ ์ ์์
๊ทธ๋ฌ๋ ๋ฐ๋๋ก 1.1๋ฉ์์ง๋ ์ด๋ฅผ ํ์ฉํ์ง ์์ผ๋ฏ๋ก ๋ถ๊ฐ๋ฅ
๊ธด ์ปค๋ฅ์
์ ์ง = ๊ฐ์ธ์ ๋ณด ๋์ถ ์ฐ๋ ค
์ผ๋ฐ์ ์ผ๋ก, ํ ์ปค๋ฅ์ ์ด ์คํธ๋ฆผ ์๋ณ์๊ฐ ๊ณ ๊ฐ๋๊ฑฐ๋ ํ ์ชฝ์์ ๊ฐ์ ๋ก ๋๊ธฐ ์ ์๋ ๊ณ์ ์ ์ง๋จ.
RTT ๊ฐ ์ค์ด๋๋ ๋์ ์งง์ ์ปค๋ฅ์ ์ด ์๋ ๊ฒฝ์ฐ (๊ธธ๊ฒ ๊ณ์ ์ ์ง๋๋ ๊ฒฝ์ฐ) ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ด์์, ์ด์ ์ฌ์ฉ์๊ฐ ๋ฌด์์ ํ๋์ง ์์๋ผ ์๋ ์์.
Last updated