avatar
Published on

HTTP1 vs HTTP2

Author
  • avatar
    Name
    yceffort

HTTP/1.1 vs HTTP/2

HTTP(Hypertext Transfer Protocol)๋Š” 1989๋…„์— ๋งŒ๋“ค์–ด์ง„ ์›”๋“œ ์™€์ด๋“œ ์›น์˜ ํ†ต์‹  ํ‘œ์ค€์ด๋‹ค. 1997๋…„ HTTP/1.1์ด ๋ฆด๋ฆฌ์ฆˆ๋œ ์ด๋ž˜๋กœ ํ”„๋กœํ† ์ฝœ์ด ๊ฑฐ์˜ ์ˆ˜์ •๋œ ์ ์ด ์—†์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 2015๋…„์—๋Š” HTTP/2 ๋ฒ„์ „์ด ๋‚˜์˜ค๋ฉด์„œ ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด ๋ฒ„์ „์—์„œ๋Š” ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ, ์„œ๋ฒ„ ์ง‘์•ฝ์ ์ธ ๊ทธ๋ž˜ํ”ฝ๊ณผ ๋น„๋””์˜ค๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์˜€๋‹ค. HTTP/2๋Š” ๊ทธ ์ดํ›„๋กœ ์ ์ ๋” ๋งŽ์€ ์ธ๊ธฐ๋ฅผ ์–ป์–ด์„œ ํ˜„์žฌ๋Š” ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์˜ 1/3 ์ •๋„๊ฐ€ HTTP/2๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š”, HTTP/1.1๊ณผ HTTP2์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด๊ณ , HTTP/2๊ฐ€ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์›น ํ”„๋กœํ† ์ฝœ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ฑ„ํƒํ•œ ๊ธฐ์ˆ ์  ๋ณ€ํ™”๋ฅผ ์‚ดํŽด๋ณด์ž.

๋ฐฐ๊ฒฝ

HTTP/2๊ฐ€ HTTP/1.1์—์„œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๋ ค๋ฉด, ๊ฐ ๋ฒ„์ „ ๋ณ„๋กœ ๊ณผ๊ฑฐ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœ๋˜์—ˆ๋Š”์ง€๋ฅผ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

HTTP/1.1

1989๋…„ Timothy Berners-Lee๊ฐ€ ์›”๋“œ ์™€์ด๋“œ ์›น์˜ ํ†ต์‹  ํ‘œ์ค€์œผ๋กœ ๊ฐœ๋ฐœํ•œ HTTP๋Š” ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์™€ ๋กœ์ปฌ ๋˜๋Š” ์›๊ฒฉ ์›น ์„œ๋ฒ„๊ฐ„์— ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์ตœ์ƒ์œ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” GET POST์™€ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์„œ๋ฒ„๋Š” HTML ํŽ˜์ด์ง€๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, www.example.com ๋„๋ฉ”์ธ ์›น์‚ฌ์ดํŠธ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ด URL๋กœ ์ด๋™ํ•˜๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ํ˜•์‹์œผ๋กœ HTTP ์š”์ฒญ์„ ๋‚ ๋ฆฐ๋‹ค.

GET /index.html HTTP/1.1
Host: www.example.com

์ด ์š”์ฒญ์€ GET ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ, Host:๋’ค์— ๋‚˜์—ด๋œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค. ์ด ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ, example.com ์„œ๋ฒ„๋Š” ์ด๋ฏธ์ง€, ์Šคํƒ€์ผ์‹œํŠธ, ๊ธฐํƒ€ HTML ์˜ ๋ฆฌ์†Œ์Šค ๋“ฑ๊ณผ ํ•จ๊ป˜ HTML ํŽ˜์ด์ง€๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ํ•œ๊ฐ€์ง€ ์•Œ์•„๋‘ฌ์•ผ ํ•  ๊ฒƒ์€, ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ์‹œ์— ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™”๋ฉด์˜ HTML ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์™”๋‹ค๊ฐ”๋‹ค ํ•œ๋‹ค.

์ด๋Ÿฐ ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๊ตํ™˜์€ transfer layer(์ผ๋ฐ˜์ ์œผ๋กœ TCP)์™€ network layer (IP) ์˜ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•œ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์Šคํƒ์˜ ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

https://assets.digitalocean.com/articles/cart_63893/Protocol_Stack.png

HTTP/2

