HTTP/2.0

HTTP/1.1์˜ ๋ฉ”์‹œ์ง€ ํฌ๋งท์€ ๊ตฌํ˜„์ด ์‰ฝ๊ณ  ๋””๋ฒ„๊น…์ด ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์—ˆ์œผ๋‚˜, ์›น ํ™˜๊ฒฝ์ด ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ƒ์˜ ํ•œ๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚ฌ๋‹ค.

  • ์ปค๋„ฅ์…˜ ํ•˜๋‚˜๋‹น ํ•˜๋‚˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ: HOL(Head of Line) Blocking ๋ฌธ์ œ ๋ฐœ์ƒ

    • ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ์ง€์—ฐ๋˜๋ฉด ๋’ค๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ์š”์ฒญ์ด ์ง€์—ฐ

    • ๋ณ‘๋ ฌ ์ปค๋„ฅ์…˜์œผ๋กœ ์ด๋ฅผ ์™„ํ™”ํ•˜๋ ค ํ–ˆ์œผ๋‚˜, TCP ์ปค๋„ฅ์…˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉฐ ์˜คํžˆ๋ ค ๋„คํŠธ์›Œํฌ ํ˜ผ์žก๊ณผ ์ง€์—ฐ ์ฆ๊ฐ€

  • ํ—ค๋”์˜ ๋น„ํšจ์œจ์„ฑ: ์ค‘๋ณต๋˜๋Š” ํ—ค๋” ํ•„๋“œ๊ฐ€ ๋งŽ์•„ ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€

์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 2015๋…„์— HTTP/2.0์ด ํ‘œ์ค€ํ™”๋˜์—ˆ๋‹ค.

ํ•ต์‹ฌ ๋ชฉํ‘œ์™€ ํŠน์ง•

๊ธฐ์กด HTTP/1.1์˜ ์˜๋ฏธ(Method, Status Code, Header ๋“ฑ)๋Š” ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์„ ํš๊ธฐ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์—ฌ ์ง€์—ฐ ์‹œ๊ฐ„(Latency)์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์—ˆ๋‹ค.

  1. ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต(Binary Framing Layer)

    • ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก

    • ํŒŒ์‹ฑ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Œ

  2. ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ(Multiplexing)

    • ๋‹จ์ผ ์ปค๋„ฅ์…˜์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋™์‹œ์— ์ฃผ๊ณ ๋ฐ›์Œ

    • HTTP/1.1์˜ HOL Blocking ๋ฌธ์ œ ํ•ด๊ฒฐ

  3. ์„œ๋ฒ„ ํ‘ธ์‹œ(Server Push)

    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค(CSS, JS ๋“ฑ)๋ฅผ ์„œ๋ฒ„๊ฐ€ ๋ฏธ๋ฆฌ ์ „์†ก ๊ฐ€๋Šฅ

  4. ํ—ค๋” ์••์ถ•(Header Compression)

    • HPACK ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ํ—ค๋”๋ฅผ ์••์ถ• ์ „์†ก

  5. 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?