CS/๋„คํŠธ์›Œํฌ

[๋„คํŠธ์›Œํฌ] HTTP/2

1eehyunji 2023. 8. 19. 21:03

HTTP/2๋Š” SPDY ํ”„๋กœํ† ์ฝœ์—์„œ ํŒŒ์ƒ๋œ HTTP/1.x๋ณด๋‹ค ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ์‘๋‹ต ์‹œ๊ฐ„์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ, ํ—ค๋” ์••์ถ•, ์„œ๋ฒ„ ํ‘ธ์‹œ, ์š”์ฒญ์˜ ์šฐ์„ ์ˆœ์œ„ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

* SPDY ํ”„๋กœํ† ์ฝœ : HTTP 1.1์˜ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ ๋น„ํ‘œ์ค€ ๊ฐœ๋ฐฉํ˜• ํ”„๋กœํ† ์ฝœ

https://ko.wikipedia.org/wiki/SPDY

 

SPDY - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. SPDY(์Šคํ”ผ๋””/speedy/๋กœ ๋ฐœ์Œ)[1]๋Š” ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์ „์†กํ•  ๋ชฉ์ ์œผ๋กœ ๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ ๋น„ํ‘œ์ค€ ๊ฐœ๋ฐฉํ˜• ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. SPDY๋Š” ์›น ํŽ˜์ด์ง€ ๋ถ€ํ•˜ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๊ณ  ์›น

ko.wikipedia.org

 

๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ

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

* ์ŠคํŠธ๋ฆผ(stream) : ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„

์ฆ‰, ํ•œ ์žฅ์น˜์—์„œ ๋‹ค๋ฅธ ์žฅ์น˜๋กœ ๋ณด๋‚ด์ง€๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด๋‹ค.

 

์œ„ ๊ทธ๋ฆผ์€ ํ•œ ์—ฐ๊ฒฐ ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ์บก์ฒ˜ํ•œ ๋ชจ์Šต์ด๋‹ค. ๋ณ‘๋ ฌ์ ์ธ ์ŠคํŠธ๋ฆผ๋“ค์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๊ณ  ์žˆ๋‹ค. 

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

๋‹จ์ผ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ณ‘๋ ฌ๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์‘๋‹ต์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด์„œ ํ•œ ์—ฐ๊ฒฐ์— ํ•˜๋‚˜์˜ ์š”์ฒญ๊ณผ ํ•˜๋‚˜์˜ ์‘๋‹ต๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์„œ HTTP/1.x์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ธ HOL Blocking์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

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

HTTP/1.x์—๋Š” ํฌ๊ธฐ๊ฐ€ ํฐ ํ—ค๋”๋•Œ๋ฌธ์— ํ†ต์‹  ์†๋„๊ฐ€ ๋А๋ ค์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

์ด๋ฅผ HTTP/2์—์„œ๋Š” ํ—ค๋” ์••์ถ•์„ ์จ์„œ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ, ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” HPACK ์••์ถ• ํ˜•์‹์„ ๊ฐ€์ง„๋‹ค. 

ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ(huffman coding)

๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ๋นˆ๋„์ˆ˜๋ฅผ ์„ผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋นˆ๋„๊ฐ€ ๋†’์€ ์ •๋ณด๋Š” ์ ์€ ๋น„ํŠธ ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•˜๊ณ , ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ์ •๋ณด๋Š” ๋น„ํŠธ ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•ด์„œ, ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„์— ํ•„์š”ํ•œ ๋น„ํŠธ ์–‘์„ ์ค„์ด๋Š” ์›๋ฆฌ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, 'AABBAC'๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. 

์ดˆ๊ธฐ ์ƒํƒœ์—์„  ๋ฌธ์ž ํ•œ ๊ฐœ์— 1 byte๋ฅผ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ, ์ด 6 byte(=48 bits)์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ž์—ด์ด๋‹ค.

๋ฌธ์ž 'A' ์˜ ๋นˆ๋„์ˆ˜๊ฐ€ 3, 'B'์˜ ๋นˆ๋„์ˆ˜๊ฐ€ 2, 'C'์˜ ๋นˆ๋„์ˆ˜๊ฐ€ 1์ด๋ฏ€๋กœ ๊ฐ€์žฅ ํฐ ๋นˆ๋„์ˆ˜๋ฅผ ๊ฐ€์ง„ 'A'๋ฅผ 1 bit์งœ๋ฆฌ 0์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  'B'์™€ 'C'๋ฅผ ๊ฐ๊ฐ 01๊ณผ 11๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 'AABBAC'๋Š” ํ•œ ์ž๋ฆฌ๋‹น 1bit๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๋น„ํŠธ๋กœ ๋ณ€ํ™˜๋˜์–ด 000101011์ด๋ผ๋Š” ์ˆ˜์—ด๋กœ ๋ณ€ํ™˜๋˜๊ณ , ์ด ์ˆ˜์—ด์€ 9 bits๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— 6byte(=48bits)์—์„œ 9 bits๋กœ ์••์ถ•๋œ๋‹ค. 

์ด์™€ ๊ฐ™์ด ๋น„ํŠธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์€ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ž์„ธํ•œ ์›๋ฆฌ๋Š” ์•„๋ž˜ ๋ธ”๋กœ๊ทธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

https://lipcoder.tistory.com/187

 

ํ—ˆํ”„๋งŒ(Huffman) ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ํ…์ŠคํŠธ ์••์ถ•

๊ฐœ์š” ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ(Huffman coding)์€ ํ…์ŠคํŠธ ์••์ถ•์„ ์œ„ํ•ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์›๋ณธ ๋ฐ์ดํ„ฐ์—์„œ ์ž์ฃผ ์ถœํ˜„ํ•˜๋Š” ๋ฌธ์ž๋Š” ์ ์€ ๋น„ํŠธ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ‘œํ˜„ํ•˜๊ณ  ์ถœํ˜„ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ๋ฌธ์ž๋Š” ๋งŽ์€ ๋น„

lipcoder.tistory.com

 

์„œ๋ฒ„ ํ‘ธ์‹œ

HTTP/1.1์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•ด์•ผ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด, HTTP/2๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์—†์ด ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. 

html์—๋Š” css๋‚˜ js ํŒŒ์ผ์ด ํฌํ•จ๋˜๊ธฐ ๋งˆ๋ จ์ธ๋ฐ, html์„ ์ฝ์œผ๋ฉด์„œ ๊ทธ ์•ˆ์— ๋“ค์–ด ์žˆ๋˜ css ํŒŒ์ผ์„ ์„œ๋ฒ„์—์„œ ํ‘ธ์‹œํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋จผ์ € ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์—์„œ html ์š”์ฒญ์„ ๋ฐ›์•„ ์‘๋‹ต์„ ๋ณด๋‚ด๊ณ , ๊ทธ์— ํ•„์š”ํ•œ css๋‚˜ js ํŒŒ์ผ์„ ์•Œ์•„์„œ ๋จผ์ € ์ „์†กํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€

css, js ์š”์ฒญ์„ ์ถ”๊ฐ€๋กœ ๋ณด๋‚ด์ง€ ์•Š์•„๋„ ๋œ๋‹ค.