HTTP/2๋Š” ์••์ถ•, ๋ฉ€๋ฆฌํ”Œ๋ ‰์‹ฑ, ์šฐ์„ ์ˆœ์œ„ ์ง€์ • ๋“ฑ์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ, ์›น ํŽ˜์ด์ง€ ๋กœ๋“œ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ SPDY ํ”„๋กœํ† ์ฝœ๋กœ ์‹œ์ž‘๋œ ๊ธฐ์ˆ ์ด๋‹ค. ๊ทธ ์ดํ›„๋กœ 2015๋…„ 5์›” HTTP/2๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ๋‹ค. ์ฒ˜์Œ ๋ถ€ํ„ฐ ๋งŽ์€ ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ํ‘œ์ค€ํ™” ์ž‘์—…์„ ์ง€์›ํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€์› ๋•๋ถ„์—, ๋งŽ์€ ์ธํ„ฐ๋„ท ์‚ฌ์ดํŠธ๋“ค์ด 2015๋…„ ์ดํ›„๋กœ ์ด ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ, HTTP/2์™€ HTTP/1.1์„ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์Šคํƒ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์˜ ์ผ๋ถ€๋กœ ๊ฐ„์ฃผ๋˜๋Š” binary framing layer๋‹ค. ๋ชจ๋“  ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” HTTP/1.1๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, HTTP/2๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ์ด์ง„ ํ˜•์‹์œผ๋กœ ์บก์Šํ™” ํ•˜๋Š” ๋™์‹œ์— verb, ๋ฉ”์„œ๋“œ, ํ—ค๋” ๋“ฑ์˜ HTTP ๋ฌธ๋ฒ•์„ ์œ ์ง€ํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ layer api๋Š” ์—ฌ์ „ํžˆ ์ „ํ†ต์ ์ธ HTTP ํ˜•์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋“ค์ง€๋งŒ, ๊ทธ ํ•˜๋‹จ์˜ ๋ ˆ์ด์–ด๋Š” ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด HTTP/2 ์ด์ „์— ์ž‘์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒˆ ํ”„๋กœํ† ์ฝœ๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•  ๋•Œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ์ด๋ ‡๊ฒŒ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด, HTTP/2๊ฐ€ HTTP/1.1์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Delivery Model

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ HTTP/1.1๊ณผ HTTP/2๋Š” ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ๊ณต์œ ํ•œ๋‹ค. ๋‘ ํ”„๋กœํ† ์ฝœ ๋ชจ๋‘ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•˜๋Š” ์š”์ฒญ์€ GET POST ๊ฐ™์€ ์ต์ˆ™ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ, ์„ธ๋”์™€ ๋ณธ๋ฌธ์ด ์žˆ๋Š” ์ „ํ†ต์ ์ธ ํ˜•์‹์˜ ๋ฉ”์‹œ์ง€๋กœ ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๋„๋ก ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ HTTP/1.1์€ ์ด๊ฒƒ์„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฉด, HTTP/2๋Š” ์ด๋ฅผ ์ด์ง„์ˆ˜๋กœ ์ฝ”๋”ฉํ•œ๋‹ค.

HTTP/1.1 - Pipelining and Head-of-Line Blocking

ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP GET ์š”์ฒญ์—์„œ ๋ฐ›๋Š” ์ตœ์ดˆ์˜ ์‘๋‹ต์€ ๊ฐ€๋”์”ฉ ์™„์ „ํžˆ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค. ์ด ํŽ˜์ด์ง€์— ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์˜ ๋งํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•œ ์ดํ›„์—์•ผ ๋น„๋กœ์†Œ ํŽ˜์ด์ง€์˜ ์ „์ฒด ๋ Œ๋”๋ง์— ์ถ”๊ฐ€๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€๋กœ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค. HTTP/1.0์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ๋ชจ๋“  ์ƒˆ๋กœ์šด ์š”์ฒญ์„ ์œ„ํ•ด TCP ์—ฐ๊ฒฐ์„ ๋Š๊ณ  ์ƒˆ๋กœ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ด์„œ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ธก๋ฉด์—์„œ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค์—ˆ๋‹ค.

HTTP/1.1์€ ์˜๊ตฌ์  ์—ฐ๊ฒฐ(persistent connection)๊ณผ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋„์ž…ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ์˜๊ตฌ์ ์ธ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋ฉด TCP ์—ฐ๊ฒฐ์„ ๋‹ซ์œผ๋ผ๊ณ  ์ง์ ‘ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ๊ณ„์†ํ•ด์„œ ์—ฐ๊ฒฐ์„ ์—ด์–ด๋‘”๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ๋™์ผํ•œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์š”์ฒญ์˜ ๊ฐ๊ฐ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.๋”ฐ๋ผ์„œ 1.1์—์„œ ํฌ๊ฒŒ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ์ด ์ตœ์ ํ™” ์ „๋žต์—๋Š” ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๋ณ‘๋ชฉํ˜„์ƒ์ด ์กด์žฌํ•œ๋‹ค. ๋™์ผํ•œ ๋Œ€์ƒ์œผ๋กœ ์ด๋™ํ•  ๋•Œ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์ด ๋™์‹œ์— ํ†ต๊ณผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๊ธฐ์—ด ์•ž์— ์žˆ๋Š” ์š”์ฒญ์ด ์ดํ›„์˜ ๋ชจ๋“  ์š”์ฒญ์ด ์ฐจ๋‹จ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ์ด๋Š” HOL (Head of line) ๋ธ”๋กœํ‚น์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, HTTP/1.1์—์„œ ์—ฐ๊ฒฐ ํšจ์œจ์„ฑ์„ ์ตœ์ ํ™” ํ•˜๋Š”๋ฐ ์žˆ์–ด ์ค‘์š”ํ•œ ๋ฌธ์žฌ๋‹ค. ๋ณ„๋„์˜ ๋ณ‘๋ ฌ TCP ์—ฐ๊ฒฐ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์— ๋™์‹œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” TCP์ˆซ์ž๋Š” ์ œํ•œ์ด ์žˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์€ ์ƒ๋‹นํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค.

