๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

NETWORK

QUIC๋Š” ์–ด๋–ป๊ฒŒ Head-of-Line(HOL) Blocking๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

๐ŸŒฑ HTTP์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๊ฐ€ HTTP/3.0์˜ ํŠน์ง•์—์„œ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ HOL Blocking ํ˜„์ƒ์„ ์ œ๊ฑฐํ–ˆ๋‹ค๊ณ  ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. TCP์™€๋Š” ๋‹ฌ๋ฆฌ ์ŠคํŠธ๋ฆผ ๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ์ „์†ก์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, “์ŠคํŠธ๋ฆผ ๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ์ „์†ก์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ์˜๋ฏธ์ผ๊นŒ?”๋ผ๋Š” ์˜๋ฌธ์ด ์ƒ๊ฒจ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

HOL Blocking ํ˜„์ƒ์€ HTTP, TCP, ์Šค์œ„์น˜ ๋ฐ ๋ผ์šฐํ„ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ด๋‹ค. ์ด ์ค‘์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„๊ฐˆ ๊ฒƒ์€ HTTP, TCP์˜ HOL Blocking ํ˜„์ƒ์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋ฉฐ, QUIC์ด ์ด๋ฅผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๋จผ์ € QUIC์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž.

QUIC์€ ์™œ ๋“ฑ์žฅ ํ–ˆ์„๊นŒ?

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

๊ทธ๋ž˜์„œ QUIC, ์™œ ๋น ๋ฅธ๋ฐ?

์—ฐ๊ฒฐ ์ง€์—ญ ์‹œ๊ฐ„ ๋‹จ์ถ•

QUIC์€ ๋ณด์•ˆ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด TCP์™€ TLS์˜ ๋‘ ๋ฒˆ์˜ ํ•ธ๋“œ์‰์ดํฌ๋ฅผ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋•๋ถ„์— ์—ฐ๊ฒฐ์ด ๋Š๊ธด ํ›„์—๋„ ๋น ๋ฅด๊ฒŒ ๋ณต๊ตฌ๋œ๋‹ค. ์ฒ˜์Œ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์‹ ์†ํ•˜๊ฒŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์žฌ์—ฐ๊ฒฐ ์‹œ์—๋Š” ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. QUIC 1.0์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก์— TLS 1.3 ๊ธฐ๋ฐ˜ ์•”ํ˜ธํ™”๋ฅผ ์ ์šฉํ•œ๋‹ค. TCP๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” 3-way-handshake๋กœ ์ธํ•ด ์ตœ์†Œ 1-RTT์˜ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค. HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด TLS ํ•ธ๋“œ์‰์ดํฌ๋กœ ์ธํ•ด ์ถ”๊ฐ€ RTT๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ QUIC์€ TCP์™€ TLS์˜ ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ •์„ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜์—ฌ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•œ๋‹ค.

์—ฐ๊ฒฐ ์žฌ์‚ฌ์šฉ

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

Connection Migration

QUIC์€ IP ์ฃผ์†Œ ๋ณ€๊ฒฝ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์„  LAN์— ์—ฐ๊ฒฐ๋œ ๋…ธํŠธ๋ถ์„ WiFi๋กœ ์ „ํ™˜ํ•  ๊ฒฝ์šฐ, TCP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ณ  WiFi IP๋กœ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด QUIC๋Š” ์„œ๋ฒ„์— Connection ID๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ์ƒˆ IP ์ฃผ์†Œ์—์„œ๋„ ๊ธฐ์กด ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

HTTP์—์„œ HOL Blocking์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ญ˜๊นŒ?

QUIC์ด ์–ด๋–ป๊ฒŒ HOL Blocking์„ ํ”ผํ–ˆ๋Š”์ง€ ์•Œ๋ ค๋ฉด ์™œ ๋ฐœ์ƒ์„ ํ•˜๋Š”์ง€ ๋จผ์ € ์•Œ์•„์•ผํ•  ๊ฒƒ์ด๋‹ค. TCP์—์„œ์˜ HOL Blocking์„ ์•Œ๊ธฐ ์ „์— HTTP์—์„œ์˜ HOL Blocking์„ ๋จผ์ € ์•Œ์•„๋ณด์ž.

HTTP / 1.0

