HTTP 2.0

HTTP1 ์˜ ์š”์ฒญ ๋ฐฉ์‹

HTTP1 ์—์„œ๋Š” ์•ž์—์„œ ๋‚ ๋ ท๋˜ ์š”์ฒญ์˜ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ๋งŒ ๋‹ค์Œ ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋‹ค.

HTTP1.x ์š”์ฒญ

์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํ•ด๊ฒฐ ํ•˜๊ธฐ์œ„ํ•ด ์ง€์† ์ปค๋„ฅ์…˜ (Persistent Connection) ์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ HTTP ํŒŒ์ดํ”„ ๋ผ์ด๋‹ (Pipelining) ์ด๋ผ๋Š” ๊ฐœ๋…์ด ๋“ค์–ด๊ฐ”๋‹ค.
์ปค๋„ฅ์…˜์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , Request ๋ฅผ ๋ฏธ๋ฆฌ ์—ฌ๋Ÿฌ๊ฐœ ์„œ๋ฒ„๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ Request ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ Response ๋ฅผ ๋ฐ›์„์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ๋Š” ๋ฌธ์ œํ•ด๊ฒฐ์ด ์–ด๋ ค์›Œ ๋ณด์ธ๋‹ค.

HOL (Head-of-Line Blocking) ์˜ ๋ฌธ์ œ์ 

๋งŒ์•ฝ ์ฒ˜์Œ์— ์š”์ฒญํ•œ Request ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด Response ๊ฐ€ ๋Šฆ์–ด์ง€๋ฉด 2๋ฒˆ์งธ, 3๋ฒˆ์งธ์— ์š”์ฒญํ•œ Request ์˜ Response ๋„ ๋Šฆ์–ด์ง€๋Š” ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค.

HOL

๋„๋ฉ”์ธ ์ƒค๋”ฉ

HOL ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ž์›์„ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•
๋„๋ฉ”์ธ๋ณ„๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋™์‹œ์— ๋ฐ›์„์ˆ˜ ์žˆ๋‹ค.

๋„๋ฉ”์ธ์ƒค๋”ฉ

ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ๋ณ„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ›์„์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์˜ ์ œํ•œ ์ด๋‚˜ DNS Lookup ๊ณผ์ •๊ณผ TCP Handshake ๊ณผ์ •์—์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„ ๋•Œ๋ฌธ์— ์˜คํžˆ๋ ค ๋ถ€์ž‘์šฉ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋‹น ๋„๋ฉ”์ธ๋ณ„ ๋ฆฌ์†Œ์Šค ๋‹ค์šด ์ œํ•œ์€ ๋ณดํ†ต 6 ~ 8 ๊ฐœ์ •๋„ ์ด๋ฉฐ iframe ์€ ์ œ์™ธ์ด๋‹ค.

๊ทธ ์™ธ ๋ฐฉ๋ฒ•๋“ค

HTTP 1.1 ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ๋„ ์„ฑ๋Šฅ๊ฐœ์„ ์„ ์‹œ๋„ํ•˜์˜€๋‹ค.

  1. HTTP ์š”์ฒญ ์ตœ์†Œํ™”
    1. ํฐ ์ด๋ฏธ์ง€๋ฅผ ํ‹์œผ๋กœ ์š”์ฒญํ›„ CSS ๋กœ ์ž˜๊ฒŒ ์ž˜๋ผ์„œ ์‚ฌ์šฉ
    2. BASE64 ์ธ์ฝ”๋”ฉ๋œ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•ด์„œ ์‚ฌ์šฉ
  2. ์†Œ์Šค ์••์ถ•
    1. HTML ์˜ gzip ์••์ถ• ์ „์†ก
    2. JS, CSS ์˜ ์†Œ์Šค ์••์ถ•

HTTP 2.0 ์˜ ๋‹ค๋ฅธ์ 

๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ ์ „์†ก

๊ธฐ์กด์˜ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท์˜ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด
ํŒŒ์‹ฑ์ด ๋” ๋น ๋ฅด๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์œผ๋ฉฐ ํ•˜๋‚˜์˜ ํ”Œ๋ ˆ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ๊ด€๋ฆฌ ๋ฐ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP 2.0 ์€ Frame ๊ณผ Stream ์ด๋ผ๋Š” ๊ฐœ๋…์ด ์ ์šฉ ๋˜์—ˆ๋‹ค.

HTTP 1.x ์‹œ์ ˆ์—๋Š” ์š”์ฒญ (Request) ๊ณผ ์‘๋‹ต (Response) ์œผ๋กœ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„๋˜์—ˆ๋‹ค.

  • Frame
    • HTTP2 ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ
    • ํ—ค๋” ํ”„๋ ˆ์ž„, ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์œผ๋กœ ๊ตฌ์„ฑ
  • Stream
    • Server ์™€ Client ์‚ฌ์ด์˜ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ํ•œ๊ฐœ ์ด์ƒ์˜ ๋ฉ”์„ธ์ง€ ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ŠคํŠธ๋ฆผ = ๋ฉ”์„ธ์ง€ + ๋ฉ”์„ธ์ง€ + ๋ฉ”์„ธ์ง€ + ๋ฉ”์„ธ์ง€ + ๋ฉ”์„ธ์ง€ + ๋ฉ”์„ธ์ง€ + ...