HTTP/2 - ์ด์ง„ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์–ด์˜ ์žฅ์ 

HTTP/2์˜ ์ด์ง„ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์–ด๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ธ์ฝ”๋”ฉ ํ•˜๊ณ  ์ด๋ฅผ ๋” ์ž‘์€ ํŒจํ‚ท์œผ๋กœ ์ž˜๋ผ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์œ ์—ฐ์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚จ๋‹ค.

HOL ๋ธ”๋กœํ‚น์˜ ์˜ํ–ฅ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š” HTTP/1.1๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, HTTP/2๋Š” ๋‘ ์ปดํ“จํ„ฐ ์‚ฌ์ด์— ๋‹จ์ผ ์—ฐ๊ฒฐ ๊ฐœ์ฒด๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์ด ์—ฐ๊ฒฐ์—๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์ด ์žˆ๋‹ค. ๊ฐ ์ŠคํŠธ๋ฆผ์€ ์š”์ฒญ/์‘๋‹ต ํ˜•์‹์˜ ์—ฌ๋Ÿฌ๋ฉ”์‹œ์ง€๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ฐ ๋ฉ”์‹œ์ง€๋Š” ํ”„๋ ˆ์ž„์ด๋ผ๋Š” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ•  ๋œ๋‹ค.

https://assets.digitalocean.com/articles/cart_63893/Streams_Frames.png

๊ฐ€์žฅ ์„ธ๋ถ„ํ™”๋œ ๋ ˆ๋ฒจ์—์„œ, ํ†ต์‹  ์ฑ„๋„์€ ๊ฐ๊ฐ ํŠน์ • ์ŠคํŠธ๋ฆผ์— ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ์ด์ง„ ์ธ์ฝ”๋”ฉ ํ”„๋ ˆ์ž„ ๋‹ค๋ฐœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ „์†ก์˜ ๋ฐ˜๋Œ€์ชฝ ๋์—์„œ ๋‹ค์‹œ ์žฌ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐ๋ฆฌ๋น™๋œ ์š”์ฒญ๊ณผ ์‘๋‹ต์€, ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์ด๋ผ๋Š” ํ”„๋กœ์„ธ์Šค ๋’ค์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์€ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜์—ฌ, HTTP์˜ HOL ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ์ด๋Š” ์„œ๋ฒ„ ์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ, ์ œ์–ด ๋Šฅ๋ ฅ์„ ๋†’์ด๊ณ  ์—ฐ๊ฒฐ์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ†ต์‹ ์—์„œ ๋‹ค์ค‘ํ™”(Multiplexing ํ˜น์€ MUXing)๋ผ๋Š” ์šฉ์–ด๋Š” ๋‘๊ฐœ ์ด์ƒ์˜ ์ €์ˆ˜์ค€์˜ ์ฑ„๋„๋“ค์„ ํ•˜๋‚˜์˜ ๊ณ ์ˆ˜์ค€์˜ ์ฑ„๋„๋กœ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•˜๋ฉฐ, ์—ญ๋‹ค์ค‘ํ™”(inverse multipleing, demultiplexing, demuxing) ๊ณผ์ •์„ ํ†ตํ•ด ์›๋ž˜์˜ ์ฑ„๋„ ์ •๋ณด๋“ค์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ฑ„๋„๋“ค์€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ถ€ํ˜ธํ™” ํ‹€(coding scheme)์„ ํ†ตํ•ด ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

https://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91%ED%99%94_(%ED%86%B5%EC%8B%A0)

๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋“ค ์ŠคํŠธ๋ฆผ์€ ๋‹จ์ผ TCP ์—ฐ๊ฒฐ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ถœ์ฒ˜๋‹น ํ•˜๋‚˜์˜ ์˜๊ตฌ์ ์ธ ์ ‘์†์€ ๋„คํŠธ์›Œํฌ ์ „์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ฒ˜๋ฆฌ ๊ณต๊ฐ„์„ ์ค„์ž„์œผ๋กœ์จ HTTP/1.1์—์„œ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ฐ ๋Œ€์—ญํญ ํ™œ์šฉ๋„๊ฐ€ ํ–ฅ์ƒ๋˜์–ด ์ „์ฒด ์šด์˜ ๋น„์šฉ์ด ์ ˆ๊ฐ๋œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ณด์•ˆ ์„ธ์…˜์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋‹จ์ผ TCP์—ฐ๊ฒฐ์„ ๋ฐ”ํƒ•์œผ๋กœ HTTPS ํ”„๋กœํ† ์ฝœ์˜ ์„ฑ๋Šฅ๋„ ํ–ฅ์ƒ๋œ๋‹ค. HTTPS์—์„œ๋Š” TLS ๋˜๋Š” SSL ํ•ธ๋“œ์…ฐ์ดํฌ ์ค‘์—๋Š” ์–‘ ์ธก์ด ๋ชจ๋‘ ์„ธ์…˜๋‚ด๋‚ด ๋‹จ์ผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋™์˜ ํ•œ๋‹ค. ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์‹œ์ž‘๋˜๋ฏ€๋กœ, ์ถ”๊ฐ€ ํ†ต์‹ ์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ผ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ฉด, HTTPS ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. HTTP/2 ๊ทœ๊ฒฉ์—์„œ TLS ๊ณ„์ธต์„ ์‚ฌ์šฉํ•˜๋„๋ก ์˜๋ฌดํ™” ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ €๋Š” HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” HTTPS/2 ๋งŒ ์ง€์›ํ•œ๋‹ค.

