HTTP/2.0
HTTP/1.1์ ๋ฉ์์ง ํฌ๋งท์ ๊ตฌํ์ด ์ฝ๊ณ ๋๋ฒ๊น ์ด ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์์์ผ๋, ์น ํ๊ฒฝ์ด ๋ณต์กํด์ง์ ๋ฐ๋ผ ์ฑ๋ฅ์์ ํ๊ณ๊ฐ ๋๋ฌ๋ฌ๋ค.
์ปค๋ฅ์ ํ๋๋น ํ๋์ ์์ฒญ๊ณผ ์๋ต๋ง ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ: HOL(Head of Line) Blocking ๋ฌธ์ ๋ฐ์
ํ๋์ ์์ฒญ์ด ์ง์ฐ๋๋ฉด ๋ค๋ฐ๋ฅด๋ ๋ชจ๋ ์์ฒญ์ด ์ง์ฐ
๋ณ๋ ฌ ์ปค๋ฅ์ ์ผ๋ก ์ด๋ฅผ ์ํํ๋ ค ํ์ผ๋, TCP ์ปค๋ฅ์ ์๊ฐ ๋ง์์ง๋ฉฐ ์คํ๋ ค ๋คํธ์ํฌ ํผ์ก๊ณผ ์ง์ฐ ์ฆ๊ฐ
ํค๋์ ๋นํจ์จ์ฑ: ์ค๋ณต๋๋ ํค๋ ํ๋๊ฐ ๋ง์ ๋คํธ์ํฌ ์ค๋ฒํค๋ ์ฆ๊ฐ
์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 2015๋ ์ HTTP/2.0์ด ํ์คํ๋์๋ค.
ํต์ฌ ๋ชฉํ์ ํน์ง
๊ธฐ์กด HTTP/1.1์ ์๋ฏธ(Method, Status Code, Header ๋ฑ)๋ ์ ์งํ๋ฉด์ ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ์ฌ ์ง์ฐ ์๊ฐ(Latency)์ ์ค์ด๊ณ ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ์ค๊ณ๋์๋ค.
๋ฐ์ด๋๋ฆฌ ํ๋ ์ด๋ฐ ๊ณ์ธต(Binary Framing Layer)
ํ ์คํธ๊ฐ ์๋ ๋ฐ์ด๋๋ฆฌ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ก
ํ์ฑ ์๋๊ฐ ๋น ๋ฅด๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์
๋ฉํฐํ๋ ์ฑ(Multiplexing)
๋จ์ผ ์ปค๋ฅ์ ์์ ์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์ ๋์์ ์ฃผ๊ณ ๋ฐ์
HTTP/1.1์ HOL Blocking ๋ฌธ์ ํด๊ฒฐ
์๋ฒ ํธ์(Server Push)
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ์ง ์์ ๋ฆฌ์์ค(CSS, JS ๋ฑ)๋ฅผ ์๋ฒ๊ฐ ๋ฏธ๋ฆฌ ์ ์ก ๊ฐ๋ฅ
ํค๋ ์์ถ(Header Compression)
HPACK ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ค๋ณต๋๋ ํค๋๋ฅผ ์์ถ ์ ์ก
HTTP/1.1 ํธํ์ฑ
๊ธฐ์กด ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ค๊ณผ ํธํ์ฑ์ ์ต๋ํ ์ ์งํ๊ธฐ ์์ฒญ/์๋ต ๋ฉ์์ง์ ์๋ฏธ๋ฅผ ์ต๋ํ ๊ฐ๋๋ก ์ ์ง
HTTP/1.1๊ณผ์ ์ฐจ์ด์
HTTP/2.0 ์ญ์ TCP ์ปค๋ฅ์ ์์์ ๋์ํ์ง๋ง, HTTP/1.1๊ณผ๋ ๊ตฌ์กฐ์ ์ผ๋ก ํฐ ์ฐจ์ด๊ฐ ์๋ค.
๊ฐ์ฅ ํฐ ๋ณํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต๊ณผ ์ ์ก ๊ณ์ธต ์ฌ์ด์ ๋ฐ์ด๋๋ฆฌ ํ๋ ์ด๋ฐ ๊ณ์ธต์ด ์ถ๊ฐ๋ ๊ฒ์ด๋ค.
1. ํ๋ ์(Frame)๊ณผ ๋ฐ์ด๋๋ฆฌ ํฌ๋งท
HTTP/2 ํต์ ์ ์ต์ ๋จ์๋ ํ๋ ์์ผ๋ก, ๊ธฐ์กด์ ์ค๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋๋ ํ ์คํธ ๋ฉ์์ง๊ฐ ์๊ฒ ์ชผ๊ฐ์ ธ ๋ฐ์ด๋๋ฆฌ ํ๋ ์์ผ๋ก ๋ณํ๋๋ค.
R(1bit): ์์ฝ๋ ํ๋ (ํญ์ 0)
Length(24bit): ํ์ด๋ก๋์ ๊ธธ์ด (ํค๋ ์ ์ธ)
Type(8bit): ํ๋ ์์ ์ข ๋ฅ
Flags(8bit): ํ๋ ์๋ณ ์ต์ ํ๋๊ทธ
Stream Identifier (31bit): ์คํธ๋ฆผ ID. ์ด๋ค ์คํธ๋ฆผ์ ์ํ ํ๋ ์์ธ์ง ์๋ณ
2. ์คํธ๋ฆผ(Stream)๊ณผ ๋ฉํฐํ๋ ์ฑ
์คํธ๋ฆผ์ ๊ตฌ์ฑ๋ ์ฐ๊ฒฐ ๋ด์์ ์ ๋ฌ๋๋ ๋ฐ์ดํธ์ ์๋ฐฉํฅ ํ๋ฆ์ผ๋ก, ํ๋ ์ด์์ ๋ฉ์์ง๊ฐ ํฌํจ๋ ์ ์๋ค.
๋์ ๋ฐฉ์
HTTP ๋ฉ์์ง(์์ฒญ/์๋ต)๋ฅผ ์ฌ๋ฌ ๊ฐ์ ํ๋ ์์ผ๋ก ๋ถํด
๊ฐ ํ๋ ์์ ์คํธ๋ฆผ ID๋ฅผ ๋ถ์ฌํ์ฌ ์ ์ก
์์ ์ธก์์๋ ์คํธ๋ฆผ ID๋ฅผ ๋ณด๊ณ ํ๋ ์์ ๋ค์ ์กฐ๋ฆฝํ์ฌ ๋ฉ์์ง ๋ณต์
ํจ๊ณผ
ํ๋์ TCP ์ปค๋ฅ์ ์ผ๋ก ์์ญ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ๋์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
ํน์ ์์ฒญ์ด ๋๋ ค์ ธ๋ ๋ค๋ฅธ ์์ฒญ์ ์ํฅ์ ์ฃผ์ง ์์(HOL Blocking ํด๊ฒฐ)
ํน์ ์คํธ๋ฆผ์ ์ฐ์ ์์ ์ง์ ๊ฐ๋ฅ
3. ์๋ฒ ํธ์ (Server Push)
ํด๋ผ์ด์ธํธ๊ฐ HTML์ ์์ฒญํ์ ๋, ํด๋น ํ์ด์ง ๋ ๋๋ง์ ํ์ํ CSS๋ JavaScript ํ์ผ์ ์๋ฒ๊ฐ ์์์ ํจ๊ป ๋ณด๋ด๋ ๊ธฐ๋ฅ์ด๋ค.
ํด๋ผ์ด์ธํธ:
GET /index.html์์ฒญ์๋ฒ:
/index.html์๋ต + (Push Promise) +/style.css+/app.js์ ์กํจ๊ณผ: ํด๋ผ์ด์ธํธ์ ์ถ๊ฐ ์์ฒญ ๋๊ธฐ ์๊ฐ์ ์ ๊ฑฐํ์ฌ ๋ก๋ฉ ์๋ ํฅ์
๋ณด์ ์ด์
์ค๊ฐ์ ์บก์ํ ๊ณต๊ฒฉ
HTTP/2 ๋ฉ์์ง๋ฅผ ํ๋ก์๊ฐ HTTP/1.1๋ก ๋ณํํ์ฌ ๋ฐฑ์๋ ์๋ฒ๋ก ์ ๋ฌํ ๋ ๋ฐ์ํ ์ ์๋ ๋ณด์ ์ทจ์ฝ์ ์ด๋ค.
์์ธ: HTTP/2๋ ํค๋ ํ๋์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์๋๋ฐ, ์ด๋ฅผ ํ ์คํธ ๊ธฐ๋ฐ์ธ HTTP/1.1๋ก ๋ณํํ๋ ๊ณผ์ ์์ ์ ํจ์ฑ ๊ฒ์ฆ์ด ๋ฏธํกํ๋ฉด ๊ฐํ ๋ฌธ์ ๋ฑ์ด ์ฝ์ ๋์ด ๋ฉ์์ง ๊ฒฝ๊ณ๊ฐ ๋ชจํธํด์ง ์ ์์
๊ฒฐ๊ณผ: ๊ณต๊ฒฉ์๊ฐ ์์ฒญ์ ๋ฐ์ด๋ฃ์ด ๋ค๋ฅธ ์ฌ์ฉ์์ ์๋ต์ ๊ฐ๋ก์ฑ๊ฑฐ๋ ์บ์๋ฅผ ์ค์ผ์ํฌ ์ ์์
๊ธด ์ปค๋ฅ์
์ ์ง๋ก ์ธํ ๊ฐ์ธ์ ๋ณด ๋์ถ
๋จ์ผ ์ปค๋ฅ์ ์ ์ค๋ ์ ์งํ๋ ํน์ฑ ๋๋ฌธ์ ๊ฐ์ธ ์ ๋ณด ๋์ถ ์ํ์ด ์์ด, ๋ธ๋ผ์ฐ์ ๋ฒค๋๋ค์ ์ด์ ๋์ํ๊ธฐ ์ํด ์ปค๋ฅ์ ์ ์ง ์ ์ฑ ์ ์กฐ์ ํ๊ธฐ๋ ํ๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?