HTTP/1.0์—์„œ ํด๋ผ์ด์–ธํŠธ๋Š” HTML, CSS, JS ๊ฐ™์€ ์ž์›๋“ค์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ TCP ์—ฐ๊ฒฐ์„ ๋งบ์–ด์•ผ ํ•œ๋‹ค. ํŠนํžˆ, HTTP/1.0์˜ ํŠน์„ฑ์ƒ ํ•œ TCP ์—ฐ๊ฒฐ์—์„œ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ๋„์ฐฉํ•œ ํ›„ ํ•ด๋‹น TCP ์—ฐ๊ฒฐ์€ ์ข…๋ฃŒ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTML ํŒŒ์ผ์„ ์š”์ฒญํ•  ๋•Œ ์ฒซ ๋ฒˆ์งธ TCP ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ , ํ•ด๋‹น ์—ฐ๊ฒฐ์€ HTML์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ›์€ ํ›„์— ์ข…๋ฃŒ๋œ๋‹ค. ๊ทธ ๋‹ค์Œ CSS ํŒŒ์ผ์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด TCP ์—ฐ๊ฒฐ์„ ์—ด์–ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ์‹์˜ ๊ฒฐ๊ณผ๋กœ, ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฐ์†๋œ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ, ํ•œ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ๋„์ฐฉํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋‹ค์Œ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์—†๋‹ค. ์ด ํ˜„์ƒ์„ "HOL (Head Of Line) Blocking"์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋กœ ์ธํ•ด, ๋งŒ์•ฝ HTML์— ๋Œ€ํ•œ ์‘๋‹ต์ด 10๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด, CSS์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์‹ค์ œ๋กœ๋Š” 1์ดˆ๋งŒ์— ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„, HTML์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” 10๋ถ„ ๋™์•ˆ ๋Œ€๊ธฐํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ HTTP/1.0์˜ ๊ตฌ์กฐ๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š์•„, ์›น ์„ฑ๋Šฅ์— ํฐ ์ œ์•ฝ์„ ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

HTTP / 1.1

HTTP/1.1์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTML, CSS, JS ๊ฐ™์€ ์ž์›๋“ค์„ ์š”์ฒญํ•  ๋•Œ, ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ 'ํŒŒ์ดํ”„๋ผ์ด๋‹(pipelining)'์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋กœ ์ธํ•ด, ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ 3-way-handshake์™€ 4-way-handshake์˜ ๋ฐ˜๋ณต์ด ์ค„์–ด๋“ค์–ด, HTTP/1.0์— ๋น„ํ•ด ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ HOL (Head Of Line) Blocking ๋ฌธ์ œ๋Š” HTTP/1.1์—์„œ๋„ ์—ฌ์ „ํžˆ ์กด์žฌํ–ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HTML, CSS, JS์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์—ฐ์†์ ์œผ๋กœ ๋ณด๋ƒˆ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญํ•œ ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ, ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์˜ ์‘๋‹ต์ด ์ง€์—ฐ๋˜๋ฉด, ๋’ค์ด์€ ์š”์ฒญ๋“ค์— ๋Œ€ํ•œ ์‘๋‹ต๋„ ๊ทธ ์ง€์—ฐ ์‹œ๊ฐ„๋งŒํผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. ์ด๋Š” ๊ณง TCP ์—ฐ๊ฒฐ์€ ํ•˜๋‚˜๋กœ ์ค„์–ด๋“ค์—ˆ์ง€๋งŒ, HTTP/1.0์—์„œ์˜ HOL Blocking ๋ฌธ์ œ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ทธ๋Ÿผ TCP์—์„œ ๋ฐœ์ƒํ•˜๋Š” HOL Blocking์€ ๋ญ˜๊นŒ?

HTTP / 2.0

HTTP/2.0์˜ ์ฃผ์š” ๋„์ž…๋œ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๋Š” "์ŠคํŠธ๋ฆผ"์ด๋ผ๋Š” ๊ฐœ๋…์ด๋‹ค. ์ŠคํŠธ๋ฆผ์€ ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ์ด๋ฅผ '๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ(multiplexing)'์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ๊ฐ๊ฐ์˜ ์ŠคํŠธ๋ฆผ์€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ์ŠคํŠธ๋ฆผ์—์„œ์˜ ์ง€์—ฐ์ด ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ์ฒ˜๋ฆฌ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ TCP๋Š” ํŒจํ‚ท์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์•ฝ ํ•œ ํŒจํ‚ท์ด ์†์‹ค๋  ๊ฒฝ์šฐ ๊ทธ ๋’ค๋”ฐ๋ฅด๋Š” ํŒจํ‚ท๋“ค์€ ์†์‹ค๋œ ํŒจํ‚ท์ด ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค. ์ด ํ˜„์ƒ์„ 'TCP์˜ HOL Blocking'์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋จผ์ € HTTP/2.0์—์„œ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋“ค์ด ์ „์†ก๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTML, CSS, JS๋ฅผ ๊ฐ๊ฐ ์š”์ฒญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด, ๊ฐ ์š”์ฒญ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์ด ์ƒ์„ฑ๋  ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์š”์ฒญ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋‹ค๋ฉด, ์ด ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ "ํ”„๋ ˆ์ž„"์œผ๋กœ ๋‚˜๋ˆ ์ ธ ์ „์†ก๋  ๊ฒƒ์ด๋‹ค. ์ด๋•Œ, ์„ธ ๊ฐ€์ง€ ์ž์› ์š”์ฒญ์œผ๋กœ ์ธํ•ด ์„ธ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ์ƒ์„ฑ๋˜๊ณ , ๊ฐ ์ŠคํŠธ๋ฆผ์€ ๋…๋ฆฝ์ ์œผ๋กœ ํ”„๋ ˆ์ž„๋“ค์„ TCP ์ „์†ก ๊ณ„์ธต์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ์ˆœ์„œ๋Š” ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ํ”„๋ ˆ์ž„๋“ค์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ „์†ก๋  ๊ฒƒ์ด๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ, HTTP/2.0์€ ์ŠคํŠธ๋ฆผ๊ณผ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์„ ๋„์ž…ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ง€๋งŒ, TCP์˜ ํŒจํ‚ท ์ˆœ์„œ ๋ณด์žฅ ํŠน์„ฑ ๋•Œ๋ฌธ์— ์™„์ „ํžˆ HOL Blocking ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋Š” ์—†์—ˆ๋‹ค.