์ด์ง„ ํ”„๋ ์ž„ ๋ ˆ์ด์–ด์— ๋‚ด์žฌ๋œ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์ด HTTP/1.1์˜ ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ, ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋‹ค์ค‘ ์ŠคํŠธ๋ฆผ์€ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

HTTP/2 - ์ŠคํŠธ๋ฆฌ๋ฐ ์šฐ์„ ์ˆœ์œ„

Stream prioritization ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‘๊ณ  ๊ฒฝ์Ÿ์ด ์ผ์–ด๋‚˜๋Š” ์š”์ฒญ ์‚ฌ์ด์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ๋” ์ž˜ ์ตœ์ ํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์˜ ์ƒ๋Œ€์  ๊ฐ€์ค‘์น˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

์•„์‹œ๋‹ค์‹œํ”ผ, ์ด์ง„ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์–ด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋™์‹œ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ, ๊ฐ ์ŠคํŠธ๋ฆผ์— 1 ๋ถ€ํ„ฐ 256 ์‚ฌ์ด์˜ ๊ฐ€์ค‘์น˜๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์š”์ถฉ ์ค‘์ธ ์‘๋‹ต์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ˆซ์ž๊ฐ€ ํด ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„ ์•ž์ชฝ์— ์žˆ๋‹ค. ์ด์™ธ์—๋„ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ ์ŠคํŠธ๋ฆผ์˜ ์ข…์†์„ฑ์„ ID๋กœ ์ง€์ •ํ•˜์—ฌ ๋ช…์‹œํ•œ๋‹ค. ์ƒ์œ„ ID๊ฐ€ ์—†๋‹ค๋ฉด ๋ฃจํŠธ ์ŠคํŠธ๋ฆผ์— ์ข…์†๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ณด์ž.

https://assets.digitalocean.com/articles/cart_63893/Stream_Priority2.png

์œ„ ๊ทธ๋ฆผ์—์„œ, ์ฑ„๋„์€ ๊ฐ ๊ณ ์œ ํ•œ ID์™€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ 6๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ŠคํŠธ๋ฆผ1์—๋Š” ๋ถ€๋ชจ ID๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ๋ฃจํŠธ์— ์ข…์†๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค. ๋‹ค๋ฅธ ๊ทธ๋ฐ–์— ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์—” ๋ถ€๋ชจ ID๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค. ๊ฐ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค ํ• ๋‹น์€, ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์˜ ๊ฐ€์ค‘์น˜์™€ ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ๋ฆผ์—์„œ ๋™์ผํ•œ ๊ฐ€์ค‘์น˜์™€ ๋™์ผํ•œ ๋ถ€๋ชจ ์ŠคํŠธ๋ฆผ์— ํ• ๋‹น๋œ 5, 6์€ ๋ฆฌ์†Œ์Šค ํ• ๋‹น์— ๋™์ผํ•œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.

https://assets.digitalocean.com/articles/cart_63893/Dependency_Tree.png