๋ฉ”์„ธ์ง€ = ํ”„๋ ˆ์ž„ + ํ”„๋ ˆ์ž„ + ํ”„๋ ˆ์ž„ + ํ”„๋ ˆ์ž„ + ํ”„๋ ˆ์ž„ + ํ”„๋ ˆ์ž„ + ...

์šฐ์„ ์ˆœ์œ„ ์„ค์ •

์ƒ๋Œ€์ ์œผ๋กœ ์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋จผ์ € ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ฒŒ ๋” ์ „์†ก ์ŠคํŠธ๋ฆผ์˜ ์šฐ์„ ์ˆœ์œ„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Server Push

์š”์ฒญํ•œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์„œ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์•„์„œ ๋‚ด๋ ค์ค€๋‹ค.

๋„๋ฉ”์ธ์ƒค๋”ฉ

ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ ๋‚˜ ํ•„์š”์—†๋Š” ๋ฆฌ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋Š” ์ž์›์˜ ๋‚ญ๋น„๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ—ค๋”์˜ ์••์ถ•

HTTP2 ์˜ Header ๋Š” Header Table ๋กœ ๊ด€๋ฆฌ ๋˜์–ด ์ด์ „ ์š”์ฒญ์—์„œ ์ค‘๋ณต์œผ๋กœ ์„ ์–ธ๋œ ํ—ค๋”๋Š” ์ธ๋ฑ์Šค ๊ฐ’๋งŒ ์ „์†กํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์†Œํ™” ํ•œ๋‹ค.

์ ์šฉ ๋ฐฉ๋ฒ•

  1. TSL / SSH ์ธ์ฆ์„œ ํ•„์š”
  2. ์›น์„œ๋ฒ„์˜ ์„ธํŒ…

๊ณ ๋ ค์‚ฌํ•ญ

์ผ๋ถ€ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด์„œ๋Š” ํšจ์œจ์ด ๋–จ์–ด์ ธ ์ ์šฉ ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

HTTP 2.0 ํšจ์œจ์ด ๋‚ฎ์€ ๊ฒฝ์šฐ

HTTP 1.1 ๋ณด๋‹ค ์„ฑ๋Šฅ์ ์œผ๋กœ๋Š” ์šฐ์ˆ˜ํ•˜์ง€๋งŒ ์ ์šฉํ•˜์˜€์„๋•Œ์˜ ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์ผ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์  ์ด์ ์ด ์ฐจ์ด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

  • HTTP ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
    • SSL ํ•ธ๋“œ์…ฐ์ดํฌ ์‹œ๊ฐ„์ด ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•˜์—ฌ ์ถ”๊ฐ€ ์‹œ๊ฐ„ ์†Œ์š”
  • ๋„๋ฉ”์ธ์ด ๋งŽ์€ ๊ฒฝ์šฐ
    • ๋„๋ฉ”์ธ๋ณ„๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋„๋ฉ”์ธ๋ณ„๋กœ ์ปค๋„ฅ์…˜์ด ํ•„์š”๋กœ ํ•˜๋‹ค ์ด์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„์  ํšจ์œจ์ด ๋–จ์–ด์ง„๋‹ค.
  • HTTP ๊ฐ€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์—†๋Š” ๊ฒฝ์šฐ
  • RTT (Round-Trip Dealy Time : ๋ฉ”์„ธ์ง€๋ฅผ ์›๊ฒฉ์— ๋ณด๋‚ด๊ณ  ๊ทธ๊ฒƒ์ด ๋Œ์•„์˜ค๋Š” ์‘๋‹ต์‹œ๊ฐ„ - ๋ ˆ์ดํ„ด์‹œ) ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ
    • ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ํฐ ๊ฒฝ์šฐ์—๋งŒ ๋” ํฐ ํšจ์œจ์„ ์–ป์„์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— RTT ๊ฐ€ ๋งค์šฐ ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” ์ด์ ์ด ์—†๋‹ค.
  • ํŽ˜์ด์ง€ ๋‚ด์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ ์€ ๊ฒฝ์šฐ
    • 6๊ฐœ ์ดํ•˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง„๋‹ค๋ฉด ์ปค๋„ฅ์…˜ ์žฌ์‚ฌ์šฉ์˜ ๊ฐ€์น˜๊ฐ€ ๋–จ์–ด์ง„๋‹ค.

์ผ๋ถ€ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด์„œ ์ง€์› ๊ฐ€๋Šฅ์„ฑ์ด ์ƒ์ดํ•˜์—ฌ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

์ง€์› ๊ฐ€๋Šฅ ๋ธŒ๋ผ์šฐ์ €