Frame? packet๊ณผ ๊ฐ™์€ ๋‹จ์œ„์ผ๊นŒ?

๊ฒฐ๋ก ์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ๋‹จ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์€ ์—ฌ๋Ÿฌ TCP ํŒจํ‚ท์— ๋‚˜๋ˆ ์ ธ ์ „์†ก๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด, ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„๋“ค์ด ํ•˜๋‚˜์˜ ํŒจํ‚ท ์•ˆ์— ํฌํ•จ๋˜์–ด ์ „์†ก๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜ํ•œ ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ์™€ ํŒจํ‚ท์˜ ์ตœ๋Œ€ ์ „์†ก ๋‹จ์œ„(MTU)์— ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„๋งŒ์ด ๋‹จ์ผ ํŒจํ‚ท์— ํฌํ•จ๋˜์–ด ์ „์†ก๋  ์ˆ˜๋„ ์žˆ๋‹ค.

HTTP/2.0์—์„œ ์™œ HOL Blocking์ด ์ผ์–ด๋‚ ๊นŒ?

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

๐ŸŒณ QUIC์ด ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ์„๊นŒ?

QUIC์€ ์ŠคํŠธ๋ฆผ ๋‹ค์ค‘ํ™”(Stream Multiplexing) ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ „์†กํ•œ๋‹ค. ๋™์ผํ•œ ์ŠคํŠธ๋ฆผ ๋‚ด์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€๋งŒ, ์–ด๋–ค ์ŠคํŠธ๋ฆผ์—์„œ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ํ†ตํ•ด HOL Blocking ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. UDP๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ๋กœ, ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•๋ถ„์— ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์— ์ ํ•ฉํ•˜๋‹ค. ๊ทธ๋ž˜์„œ QUIC์€ UDP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋‹ค. QUIC ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ๋˜์–ด ์ „์†ก๋œ๋‹ค. ๋˜ํ•œ, ๊ฐ ์ŠคํŠธ๋ฆผ๋ณ„๋กœ ํ๋ฆ„ ์ œ์–ด ๊ธฐ๋Šฅ์ด ์žˆ์–ด ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP / 3.0

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

๋งˆ๋ฌด๋ฆฌ

QUIC์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์€ ๋” ๋งŽ์•˜์ง€๋งŒ HOL Blocking ๊ด€์ ์—์„œ๋งŒ ์ •๋ฆฌ๋ฅผ ํ–ˆ๋‹ค. QUIC์€ ์—ฌ๋Ÿฌ ์ธก๋ฉด์—์„œ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ํŠน์ง•์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์œ ์—ฐ์„ฑ์— ๋” ๋งŽ์€ ๊ด€์‹ฌ์ด ์ƒ๊ธด๋‹ค. ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์ด ์‹œ๋Œ€์—์„œ QUIC์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๊ธฐ๋Œ€๋œ๋‹ค. TCP๊ฐ€ ์˜ค๋ž˜๋œ ํ”„๋กœํ† ์ฝœ์ธ ๋งŒํผ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ ๋›ฐ์–ด๋‚˜์ง€๋งŒ ๋” ํ™•์žฅํ•  ์ˆ˜ ์—†๋Š” (๊ทธ๋งŒํผ ์™„๋ฒฝํ•œ?) ํ”„๋กœํ† ์ฝœ์ด๋ผ๋Š” ๊ฒƒ๋„ ์ด๋ฒˆ ๊ธฐํšŒ์— ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

QUIC์˜ HOL Blocking์— ๊ฝ‚ํ˜€ ๋‘์„œ ์—†์ด ๊ฐœ์ธ์ด ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜๋‹ค. ๊ณต๋ถ€ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.