์ด ์ข…์†์„ฑ ํŠธ๋ฆฌ์—์„œ, ์ŠคํŠธ๋ฆผ1์˜ ๊ฒฝ์šฐ ๋ฃจํŠธ์— ์˜์กดํ•˜๊ณ , ๋ฃจํŠธ์—์„œ ํŒŒ์ƒ๋œ ๋˜๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์ด ์—†์œผ๋ฏ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ณด๋‹ค 1์— ๋จผ์ € ํ• ๋‹น๋œ๋‹ค. ์ŠคํŠธ๋ฆผ 2์˜ ๊ฒฝ์šฐ, ์ŠคํŠธ๋ฆผ1์ด ์™„๋ฃŒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ ์ง€๋ฏ€๋กœ 1์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ 2๊ฐ€ ๊ฐ€์ง€ ์•Š๋Š”๋‹ค. 3, 4๋Š” ์–ด๋–จ๊นŒ? ์ด๋Š” ๋ชจ๋‘ ์ŠคํŠธ๋ฆผ2์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. 2๋ฒˆ ์ŠคํŠธ๋ฆผ์€ 3, 4๋ณด๋‹ค ๋จผ์ € ๊ฐ€์šฉ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•œ๋‹ค. 2์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด, 3, 4๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์–ป๋Š”๋ฐ ๊ฐ€์ค‘์น˜์— ๋”ฐ๋ผ์„œ 2:4๋กœ ๋ถ„ํ• ๋˜๋ฏ€๋กœ, ์ŠคํŠธ๋ฆผ 4์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค ์ฒญํฌ๊ฐ€ ๋” ์ปค์ง„๋‹ค. 3์ด ์™„๋ฃŒ ๋˜๋ฉด, 5 ์™€ 6์˜ ์ฐจ๋ก€์ธ๋ฐ, ์ด ๋‘๊ฐœ๋Š” ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค. ์ŠคํŠธ๋ฆผ 4๊ฐ€ ๋” ๋†’์€ ๋ฆฌ์†Œ์Šค ์ฒญํฌ๋ฅผ ์ˆ˜์‹ ํ•˜๋”๋ผ๋„, 4์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— 5, 6์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํ•˜์œ„ ๋ ˆ๋ฒจ ์ŠคํŠธ๋ฆผ์€ ์ƒ์œ„ ๋ ˆ๋ฒจ ์ŠคํŠธ๋ฆผ์ด ๋๋‚˜๋Š” ์ˆœ๊ฐ„์— ์ฆ‰์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋Š”, ํ•„์š”์— ๋”ฐ๋ผ์„œ ์š”์ฒญ ๊ฐ€์ค‘์น˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ํŽ˜์ด์ง€์— ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง€๋ฅผ ๋จผ์ € ์ œ๊ณตํ•œ ๋’ค์—, ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋”ฉํ•˜๋Š”๋ฐ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP/2๋Š” ์ด๋Ÿฌํ•œ ๊ฐ€์ค‘์น˜ ํ• ๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์„ ๋” ์ž˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๋˜ํ•œ ํ”„๋กœํ† ์ฝœ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ์ž ์ธ๋Ÿฌํƒ์…˜์— ๋Œ€ํฅํ•˜์—ฌ, ๋Ÿฐํƒ€์ž„ ์‹œ์— ์ข…์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ฐ€์ค‘์น˜๋ฅผ ์žฌ ํ•ผ๋‹น ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŠน์ • ์ŠคํŠธ๋ฆผ์˜ ํŠน์ • ๋ฆฌ์†Œ์Šค ์•ก์„ธ์Šค๊ฐ€ ์ฐจ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š”, ์„œ๋ฒ„ ์ž์ฒด์—์„œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ

๋‘ ์‹œ์Šคํ…œ ๊ฐ„ TCP ์—ฐ๊ฒฐ์—์„œ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ ์•„์ง ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์ˆ˜์‹ ์š”์ฒญ์„ ๋ณด๊ด€ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ • ํฌ๊ธฐ์˜ ๋ฒ„ํผ ๊ณต๊ฐ„์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒ„ํผ๋Š” ๋‹ค์šด/์—…์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ์˜ ๊ณ ๋ฅด์ง€ ๋ชปํ•œ ์†๋„๋‚˜, ํฐ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฒ„ํผ๊ฐ€ ํฌ์ง€ ์•Š์€ ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ฒ„๊ฐ€ ์ œํ•œ๋œ ๋ฒ„ํผ ํฌ๊ธฐ๋‚˜ ๋‚ฎ์€ ๋Œ€์—ญํญ์œผ๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์†๋„๋กœ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‰ฌํ•˜๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค๋ฅผ ์—…๋กœ๋“œ ํ•  ๋•Œ ์„œ๋ฒ„ ๋ฒ„ํผ๊ฐ€ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ ๋˜์–ด ํŒจํ‚ท ์†์‹ค์ด ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ๋‹ค.

์ผ์–ดํ•œ ๋ฒ„ํผ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด, ํ๋ฆ„์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€, ์†ก์‹ ์ž๊ฐ€ ์ˆ˜์‹ ์ž๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์••๋„ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

HTTP/1.1

HTTP/1.1์—์„œ ํ๋ฆ„์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€, TCP ์—ฐ๊ฒฐ์— ์˜์กดํ•œ๋‹ค. ์—ฐ๊ฒฐ์ด ์‹œ์ž‘๋˜๋ฉด, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ ์‹œ์Šคํ…œ ๊ธฐ๋ณธ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์„ธํŒ…ํ•ด๋‘”๋‹ค. ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผํฌ๊ธฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ์ง€๋ฉด, ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ์‚ฌ์šฉ๊ณต๊ฐ„์„ ์•Œ๋ ค์ค€๋‹ค. ์ด๋Ÿฌํ•œ ์ˆ˜์‹  ์œˆ๋„์šฐ๋Š” ACK ํŒจํ‚ท์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ์‹œ๊ทธ๋„๋กœ ์ „์†ก๋œ๋‹ค. ์ด ํฌ๊ธฐ๊ฐ€ 0์ด ๋˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด๋ถ€ ๋ฒ„ํผ๋ฅผ ์ง€์šด๋‹ค์Œ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญ ํ•  ๋•Œ๊นŒ์ง€ ๋ฐœ์‹ ์ž๋Š” ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผํ•  ์ ์€, TCP ์—ฐ๊ฒฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ˆ˜์‹ ์„ ์‚ฌ์šฉํ•˜๋ฉด, ์—ฐ๊ฒฐ์˜ ์–ด๋Š ํ•œ์ชฝ ๋์—๋งŒ ํ๋ฆ„์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

HTTP/1.1์€ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด transport layer์— ์˜์กดํ•˜๋ฏ€๋กœ, ๊ฐ๊ฐ์˜ ์ƒˆ๋กœ์šด TCP ์—ฐ๊ฒฐ์€ ๋ณ„๋„์˜ ํ๋ฆ„ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

HTTP/2

HTTP/2์—์„œ๋Š”, ๋‹จ์ผ TCP ์—ฐ๊ฒฐ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑํ•œ๋‹ค. ๋”ฐ๋ผ์„œ TCP ์—ฐ๊ฒฐ ๋ ˆ๋ฒจ์˜ ์ˆ˜์‹ ์œผ๋กœ๋Š” ๊ฐœ๋ณ„ ์ŠคํŠธ๋ฆผ์˜ ์ „์†ก์„ ๊ทœ์ œํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค. ๊ทธ๋ž˜์„œ HTTP/2๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ transport layer์— ์˜์กดํ•˜๋Š” ๋Œ€์‹ , ์ž์ฒด์ ์ธ ํ๋ฆ„์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ์ด๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. application layer์€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฒ„ํผ ๊ณต๊ฐ„์„ ํ†ต์‹ ํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์‚ฌ์ด์—์„œ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์Šค ์ŠคํŠธ๋ฆผ ์ˆ˜์ค€์—์„œ ์ˆ˜์‹  ์ฐฝ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. WINDOW_UPDATE ํ”„๋ ˆ์ž„์„ ํ†ตํ•ด์„œ, ์ดˆ๊ธฐ ์—ฐ๊ฒฐํ›„ ํ๋ฆ„ ์ œ์–ด ์ปจํŠธ๋กค์„ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€, application layer ๋ ˆ๋ฒจ์—์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ๋ฆ„ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ˆ˜์‹  ์ฐฝ์„ ์กฐ์ •ํ•˜๊ธฐ ์ „์— ์‹ ํ˜ธ๊ฐ€ ์ตœ์ข… ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ค‘๊ฐ„ ๋…ธ๋“œ๋Š” ํ๋ฆ„์ œ์–ด ์„ค์ • ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž์ฒด ๋ฆฌ์†Œ์Šค ํ• ๋‹น์„ ๊ฒฐ์ •ํ•˜๊ณ , ๊ทธ์— ๋”ฐ๋ผ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ ์ค‘๊ฐ„ ์„œ๋ฒ„๋Š” ๊ณ ์œ ํ•œ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ์ „๋žต์„ ๊ตฌํ˜„ํ•˜์—ฌ ์—ฐ๊ฒฐ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ๋ฆ„ ์ œ์–ด ์œ ์—ฐ์„ฑ์€, ์ ์ ˆํ•œ ๋ฆฌ์†Œ์Šค ์ „๋žต์„ ์ƒ์„ฑํ•  ๋•Œ ์œ ๋ฆฌํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋ฅผ ๋จผ์ € ํ‘œ์‹œํ•˜๊ณ , ๋” ์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์•ˆ ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ์ง€์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๊ฐ€์ ธ ์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ํ๋ฆ„ ์ œ์–ด ๊ตฌํ˜„์„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๋ฏธ๋ฃจ๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์š”์ฒญ ์˜ˆ์ธก

์ผ๋ฐ˜์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š”, ํด๋ผ์ด์–ธํŠธ๋Š” GET ์š”์ฒญ์„ ๋ณด๋‚ด์„œ HTML ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์‹ ํ•œ๋‹ค. (index.html) ์ด index.html์˜ ๋‚ด์šฉ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋™์•ˆ, ํด๋ผ์ด์–ธํŠธ๋Š” CSS ๋ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์—ฌ์ขŒ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋Ÿฌํ•œ ์ดˆ๊ธฐ GET ์š”์ฒญ์œผ๋กœ ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์€ ํ›„์—๋งŒ, ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ํŽ˜์ด์ง€๋ฅผ ์™„์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์š”์ฒญ์„ ํ•ด์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ถ”๊ฐ€์ ์ธ ์š”์ฒญ์€ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์—ฐ๊ฒฐ ๋กœ๋“œ ์‹œ๊ฐ„์„ ์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ํŒŒ์ผ์„ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๊ฐ€ ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ๋ฐ›๊ธฐ์ „์— ๋ฆฌ์†Œ์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•˜์—ฌ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP/1.1 - ๋ฆฌ์†Œ์Šค ์ธ๋ผ์ด๋‹

์ด ๊ธฐ์ˆ ์€, ์„œ๋ฒ„๊ฐ€ ์ดˆ๊ธฐ GET์— ์‘๋‹ตํ•˜์—ฌ ๋ณด๋‚ด๋Š” HTML ๋ฌธ์„œ์— ์ง์ ‘ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จํ•ด์„œ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด CSS ํŒŒ์ผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ํ•ด๋‹น ์š”์ฒญ์ด ์˜ค๊ธฐ์ „์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด์•ผํ•˜๋Š” ์š”์ฒญ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค ์ธ๋ผ์ด๋‹์—๋Š” ๋ช‡๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. HTML ๋ฌธ์„œ์— ์ด๋ ‡๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จ ์‹œํ‚ค๋Š” ๊ฒƒ์€, ํ…์ŠคํŠธ ํ˜•์‹์ด ์•„๋‹Œ ํฐ ํŒŒ์ผ์ด ์žˆ์„ ๊ฒฝ์šฐ HTML ๋ฌธ์„œ์˜ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ, ๊ฒฐ๊ตญ์—๋Š” ์—ฐ๊ฒฐ ์†๋„๊ฐ€ ๊ฐ์†Œ๋˜์–ด ์ด ๊ธฐ์ˆ ๋กœ ์–ป๋Š” ์ด์ ์ด ์ƒ์‡„๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธ๋ผ์ธ ๋ฆฌ์†Œ์Šค๋Š” HTML ๋ฌธ์„œ์™€ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ฑฐ๋‚˜, ์บ์‹œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์ด ์—†๋‹ค. ์ฆ‰, ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๋ฆฌ์†Œ์Šค์™€ ๋ฌธ์„œ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

HTTP/2 - ์„œ๋ฒ„ ํ‘ธ์‰ฌ

HTTP/2๋Š”, ํด๋ผ์ด์–ธํŠธ์˜ ์ดˆ๊ธฐ GET์š”์ฒญ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋™์‹œ ์‘๋‹ต์„ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„๋Š” ์š”์ฒญํ•œ HTML ํŽ˜์ด์ง€์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ์— ๋ฆฌ๋กœ์Šค๋ฅผ ์ „์†กํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๊ธฐ ์ „์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์„œ๋ฒ„ ํ‘ธ์‰ฌ๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ HTTP/2 ์—ฐ๊ฒฐ์€ ํ‘ธ์‹œ๋œ ๋ฆฌ์†Œ์Šค์™€ ๋ฌธ์„œ๊ฐ„์˜ ๋ถ„๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ๋ฆฌ์†Œ์Šค ์ธ๋ผ์ธ์ด๋ผ๋Š” ๋ชฉํ‘œ๋ฅผ ๋™์‹œ์— ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฉ”์ธ HTML ๋ฌธ์„œ์™ธ์— ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฑฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

HTTP/2์—์„œ ์ด ํ”„๋กœ์„ธ์Šค๋Š” PUSH_PROMISE๋ผ๋Š” ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ‘ธ์‹œ๋  ๊ฒƒ์ž„์„ ์•Œ๋ฆฌ๋ฉด์„œ ์‹œ์ž‘๋œ๋‹ค. ์ด ํ”„๋ ˆ์ž„์—๋Š” ๋ฉ”์‹œ์ง€์˜ ํ—ค๋”๋งŒ ์กด์žฌํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๊ฐ€ ํ‘ธ์‹œํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ด๋ฏธ ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๋Š” RST_STREAM ํ”„๋ ˆ์ž„์„ ์‘๋‹ต์œผ๋กœ ์ „์†กํ•˜์—ฌ, ํ‘ธ์‹œ๋ฅผ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ PUSH_PROMISE ํ”„๋ ˆ์ž„์€ ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘ธ์‹œํ•  ๊ฒƒ์ธ์ง€ ์•Œ๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„์— ์ค‘๋ณต ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๋„๋ก ๋„์™€์ค€๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ ์ œ์–ด๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ํ‘ธ์‹œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜, ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ, ์–ธ์ œ๋“ ์ง€ SETTINGS ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด ์ด HTTP/2 ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด ๋งŽ์€ ์ž ์žฌ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์„œ๋ฒ„ ํ‘ธ์‹œ๊ฐ€ ๊ผญ ์ •๋‹ต์€ ์•„๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š”, ํด๋ผ์ด์–ธํŠธ์— ๋ฏธ์ง€ ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋”๋ผ๋„ ํ‘ธ์‹œ๋œ ์š”์ฒญ์„ ํ•ญ์ƒ ์ทจ์†Œํ•  ์ˆ˜๋Š” ์—†๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ค‘๋ณต๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ ๊ฒฝ์šฐ, ์„œ๋ฒ„์— ํ‘ธ์‰ฌ๋ฅผ ํ•ด๋ฒ„๋ฆฌ๋ฉด ์—ฐ๊ฒฐ์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‚ญ๋น„๋  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ํ‘ธ์‰ฌ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์žฌ๋Ÿ‰์— ๋‹ฌ๋ ค์žˆ๋‹ค.

์••์ถ•

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€, ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ HTTP ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค. HTTP/1.1๊ณผ HTTP/2์—์„œ ๋ชจ๋‘ ์ด ์ „๋žต์„ ์‚ฌ์šฉํ•˜๊ณ ๋Š” ์žˆ์ง€๋งŒ, ์ „์ž์˜ ๊ฒฝ์šฐ ์ „์ฒด ๋ฉ”์‹œ์ง€๋ฅผ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

HTTP/1.1

gzip ๋“ฑ์˜ ๊ธฐ์ˆ ์€ CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด HTTP ๋ฉ”์‹œ์ง€๋กœ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋Š”๋ฐ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด์ ธ ์™”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”์‹œ์ง€์˜ ํ—ค๋”๋Š” ํ•ญ์ƒ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ „์†ก๋œ๋‹ค. ๊ฐ ํ—ค๋”๋Š” ์ƒ๋‹นํžˆ ์ž‘์ง€๋งŒ, ๋งŽ์€ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜๋ก ์ด ์••์ถ•๋˜์ง€ ์•Š์€ ํ—ค๋”์˜ ์กด์žฌ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถ€๋‹ด์ด ๊ฐ€์ค‘๋˜๋ฉฐ, ํŠนํžˆ ๋งŽ์€ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๊ฐ„ ์š”์ฒญ์ด ํ•„์š”ํ•œ ๋ณต์žกํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ๋ถˆ์ด์ต์ด๋‹ค. ๋˜ํ•œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ํ—ค๋”๊ฐ€ ์ปค์ง€๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ๋“  ์••์ถ•์„ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP/2

HTTP/2์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋“ฑ์žฅํ•˜๋Š” ์ค‘์š”ํ•œ ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜๋Š”, ์ด์ง„ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๋ถ€ ์ •๋ณด์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ—ค๋” ์••์ถ•๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. HTTP/2์—์„œ๋Š” ๋ฐ์ดํ„ฐ์—์„œ ํ—ค๋”๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ํ—ค๋” ํ”„๋ ˆ์ž„๊ณผ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋‹ค์Œ HTTP/2 ์ „์šฉ ์••์ถ• ํ”„๋กœ๊ทธ๋ ˜ HPACK์ด ํ—ค๋”๋ฅผ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Huffman coding์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ HPACK์€ ์ด์ „์— ์ „์†ก๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„๋“œ๋ฅผ ์ถ”์ ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์— ๊ณต์œ ๋œ, ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ์ธ๋ฑ์Šค์— ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž.

request 1

method:     GET
scheme:     https
host:       example.com
path:       /academy
accept:     /image/jpeg
user-agent: Mozilla/5.0 ...

request 2

method:     GET
scheme:     https
host:       example.com
path:       /academy/images
accept:     /image/jpeg
user-agent: Mozilla/5.0

์ด ์š”์ฒญ๋“ค์—์„œ method scheme host accept user-agent ๋“ฑ ๋งŽ์€ ๊ฐ’๋“ค์ด ์žˆ์ง€๋งŒ, path์˜ ๊ฐ’๋งŒ ๋‹ค๋ฅด๋‹ค. HPACK์€ ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๊ฐ’์ธ path๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค.

request 1

method:     GET
scheme:     https
host:       example.com
path:       /academy
accept:     /image/jpeg
user-agent: Mozilla/5.0 ...

request 2

path:       /academy/images

HPACK๊ณผ ๋‹ค๋ฅธ ์••์ถ• ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ, HTTP/2๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์‚ฌ์ด์˜ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ฒฐ๋ก 

์œ„์—์„œ ์‚ดํŽด๋ณด์•˜๋“ฏ์ด, HTTP/2๋Š” ์—ฌ๋Ÿฌ ๋ฉด์—์„œ HTTP/1.1๊ณผ ๋‹ค๋ฅด๋‹ค. ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•˜๋Š”๋ฐ ์žˆ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์–ด ์ˆ˜์ค€์„ ๋†’์ด๊ณ , ์ด์ง„ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ์‹œ์ผฐ๋‹ค. ์ด์ œ ๋‘ ํ”„๋กœํ† ์ฝœ ๊ฐ„์˜ ๋ณ€ํ™”์— ๋Œ€ํ•ด ์ดํ•ดํ–ˆ์œผ๋ฏ€๋กœ, HTTP/2์˜ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ, ์ŠคํŠธ๋ฆผ ์šฐ์„ ์ˆœ์œ„ ์ง€์ •, ํ๋ฆ„์ œ์–ด, ์„œ๋ฒ„ ํ‘ธ์‹œ์™€ ์••์ถ•๊ณผ ๊ฐ™์€ ์š”์†Œ๊ฐ€ ์›น ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น ์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP/1.1๊ณผ HTTP/2 ์‚ฌ์ด์˜ ์„ฑ๋Šฅ ๋น„๊ตํ•ด๋ณด๋ ค๋ฉด, ๊ตฌ๊ธ€์˜ ๋ฐ๋ชจํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋ฉด ์ข‹๋‹ค. ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ํ…Œ์ŠคํŠธ ์‹œ, ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„์€ ํ…Œ์ŠคํŠธ์‹œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋Œ€์—ญํญ, ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋“ฑ๊ณผ ๊ฐ™์€ ๋ช‡๊ฐ€์ง€ ์š”์ธ์— ๋”ฐ๋ผ ๋‹ฌ๋ฆฌ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋ณด๋‹ค ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋Š” ์—ฌ๊ธฐ์—์„œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถœ์ฒ˜: https://www.digitalocean.com/community/tutorials/http-1-1-vs-http-2-what-s-the-difference